summaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/abseil-cpp-20200923.3-adjust-sysinfo.patch60
-rw-r--r--gnu/packages/patches/abseil-cpp-20200923.3-duration-test.patch86
-rw-r--r--gnu/packages/patches/aoflagger-use-system-provided-pybind11.patch38
-rw-r--r--gnu/packages/patches/audiofile-CVE-2022-24599.patch83
-rw-r--r--gnu/packages/patches/basis-universal-unbundle-libs.patch302
-rw-r--r--gnu/packages/patches/bc-fix-cross-compilation.patch189
-rw-r--r--gnu/packages/patches/c2rust-ast-exporter-local-search.patch24
-rw-r--r--gnu/packages/patches/calligra-qt-6.9.patch46
-rw-r--r--gnu/packages/patches/clang-10.0-libc-search-path.patch93
-rw-r--r--gnu/packages/patches/clang-3.5-libc-search-path.patch66
-rw-r--r--gnu/packages/patches/clang-3.5-libsanitizer-ustat-fix.patch46
-rw-r--r--gnu/packages/patches/clang-3.8-libc-search-path.patch69
-rw-r--r--gnu/packages/patches/clang-6.0-libc-search-path.patch67
-rw-r--r--gnu/packages/patches/clang-7.0-libc-search-path.patch94
-rw-r--r--gnu/packages/patches/clang-8.0-libc-search-path.patch94
-rw-r--r--gnu/packages/patches/clang-9.0-libc-search-path.patch93
-rw-r--r--gnu/packages/patches/clang-runtime-3.5-libsanitizer-mode-field.patch29
-rw-r--r--gnu/packages/patches/clang-runtime-3.7-fix-build-with-python3.patch16
-rw-r--r--gnu/packages/patches/clang-runtime-3.8-libsanitizer-mode-field.patch50
-rw-r--r--gnu/packages/patches/clang-runtime-9-glibc-2.36-compat.patch50
-rw-r--r--gnu/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch60
-rw-r--r--gnu/packages/patches/clang-runtime-asan-build-fixes.patch92
-rw-r--r--gnu/packages/patches/corectrl-locate-polkit-with-pkg-config.patch16
-rw-r--r--gnu/packages/patches/corectrl-polkit-install-dir.patch23
-rw-r--r--gnu/packages/patches/corrosion-honor-CARGO_BUILD_TARGET.patch26
-rw-r--r--gnu/packages/patches/cproc-extra-linkflags.patch18
-rw-r--r--gnu/packages/patches/cups-minimal-Address-PPD-injection-issues.patch529
-rw-r--r--gnu/packages/patches/cups-relax-root-ownership-check.patch34
-rw-r--r--gnu/packages/patches/cyrus-sasl-fix-time-h.patch59
-rw-r--r--gnu/packages/patches/daemontools-gcc14.patch561
-rw-r--r--gnu/packages/patches/django-compressor-build-with-beautifulsoup-4.14+.patch40
-rw-r--r--gnu/packages/patches/dolphin-emu-unbundle-tinygltf.patch67
-rw-r--r--gnu/packages/patches/dolphin-emu-unbundle-watcher.patch56
-rw-r--r--gnu/packages/patches/dynaconf-unvendor-deps.patch169
-rw-r--r--gnu/packages/patches/elixir-httpoison-tag-network-dependent-test-cases.patch64
-rw-r--r--gnu/packages/patches/emacs-eglot-x-fix-apply-text-edits.patch23
-rw-r--r--gnu/packages/patches/emacs-elpy-dup-test-name.patch60
-rw-r--r--gnu/packages/patches/emacs-zoom-image-test-fix.patch25
-rw-r--r--gnu/packages/patches/erlang-binpp-disable-failing-tests.patch73
-rw-r--r--gnu/packages/patches/erlang-mochiweb-disable-known-to-fail-tests.patch25
-rw-r--r--gnu/packages/patches/esound-c99.patch19
-rw-r--r--gnu/packages/patches/fail2ban-fix-sshd-filter.patch96
-rw-r--r--gnu/packages/patches/fbgemm-use-system-libraries.patch26
-rw-r--r--gnu/packages/patches/ffmpeg-jami-pipewiregrab-source-filter.patch9
-rw-r--r--gnu/packages/patches/gimp-fix-metadata-editor.patch25
-rw-r--r--gnu/packages/patches/gimp-fix-tiff-load.patch25
-rw-r--r--gnu/packages/patches/go-github-com-jbenet-go-context-fix-import-error.patch137
-rw-r--r--gnu/packages/patches/godot-libjpeg-turbo-unbundle.patch217
-rw-r--r--gnu/packages/patches/gtk-doc-mkhtml-test-fix.patch33
-rw-r--r--gnu/packages/patches/guile-gi-fix-marshall-tests.patch27
-rw-r--r--gnu/packages/patches/hare-fallback-cache.patch33
-rw-r--r--gnu/packages/patches/hare-toolpath.patch72
-rw-r--r--gnu/packages/patches/icecat-compare-paths.patch17
-rw-r--r--gnu/packages/patches/icecat-fhs-configure-option.patch38
-rw-r--r--gnu/packages/patches/icecat-use-system-wide-dir.patch58
-rw-r--r--gnu/packages/patches/icedove-observer-fix.patch35
-rw-r--r--gnu/packages/patches/inkscape-libxml2.patch33
-rw-r--r--gnu/packages/patches/ispell-for-linphone-cmake.patch43
-rw-r--r--gnu/packages/patches/jami-disable-webengine.patch43
-rw-r--r--gnu/packages/patches/jami-enable-testing.patch26
-rw-r--r--gnu/packages/patches/jami-find-package-avutil.patch54
-rw-r--r--gnu/packages/patches/jami-libjami-headers-search.patch92
-rw-r--r--gnu/packages/patches/jami-qwindowkit.patch10
-rw-r--r--gnu/packages/patches/jami-tests-qtwebengine-ifdef-to-if.patch26
-rw-r--r--gnu/packages/patches/jami-unbundle-dependencies.patch45
-rw-r--r--gnu/packages/patches/jami-unittests-fix-build.patch46
-rw-r--r--gnu/packages/patches/komikku-future-servers-compat.patch360
-rw-r--r--gnu/packages/patches/komikku-python-3.11-compat.patch57
-rw-r--r--gnu/packages/patches/kvmfr-linux-module-fix-build.patch41
-rw-r--r--gnu/packages/patches/libfaketime-32bit.patch241
-rw-r--r--gnu/packages/patches/libgcrypt-arm32-register-pressure.patch133
-rw-r--r--gnu/packages/patches/liblinphone-jsoncpp.patch82
-rw-r--r--gnu/packages/patches/libmygpo-qt-fix-qt-5.11.patch78
-rw-r--r--gnu/packages/patches/libmygpo-qt-missing-qt5-modules.patch51
-rw-r--r--gnu/packages/patches/libosinfo-libxml2-fix.patch83
-rw-r--r--gnu/packages/patches/libspatialite-libxml2-2.14.patch52
-rw-r--r--gnu/packages/patches/libvirt-add-install-prefix.patch55
-rw-r--r--gnu/packages/patches/libvpx-CVE-2025-5262.patch75
-rw-r--r--gnu/packages/patches/libxcb-path-max.patch37
-rw-r--r--gnu/packages/patches/libxslt-generated-ids.patch173
-rw-r--r--gnu/packages/patches/libzmf-doxygen-1.14.patch30
-rw-r--r--gnu/packages/patches/linphone-desktop-cmake-belcard.patch39
-rw-r--r--gnu/packages/patches/linphone-desktop-cmake-find-modules.patch422
-rw-r--r--gnu/packages/patches/linphone-desktop-ispell.patch24
-rw-r--r--gnu/packages/patches/linphone-desktop-qtkeychain.patch36
-rw-r--r--gnu/packages/patches/linphone-desktop-without-sdk.patch214
-rw-r--r--gnu/packages/patches/linuxdcpp-openssl-1.1.patch26
-rw-r--r--gnu/packages/patches/llvm-10-missing-include.patch14
-rw-r--r--gnu/packages/patches/llvm-3.5-fix-clang-build-with-gcc5.patch35
-rw-r--r--gnu/packages/patches/llvm-3.6-fix-build-with-gcc-10.patch13
-rw-r--r--gnu/packages/patches/llvm-3.x.1-fix-build-with-gcc.patch15
-rw-r--r--gnu/packages/patches/llvm-8-fix-build-with-gcc-10.patch34
-rw-r--r--gnu/packages/patches/llvm-8-missing-include.patch17
-rw-r--r--gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch192
-rw-r--r--gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch97
-rw-r--r--gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch113
-rw-r--r--gnu/packages/patches/lxsession-potfiles-ignore.patch15
-rw-r--r--gnu/packages/patches/mariadb-rocksdb-atomic-linking.patch54
-rw-r--r--gnu/packages/patches/mash-add-missing-headers.patch26
-rw-r--r--gnu/packages/patches/mediastreamer2-cmake-findgsm.patch63
-rw-r--r--gnu/packages/patches/mpv-0.40.0-fix-ffmpeg-8.0.patch40
-rw-r--r--gnu/packages/patches/mswebrtc-b64-refactor.patch949
-rw-r--r--gnu/packages/patches/mswebrtc-cmake.patch626
-rw-r--r--gnu/packages/patches/musescore-fix-build.patch23
-rw-r--r--gnu/packages/patches/nss-3.115-disable-broken-tests.patch34
-rw-r--r--gnu/packages/patches/nss-3.115-disable-pkix-ocsp-tests.patch13
-rw-r--r--gnu/packages/patches/nss-disable-broken-tests.patch33
-rw-r--r--gnu/packages/patches/nyacc-binary-literals.patch29
-rw-r--r--gnu/packages/patches/ocaml-ctypes-test-oo.patch49
-rw-r--r--gnu/packages/patches/opusfile-CVE-2022-47021.patch40
-rw-r--r--gnu/packages/patches/pcsxr-find-harfbuzz.patch21
-rw-r--r--gnu/packages/patches/pcsxr-fix-definitions.patch137
-rw-r--r--gnu/packages/patches/perl-xml-libxslt-fix-configure.patch34
-rw-r--r--gnu/packages/patches/pharo-vm-cmake.patch659
-rw-r--r--gnu/packages/patches/ploticus-pointer-types.patch31
-rw-r--r--gnu/packages/patches/python-colour-remove-d2to1.patch80
-rw-r--r--gnu/packages/patches/python-dateutil-pytest-compat.patch43
-rw-r--r--gnu/packages/patches/python-hdmedians-replace-nose.patch95
-rw-r--r--gnu/packages/patches/python-libxml2-utf8.patch16
-rw-r--r--gnu/packages/patches/python-mohawk-pytest.patch1018
-rw-r--r--gnu/packages/patches/python-mox3-python3.6-compat.patch43
-rw-r--r--gnu/packages/patches/python-norns-nose.patch86
-rw-r--r--gnu/packages/patches/python-pyfakefs-remove-bad-test.patch23
-rw-r--r--gnu/packages/patches/python-pytorch-fix-codegen.patch4
-rw-r--r--gnu/packages/patches/python-pytorch-system-libraries.patch362
-rw-r--r--gnu/packages/patches/python-pytorch-without-kineto.patch11
-rw-r--r--gnu/packages/patches/python-scikit-build-setuptools-compat.patch54
-rw-r--r--gnu/packages/patches/python-scipy-i686.patch49
-rw-r--r--gnu/packages/patches/python-sshtunnel-pep518.patch77
-rw-r--r--gnu/packages/patches/python-treelib-remove-python2-compat.patch129
-rw-r--r--gnu/packages/patches/python-unittest2-python3-compat.patch46
-rw-r--r--gnu/packages/patches/python-unittest2-remove-argparse.patch11
-rw-r--r--gnu/packages/patches/qdigidoc-bundle-config-files.patch175
-rw-r--r--gnu/packages/patches/qdigidoc-bundle-tsl-files.patch7124
-rw-r--r--gnu/packages/patches/qemu-disable-bios-tables-test.patch49
-rw-r--r--gnu/packages/patches/qemu-disable-migration-test.patch57
-rw-r--r--gnu/packages/patches/qemu-fix-test-virtio-version.patch29
-rw-r--r--gnu/packages/patches/qemu-glibc-2.41.patch52
-rw-r--r--gnu/packages/patches/qgit-2.12-fix-search-style.patch23
-rw-r--r--gnu/packages/patches/qtbase-fix-thread-test.patch154
-rw-r--r--gnu/packages/patches/qtwebengine-fix-dependencies.patch25
-rw-r--r--gnu/packages/patches/qtwebengine-fix-system-libvpx.patch58
-rw-r--r--gnu/packages/patches/qtwebsockets-6.9-fix-tst_QWebSocket.patch40
-rw-r--r--gnu/packages/patches/qucs-s-qucsator-rf-search.patch163
-rw-r--r--gnu/packages/patches/raptor2-libxml2.patch30
-rw-r--r--gnu/packages/patches/re2c-Use-maximum-alignment.patch48
-rw-r--r--gnu/packages/patches/readymedia-ffmpeg7.patch15
-rw-r--r--gnu/packages/patches/rtosc-0.3.1-fix-invalid-comparison-operator.patch14
-rw-r--r--gnu/packages/patches/ruby-nokogiri.patch20
-rw-r--r--gnu/packages/patches/rust-ndarray-0.13-remove-blas-src.patch28
-rw-r--r--gnu/packages/patches/rust-ndarray-0.14-remove-blas-src.patch25
-rw-r--r--gnu/packages/patches/rust-ndarray-remove-blas-src-dep.patch36
-rw-r--r--gnu/packages/patches/rust-nettle-disable-vendor.patch13
-rw-r--r--gnu/packages/patches/rust-onenote-parser-for-clamav-deps.patch88
-rw-r--r--gnu/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch52
-rw-r--r--gnu/packages/patches/rust-onenote-parser-for-clamav-property-type.patch30
-rw-r--r--gnu/packages/patches/rust-poem-1-fewer-deps.patch229
-rw-r--r--gnu/packages/patches/rust-rspec-1-remove-clippy.patch16
-rw-r--r--gnu/packages/patches/rust-trash-2-update-windows.patch132
-rw-r--r--gnu/packages/patches/rust-wl-clipboard-rs-newer-wl.patch26
-rw-r--r--gnu/packages/patches/safeint-disable-tests.patch42
-rw-r--r--gnu/packages/patches/sane-look-for-plugins-in-SANE_BACKEND_LIB_PATH.patch25
-rw-r--r--gnu/packages/patches/sbcl-cl-redis-replace-sbcl-specific-calls.patch53
-rw-r--r--gnu/packages/patches/sbcl-fix-arm64-shared-lib.patch129
-rw-r--r--gnu/packages/patches/schiffbruch-fix-build-for-gcc-13.patch39
-rw-r--r--gnu/packages/patches/slurm-23-salloc-fallback-shell.patch33
-rw-r--r--gnu/packages/patches/soci-mysql-ddl-types.patch15
-rw-r--r--gnu/packages/patches/spice-vdagent-monitor-size-calculation.patch29
-rw-r--r--gnu/packages/patches/stepmania-ffmpeg-compat.patch49
-rw-r--r--gnu/packages/patches/stk-5.0.1-fix-typo.patch8
-rw-r--r--gnu/packages/patches/telegram-desktop-allow-disable-libtgvoip.patch123
-rw-r--r--gnu/packages/patches/telegram-desktop-unbundle-cppgir.patch105
-rw-r--r--gnu/packages/patches/tensorflow-lite-unbundle.patch27
-rw-r--r--gnu/packages/patches/torbrowser-use-system-wide-dir.patch36
-rw-r--r--gnu/packages/patches/torbrowsers-add-store-to-rdd-allowlist.patch17
-rw-r--r--gnu/packages/patches/ungoogled-chromium-RUNPATH.patch2
-rw-r--r--gnu/packages/patches/ungoogled-chromium-extension-search-path.patch16
-rw-r--r--gnu/packages/patches/ungoogled-chromium-ffmpeg-compat.patch68
-rw-r--r--gnu/packages/patches/ungoogled-chromium-system-ffmpeg.patch18
-rw-r--r--gnu/packages/patches/ungoogled-chromium-system-nspr.patch24
-rw-r--r--gnu/packages/patches/ungoogled-chromium-unbundle-icu-target.patch21
-rw-r--r--gnu/packages/patches/vagrant-Support-system-installed-plugins.patch172
-rw-r--r--gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch119
-rw-r--r--gnu/packages/patches/vagrant-bin-vagrant-silence-warning-about-installer.patch24
-rw-r--r--gnu/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch117
-rw-r--r--gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch191
-rw-r--r--gnu/packages/patches/vulkan-tools-wayland-1.24.patch100
-rw-r--r--gnu/packages/patches/warzone2100-unbundle-libs.patch324
-rw-r--r--gnu/packages/patches/xinit-startx-mcookie-path.patch23
-rw-r--r--gnu/packages/patches/xiphos-glib.patch43
-rw-r--r--gnu/packages/patches/xsane-fix-memory-leak.patch34
-rw-r--r--gnu/packages/patches/xsane-fix-pdf-floats.patch85
-rw-r--r--gnu/packages/patches/xsane-fix-snprintf-buffer-length.patch72
-rw-r--r--gnu/packages/patches/xsane-support-ipv6.patch153
-rw-r--r--gnu/packages/patches/xsane-tighten-default-umask.patch36
-rw-r--r--gnu/packages/patches/zig-0.15-fix-runpath.patch122
-rw-r--r--gnu/packages/patches/zynaddsubfx-3.0.6-include-cstdint.patch24
-rw-r--r--gnu/packages/patches/zynaddsubfx-3.0.6-system-rtosc.patch106
198 files changed, 17885 insertions, 6252 deletions
diff --git a/gnu/packages/patches/abseil-cpp-20200923.3-adjust-sysinfo.patch b/gnu/packages/patches/abseil-cpp-20200923.3-adjust-sysinfo.patch
deleted file mode 100644
index ae52e103a7..0000000000
--- a/gnu/packages/patches/abseil-cpp-20200923.3-adjust-sysinfo.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-https://sources.debian.org/data/main/a/abseil/0~20200923.3-2/debian/patches/cpu-frequency.diff
-This patch is taken from Debian instead of the upstream URL because the
-upstream URL contains far more changes than occur in this patch.
-
-It was then modified to also work for armhf.
-
-From: Benjamin Barenblat <bbaren@google.com>
-Subject: Ignore missing CPU frequency on more architectures
-Forwarded: yes
-Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/1918ad2ae38aa32c74b558b322479a8efdd76363
-
-Linux on MIPS, PA-RISC, RISC-V, and SystemZ doesn’t expose the nominal CPU
-frequency via /sys, so don’t worry if `NominalCPUFrequency` returns 1.0 on those
-platforms.
-
-Some POWER machines expose the CPU frequency; others do not. Since we can’t
-predict which type of machine the tests will run on, simply disable testing for
-`NominalCPUFrequency` on POWER.
-
-The author works at Google. Upstream applied this patch as Piper revision
-347079873 and exported it to GitHub; the Applied-Upstream URL above points to
-the exported commit.
-
---- a/absl/base/internal/sysinfo_test.cc
-+++ b/absl/base/internal/sysinfo_test.cc
-@@ -37,17 +37,28 @@ TEST(SysinfoTest, NumCPUs) {
- << "NumCPUs() should not have the default value of 0";
- }
-
-+// Ensure that NominalCPUFrequency returns a reasonable value, or 1.00 on
-+// platforms where the CPU frequency is not available through sysfs.
-+//
-+// POWER is particularly problematic here; some Linux kernels expose the CPU
-+// frequency, while others do not. Since we can't predict a priori what a given
-+// machine is going to do, just disable this test on POWER on Linux.
-+#if !(defined(__linux) && (defined(__ppc64__) || defined(__PPC64__)))
- TEST(SysinfoTest, NominalCPUFrequency) {
--#if !(defined(__aarch64__) && defined(__linux__)) && !defined(__EMSCRIPTEN__)
-- EXPECT_GE(NominalCPUFrequency(), 1000.0)
-- << "NominalCPUFrequency() did not return a reasonable value";
--#else
-- // Aarch64 cannot read the CPU frequency from sysfs, so we get back 1.0.
-- // Emscripten does not have a sysfs to read from at all.
-+ // Linux only exposes the CPU frequency on certain architectures, and
-+ // Emscripten doesn't expose it at all.
-+#if defined(__linux__) && \
-+ (defined(__aarch64__) || defined(__hppa__) || defined(__mips__) || \
-+ defined(__arm__) || defined(__riscv) || defined(__s390x__)) || \
-+ defined(__EMSCRIPTEN__)
- EXPECT_EQ(NominalCPUFrequency(), 1.0)
- << "CPU frequency detection was fixed! Please update unittest.";
-+#else
-+ EXPECT_GE(NominalCPUFrequency(), 1000.0)
-+ << "NominalCPUFrequency() did not return a reasonable value";
- #endif
- }
-+#endif
-
- TEST(SysinfoTest, GetTID) {
- EXPECT_EQ(GetTID(), GetTID()); // Basic compile and equality test.
diff --git a/gnu/packages/patches/abseil-cpp-20200923.3-duration-test.patch b/gnu/packages/patches/abseil-cpp-20200923.3-duration-test.patch
deleted file mode 100644
index 9609c2588b..0000000000
--- a/gnu/packages/patches/abseil-cpp-20200923.3-duration-test.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-This patch is taken from upstream and helps the test pass on all architectures.
-
-The adjustment to absl/numeric/internal/bits.h was removed since the file
-didn't appear in the git checkout.
-
-From b0735979d778a768caee207f01f327535cbd2140 Mon Sep 17 00:00:00 2001
-From: Abseil Team <absl-team@google.com>
-Date: Tue, 2 Mar 2021 14:28:07 -0800
-Subject: [PATCH] Export of internal Abseil changes
-
---
-a74bdb72c3a6983e08a805938dd0e20e97d55bba by Abseil Team <absl-team@google.com>:
-
-Fix typo: calcualte -> calculate
-
-PiperOrigin-RevId: 360515509
-
---
-3ddf8ac194e81a13e9de095e59dd061c1beacfe3 by Benjamin Barenblat <bbaren@google.com>:
-
-Make tests tolerant of FMA contraction
-
-Weaken Duration.ToDoubleSecondsCheckEdgeCases and
-Duration.ToDoubleSecondsCheckRandom to make them less sensitive to fused
-multiply/add contraction.
-
-PiperOrigin-RevId: 360297653
-GitOrigin-RevId: a74bdb72c3a6983e08a805938dd0e20e97d55bba
-Change-Id: I0c55383bc13040ea77511c4130d142368103dc57
----
- absl/numeric/internal/bits.h | 2 +-
- absl/time/duration_test.cc | 18 +++++++++++-------
- 2 files changed, 12 insertions(+), 8 deletions(-)
-
-diff --git a/absl/time/duration_test.cc b/absl/time/duration_test.cc
-index 4d85a2c4f45..fb28fa987f6 100644
---- a/absl/time/duration_test.cc
-+++ b/absl/time/duration_test.cc
-@@ -1369,10 +1369,13 @@ TEST(Duration, SmallConversions) {
- EXPECT_THAT(ToTimeval(absl::Nanoseconds(2000)), TimevalMatcher(tv));
- }
-
--void VerifySameAsMul(double time_as_seconds, int* const misses) {
-+void VerifyApproxSameAsMul(double time_as_seconds, int* const misses) {
- auto direct_seconds = absl::Seconds(time_as_seconds);
- auto mul_by_one_second = time_as_seconds * absl::Seconds(1);
-- if (direct_seconds != mul_by_one_second) {
-+ // These are expected to differ by up to one tick due to fused multiply/add
-+ // contraction.
-+ if (absl::AbsDuration(direct_seconds - mul_by_one_second) >
-+ absl::time_internal::MakeDuration(0, 1u)) {
- if (*misses > 10) return;
- ASSERT_LE(++(*misses), 10) << "Too many errors, not reporting more.";
- EXPECT_EQ(direct_seconds, mul_by_one_second)
-@@ -1384,7 +1387,8 @@ void VerifySameAsMul(double time_as_seconds, int* const misses) {
- // For a variety of interesting durations, we find the exact point
- // where one double converts to that duration, and the very next double
- // converts to the next duration. For both of those points, verify that
--// Seconds(point) returns the same duration as point * Seconds(1.0)
-+// Seconds(point) returns a duration near point * Seconds(1.0). (They may
-+// not be exactly equal due to fused multiply/add contraction.)
- TEST(Duration, ToDoubleSecondsCheckEdgeCases) {
- constexpr uint32_t kTicksPerSecond = absl::time_internal::kTicksPerSecond;
- constexpr auto duration_tick = absl::time_internal::MakeDuration(0, 1u);
-@@ -1423,8 +1427,8 @@ TEST(Duration, ToDoubleSecondsCheckEdgeCases) {
- }
- // Now low_edge is the highest double that converts to Duration d,
- // and high_edge is the lowest double that converts to Duration after_d.
-- VerifySameAsMul(low_edge, &misses);
-- VerifySameAsMul(high_edge, &misses);
-+ VerifyApproxSameAsMul(low_edge, &misses);
-+ VerifyApproxSameAsMul(high_edge, &misses);
- }
- }
- }
-@@ -1444,8 +1448,8 @@ TEST(Duration, ToDoubleSecondsCheckRandom) {
- int misses = 0;
- for (int i = 0; i < 1000000; ++i) {
- double d = std::exp(uniform(gen));
-- VerifySameAsMul(d, &misses);
-- VerifySameAsMul(-d, &misses);
-+ VerifyApproxSameAsMul(d, &misses);
-+ VerifyApproxSameAsMul(-d, &misses);
- }
- }
-
diff --git a/gnu/packages/patches/aoflagger-use-system-provided-pybind11.patch b/gnu/packages/patches/aoflagger-use-system-provided-pybind11.patch
deleted file mode 100644
index 76bc52a4ba..0000000000
--- a/gnu/packages/patches/aoflagger-use-system-provided-pybind11.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-This patch was borrowed from Debian's package:
-https://salsa.debian.org/debian-astro-team/aoflagger/-/blob/0484ef75a663e3e07738550cdade46f433a53dac/debian/patches/Use-system-provided-pybind11.patch
-Description: Use system provided pybind11
-Author: Ole Streicher <olebole@debian.org>
-Origin: Debian
-Last-Update: Mon, 30 Aug 2021 11:05:37 +0200
----
- CMakeLists.txt | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 655ea5e..824ee2a 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -62,11 +62,6 @@ foreach(ExternalSubmodule IN LISTS ExternalSubmoduleDirectories)
- endif()
- endforeach()
-
--# Include aocommon/pybind11 headers
--include_directories("${CMAKE_SOURCE_DIR}/external/aocommon/include")
--add_subdirectory("${CMAKE_SOURCE_DIR}/external/pybind11")
--include_directories(SYSTEM ${pybind11_INCLUDE_DIR})
--
- find_package(
- HDF5
- COMPONENTS C CXX
-@@ -101,6 +96,11 @@ find_package(PythonInterp REQUIRED)
- message(STATUS "Using python version ${PYTHON_VERSION_STRING}")
- include_directories(SYSTEM ${PYTHON_INCLUDE_DIRS})
-
-+# Include pybind11 headers
-+find_package(pybind11 REQUIRED)
-+include_directories("${CMAKE_SOURCE_DIR}/external/aocommon/include")
-+include_directories(${pybind11_INCLUDE_DIR})
-+
- # boost::alignment requires Boost 1.56
- find_package(Boost 1.56.0 REQUIRED COMPONENTS date_time filesystem system
- unit_test_framework)
diff --git a/gnu/packages/patches/audiofile-CVE-2022-24599.patch b/gnu/packages/patches/audiofile-CVE-2022-24599.patch
new file mode 100644
index 0000000000..9299f6ea82
--- /dev/null
+++ b/gnu/packages/patches/audiofile-CVE-2022-24599.patch
@@ -0,0 +1,83 @@
+commit 4d3238843385b9929d7a1ab9034a6fc13949c7b4
+Author: Bastien Roucariès <rouca@debian.org>
+Date: Sat Nov 11 15:58:50 2023 +0000
+
+ Fix CVE-2022-24599
+
+ Memory-leak bug in printfileinfo, due to memcpy on an non allocated memory buffer
+ with a user declared string.
+
+ Fix it by calloc(declaredsize+1,1) that zeros the buffer and terminate by '\0'
+ for printf
+
+ Avoid also a buffer overflow by refusing to allocating more than INT_MAX-1.
+
+ Before under valgrind:
+ libtool --mode=execute valgrind --track-origins=yes ./sfinfo heapleak_poc.aiff
+
+ Duration -inf seconds
+ ==896222== Invalid read of size 1
+ ==896222== at 0x4846794: strlen (vg_replace_strmem.c:494)
+ ==896222== by 0x49246C8: __printf_buffer (vfprintf-process-arg.c:435)
+ ==896222== by 0x4924D90: __vfprintf_internal (vfprintf-internal.c:1459)
+ ==896222== by 0x49DE986: __printf_chk (printf_chk.c:33)
+ ==896222== by 0x10985C: printf (stdio2.h:86)
+ ==896222== by 0x10985C: printfileinfo (printinfo.c:134)
+ ==896222== by 0x10930A: main (sfinfo.c:113)
+ ==896222== Address 0x4e89bd1 is 0 bytes after a block of size 1 alloc'd
+ ==896222== at 0x48407B4: malloc (vg_replace_malloc.c:381)
+ ==896222== by 0x109825: copyrightstring (printinfo.c:163)
+ ==896222== by 0x109825: printfileinfo (printinfo.c:131)
+ ==896222== by 0x10930A: main (sfinfo.c:113)
+ ==896222==
+ Copyright C
+
+ After:
+ Duration -inf seconds
+ Copyright C
+
+diff --git a/sfcommands/printinfo.c b/sfcommands/printinfo.c
+index 60e6947..f5cf925 100644
+--- a/sfcommands/printinfo.c
++++ b/sfcommands/printinfo.c
+@@ -37,6 +37,7 @@
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <limits.h>
+
+ static char *copyrightstring (AFfilehandle file);
+
+@@ -147,7 +148,11 @@ static char *copyrightstring (AFfilehandle file)
+ int i, misccount;
+
+ misccount = afGetMiscIDs(file, NULL);
+- miscids = (int *) malloc(sizeof (int) * misccount);
++ if(!misccount)
++ return NULL;
++ miscids = (int *) calloc(misccount, sizeof(int));
++ if(!miscids)
++ return NULL;
+ afGetMiscIDs(file, miscids);
+
+ for (i=0; i<misccount; i++)
+@@ -159,13 +164,16 @@ static char *copyrightstring (AFfilehandle file)
+ If this code executes, the miscellaneous chunk is a
+ copyright chunk.
+ */
+- int datasize = afGetMiscSize(file, miscids[i]);
+- char *data = (char *) malloc(datasize);
++ size_t datasize = afGetMiscSize(file, miscids[i]);
++ if(datasize >= INT_MAX -1 ) {
++ goto error;
++ }
++ char *data = (char *) calloc(datasize + 1, 1);
+ afReadMisc(file, miscids[i], data, datasize);
+ copyright = data;
+ break;
+ }
+-
++error:
+ free(miscids);
+
+ return copyright;
diff --git a/gnu/packages/patches/basis-universal-unbundle-libs.patch b/gnu/packages/patches/basis-universal-unbundle-libs.patch
new file mode 100644
index 0000000000..045812f0d4
--- /dev/null
+++ b/gnu/packages/patches/basis-universal-unbundle-libs.patch
@@ -0,0 +1,302 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e2c7a1d..b6c860f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,141 +1,13 @@
+ # Important: The Basis Universal encoder and transcoder libraries must be compiled with -fno-strict-aliasing (MSVC's default, and also the Linux kernel).
+ # It should also work without this option, but we do not test with it.
+-cmake_minimum_required(VERSION 3.5)
++cmake_minimum_required(VERSION 3.31)
+
+ project(basisu)
+-option(STATIC "static linking" FALSE)
+-option(SAN "sanitize" FALSE)
++find_package(PkgConfig)
+
+-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
++add_compile_options("-fno-strict-aliasing")
++add_compile_definitions(BASISU_SUPPORT_SSE=0 BASISD_SUPPORT_KTX2_ZSTD=1 BASISU_SUPPORT_OPENCL=0)
+
+-# For MSVC builds default to SSE enabled, and determine if it's a 64-bit (-A x64) vs. 32-bit (-A Win32) build.
+-if (MSVC)
+- option(SSE "SSE 4.1 support" TRUE)
+- if ( CMAKE_GENERATOR_PLATFORM STREQUAL Win32 )
+- set(BUILD_X64 0)
+- else()
+- set(BUILD_X64 1)
+- endif()
+- add_compile_options(/W4)
+-else()
+- option(SSE "SSE 4.1 support" FALSE)
+- option(BUILD_X64 "build 64-bit" TRUE)
+-endif()
+-
+-option(ZSTD "ZSTD support for KTX2 transcoding/encoding" TRUE)
+-option(OPENCL "OpenCL support in encoder" FALSE)
+-
+-message("Initial BUILD_X64=${BUILD_X64}")
+-message("Initial CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
+-message("Initial SSE=${SSE}")
+-message("Initial ZSTD=${ZSTD}")
+-message("Initial OPENCL=${OPENCL}")
+-message("Initial SAN=${SAN}")
+-
+-if ((NOT MSVC) AND OPENCL)
+- # With MSVC builds we use the Khronos lib/include files in the project's "OpenCL" directory, to completely avoid requiring fiddly to install vendor SDK's.
+- # Otherwise we use the system's (if any).
+- find_package(OpenCL)
+- message(STATUS "OpenCL found: ${OPENCL_FOUND}")
+- message(STATUS "OpenCL includes: ${OpenCL_INCLUDE_DIRS}")
+- message(STATUS "OpenCL libraries: ${OpenCL_LIBRARIES}")
+-endif()
+-
+-if( NOT CMAKE_BUILD_TYPE )
+- set( CMAKE_BUILD_TYPE Release )
+-endif()
+-
+-message(${PROJECT_NAME} " build type: " ${CMAKE_BUILD_TYPE})
+-
+-if (BUILD_X64)
+- message("Building 64-bit")
+-else()
+- message("Building 32-bit")
+-endif()
+-
+-if (SSE)
+- message("SSE enabled")
+-else()
+- message("SSE disabled")
+-endif()
+-
+-if (ZSTD)
+- message("Zstandard enabled")
+-else()
+- message("Zstandard disabled")
+-endif()
+-
+-if (NOT MSVC)
+- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g")
+- set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")
+-
+- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
+- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
+-
+- if (SAN)
+- message("Enabling SAN")
+-
+- set(SANITIZE_FLAGS "-fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize=alignment")
+-
+- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${SANITIZE_FLAGS}")
+- set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${SANITIZE_FLAGS}")
+-
+- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${SANITIZE_FLAGS}")
+- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${SANITIZE_FLAGS}")
+- endif()
+-
+- set(CMAKE_CXX_FLAGS -std=c++17)
+- set(GCC_COMPILE_FLAGS "-fvisibility=hidden -fPIC -fno-strict-aliasing -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64 -Wall -Wextra -Wno-unused-local-typedefs -Wno-unused-value -Wno-unused-parameter -Wno-unused-variable -Wno-reorder -Wno-misleading-indentation -Wno-class-memaccess -Wno-deprecated-copy -Wno-maybe-uninitialized -Wno-unused-function -Wno-stringop-overflow -Wno-unknown-warning-option")
+-
+- if (NOT BUILD_X64)
+- set(GCC_COMPILE_FLAGS "${GCC_COMPILE_FLAGS} -m32")
+- endif()
+-
+- if (EMSCRIPTEN)
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s ALLOW_MEMORY_GROWTH=1 -DBASISU_SUPPORT_SSE=0")
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s ALLOW_MEMORY_GROWTH=1 -DBASISU_SUPPORT_SSE=0")
+-
+- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_LINK_FLAGS}")
+- elseif (STATIC)
+- if (SSE)
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_SSE=1 -msse4.1")
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_SSE=1 -msse4.1")
+- else()
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_SSE=0")
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_SSE=0")
+- endif()
+-
+- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_LINK_FLAGS} -static-libgcc -static-libstdc++ -static")
+- else()
+- if (SSE)
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_SSE=1 -msse4.1")
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_SSE=1 -msse4.1")
+- else()
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_SSE=0")
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_SSE=0")
+- endif()
+-
+- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_LINK_FLAGS} -Wl,-rpath .")
+- endif()
+-
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GCC_COMPILE_FLAGS}")
+- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${GCC_COMPILE_FLAGS}")
+- set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${GCC_COMPILE_FLAGS} -D_DEBUG")
+-
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COMPILE_FLAGS}")
+- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${GCC_COMPILE_FLAGS}")
+- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${GCC_COMPILE_FLAGS} -D_DEBUG")
+-else()
+- if (SSE)
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_SSE=1")
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_SSE=1")
+- else()
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_SSE=0")
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_SSE=0")
+- endif()
+-endif()
+-
+-# Define the source files for the static library
+ set(ENCODER_LIB_SRC_LIST
+ encoder/basisu_backend.cpp
+ encoder/basisu_basis_file.cpp
+@@ -161,94 +33,26 @@ set(ENCODER_LIB_SRC_LIST
+ encoder/3rdparty/tinyexr.cpp
+ transcoder/basisu_transcoder.cpp
+ )
++set(ENCODER_LIB_HEADER_LIST
++ transcoder/basisu.h
++ transcoder/basisu_containers.h
++ transcoder/basisu_file_headers.h
++ transcoder/basisu_transcoder.h
++ transcoder/basisu_transcoder_internal.h
++ transcoder/basisu_transcoder_uastc.h
++)
+
+-if (ZSTD)
+- set(ENCODER_LIB_SRC_LIST ${ENCODER_LIB_SRC_LIST} zstd/zstd.c)
+-endif()
+-
+-# Create the static library
+-add_library(basisu_encoder STATIC ${ENCODER_LIB_SRC_LIST})
+-
+-# Create the basisu executable and link against the static library
++add_library(basisu_encoder SHARED ${ENCODER_LIB_SRC_LIST})
+ add_executable(basisu basisu_tool.cpp)
+ target_link_libraries(basisu PRIVATE basisu_encoder)
+
+-# Create the new example executable and link against the static library
+-add_executable(examples example/example.cpp)
+-target_link_libraries(examples PRIVATE basisu_encoder)
+-
+-if (ZSTD)
+- target_compile_definitions(basisu PRIVATE BASISD_SUPPORT_KTX2_ZSTD=1)
+- target_compile_definitions(examples PRIVATE BASISD_SUPPORT_KTX2_ZSTD=1)
+-else()
+- target_compile_definitions(basisu PRIVATE BASISD_SUPPORT_KTX2_ZSTD=0)
+- target_compile_definitions(examples PRIVATE BASISD_SUPPORT_KTX2_ZSTD=0)
+-endif()
+-
+-if (NOT MSVC)
+- # For Non-Windows builds, let cmake try and find the system OpenCL headers/libs for us.
+- if (OPENCL AND OPENCL_FOUND)
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_OPENCL=1")
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_OPENCL=1")
+-
+- target_include_directories(basisu PRIVATE ${OpenCL_INCLUDE_DIRS})
+- target_include_directories(examples PRIVATE ${OpenCL_INCLUDE_DIRS})
+- target_include_directories(basisu_encoder PRIVATE ${OpenCL_INCLUDE_DIRS})
+- set(BASISU_EXTRA_LIBS ${OpenCL_LIBRARIES})
+- endif()
+-else()
+- # For Windows builds, we use our local copies of the OpenCL import lib and Khronos headers.
+- if (OPENCL)
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_OPENCL=1")
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_OPENCL=1")
+-
+- target_include_directories(basisu PRIVATE "OpenCL")
+- target_include_directories(examples PRIVATE "OpenCL")
+- target_include_directories(basisu_encoder PRIVATE "OpenCL")
+-
+- if (BUILD_X64)
+- target_link_libraries(basisu PRIVATE "${CMAKE_SOURCE_DIR}/OpenCL/lib/OpenCL64.lib")
+- target_link_libraries(examples PRIVATE "${CMAKE_SOURCE_DIR}/OpenCL/lib/OpenCL64.lib")
+- else()
+- target_link_libraries(basisu PRIVATE "${CMAKE_SOURCE_DIR}/OpenCL/lib/OpenCL.lib")
+- target_link_libraries(examples PRIVATE "${CMAKE_SOURCE_DIR}/OpenCL/lib/OpenCL.lib")
+- endif()
+- endif()
+-endif()
+-
+-if (NOT MSVC)
+- target_link_libraries(basisu PRIVATE m pthread ${BASISU_EXTRA_LIBS})
+- target_link_libraries(examples PRIVATE m pthread ${BASISU_EXTRA_LIBS})
+-endif()
++pkg_check_modules(ZSTD REQUIRED libzstd)
++target_include_directories(basisu_encoder SYSTEM PUBLIC ${ZSTD_INCLUDE_DIRS})
++target_link_libraries(basisu_encoder PUBLIC ${ZSTD_LINK_LIBRARIES})
+
+-if (NOT EMSCRIPTEN)
+- if (UNIX)
+- if (CMAKE_BUILD_TYPE STREQUAL Release)
+- if (APPLE)
+- add_custom_command(TARGET basisu POST_BUILD COMMAND strip -X -x ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/basisu)
+- #message("strip command: strip -X -x ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/basisu")
+- else()
+- add_custom_command(TARGET basisu POST_BUILD COMMAND strip -g -X -x ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/basisu)
+- #message("strip command: strip -g -X -x ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/basisu")
+- endif()
+- endif()
+- endif()
+-endif()
++include(GNUInstallDirs)
++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/basisu_encoder.pc.in ${CMAKE_CURRENT_BINARY_DIR}/basisu_encoder.pc @ONLY)
+
+-if (MSVC)
+- set_target_properties(basisu PROPERTIES
+- RUNTIME_OUTPUT_NAME "basisu"
+- RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+- RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+- RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+- RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+- )
+-
+- set_target_properties(examples PROPERTIES
+- RUNTIME_OUTPUT_NAME "examples"
+- RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+- RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+- RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+- RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+- )
+-endif()
++install(TARGETS basisu basisu_encoder)
++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/basisu_encoder.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
++install(FILES ${ENCODER_LIB_HEADER_LIST} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+diff --git a/basisu_encoder.pc.in b/basisu_encoder.pc.in
+new file mode 100644
+index 0000000..0ba05a1
+--- /dev/null
++++ b/basisu_encoder.pc.in
+@@ -0,0 +1,8 @@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++
++Name: basisu_encoder
++Description: GPU compressed texture interchange system
++Version: @PROJECT_VERSION@
++Cflags: -I${includedir}
++Libs: -L${libdir} -lbasisu_encoder
+diff --git a/encoder/basisu_comp.cpp b/encoder/basisu_comp.cpp
+index 59a2a50..e9aa20f 100644
+--- a/encoder/basisu_comp.cpp
++++ b/encoder/basisu_comp.cpp
+@@ -33,7 +33,7 @@
+ #endif
+
+ #if BASISD_SUPPORT_KTX2_ZSTD
+-#include "../zstd/zstd.h"
++#include <zstd.h>
+ #endif
+
+ // Set to 1 to disable the mipPadding alignment workaround (which only seems to be needed when no key-values are written at all)
+diff --git a/transcoder/basisu_transcoder.cpp b/transcoder/basisu_transcoder.cpp
+index 0f7ca15..d7bce42 100644
+--- a/transcoder/basisu_transcoder.cpp
++++ b/transcoder/basisu_transcoder.cpp
+@@ -169,7 +169,7 @@
+ // If BASISD_SUPPORT_KTX2_ZSTD is 0, UASTC files compressed with Zstd cannot be loaded.
+ #if BASISD_SUPPORT_KTX2_ZSTD
+ // We only use two Zstd API's: ZSTD_decompress() and ZSTD_isError()
+- #include "../zstd/zstd.h"
++ #include <zstd.h>
+ #endif
+ #endif
+
diff --git a/gnu/packages/patches/bc-fix-cross-compilation.patch b/gnu/packages/patches/bc-fix-cross-compilation.patch
deleted file mode 100644
index 04f2c92abf..0000000000
--- a/gnu/packages/patches/bc-fix-cross-compilation.patch
+++ /dev/null
@@ -1,189 +0,0 @@
-Patch adapted from Nix.
-Upstream-status: Submitted to bug-bc@gnu.org.
-
-diff --git a/bc/Makefile.am b/bc/Makefile.am
-index d9d412e..13f2b1e 100644
---- a/bc/Makefile.am
-+++ b/bc/Makefile.am
-@@ -8,7 +8,7 @@ EXTRA_DIST = bc.h bcdefs.h const.h fix-libmath_h global.h libmath.b proto.h \
- sbc.y
- noinst_HEADERS = libmath.h
-
--DISTCLEANFILES = sbc sbc.c sbc.h libmath.h
-+DISTCLEANFILES = fbc sbc sbc.c sbc.h libmath.h
-
- MAINTAINERCLEANFILES = Makefile.in bc.c bc.h scan.c \
- bc.y bcdefs.h const.h execute.c fix-libmath_h \
-@@ -17,6 +17,7 @@ MAINTAINERCLEANFILES = Makefile.in bc.c bc.h scan.c \
-
- AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/../h
- LIBBC = ../lib/libbc.a
-+LIBBC_HOST = ../lib/libbc_host.a
- LIBL = @LEXLIB@
- LDADD = $(LIBBC) $(LIBL) @READLINELIB@
-
-@@ -29,15 +30,22 @@ $(PROGRAMS): libmath.h $(LIBBC)
- scan.o: bc.h
- global.o: libmath.h
-
--fbcOBJ = main.o bc.o scan.o execute.o load.o storage.o util.o warranty.o
-+%.o_host: CC := $(CC_FOR_BUILD)
-+%.o_host: %.c
-+ $(COMPILE) -c -o $@ $<
-
--libmath.h: libmath.b $(fbcOBJ) $(LIBBC)
-- echo '{0}' > libmath.h
-- $(MAKE) global.o
-- $(LINK) -o fbc $(fbcOBJ) global.o $(LIBBC) $(LIBL) $(READLINELIB) $(LIBS)
-- ./fbc -c $(srcdir)/libmath.b </dev/null >libmath.h
-+fbcOBJ = $(addsuffix _host,\
-+ main.o bc.o scan.o execute.o load.o storage.o util.o warranty.o)
-+
-+global_host.c: global.c
-+ sed 's/#include "libmath.h"/{0}/' $< > $@
-+
-+fbc: $(fbcOBJ) global_host.o_host $(LIBBC_HOST) $(LIBS)
-+ $(CC_FOR_BUILD) $(LIBL) $(READLINELIB) -o $@ $^
-+
-+libmath.h: libmath.b fbc $(LIBBC_HOST)
-+ ./fbc -c $(srcdir)/libmath.b < /dev/null > libmath.h
- $(srcdir)/fix-libmath_h
-- rm -f ./fbc ./global.o
-
- sbcOBJ = main.o sbc.o scan.o execute.o global.o load.o storage.o util.o \
- warranty.o
-diff --git a/configure.ac b/configure.ac
-index fc74573..5cabb73 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -20,6 +20,7 @@ m4_define([dc_version], 1.4.1)
-
- AC_INIT([bc],[bc_version])
- AC_CONFIG_SRCDIR(doc/bc.1)
-+AC_CONFIG_MACRO_DIR([m4])
- AM_INIT_AUTOMAKE([dist-bzip2])
- AC_CONFIG_HEADERS(config.h)
-
-@@ -35,6 +36,7 @@ AC_DEFINE([DC_COPYRIGHT],
- [Define the dc copyright line.])
-
- AC_PROG_CC
-+AX_CC_FOR_BUILD
- AC_USE_SYSTEM_EXTENSIONS
-
- AM_PROG_LEX
-diff --git a/lib/Makefile.am b/lib/Makefile.am
-index ec4bf59..24c9f42 100644
---- a/lib/Makefile.am
-+++ b/lib/Makefile.am
-@@ -1,5 +1,5 @@
- ## Process this file with automake to produce Makefile.in
--noinst_LIBRARIES = libbc.a
-+noinst_LIBRARIES = libbc.a libbc_host.a
-
- AM_CPPFLAGS = -I. -I.. -I$(srcdir)/../h
-
-@@ -7,8 +7,6 @@ libbc_a_SOURCES = getopt.c getopt1.c vfprintf.c number.c
-
- DEFS = @DEFS@ $(DEFSADD)
-
--AM_CFLAGS = @CFLAGS@
--
- MAINTAINERCLEANFILES = Makefile.in number.c
- CLEANFILES = testmul specialnumber muldigits.h
-
-@@ -24,3 +22,11 @@ testmul: testmul.o number.o
-
- specialnumber: newnumber.o
- cp newnumber.o number.o
-+
-+%.o_host: CC := $(CC_FOR_BUILD)
-+%.o_host : %.c
-+ $(COMPILE) -c -o $@ $<
-+
-+libbc_host.a : $(addsuffix _host,$(libbc_a_OBJECTS))
-+ ar cru $@ $+
-+ ranlib $@
-diff --git a/m4/cc_for_build.m4 b/m4/cc_for_build.m4
-new file mode 100644
-index 0000000..c62ffad
---- /dev/null
-+++ b/m4/cc_for_build.m4
-@@ -0,0 +1,77 @@
-+# ===========================================================================
-+# https://www.gnu.org/software/autoconf-archive/ax_cc_for_build.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+# AX_CC_FOR_BUILD
-+#
-+# DESCRIPTION
-+#
-+# Find a build-time compiler. Sets CC_FOR_BUILD and EXEEXT_FOR_BUILD.
-+#
-+# LICENSE
-+#
-+# Copyright (c) 2010 Reuben Thomas <rrt@sc3d.org>
-+# Copyright (c) 1999 Richard Henderson <rth@redhat.com>
-+#
-+# This program is free software: you can redistribute it and/or modify it
-+# under the terms of the GNU General Public License as published by the
-+# Free Software Foundation, either version 3 of the License, or (at your
-+# option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful, but
-+# WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-+# Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License along
-+# with this program. If not, see <https://www.gnu.org/licenses/>.
-+#
-+# As a special exception, the respective Autoconf Macro's copyright owner
-+# gives unlimited permission to copy, distribute and modify the configure
-+# scripts that are the output of Autoconf when processing the Macro. You
-+# need not follow the terms of the GNU General Public License when using
-+# or distributing such scripts, even though portions of the text of the
-+# Macro appear in them. The GNU General Public License (GPL) does govern
-+# all other use of the material that constitutes the Autoconf Macro.
-+#
-+# This special exception to the GPL applies to versions of the Autoconf
-+# Macro released by the Autoconf Archive. When you make and distribute a
-+# modified version of the Autoconf Macro, you may extend this special
-+# exception to the GPL to apply to your modified version as well.
-+
-+#serial 3
-+
-+dnl Get a default for CC_FOR_BUILD to put into Makefile.
-+AC_DEFUN([AX_CC_FOR_BUILD],
-+[# Put a plausible default for CC_FOR_BUILD in Makefile.
-+if test -z "$CC_FOR_BUILD"; then
-+ if test "x$cross_compiling" = "xno"; then
-+ CC_FOR_BUILD='$(CC)'
-+ else
-+ CC_FOR_BUILD=gcc
-+ fi
-+fi
-+AC_SUBST(CC_FOR_BUILD)
-+# Also set EXEEXT_FOR_BUILD.
-+if test "x$cross_compiling" = "xno"; then
-+ EXEEXT_FOR_BUILD='$(EXEEXT)'
-+else
-+ AC_CACHE_CHECK([for build system executable suffix], bfd_cv_build_exeext,
-+ [rm -f conftest*
-+ echo 'int main () { return 0; }' > conftest.c
-+ bfd_cv_build_exeext=
-+ ${CC_FOR_BUILD} -o conftest conftest.c 1>&5 2>&5
-+ for file in conftest.*; do
-+ case $file in
-+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
-+ *) bfd_cv_build_exeext=`echo $file | sed -e s/conftest//` ;;
-+ esac
-+ done
-+ rm -f conftest*
-+ test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no])
-+ EXEEXT_FOR_BUILD=""
-+ test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext}
-+fi
-+AC_SUBST(EXEEXT_FOR_BUILD)])dnl
diff --git a/gnu/packages/patches/c2rust-ast-exporter-local-search.patch b/gnu/packages/patches/c2rust-ast-exporter-local-search.patch
deleted file mode 100644
index 211873ef69..0000000000
--- a/gnu/packages/patches/c2rust-ast-exporter-local-search.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -ru orig/c2rust-ast-exporter-0.18.0/src/CMakeLists.txt c2rust-ast-exporter-0.18.0/src/CMakeLists.txt
---- orig/c2rust-ast-exporter-0.18.0/src/CMakeLists.txt 2006-07-24 03:21:28.000000000 +0200
-+++ c2rust-ast-exporter-0.18.0/src/CMakeLists.txt 2024-12-21 12:06:27.056455735 +0100
-@@ -24,8 +24,7 @@
- ExternalProject_Add(tinycbor_build
- PREFIX ${TINYCBOR_PREFIX}
- INSTALL_DIR ${CMAKE_BINARY_DIR}
-- GIT_REPOSITORY ${TINYCBOR_REPO}
-- GIT_TAG ${TINYCBOR_TAG}
-+ SOURCE_DIR ${TINYCBOR_SOURCE_DIR}
- # the fd redirection here fails when the build run inside Cargo.
- # patch from upstream:
- # https://github.com/intel/tinycbor/commit/6176e0a28d7c5ef3a5e9cbd02521999c412de72c
-diff -ru orig/c2rust-ast-exporter-0.18.0/build.rs c2rust-ast-exporter-0.18.0/build.rs
---- orig/c2rust-ast-exporter-0.18.0/build.rs 2024-12-21 19:37:50.004786236 +0100
-+++ c2rust-ast-exporter-0.18.0/build.rs 2024-12-21 19:39:20.188478196 +0100
-@@ -127,6 +127,7 @@
- // Build libclangAstExporter.a with cmake
- let dst = Config::new("src")
- // Where to find LLVM/Clang CMake files
-+ .define("TINYCBOR_SOURCE_DIR", &env!("GUIX_TINYCBOR_SOURCE_DIR"))
- .define("LLVM_DIR", &format!("{}/cmake/llvm", llvm_lib_dir))
- .define("Clang_DIR", &format!("{}/cmake/clang", llvm_lib_dir))
- // What to build
diff --git a/gnu/packages/patches/calligra-qt-6.9.patch b/gnu/packages/patches/calligra-qt-6.9.patch
new file mode 100644
index 0000000000..04b17cddf2
--- /dev/null
+++ b/gnu/packages/patches/calligra-qt-6.9.patch
@@ -0,0 +1,46 @@
+From 659c88eec87160d908faf9b78b7b1006eb7e5bf3 Mon Sep 17 00:00:00 2001
+From: Nicolas Fella <nicolas.fella@gmx.de>
+Date: Fri, 10 Jan 2025 15:44:09 +0100
+Subject: [PATCH] Fix build with Qt 6.9
+
+Converting Qt::Key to QChar doesn't work any more
+---
+ libs/basicflakes/tools/KoCreatePathTool.cpp | 2 +-
+ plugins/textshape/TextTool.cpp | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/libs/basicflakes/tools/KoCreatePathTool.cpp b/libs/basicflakes/tools/KoCreatePathTool.cpp
+index 699f3b0e772..6cb7f11b4a4 100644
+--- a/libs/basicflakes/tools/KoCreatePathTool.cpp
++++ b/libs/basicflakes/tools/KoCreatePathTool.cpp
+@@ -444,7 +444,7 @@ QList<QPointer<QWidget>> KoCreatePathTool::createOptionWidgets()
+ angleEdit->setValue(d->angleSnappingDelta);
+ angleEdit->setRange(1, 360);
+ angleEdit->setSingleStep(1);
+- angleEdit->setSuffix(QChar(Qt::Key_degree));
++ angleEdit->setSuffix(QStringLiteral("°"));
+ layout->addWidget(angleEdit, 0, 1);
+ layout->addWidget(new QLabel(i18n("Activate angle snap:"), angleWidget), 1, 0);
+ QCheckBox *angleSnap = new QCheckBox(angleWidget);
+diff --git a/plugins/textshape/TextTool.cpp b/plugins/textshape/TextTool.cpp
+index 79e88353408..bb82e7b90c5 100644
+--- a/plugins/textshape/TextTool.cpp
++++ b/plugins/textshape/TextTool.cpp
+@@ -2360,7 +2360,7 @@ void TextTool::nonbreakingSpace()
+ {
+ if (!m_allowActions || !m_textEditor.data())
+ return;
+- m_textEditor.data()->insertText(QString(QChar(Qt::Key_nobreakspace)));
++ m_textEditor.data()->insertText(QString(QChar(QChar::Nbsp)));
+ }
+
+ void TextTool::nonbreakingHyphen()
+@@ -2374,7 +2374,7 @@ void TextTool::softHyphen()
+ {
+ if (!m_allowActions || !m_textEditor.data())
+ return;
+- m_textEditor.data()->insertText(QString(QChar(Qt::Key_hyphen)));
++ m_textEditor.data()->insertText(QString(QChar(QChar::SoftHyphen)));
+ }
+
+ void TextTool::lineBreak()
diff --git a/gnu/packages/patches/clang-10.0-libc-search-path.patch b/gnu/packages/patches/clang-10.0-libc-search-path.patch
deleted file mode 100644
index c2854e3f33..0000000000
--- a/gnu/packages/patches/clang-10.0-libc-search-path.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-Clang attempts to guess file names based on the OS and distro (yes!),
-but unfortunately, that doesn't work for us.
-
-This patch makes it easy to insert libc's $libdir so that Clang passes the
-correct absolute file name of crt1.o etc. to 'ld'. It also disables all
-the distro-specific stuff and removes the hard-coded FHS directory names
-to make sure Clang also works on foreign distros.
-
-diff --git a/lib/Driver/Distro.cpp b/lib/Driver/Distro.cpp
-index 06707fef..f3bd43de 100644
---- a/lib/Driver/Distro.cpp
-+++ b/lib/Driver/Distro.cpp
-@@ -20,6 +20,10 @@ using namespace clang;
-
- static Distro::DistroType DetectDistro(llvm::vfs::FileSystem &VFS,
- const llvm::Triple &TargetOrHost) {
-+ // The compiler should always behave the same, even when used via Guix on a
-+ // foreign distro.
-+ return Distro::UnknownDistro;
-+
- // If we don't target Linux, no need to check the distro. This saves a few
- // OS calls.
- if (!TargetOrHost.isOSLinux())
-diff --git a/lib/Driver/ToolChains/Cuda.cpp b/lib/Driver/ToolChains/Cuda.cpp
-index 50d22a2a..4ab93e0a 100644
---- a/lib/Driver/ToolChains/Cuda.cpp
-+++ b/lib/Driver/ToolChains/Cuda.cpp
-@@ -60,6 +60,9 @@ CudaInstallationDetector::CudaInstallationDetector(
- const Driver &D, const llvm::Triple &HostTriple,
- const llvm::opt::ArgList &Args)
- : D(D) {
-+ // Don't look for CUDA in /usr.
-+ return;
-+
- struct Candidate {
- std::string Path;
- bool StrictChecking;
-diff --git a/lib/Driver/ToolChains/Linux.cpp b/lib/Driver/ToolChains/Linux.cpp
-index bff1ab10..e996d3b8 100644
---- a/lib/Driver/ToolChains/Linux.cpp
-+++ b/lib/Driver/ToolChains/Linux.cpp
-@@ -240,6 +240,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- .str());
- }
-
-+ // Comment out the distro-specific tweaks so that they don't bite when
-+ // using Guix on a foreign distro.
-+#if 0
- Distro Distro(D.getVFS(), Triple);
-
- if (Distro.IsAlpineLinux() || Triple.isAndroid()) {
-@@ -306,6 +309,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
-
- if (IsAndroid || Distro.IsOpenSUSE())
- ExtraOpts.push_back("--enable-new-dtags");
-+#endif
-
- // The selection of paths to try here is designed to match the patterns which
- // the GCC driver itself uses, as this is part of the GCC-compatible driver.
-@@ -369,6 +373,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- }
- }
-
-+#if 0
- // Similar to the logic for GCC above, if we currently running Clang inside
- // of the requested system root, add its parent library paths to
- // those searched.
-@@ -414,6 +419,8 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- // Try walking via the GCC triple path in case of biarch or multiarch GCC
- // installations with strange symlinks.
- if (GCCInstallation.isValid()) {
-+ // The following code would end up adding things like
-+ // "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path.
- addPathIfExists(D,
- SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
- "/../../" + OSLibDir,
-@@ -449,9 +456,14 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- // directory ('Dir' below) or the ResourceDir.
- if (StringRef(D.Dir).startswith(SysRoot))
- addPathIfExists(D, D.Dir + "/../lib", Paths);
-+#endif
-+
-+ // Add libc's lib/ directory to the search path, so that crt1.o, crti.o,
-+ // and friends can be found.
-+ addPathIfExists(D, "@GLIBC_LIBDIR@", Paths);
-
-- addPathIfExists(D, SysRoot + "/lib", Paths);
-- addPathIfExists(D, SysRoot + "/usr/lib", Paths);
-+ // Add GCC's lib/ directory so libstdc++.so can be found.
-+ addPathIfExists(D, GCCInstallation.getParentLibPath(), Paths);
- }
-
- ToolChain::CXXStdlibType Linux::GetDefaultCXXStdlibType() const {
diff --git a/gnu/packages/patches/clang-3.5-libc-search-path.patch b/gnu/packages/patches/clang-3.5-libc-search-path.patch
deleted file mode 100644
index 50e4480239..0000000000
--- a/gnu/packages/patches/clang-3.5-libc-search-path.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-Clang attempts to guess file names based on the OS and distro (yes!),
-but unfortunately, that doesn't work for us.
-
-This patch makes it easy to insert libc's $libdir so that Clang passes the
-correct absolute file name of crt1.o etc. to 'ld'. It also disables all
-the distro-specific stuff and removes the hard-coded FHS directory names
-to make sure Clang also works on non-GuixSD systems.
-
---- cfe-3.6.0.src/lib/Driver/ToolChains.cpp 2015-02-18 22:03:07.000000000 +0100
-+++ cfe-3.6.0.src/lib/Driver/ToolChains.cpp 2015-06-19 16:37:20.459701044 +0200
-@@ -2931,6 +2931,9 @@ Linux::Linux(const Driver &D, const llvm
-
- Linker = GetLinkerPath();
-
-+ // Comment out the distro-specific tweaks so that they don't bite when
-+ // using Guix on a foreign distro.
-+#if 0
- Distro Distro = DetectDistro(Arch);
-
- if (IsOpenSUSE(Distro) || IsUbuntu(Distro)) {
-@@ -2973,6 +2976,7 @@ Linux::Linux(const Driver &D, const llvm
-
- if (IsOpenSUSE(Distro))
- ExtraOpts.push_back("--enable-new-dtags");
-+#endif
-
- // The selection of paths to try here is designed to match the patterns which
- // the GCC driver itself uses, as this is part of the GCC-compatible driver.
-@@ -3043,14 +3047,12 @@ Linux::Linux(const Driver &D, const llvm
- addPathIfExists(D.Dir + "/../" + OSLibDir, Paths);
- }
-
-- addPathIfExists(SysRoot + "/lib/" + MultiarchTriple, Paths);
-- addPathIfExists(SysRoot + "/lib/../" + OSLibDir, Paths);
-- addPathIfExists(SysRoot + "/usr/lib/" + MultiarchTriple, Paths);
-- addPathIfExists(SysRoot + "/usr/lib/../" + OSLibDir, Paths);
--
- // Try walking via the GCC triple path in case of biarch or multiarch GCC
- // installations with strange symlinks.
- if (GCCInstallation.isValid()) {
-+ // The following code would end up adding things like
-+ // "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path.
-+#if 0
- addPathIfExists(SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
- "/../../" + OSLibDir, Paths);
-
-@@ -3060,6 +3062,7 @@ Linux::Linux(const Driver &D, const llvm
- addPathIfExists(GCCInstallation.getInstallPath() +
- BiarchSibling.gccSuffix(), Paths);
- }
-+#endif
-
- // See comments above on the multilib variant for details of why this is
- // included even from outside the sysroot.
-@@ -3083,8 +3086,9 @@ Linux::Linux(const Driver &D, const llvm
- if (StringRef(D.Dir).startswith(SysRoot))
- addPathIfExists(D.Dir + "/../lib", Paths);
-
-- addPathIfExists(SysRoot + "/lib", Paths);
-- addPathIfExists(SysRoot + "/usr/lib", Paths);
-+ // Add libc's lib/ directory to the search path, so that crt1.o, crti.o,
-+ // and friends can be found.
-+ addPathIfExists("@GLIBC_LIBDIR@", Paths);
- }
-
- bool Linux::HasNativeLLVMSupport() const {
diff --git a/gnu/packages/patches/clang-3.5-libsanitizer-ustat-fix.patch b/gnu/packages/patches/clang-3.5-libsanitizer-ustat-fix.patch
deleted file mode 100644
index cfb09a8ce3..0000000000
--- a/gnu/packages/patches/clang-3.5-libsanitizer-ustat-fix.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From d9d97cac3702b99a00cd113de98c41eb535d47ed Mon Sep 17 00:00:00 2001
-From: Efraim Flashner <efraim@flashner.co.il>
-Date: Sun, 14 Oct 2018 12:11:30 +0300
-Subject: [PATCH] patch modified from the gcc patch series, also dealing with
- ustat.
-
----
- .../sanitizer_platform_limits_posix.cc | 15 +++++++++++++--
- 1 file changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
-index 29fea6e..570b9a5 100644
---- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
-+++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
-@@ -129,7 +129,6 @@
- #include <sys/statvfs.h>
- #include <sys/timex.h>
- #include <sys/user.h>
--#include <sys/ustat.h>
- #include <linux/cyclades.h>
- #include <linux/if_eql.h>
- #include <linux/if_plip.h>
-@@ -222,7 +221,19 @@ namespace __sanitizer {
- #endif // SANITIZER_LINUX || SANITIZER_FREEBSD
-
- #if SANITIZER_LINUX && !SANITIZER_ANDROID
-- unsigned struct_ustat_sz = sizeof(struct ustat);
-+ // Use pre-computed size of struct ustat to avoid <sys/ustat.h> which
-+ // has been removed from glibc 2.28.
-+#if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \
-+ || defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) \
-+ || defined(__x86_64__)
-+#define SIZEOF_STRUCT_USTAT 32
-+#elif defined(__arm__) || defined(__i386__) || defined(__mips__) \
-+ || defined(__powerpc__) || defined(__s390__)
-+#define SIZEOF_STRUCT_USTAT 20
-+#else
-+#error Unknown size of struct ustat
-+#endif
-+ unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT;
- unsigned struct_rlimit64_sz = sizeof(struct rlimit64);
- unsigned struct_statvfs64_sz = sizeof(struct statvfs64);
- #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
---
-2.19.1
-
diff --git a/gnu/packages/patches/clang-3.8-libc-search-path.patch b/gnu/packages/patches/clang-3.8-libc-search-path.patch
deleted file mode 100644
index 0f7d0a4add..0000000000
--- a/gnu/packages/patches/clang-3.8-libc-search-path.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-Clang attempts to guess file names based on the OS and distro (yes!),
-but unfortunately, that doesn't work for us.
-
-This patch makes it easy to insert libc's $libdir so that Clang passes the
-correct absolute file name of crt1.o etc. to 'ld'. It also disables all
-the distro-specific stuff and removes the hard-coded FHS directory names
-to make sure Clang also works on non-GuixSD systems.
-
-This patch makes slight adjustments over "clang-libc-search-path.patch" for
-changes in clang 3.8.
-
---- cfe-3.8.0.src/lib/Driver/ToolChains.cpp
-+++ cfe-3.8.0.src/lib/Driver/ToolChains.cpp
-@@ -3661,6 +3661,9 @@
- GCCInstallation.getTriple().str() + "/bin")
- .str());
-
-+ // Comment out the distro-specific tweaks so that they don't bite when
-+ // using Guix on a foreign distro.
-+#if 0
- Distro Distro = DetectDistro(D, Arch);
-
- if (IsOpenSUSE(Distro) || IsUbuntu(Distro)) {
-@@ -3702,6 +3705,7 @@
-
- if (IsOpenSUSE(Distro))
- ExtraOpts.push_back("--enable-new-dtags");
-+#endif
-
- // The selection of paths to try here is designed to match the patterns which
- // the GCC driver itself uses, as this is part of the GCC-compatible driver.
-@@ -3771,14 +3775,12 @@
- addPathIfExists(D, D.Dir + "/../" + OSLibDir, Paths);
- }
-
-- addPathIfExists(D, SysRoot + "/lib/" + MultiarchTriple, Paths);
-- addPathIfExists(D, SysRoot + "/lib/../" + OSLibDir, Paths);
-- addPathIfExists(D, SysRoot + "/usr/lib/" + MultiarchTriple, Paths);
-- addPathIfExists(D, SysRoot + "/usr/lib/../" + OSLibDir, Paths);
--
- // Try walking via the GCC triple path in case of biarch or multiarch GCC
- // installations with strange symlinks.
- if (GCCInstallation.isValid()) {
-+ // The following code would end up adding things like
-+ // "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path.
-+#if 0
- addPathIfExists(D,
- SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
- "/../../" + OSLibDir,
-@@ -3791,6 +3793,7 @@
- BiarchSibling.gccSuffix(),
- Paths);
- }
-+#endif
-
- // See comments above on the multilib variant for details of why this is
- // included even from outside the sysroot.
-@@ -3815,8 +3818,9 @@
- if (StringRef(D.Dir).startswith(SysRoot))
- addPathIfExists(D, D.Dir + "/../lib", Paths);
-
-- addPathIfExists(D, SysRoot + "/lib", Paths);
-- addPathIfExists(D, SysRoot + "/usr/lib", Paths);
-+ // Add libc's lib/ directory to the search path, so that crt1.o, crti.o,
-+ // and friends can be found.
-+ addPathIfExists(D, "@GLIBC_LIBDIR@", Paths);
- }
-
- bool Linux::HasNativeLLVMSupport() const { return true; }
diff --git a/gnu/packages/patches/clang-6.0-libc-search-path.patch b/gnu/packages/patches/clang-6.0-libc-search-path.patch
deleted file mode 100644
index a62e8063c2..0000000000
--- a/gnu/packages/patches/clang-6.0-libc-search-path.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-Clang attempts to guess file names based on the OS and distro (yes!),
-but unfortunately, that doesn't work for us.
-
-This patch makes it easy to insert libc's $libdir so that Clang passes the
-correct absolute file name of crt1.o etc. to 'ld'. It also disables all
-the distro-specific stuff and removes the hard-coded FHS directory names
-to make sure Clang also works on non-GuixSD systems.
-
---- cfe-6.0.0.src/lib/Driver/ToolChains/Linux.cpp
-+++ cfe-6.0.0.src/lib/Driver/ToolChains/Linux.cpp
-@@ -207,7 +207,9 @@
- PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" +
- GCCInstallation.getTriple().str() + "/bin")
- .str());
--
-+ // Comment out the distro-specific tweaks so that they don't bite when
-+ // using Guix on a foreign distro.
-+#if 0
- Distro Distro(D.getVFS());
-
- if (Distro.IsAlpineLinux()) {
-@@ -255,6 +257,7 @@
-
- if (IsAndroid || Distro.IsOpenSUSE())
- ExtraOpts.push_back("--enable-new-dtags");
-+#endif
-
- // The selection of paths to try here is designed to match the patterns which
- // the GCC driver itself uses, as this is part of the GCC-compatible driver.
-@@ -329,14 +332,12 @@
- addPathIfExists(D, D.Dir + "/../" + OSLibDir, Paths);
- }
-
-- addPathIfExists(D, SysRoot + "/lib/" + MultiarchTriple, Paths);
-- addPathIfExists(D, SysRoot + "/lib/../" + OSLibDir, Paths);
-- addPathIfExists(D, SysRoot + "/usr/lib/" + MultiarchTriple, Paths);
-- addPathIfExists(D, SysRoot + "/usr/lib/../" + OSLibDir, Paths);
--
- // Try walking via the GCC triple path in case of biarch or multiarch GCC
- // installations with strange symlinks.
- if (GCCInstallation.isValid()) {
-+ // The following code would end up adding things like
-+ // "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path.
-+#if 0
- addPathIfExists(D,
- SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
- "/../../" + OSLibDir,
-@@ -349,6 +350,7 @@
- BiarchSibling.gccSuffix(),
- Paths);
- }
-+#endif
-
- // See comments above on the multilib variant for details of why this is
- // included even from outside the sysroot.
-@@ -373,8 +375,9 @@
- if (StringRef(D.Dir).startswith(SysRoot))
- addPathIfExists(D, D.Dir + "/../lib", Paths);
-
-- addPathIfExists(D, SysRoot + "/lib", Paths);
-- addPathIfExists(D, SysRoot + "/usr/lib", Paths);
-+ // Add libc's lib/ directory to the search path, so that crt1.o, crti.o,
-+ // and friends can be found.
-+ addPathIfExists(D, "@GLIBC_LIBDIR@", Paths);
- }
-
- bool Linux::HasNativeLLVMSupport() const { return true; }
diff --git a/gnu/packages/patches/clang-7.0-libc-search-path.patch b/gnu/packages/patches/clang-7.0-libc-search-path.patch
deleted file mode 100644
index cb7088eda4..0000000000
--- a/gnu/packages/patches/clang-7.0-libc-search-path.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-Clang attempts to guess file names based on the OS and distro (yes!),
-but unfortunately, that doesn't work for us.
-
-This patch makes it easy to insert libc's $libdir so that Clang passes the
-correct absolute file name of crt1.o etc. to 'ld'. It also disables all
-the distro-specific stuff and removes the hard-coded FHS directory names
-to make sure Clang also works on foreign distros.
-
-diff --git a/lib/Driver/Distro.cpp b/lib/Driver/Distro.cpp
-index 2c4d44f..0493b0a 100644
---- a/lib/Driver/Distro.cpp
-+++ b/lib/Driver/Distro.cpp
-@@ -18,6 +18,10 @@ using namespace clang::driver;
- using namespace clang;
-
- static Distro::DistroType DetectDistro(vfs::FileSystem &VFS) {
-+ // The compiler should always behave the same, even when used via Guix on a
-+ // foreign distro.
-+ return Distro::UnknownDistro;
-+
- llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> File =
- VFS.getBufferForFile("/etc/lsb-release");
- if (File) {
-diff --git a/lib/Driver/ToolChains/Cuda.cpp b/lib/Driver/ToolChains/Cuda.cpp
-index 7fb4ae4..cb21344 100644
---- a/lib/Driver/ToolChains/Cuda.cpp
-+++ b/lib/Driver/ToolChains/Cuda.cpp
-@@ -66,6 +66,9 @@ CudaInstallationDetector::CudaInstallationDetector(
- const Driver &D, const llvm::Triple &HostTriple,
- const llvm::opt::ArgList &Args)
- : D(D) {
-+ // Don't look for CUDA in /usr.
-+ return;
-+
- struct Candidate {
- std::string Path;
- bool StrictChecking;
-diff --git a/lib/Driver/ToolChains/Linux.cpp b/lib/Driver/ToolChains/Linux.cpp
-index f8f3623..36dc722 100644
---- a/lib/Driver/ToolChains/Linux.cpp
-+++ b/lib/Driver/ToolChains/Linux.cpp
-@@ -225,7 +225,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" +
- GCCInstallation.getTriple().str() + "/bin")
- .str());
--
-+ // Comment out the distro-specific tweaks so that they don't bite when
-+ // using Guix on a foreign distro.
-+#if 0
- Distro Distro(D.getVFS());
-
- if (Distro.IsAlpineLinux()) {
-@@ -284,6 +286,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
-
- if (IsAndroid || Distro.IsOpenSUSE())
- ExtraOpts.push_back("--enable-new-dtags");
-+#endif
-
- // The selection of paths to try here is designed to match the patterns which
- // the GCC driver itself uses, as this is part of the GCC-compatible driver.
-@@ -348,6 +351,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- }
- }
-
-+#if 0
- // Similar to the logic for GCC above, if we currently running Clang inside
- // of the requested system root, add its parent library paths to
- // those searched.
-@@ -393,6 +397,8 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- // Try walking via the GCC triple path in case of biarch or multiarch GCC
- // installations with strange symlinks.
- if (GCCInstallation.isValid()) {
-+ // The following code would end up adding things like
-+ // "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path.
- addPathIfExists(D,
- SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
- "/../../" + OSLibDir,
-@@ -428,9 +434,14 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- // directory ('Dir' below) or the ResourceDir.
- if (StringRef(D.Dir).startswith(SysRoot))
- addPathIfExists(D, D.Dir + "/../lib", Paths);
-+#endif
-+
-+ // Add libc's lib/ directory to the search path, so that crt1.o, crti.o,
-+ // and friends can be found.
-+ addPathIfExists(D, "@GLIBC_LIBDIR@", Paths);
-
-- addPathIfExists(D, SysRoot + "/lib", Paths);
-- addPathIfExists(D, SysRoot + "/usr/lib", Paths);
-+ // Add GCC's lib/ directory so libstdc++.so can be found.
-+ addPathIfExists(D, GCCInstallation.getParentLibPath(), Paths);
- }
-
- bool Linux::HasNativeLLVMSupport() const { return true; }
diff --git a/gnu/packages/patches/clang-8.0-libc-search-path.patch b/gnu/packages/patches/clang-8.0-libc-search-path.patch
deleted file mode 100644
index 2003fef217..0000000000
--- a/gnu/packages/patches/clang-8.0-libc-search-path.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-Clang attempts to guess file names based on the OS and distro (yes!),
-but unfortunately, that doesn't work for us.
-
-This patch makes it easy to insert libc's $libdir so that Clang passes the
-correct absolute file name of crt1.o etc. to 'ld'. It also disables all
-the distro-specific stuff and removes the hard-coded FHS directory names
-to make sure Clang also works on foreign distros.
-
-diff --git a/lib/Driver/Distro.cpp b/lib/Driver/Distro.cpp
-index 396d0bee..90e06613 100644
---- a/lib/Driver/Distro.cpp
-+++ b/lib/Driver/Distro.cpp
-@@ -19,6 +19,10 @@ using namespace clang::driver;
- using namespace clang;
-
- static Distro::DistroType DetectDistro(llvm::vfs::FileSystem &VFS) {
-+ // The compiler should always behave the same, even when used via Guix on a
-+ // foreign distro.
-+ return Distro::UnknownDistro;
-+
- llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> File =
- VFS.getBufferForFile("/etc/lsb-release");
- if (File) {
-diff --git a/lib/Driver/ToolChains/Cuda.cpp b/lib/Driver/ToolChains/Cuda.cpp
-index 57b8d434..57339f1a 100644
---- a/lib/Driver/ToolChains/Cuda.cpp
-+++ b/lib/Driver/ToolChains/Cuda.cpp
-@@ -68,6 +68,9 @@ CudaInstallationDetector::CudaInstallationDetector(
- const Driver &D, const llvm::Triple &HostTriple,
- const llvm::opt::ArgList &Args)
- : D(D) {
-+ // Don't look for CUDA in /usr.
-+ return;
-+
- struct Candidate {
- std::string Path;
- bool StrictChecking;
-diff --git a/lib/Driver/ToolChains/Linux.cpp b/lib/Driver/ToolChains/Linux.cpp
-index 65ab9b2d..5ed28e0a 100644
---- a/lib/Driver/ToolChains/Linux.cpp
-+++ b/lib/Driver/ToolChains/Linux.cpp
-@@ -233,7 +233,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" +
- GCCInstallation.getTriple().str() + "/bin")
- .str());
--
-+ // Comment out the distro-specific tweaks so that they don't bite when
-+ // using Guix on a foreign distro.
-+#if 0
- Distro Distro(D.getVFS());
-
- if (Distro.IsAlpineLinux() || Triple.isAndroid()) {
-@@ -304,6 +306,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
-
- if (IsAndroid || Distro.IsOpenSUSE())
- ExtraOpts.push_back("--enable-new-dtags");
-+#endif
-
- // The selection of paths to try here is designed to match the patterns which
- // the GCC driver itself uses, as this is part of the GCC-compatible driver.
-@@ -366,6 +369,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- }
- }
-
-+#if 0
- // Similar to the logic for GCC above, if we currently running Clang inside
- // of the requested system root, add its parent library paths to
- // those searched.
-@@ -411,6 +415,8 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- // Try walking via the GCC triple path in case of biarch or multiarch GCC
- // installations with strange symlinks.
- if (GCCInstallation.isValid()) {
-+ // The following code would end up adding things like
-+ // "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path.
- addPathIfExists(D,
- SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
- "/../../" + OSLibDir,
-@@ -446,9 +452,14 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- // directory ('Dir' below) or the ResourceDir.
- if (StringRef(D.Dir).startswith(SysRoot))
- addPathIfExists(D, D.Dir + "/../lib", Paths);
-+#endif
-+
-+ // Add libc's lib/ directory to the search path, so that crt1.o, crti.o,
-+ // and friends can be found.
-+ addPathIfExists(D, "@GLIBC_LIBDIR@", Paths);
-
-- addPathIfExists(D, SysRoot + "/lib", Paths);
-- addPathIfExists(D, SysRoot + "/usr/lib", Paths);
-+ // Add GCC's lib/ directory so libstdc++.so can be found.
-+ addPathIfExists(D, GCCInstallation.getParentLibPath(), Paths);
- }
-
- ToolChain::CXXStdlibType Linux::GetDefaultCXXStdlibType() const {
diff --git a/gnu/packages/patches/clang-9.0-libc-search-path.patch b/gnu/packages/patches/clang-9.0-libc-search-path.patch
deleted file mode 100644
index 1984895a9c..0000000000
--- a/gnu/packages/patches/clang-9.0-libc-search-path.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-Clang attempts to guess file names based on the OS and distro (yes!),
-but unfortunately, that doesn't work for us.
-
-This patch makes it easy to insert libc's $libdir so that Clang passes the
-correct absolute file name of crt1.o etc. to 'ld'. It also disables all
-the distro-specific stuff and removes the hard-coded FHS directory names
-to make sure Clang also works on foreign distros.
-
-diff --git a/lib/Driver/Distro.cpp b/lib/Driver/Distro.cpp
-index f2a3074d..536db89c 100644
---- a/lib/Driver/Distro.cpp
-+++ b/lib/Driver/Distro.cpp
-@@ -18,6 +18,10 @@ using namespace clang::driver;
- using namespace clang;
-
- static Distro::DistroType DetectDistro(llvm::vfs::FileSystem &VFS) {
-+ // The compiler should always behave the same, even when used via Guix on a
-+ // foreign distro.
-+ return Distro::UnknownDistro;
-+
- llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> File =
- VFS.getBufferForFile("/etc/lsb-release");
- if (File) {
-diff --git a/lib/Driver/ToolChains/Cuda.cpp b/lib/Driver/ToolChains/Cuda.cpp
-index 96f8c513..64fd7a26 100644
---- a/lib/Driver/ToolChains/Cuda.cpp
-+++ b/lib/Driver/ToolChains/Cuda.cpp
-@@ -69,6 +69,9 @@ CudaInstallationDetector::CudaInstallationDetector(
- const Driver &D, const llvm::Triple &HostTriple,
- const llvm::opt::ArgList &Args)
- : D(D) {
-+ // Don't look for CUDA in /usr.
-+ return;
-+
- struct Candidate {
- std::string Path;
- bool StrictChecking;
-diff --git a/lib/Driver/ToolChains/Linux.cpp b/lib/Driver/ToolChains/Linux.cpp
-index 7f59bc77..67d8ce22 100644
---- a/lib/Driver/ToolChains/Linux.cpp
-+++ b/lib/Driver/ToolChains/Linux.cpp
-@@ -240,6 +240,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- .str());
- }
-
-+ // Comment out the distro-specific tweaks so that they don't bite when
-+ // using Guix on a foreign distro.
-+#if 0
- Distro Distro(D.getVFS());
-
- if (Distro.IsAlpineLinux() || Triple.isAndroid()) {
-@@ -306,6 +309,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
-
- if (IsAndroid || Distro.IsOpenSUSE())
- ExtraOpts.push_back("--enable-new-dtags");
-+#endif
-
- // The selection of paths to try here is designed to match the patterns which
- // the GCC driver itself uses, as this is part of the GCC-compatible driver.
-@@ -369,6 +373,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- }
- }
-
-+#if 0
- // Similar to the logic for GCC above, if we currently running Clang inside
- // of the requested system root, add its parent library paths to
- // those searched.
-@@ -414,6 +419,8 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- // Try walking via the GCC triple path in case of biarch or multiarch GCC
- // installations with strange symlinks.
- if (GCCInstallation.isValid()) {
-+ // The following code would end up adding things like
-+ // "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path.
- addPathIfExists(D,
- SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
- "/../../" + OSLibDir,
-@@ -449,9 +456,14 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- // directory ('Dir' below) or the ResourceDir.
- if (StringRef(D.Dir).startswith(SysRoot))
- addPathIfExists(D, D.Dir + "/../lib", Paths);
-+#endif
-+
-+ // Add libc's lib/ directory to the search path, so that crt1.o, crti.o,
-+ // and friends can be found.
-+ addPathIfExists(D, "@GLIBC_LIBDIR@", Paths);
-
-- addPathIfExists(D, SysRoot + "/lib", Paths);
-- addPathIfExists(D, SysRoot + "/usr/lib", Paths);
-+ // Add GCC's lib/ directory so libstdc++.so can be found.
-+ addPathIfExists(D, GCCInstallation.getParentLibPath(), Paths);
- }
-
- ToolChain::CXXStdlibType Linux::GetDefaultCXXStdlibType() const {
diff --git a/gnu/packages/patches/clang-runtime-3.5-libsanitizer-mode-field.patch b/gnu/packages/patches/clang-runtime-3.5-libsanitizer-mode-field.patch
deleted file mode 100644
index 9e9d57d265..0000000000
--- a/gnu/packages/patches/clang-runtime-3.5-libsanitizer-mode-field.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Adjust libsanitizer to ABI change in glibc 2.31.
-
-Adapted to 3.x from this upstream commit:
-https://github.com/llvm/llvm-project/commit/947f9692440836dcb8d88b74b69dd379d85974ce
-
---- a/lib/sanitizer_common/saniniitizer_platform_limits_posix.h.orig 2020-08-11 16:01:32.494882282 +0200 #
-+++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.h 2020-08-11 16:32:49.711383554 +0200
-@@ -176,8 +176,7 @@
- unsigned long __unused1;
- unsigned long __unused2;
- #else
-- unsigned short mode;
-- unsigned short __pad1;
-+ unsigned int mode;
- unsigned short __seq;
- unsigned short __pad2;
- #if defined(__x86_64__) && !defined(_LP64)
---- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc 2020-08-11 16:01:07.926821829 +0200
-+++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc.orig 2020-08-11 16:01:03.698811421 +0200
-@@ -1056,7 +1056,9 @@
- CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
- CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
- CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
-+#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31)
- CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
-+#endif
-
- CHECK_TYPE_SIZE(shmid_ds);
- CHECK_SIZE_AND_OFFSET(shmid_ds, shm_perm);
diff --git a/gnu/packages/patches/clang-runtime-3.7-fix-build-with-python3.patch b/gnu/packages/patches/clang-runtime-3.7-fix-build-with-python3.patch
deleted file mode 100644
index 042f0e025a..0000000000
--- a/gnu/packages/patches/clang-runtime-3.7-fix-build-with-python3.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Patch based on changes from
-https://github.com/llvm/llvm-project/commit/c1fde4fa943fd03a3d40bc5d32b9e0045fd29208
-
-diff --git a/lib/sanitizer_common/scripts/gen_dynamic_list.py b/lib/sanitizer_common/scripts/gen_dynamic_list.py
-index 5ea2ca1..d7bc287 100755
---- a/lib/sanitizer_common/scripts/gen_dynamic_list.py
-+++ b/lib/sanitizer_common/scripts/gen_dynamic_list.py
-@@ -100,7 +100,7 @@ def main(argv):
- print('global:')
- result.sort()
- for f in result:
-- print(' ' + f.encode('utf-8') + ';')
-+ print(u' %s;' % f)
- if args.version_list:
- print('local:')
- print(' *;')
diff --git a/gnu/packages/patches/clang-runtime-3.8-libsanitizer-mode-field.patch b/gnu/packages/patches/clang-runtime-3.8-libsanitizer-mode-field.patch
deleted file mode 100644
index f4bca3ecb1..0000000000
--- a/gnu/packages/patches/clang-runtime-3.8-libsanitizer-mode-field.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-Adjust libsanitizer to ABI change in glibc 2.31.
-
-Adapted to 3.x from this upstream commit:
-https://github.com/llvm/llvm-project/commit/947f9692440836dcb8d88b74b69dd379d85974ce
-
-diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
---- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
-+++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
-@@ -1130,8 +1130,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
- #ifndef __GLIBC_PREREQ
- #define __GLIBC_PREREQ(x, y) 0
- #endif
--#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)
--/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */
-+#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31)
-+/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit
-+ on many architectures. */
- CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
- #endif
-
-diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/lib/sanitizer_common/sanitizer_platform_limits_posix.h
---- a/lib/sanitizer_common/sanitizer_platform_limits_posix.h
-+++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.h
-@@ -188,17 +188,16 @@ namespace __sanitizer {
- unsigned __seq;
- u64 __unused1;
- u64 __unused2;
--#elif defined(__mips__) || defined(__aarch64__)
-- unsigned int mode;
-- unsigned short __seq;
-- unsigned short __pad1;
-- unsigned long __unused1;
-- unsigned long __unused2;
-+#elif defined(__sparc__)
-+ unsigned mode;
-+ unsigned short __pad2;
-+ unsigned short __seq;
-+ unsigned long long __unused1;
-+ unsigned long long __unused2;
- #else
-- unsigned short mode;
-- unsigned short __pad1;
-- unsigned short __seq;
-- unsigned short __pad2;
-+ unsigned int mode;
-+ unsigned short __seq;
-+ unsigned short __pad2;
- #if defined(__x86_64__) && !defined(_LP64)
- u64 __unused1;
- u64 __unused2;
diff --git a/gnu/packages/patches/clang-runtime-9-glibc-2.36-compat.patch b/gnu/packages/patches/clang-runtime-9-glibc-2.36-compat.patch
deleted file mode 100644
index 9d0ab94222..0000000000
--- a/gnu/packages/patches/clang-runtime-9-glibc-2.36-compat.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-This commit is from upstream and is included in the llvm-15 release
-
-commit b379129c4beb3f26223288627a1291739f33af02
-Author: Fangrui Song <i@maskray.me>
-Date: Mon Jul 11 11:38:28 2022 -0700
-
- [sanitizer] Remove #include <linux/fs.h> to resolve fsconfig_command/mount_attr conflict with glibc 2.36
-
- It is generally not a good idea to mix usage of glibc headers and Linux UAPI
- headers (https://sourceware.org/glibc/wiki/Synchronizing_Headers). In glibc
- since 7eae6a91e9b1670330c9f15730082c91c0b1d570 (milestone: 2.36), sys/mount.h
- defines `fsconfig_command` which conflicts with linux/mount.h:
-
- .../usr/include/linux/mount.h:95:6: error: redeclaration of ‘enum fsconfig_command’
-
- Remove #include <linux/fs.h> which pulls in linux/mount.h. Expand its 4 macros manually.
-
- Fix https://github.com/llvm/llvm-project/issues/56421
-
- Reviewed By: #sanitizers, vitalybuka, zatrazz
-
- Differential Revision: https://reviews.llvm.org/D129471
-
-diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
-index 4bd425435d56..81740bf4ab39 100644
---- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
-+++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
-@@ -73,7 +73,6 @@
- #include <sys/vt.h>
- #include <linux/cdrom.h>
- #include <linux/fd.h>
--#include <linux/fs.h>
- #include <linux/hdreg.h>
- #include <linux/input.h>
- #include <linux/ioctl.h>
-@@ -876,10 +875,10 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
- unsigned IOCTL_EVIOCGPROP = IOCTL_NOT_PRESENT;
- unsigned IOCTL_EVIOCSKEYCODE_V2 = IOCTL_NOT_PRESENT;
- #endif
-- unsigned IOCTL_FS_IOC_GETFLAGS = FS_IOC_GETFLAGS;
-- unsigned IOCTL_FS_IOC_GETVERSION = FS_IOC_GETVERSION;
-- unsigned IOCTL_FS_IOC_SETFLAGS = FS_IOC_SETFLAGS;
-- unsigned IOCTL_FS_IOC_SETVERSION = FS_IOC_SETVERSION;
-+ unsigned IOCTL_FS_IOC_GETFLAGS = _IOR('f', 1, long);
-+ unsigned IOCTL_FS_IOC_GETVERSION = _IOR('v', 1, long);
-+ unsigned IOCTL_FS_IOC_SETFLAGS = _IOW('f', 2, long);
-+ unsigned IOCTL_FS_IOC_SETVERSION = _IOW('v', 2, long);
- unsigned IOCTL_GIO_CMAP = GIO_CMAP;
- unsigned IOCTL_GIO_FONT = GIO_FONT;
- unsigned IOCTL_GIO_UNIMAP = GIO_UNIMAP;
diff --git a/gnu/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch b/gnu/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch
deleted file mode 100644
index ebb080ed9d..0000000000
--- a/gnu/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-Adjust libsanitizer to ABI change in glibc 2.31.
-
-Taken from this upstream commit:
-https://github.com/llvm/llvm-project/commit/947f9692440836dcb8d88b74b69dd379d85974ce
-
-diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
---- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
-+++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
-@@ -1126,8 +1126,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
- CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
- CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
- CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
--#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)
--/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */
-+#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31)
-+/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit
-+ on many architectures. */
- CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
- #endif
-
-diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
---- a/lib/sanitizer_common/sanitizer_platform_limits_posix.h
-+++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.h
-@@ -203,28 +203,15 @@ namespace __sanitizer {
- u64 __unused1;
- u64 __unused2;
- #elif defined(__sparc__)
--#if defined(__arch64__)
-- unsigned mode;
-- unsigned short __pad1;
--#else
-- unsigned short __pad1;
-- unsigned short mode;
-- unsigned short __pad2;
--#endif
-- unsigned short __seq;
-- unsigned long long __unused1;
-- unsigned long long __unused2;
--#elif defined(__mips__) || defined(__aarch64__) || defined(__s390x__)
-- unsigned int mode;
-- unsigned short __seq;
-- unsigned short __pad1;
-- unsigned long __unused1;
-- unsigned long __unused2;
-+ unsigned mode;
-+ unsigned short __pad2;
-+ unsigned short __seq;
-+ unsigned long long __unused1;
-+ unsigned long long __unused2;
- #else
-- unsigned short mode;
-- unsigned short __pad1;
-- unsigned short __seq;
-- unsigned short __pad2;
-+ unsigned int mode;
-+ unsigned short __seq;
-+ unsigned short __pad2;
- #if defined(__x86_64__) && !defined(_LP64)
- u64 __unused1;
- u64 __unused2;
diff --git a/gnu/packages/patches/clang-runtime-asan-build-fixes.patch b/gnu/packages/patches/clang-runtime-asan-build-fixes.patch
deleted file mode 100644
index e9db57d7cb..0000000000
--- a/gnu/packages/patches/clang-runtime-asan-build-fixes.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-This patch works around build issues in libsanitizer. Note that we carry the
-same patches for GCC since it includes the same libsanitizer.
-
-Work around this build error on glibc 2.26:
-
- /tmp/guix-build-clang-runtime-3.5.2.drv-0/compiler-rt-3.5.2.src/lib/asan/asan_linux.cc: In function 'bool __asan::AsanInterceptsSignal(int)':
- /tmp/guix-build-clang-runtime-3.5.2.drv-0/compiler-rt-3.5.2.src/lib/asan/asan_linux.cc:224:20: error: 'SIGSEGV' was not declared in this scope
-
-diff --git a/libsanitizer/asan/asan_linux.cc b/libsanitizer/asan/asan_linux.cc
-index c504168..59087b9 100644
---- a/lib/asan/asan_linux.cc
-+++ b/lib/asan/asan_linux.cc
-@@ -29,6 +29,7 @@
- #include <dlfcn.h>
- #include <fcntl.h>
- #include <pthread.h>
-+#include <signal.h>
- #include <stdio.h>
- #include <unistd.h>
- #include <unwind.h>
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Now, work around this other error:
-
- /tmp/guix-build-clang-runtime-3.5.2.drv-0/compiler-rt-3.5.2.src/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc: In function 'int __sanitizer::TracerThread(void*)':
- /tmp/guix-build-clang-runtime-3.5.2.drv-0/compiler-rt-3.5.2.src/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc:239:22: error: aggregate 'sigaltstack handler_stack' has incomplete type and cannot be defined
-
-
-diff --git a/lib/sanitizer_common/sanitizer_linux.cc b/lib/sanitizer_common/sanitizer_linux.cc
-index 2cefa20..223d9c6 100644
---- a/lib/sanitizer_common/sanitizer_linux.cc
-+++ b/lib/sanitizer_common/sanitizer_linux.cc
-@@ -546,8 +546,7 @@ uptr internal_prctl(int option, uptr arg2, uptr arg3, uptr arg4, uptr arg5) {
- }
- #endif
-
--uptr internal_sigaltstack(const struct sigaltstack *ss,
-- struct sigaltstack *oss) {
-+uptr internal_sigaltstack(const void *ss, void *oss) {
- return internal_syscall(SYSCALL(sigaltstack), (uptr)ss, (uptr)oss);
- }
-
-diff --git a/lib/sanitizer_common/sanitizer_linux.h b/lib/sanitizer_common/sanitizer_linux.h
-index 4497702..1594058 100644
---- a/lib/sanitizer_common/sanitizer_linux.h
-+++ b/lib/sanitizer_common/sanitizer_linux.h
-@@ -19,7 +19,6 @@
- #include "sanitizer_platform_limits_posix.h"
-
- struct link_map; // Opaque type returned by dlopen().
--struct sigaltstack;
-
- namespace __sanitizer {
- // Dirent structure for getdents(). Note that this structure is different from
-@@ -28,8 +27,7 @@ struct linux_dirent;
-
- // Syscall wrappers.
- uptr internal_getdents(fd_t fd, struct linux_dirent *dirp, unsigned int count);
--uptr internal_sigaltstack(const struct sigaltstack* ss,
-- struct sigaltstack* oss);
-+uptr internal_sigaltstack(const void* ss, void* oss);
- uptr internal_sigprocmask(int how, __sanitizer_sigset_t *set,
- __sanitizer_sigset_t *oldset);
- void internal_sigfillset(__sanitizer_sigset_t *set);
-diff --git a/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc b/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
-index c919e4f..014162af 100644
---- a/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
-+++ b/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
-@@ -267,7 +267,7 @@ static int TracerThread(void* argument) {
-
- // Alternate stack for signal handling.
- InternalScopedBuffer<char> handler_stack_memory(kHandlerStackSize);
-- struct sigaltstack handler_stack;
-+ stack_t handler_stack;
- internal_memset(&handler_stack, 0, sizeof(handler_stack));
- handler_stack.ss_sp = handler_stack_memory.data();
- handler_stack.ss_size = kHandlerStackSize;
-diff --git a/lib/tsan/tsan_platform_linux.cc b/lib/tsan/tsan_platform_linux.cc
-index 09cec5f..908f4fe 100644
---- a/lib/tsan/rtl/tsan_platform_linux.cc
-+++ b/lib/tsan/rtl/tsan_platform_linux.cc
-@@ -291,7 +291,7 @@ bool IsGlobalVar(uptr addr) {
- int ExtractResolvFDs(void *state, int *fds, int nfd) {
- #if SANITIZER_LINUX
- int cnt = 0;
-- __res_state *statp = (__res_state*)state;
-+ struct __res_state *statp = (struct __res_state*)state;
- for (int i = 0; i < MAXNS && cnt < nfd; i++) {
- if (statp->_u._ext.nsaddrs[i] && statp->_u._ext.nssocks[i] != -1)
- fds[cnt++] = statp->_u._ext.nssocks[i];
---
-2.9.3
diff --git a/gnu/packages/patches/corectrl-locate-polkit-with-pkg-config.patch b/gnu/packages/patches/corectrl-locate-polkit-with-pkg-config.patch
new file mode 100644
index 0000000000..4025df4b88
--- /dev/null
+++ b/gnu/packages/patches/corectrl-locate-polkit-with-pkg-config.patch
@@ -0,0 +1,16 @@
+See https://gitlab.com/corectrl/corectrl/-/issues/493
+
+diff --git a/src/helper/CMakeLists.txt b/src/helper/CMakeLists.txt
+index 38deb12..7bbaa81 100644
+--- a/src/helper/CMakeLists.txt
++++ b/src/helper/CMakeLists.txt
+@@ -27,8 +27,8 @@ message("D-Bus files will be installed into ${DBUS_DATADIR_PREFIX_DIR}/dbus-1")
+ option(POLKIT_POLICY_INSTALL_DIR "Polkit policy files installation directory" OFF)
+
+ # Find polkit
++pkg_check_modules(POLKIT REQUIRED polkit-gobject-1)
+ if(NOT POLKIT_POLICY_INSTALL_DIR)
+- pkg_check_modules(POLKIT REQUIRED polkit-gobject-1)
+ execute_process(
+ COMMAND pkg-config --variable=policydir polkit-gobject-1
+ RESULT_VARIABLE POLKIT_POLICY_INSTALL_DIR_RESULT
diff --git a/gnu/packages/patches/corectrl-polkit-install-dir.patch b/gnu/packages/patches/corectrl-polkit-install-dir.patch
deleted file mode 100644
index cced58996c..0000000000
--- a/gnu/packages/patches/corectrl-polkit-install-dir.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-See https://gitlab.com/corectrl/corectrl/-/issues/477
-
-diff --git a/src/helper/CMakeLists.txt b/src/helper/CMakeLists.txt
-index c262086..523ea97 100644
---- a/src/helper/CMakeLists.txt
-+++ b/src/helper/CMakeLists.txt
-@@ -26,15 +26,7 @@ message("D-Bus files will be installed into ${DBUS_DATADIR_PREFIX_DIR}/dbus-1")
-
- # Find polkit
- pkg_check_modules(POLKIT REQUIRED polkit-gobject-1)
--execute_process(
-- COMMAND pkg-config --variable=policydir polkit-gobject-1
-- RESULT_VARIABLE POLKIT_POLICY_INSTALL_DIR_RESULT
-- OUTPUT_VARIABLE POLKIT_POLICY_INSTALL_DIR
-- OUTPUT_STRIP_TRAILING_WHITESPACE
--)
--if(NOT POLKIT_POLICY_INSTALL_DIR_RESULT EQUAL "0")
-- message(FATAL_ERROR "Failed to retrieve Polkit `policydir` variable using pkg-config")
--endif()
-+option(POLKIT_POLICY_INSTALL_DIR "Polkit policy directory")
-
- list(APPEND HELPER_COMPILE_DEFINITIONS
- SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE
diff --git a/gnu/packages/patches/corrosion-honor-CARGO_BUILD_TARGET.patch b/gnu/packages/patches/corrosion-honor-CARGO_BUILD_TARGET.patch
new file mode 100644
index 0000000000..ecd2b3a9d2
--- /dev/null
+++ b/gnu/packages/patches/corrosion-honor-CARGO_BUILD_TARGET.patch
@@ -0,0 +1,26 @@
+From 0a6f23a404d1b972b1c5f0cf1d38500276f3c9d1 Mon Sep 17 00:00:00 2001
+From: Hilton Chain <hako@ultrarare.space>
+Date: Tue, 22 Apr 2025 19:43:00 +0800
+Subject: [PATCH] Support Cargo target from environment variable.
+
+---
+ cmake/FindRust.cmake | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/cmake/FindRust.cmake b/cmake/FindRust.cmake
+index fccfac3..e888149 100644
+--- a/cmake/FindRust.cmake
++++ b/cmake/FindRust.cmake
+@@ -734,6 +734,9 @@ if (NOT Rust_CARGO_TARGET_CACHED)
+ set(Rust_CARGO_TARGET_CACHED "${_RUST_OHOS_TARGET}" CACHE STRING "Target triple")
+ endif()
+ endif()
++ if(DEFINED ENV{CARGO_BUILD_TARGET})
++ set(Rust_CARGO_TARGET_CACHED "$ENV{CARGO_BUILD_TARGET}")
++ endif()
+ # Fallback to the default host target
+ if(NOT Rust_CARGO_TARGET_CACHED)
+ if(CMAKE_CROSSCOMPILING)
+--
+2.49.0
+
diff --git a/gnu/packages/patches/cproc-extra-linkflags.patch b/gnu/packages/patches/cproc-extra-linkflags.patch
new file mode 100644
index 0000000000..493b35624e
--- /dev/null
+++ b/gnu/packages/patches/cproc-extra-linkflags.patch
@@ -0,0 +1,18 @@
+Contrary to other Linux distributions, the glibc library files are not in the
+standard ld(1) search path on Guix. However, cproc only allows us to specify
+the gcclibdir. To workaround that we manually add a feature to cproc's
+configure script which allows us to pass extra linkflags via an environment
+variable.
+
+diff --git a/configure b/configure
+index dab1bf3..a31b456 100755
+--- a/configure
++++ b/configure
+@@ -159,7 +159,7 @@ static const char *const preprocesscmd[] = {
+ $defines};
+ static const char *const codegencmd[] = {"$DEFAULT_QBE"};
+ static const char *const assemblecmd[] = {"$DEFAULT_ASSEMBLER"};
+-static const char *const linkcmd[] = {"$DEFAULT_LINKER", $linkflags};
++static const char *const linkcmd[] = {"$DEFAULT_LINKER", ${LINKFLAGS_EXTRA:+\"$LINKFLAGS_EXTRA\", }$linkflags};
+ EOF
+ echo done
diff --git a/gnu/packages/patches/cups-minimal-Address-PPD-injection-issues.patch b/gnu/packages/patches/cups-minimal-Address-PPD-injection-issues.patch
deleted file mode 100644
index b6cf94c085..0000000000
--- a/gnu/packages/patches/cups-minimal-Address-PPD-injection-issues.patch
+++ /dev/null
@@ -1,529 +0,0 @@
-From 373924d728b61cf6dec9c8a1a1edeb4b9f342529 Mon Sep 17 00:00:00 2001
-From: Tobias Geerinckx-Rice <me@tobias.gr>
-Date: Fri, 27 Sep 2024 17:03:10 +0200
-Subject: [PATCH] gnu: cups-minimal: Address PPD injection issues.
-
-This patch combines 5 upstream commits:
- 9939a70b750edd9d05270060cc5cf62ca98cfbe5
- 04bb2af4521b56c1699a2c2431c56c05a7102e69
- e0630cd18f76340d302000f2bf6516e99602b844
- 1e6ca5913eceee906038bc04cc7ccfbe2923bdfd
- 2abe1ba8a66864aa82cd9836b37e57103b8e1a3b
----
- cups/ppd-cache.c | 235 +++++++++++++++++++++++++++++++++--------------
- scheduler/ipp.c | 9 +-
- 2 files changed, 174 insertions(+), 70 deletions(-)
-
-diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c
-index e750fccd4..d2533b731 100644
---- a/cups/ppd-cache.c
-+++ b/cups/ppd-cache.c
-@@ -32,6 +32,7 @@
- static int cups_connect(http_t **http, const char *url, char *resource, size_t ressize);
- static int cups_get_url(http_t **http, const char *url, char *name, size_t namesize);
- static const char *ppd_inputslot_for_keyword(_ppd_cache_t *pc, const char *keyword);
-+static void ppd_put_string(cups_file_t *fp, cups_lang_t *lang, cups_array_t *strings, const char *ppd_option, const char *ppd_choice, const char *pwg_msgid);
- static void pwg_add_finishing(cups_array_t *finishings, ipp_finishings_t template, const char *name, const char *value);
- static void pwg_add_message(cups_array_t *a, const char *msg, const char *str);
- static int pwg_compare_finishings(_pwg_finishings_t *a, _pwg_finishings_t *b);
-@@ -3197,9 +3198,10 @@ _ppdCreateFromIPP2(
- ipp_t *media_col, /* Media collection */
- *media_size; /* Media size collection */
- char make[256], /* Make and model */
-- *model, /* Model name */
-+ *mptr, /* Pointer into make and model */
- ppdname[PPD_MAX_NAME];
- /* PPD keyword */
-+ const char *model; /* Model name */
- int i, j, /* Looping vars */
- count, /* Number of values */
- bottom, /* Largest bottom margin */
-@@ -3221,8 +3223,7 @@ _ppdCreateFromIPP2(
- int have_qdraft = 0,/* Have draft quality? */
- have_qhigh = 0; /* Have high quality? */
- char msgid[256]; /* Message identifier (attr.value) */
-- const char *keyword, /* Keyword value */
-- *msgstr; /* Localized string */
-+ const char *keyword; /* Keyword value */
- cups_array_t *strings = NULL;/* Printer strings file */
- struct lconv *loc = localeconv();
- /* Locale data */
-@@ -3260,34 +3261,104 @@ _ppdCreateFromIPP2(
- }
-
- /*
-- * Standard stuff for PPD file...
-+ * Get a sanitized make and model...
- */
-
-- cupsFilePuts(fp, "*PPD-Adobe: \"4.3\"\n");
-- cupsFilePuts(fp, "*FormatVersion: \"4.3\"\n");
-- cupsFilePrintf(fp, "*FileVersion: \"%d.%d\"\n", CUPS_VERSION_MAJOR, CUPS_VERSION_MINOR);
-- cupsFilePuts(fp, "*LanguageVersion: English\n");
-- cupsFilePuts(fp, "*LanguageEncoding: ISOLatin1\n");
-- cupsFilePuts(fp, "*PSVersion: \"(3010.000) 0\"\n");
-- cupsFilePuts(fp, "*LanguageLevel: \"3\"\n");
-- cupsFilePuts(fp, "*FileSystem: False\n");
-- cupsFilePuts(fp, "*PCFileName: \"ippeve.ppd\"\n");
-+ if ((attr = ippFindAttribute(supported, "printer-make-and-model", IPP_TAG_TEXT)) != NULL && ippValidateAttribute(attr))
-+ {
-+ /*
-+ * Sanitize the model name to only contain PPD-safe characters.
-+ */
-
-- if ((attr = ippFindAttribute(supported, "printer-make-and-model", IPP_TAG_TEXT)) != NULL)
- strlcpy(make, ippGetString(attr, 0, NULL), sizeof(make));
-+
-+ for (mptr = make; *mptr; mptr ++)
-+ {
-+ if (*mptr < ' ' || *mptr >= 127 || *mptr == '\"')
-+ {
-+ /*
-+ * Truncate the make and model on the first bad character...
-+ */
-+
-+ *mptr = '\0';
-+ break;
-+ }
-+ }
-+
-+ while (mptr > make)
-+ {
-+ /*
-+ * Strip trailing whitespace...
-+ */
-+
-+ mptr --;
-+ if (*mptr == ' ')
-+ *mptr = '\0';
-+ }
-+
-+ if (!make[0])
-+ {
-+ /*
-+ * Use a default make and model if nothing remains...
-+ */
-+
-+ strlcpy(make, "Unknown", sizeof(make));
-+ }
-+ }
- else
-- strlcpy(make, "Unknown Printer", sizeof(make));
-+ {
-+ /*
-+ * Use a default make and model...
-+ */
-+
-+ strlcpy(make, "Unknown", sizeof(make));
-+ }
-
- if (!_cups_strncasecmp(make, "Hewlett Packard ", 16) || !_cups_strncasecmp(make, "Hewlett-Packard ", 16))
- {
-+ /*
-+ * Normalize HP printer make and model...
-+ */
-+
- model = make + 16;
- strlcpy(make, "HP", sizeof(make));
-+
-+ if (!_cups_strncasecmp(model, "HP ", 3))
-+ model += 3;
-+ }
-+ else if ((mptr = strchr(make, ' ')) != NULL)
-+ {
-+ /*
-+ * Separate "MAKE MODEL"...
-+ */
-+
-+ while (*mptr && *mptr == ' ')
-+ *mptr++ = '\0';
-+
-+ model = mptr;
- }
-- else if ((model = strchr(make, ' ')) != NULL)
-- *model++ = '\0';
- else
-- model = make;
-+ {
-+ /*
-+ * No separate model name...
-+ */
-
-+ model = "Printer";
-+ }
-+
-+ /*
-+ * Standard stuff for PPD file...
-+ */
-+
-+ cupsFilePuts(fp, "*PPD-Adobe: \"4.3\"\n");
-+ cupsFilePuts(fp, "*FormatVersion: \"4.3\"\n");
-+ cupsFilePrintf(fp, "*FileVersion: \"%d.%d\"\n", CUPS_VERSION_MAJOR, CUPS_VERSION_MINOR);
-+ cupsFilePuts(fp, "*LanguageVersion: English\n");
-+ cupsFilePuts(fp, "*LanguageEncoding: ISOLatin1\n");
-+ cupsFilePuts(fp, "*PSVersion: \"(3010.000) 0\"\n");
-+ cupsFilePuts(fp, "*LanguageLevel: \"3\"\n");
-+ cupsFilePuts(fp, "*FileSystem: False\n");
-+ cupsFilePuts(fp, "*PCFileName: \"ippeve.ppd\"\n");
- cupsFilePrintf(fp, "*Manufacturer: \"%s\"\n", make);
- cupsFilePrintf(fp, "*ModelName: \"%s\"\n", model);
- cupsFilePrintf(fp, "*Product: \"(%s)\"\n", model);
-@@ -3317,13 +3388,13 @@ _ppdCreateFromIPP2(
- }
- cupsFilePuts(fp, "\"\n");
-
-- if ((attr = ippFindAttribute(supported, "printer-more-info", IPP_TAG_URI)) != NULL)
-+ if ((attr = ippFindAttribute(supported, "printer-more-info", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr))
- cupsFilePrintf(fp, "*APSupplies: \"%s\"\n", ippGetString(attr, 0, NULL));
-
-- if ((attr = ippFindAttribute(supported, "printer-charge-info-uri", IPP_TAG_URI)) != NULL)
-+ if ((attr = ippFindAttribute(supported, "printer-charge-info-uri", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr))
- cupsFilePrintf(fp, "*cupsChargeInfoURI: \"%s\"\n", ippGetString(attr, 0, NULL));
-
-- if ((attr = ippFindAttribute(supported, "printer-strings-uri", IPP_TAG_URI)) != NULL)
-+ if ((attr = ippFindAttribute(supported, "printer-strings-uri", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr))
- {
- http_t *http = NULL; /* Connection to printer */
- char stringsfile[1024]; /* Temporary strings file */
-@@ -3367,7 +3438,7 @@ _ppdCreateFromIPP2(
-
- response = cupsDoRequest(http, request, resource);
-
-- if ((attr = ippFindAttribute(response, "printer-strings-uri", IPP_TAG_URI)) != NULL)
-+ if ((attr = ippFindAttribute(response, "printer-strings-uri", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr))
- cupsFilePrintf(fp, "*cupsStringsURI %s: \"%s\"\n", keyword, ippGetString(attr, 0, NULL));
-
- ippDelete(response);
-@@ -3389,10 +3460,10 @@ _ppdCreateFromIPP2(
- if (ippGetBoolean(ippFindAttribute(supported, "job-accounting-user-id-supported", IPP_TAG_BOOLEAN), 0))
- cupsFilePuts(fp, "*cupsJobAccountingUserId: True\n");
-
-- if ((attr = ippFindAttribute(supported, "printer-privacy-policy-uri", IPP_TAG_URI)) != NULL)
-+ if ((attr = ippFindAttribute(supported, "printer-privacy-policy-uri", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr))
- cupsFilePrintf(fp, "*cupsPrivacyURI: \"%s\"\n", ippGetString(attr, 0, NULL));
-
-- if ((attr = ippFindAttribute(supported, "printer-mandatory-job-attributes", IPP_TAG_KEYWORD)) != NULL)
-+ if ((attr = ippFindAttribute(supported, "printer-mandatory-job-attributes", IPP_TAG_KEYWORD)) != NULL && ippValidateAttribute(attr))
- {
- char prefix = '\"'; // Prefix for string
-
-@@ -3410,7 +3481,7 @@ _ppdCreateFromIPP2(
- cupsFilePuts(fp, "\"\n");
- }
-
-- if ((attr = ippFindAttribute(supported, "printer-requested-job-attributes", IPP_TAG_KEYWORD)) != NULL)
-+ if ((attr = ippFindAttribute(supported, "printer-requested-job-attributes", IPP_TAG_KEYWORD)) != NULL && ippValidateAttribute(attr))
- {
- char prefix = '\"'; // Prefix for string
-
-@@ -3973,18 +4044,16 @@ _ppdCreateFromIPP2(
- cupsFilePrintf(fp, "*DefaultInputSlot: %s\n", ppdname);
-
- for (j = 0; j < (int)(sizeof(sources) / sizeof(sources[0])); j ++)
-+ {
- if (!strcmp(sources[j], keyword))
- {
- snprintf(msgid, sizeof(msgid), "media-source.%s", keyword);
-
-- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
-- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
-- msgstr = keyword;
--
- cupsFilePrintf(fp, "*InputSlot %s: \"<</MediaPosition %d>>setpagedevice\"\n", ppdname, j);
-- cupsFilePrintf(fp, "*%s.InputSlot %s/%s: \"\"\n", lang->language, ppdname, msgstr);
-+ ppd_put_string(fp, lang, strings, "InputSlot", ppdname, msgid);
- break;
- }
-+ }
- }
- cupsFilePuts(fp, "*CloseUI: *InputSlot\n");
- }
-@@ -4010,12 +4079,9 @@ _ppdCreateFromIPP2(
- pwg_ppdize_name(keyword, ppdname, sizeof(ppdname));
-
- snprintf(msgid, sizeof(msgid), "media-type.%s", keyword);
-- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
-- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
-- msgstr = keyword;
-
- cupsFilePrintf(fp, "*MediaType %s: \"<</MediaType(%s)>>setpagedevice\"\n", ppdname, ppdname);
-- cupsFilePrintf(fp, "*%s.MediaType %s/%s: \"\"\n", lang->language, ppdname, msgstr);
-+ ppd_put_string(fp, lang, strings, "MediaType", ppdname, msgid);
- }
- cupsFilePuts(fp, "*CloseUI: *MediaType\n");
- }
-@@ -4476,12 +4542,9 @@ _ppdCreateFromIPP2(
- pwg_ppdize_name(keyword, ppdname, sizeof(ppdname));
-
- snprintf(msgid, sizeof(msgid), "output-bin.%s", keyword);
-- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
-- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
-- msgstr = keyword;
-
- cupsFilePrintf(fp, "*OutputBin %s: \"\"\n", ppdname);
-- cupsFilePrintf(fp, "*%s.OutputBin %s/%s: \"\"\n", lang->language, ppdname, msgstr);
-+ ppd_put_string(fp, lang, strings, "OutputBin", ppdname, msgid);
-
- if ((tray_ptr = ippGetOctetString(trays, i, &tray_len)) != NULL)
- {
-@@ -4600,9 +4663,6 @@ _ppdCreateFromIPP2(
- cupsArrayAdd(names, (char *)keyword);
-
- snprintf(msgid, sizeof(msgid), "finishings.%d", value);
-- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
-- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
-- msgstr = keyword;
-
- if (value >= IPP_FINISHINGS_NONE && value <= IPP_FINISHINGS_LAMINATE)
- ppd_keyword = base_keywords[value - IPP_FINISHINGS_NONE];
-@@ -4617,7 +4677,7 @@ _ppdCreateFromIPP2(
- continue;
-
- cupsFilePrintf(fp, "*StapleLocation %s: \"\"\n", ppd_keyword);
-- cupsFilePrintf(fp, "*%s.StapleLocation %s/%s: \"\"\n", lang->language, ppd_keyword, msgstr);
-+ ppd_put_string(fp, lang, strings, "StapleLocation", ppd_keyword, msgid);
- cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*StapleLocation %s\"\n", value, keyword, ppd_keyword);
- }
-
-@@ -4680,9 +4740,6 @@ _ppdCreateFromIPP2(
- cupsArrayAdd(names, (char *)keyword);
-
- snprintf(msgid, sizeof(msgid), "finishings.%d", value);
-- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
-- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
-- msgstr = keyword;
-
- if (value >= IPP_FINISHINGS_NONE && value <= IPP_FINISHINGS_LAMINATE)
- ppd_keyword = base_keywords[value - IPP_FINISHINGS_NONE];
-@@ -4697,7 +4754,7 @@ _ppdCreateFromIPP2(
- continue;
-
- cupsFilePrintf(fp, "*FoldType %s: \"\"\n", ppd_keyword);
-- cupsFilePrintf(fp, "*%s.FoldType %s/%s: \"\"\n", lang->language, ppd_keyword, msgstr);
-+ ppd_put_string(fp, lang, strings, "FoldType", ppd_keyword, msgid);
- cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*FoldType %s\"\n", value, keyword, ppd_keyword);
- }
-
-@@ -4768,9 +4825,6 @@ _ppdCreateFromIPP2(
- cupsArrayAdd(names, (char *)keyword);
-
- snprintf(msgid, sizeof(msgid), "finishings.%d", value);
-- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
-- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
-- msgstr = keyword;
-
- if (value >= IPP_FINISHINGS_NONE && value <= IPP_FINISHINGS_LAMINATE)
- ppd_keyword = base_keywords[value - IPP_FINISHINGS_NONE];
-@@ -4785,7 +4839,7 @@ _ppdCreateFromIPP2(
- continue;
-
- cupsFilePrintf(fp, "*PunchMedia %s: \"\"\n", ppd_keyword);
-- cupsFilePrintf(fp, "*%s.PunchMedia %s/%s: \"\"\n", lang->language, ppd_keyword, msgstr);
-+ ppd_put_string(fp, lang, strings, "PunchMedia", ppd_keyword, msgid);
- cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*PunchMedia %s\"\n", value, keyword, ppd_keyword);
- }
-
-@@ -4856,9 +4910,6 @@ _ppdCreateFromIPP2(
- cupsArrayAdd(names, (char *)keyword);
-
- snprintf(msgid, sizeof(msgid), "finishings.%d", value);
-- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
-- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
-- msgstr = keyword;
-
- if (value == IPP_FINISHINGS_TRIM)
- ppd_keyword = "Auto";
-@@ -4866,7 +4917,7 @@ _ppdCreateFromIPP2(
- ppd_keyword = trim_keywords[value - IPP_FINISHINGS_TRIM_AFTER_PAGES];
-
- cupsFilePrintf(fp, "*CutMedia %s: \"\"\n", ppd_keyword);
-- cupsFilePrintf(fp, "*%s.CutMedia %s/%s: \"\"\n", lang->language, ppd_keyword, msgstr);
-+ ppd_put_string(fp, lang, strings, "CutMedia", ppd_keyword, msgid);
- cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*CutMedia %s\"\n", value, keyword, ppd_keyword);
- }
-
-@@ -4905,12 +4956,11 @@ _ppdCreateFromIPP2(
-
- cupsArrayAdd(templates, (void *)keyword);
-
-+ pwg_ppdize_name(keyword, ppdname, sizeof(ppdname));
-+
- snprintf(msgid, sizeof(msgid), "finishing-template.%s", keyword);
-- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
-- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
-- msgstr = keyword;
-
-- cupsFilePrintf(fp, "*cupsFinishingTemplate %s: \"\n", keyword);
-+ cupsFilePrintf(fp, "*cupsFinishingTemplate %s: \"\n", ppdname);
- for (finishing_attr = ippFirstAttribute(finishing_col); finishing_attr; finishing_attr = ippNextAttribute(finishing_col))
- {
- if (ippGetValueTag(finishing_attr) == IPP_TAG_BEGIN_COLLECTION)
-@@ -4923,7 +4973,7 @@ _ppdCreateFromIPP2(
- }
- }
- cupsFilePuts(fp, "\"\n");
-- cupsFilePrintf(fp, "*%s.cupsFinishingTemplate %s/%s: \"\"\n", lang->language, keyword, msgstr);
-+ ppd_put_string(fp, lang, strings, "cupsFinishingTemplate", ppdname, msgid);
- cupsFilePuts(fp, "*End\n");
- }
-
-@@ -4959,9 +5009,8 @@ _ppdCreateFromIPP2(
- {
- ipp_t *preset = ippGetCollection(attr, i);
- /* Preset collection */
-- const char *preset_name = ippGetString(ippFindAttribute(preset, "preset-name", IPP_TAG_ZERO), 0, NULL),
-+ const char *preset_name = ippGetString(ippFindAttribute(preset, "preset-name", IPP_TAG_ZERO), 0, NULL);
- /* Preset name */
-- *localized_name; /* Localized preset name */
- ipp_attribute_t *member; /* Member attribute in preset */
- const char *member_name; /* Member attribute name */
- char member_value[256]; /* Member attribute value */
-@@ -4969,7 +5018,8 @@ _ppdCreateFromIPP2(
- if (!preset || !preset_name)
- continue;
-
-- cupsFilePrintf(fp, "*APPrinterPreset %s: \"\n", preset_name);
-+ pwg_ppdize_name(preset_name, ppdname, sizeof(ppdname));
-+ cupsFilePrintf(fp, "*APPrinterPreset %s: \"\n", ppdname);
- for (member = ippFirstAttribute(preset); member; member = ippNextAttribute(preset))
- {
- member_name = ippGetName(member);
-@@ -5010,7 +5060,10 @@ _ppdCreateFromIPP2(
- fin_col = ippGetCollection(member, i);
-
- if ((keyword = ippGetString(ippFindAttribute(fin_col, "finishing-template", IPP_TAG_ZERO), 0, NULL)) != NULL)
-- cupsFilePrintf(fp, "*cupsFinishingTemplate %s\n", keyword);
-+ {
-+ pwg_ppdize_name(keyword, ppdname, sizeof(ppdname));
-+ cupsFilePrintf(fp, "*cupsFinishingTemplate %s\n", ppdname);
-+ }
- }
- }
- else if (!strcmp(member_name, "media"))
-@@ -5037,13 +5090,13 @@ _ppdCreateFromIPP2(
- if ((keyword = ippGetString(ippFindAttribute(media_col, "media-source", IPP_TAG_ZERO), 0, NULL)) != NULL)
- {
- pwg_ppdize_name(keyword, ppdname, sizeof(ppdname));
-- cupsFilePrintf(fp, "*InputSlot %s\n", keyword);
-+ cupsFilePrintf(fp, "*InputSlot %s\n", ppdname);
- }
-
- if ((keyword = ippGetString(ippFindAttribute(media_col, "media-type", IPP_TAG_ZERO), 0, NULL)) != NULL)
- {
- pwg_ppdize_name(keyword, ppdname, sizeof(ppdname));
-- cupsFilePrintf(fp, "*MediaType %s\n", keyword);
-+ cupsFilePrintf(fp, "*MediaType %s\n", ppdname);
- }
- }
- else if (!strcmp(member_name, "print-quality"))
-@@ -5088,8 +5141,9 @@ _ppdCreateFromIPP2(
-
- cupsFilePuts(fp, "\"\n*End\n");
-
-- if ((localized_name = _cupsMessageLookup(strings, preset_name)) != preset_name)
-- cupsFilePrintf(fp, "*%s.APPrinterPreset %s/%s: \"\"\n", lang->language, preset_name, localized_name);
-+ snprintf(msgid, sizeof(msgid), "preset-name.%s", preset_name);
-+ pwg_ppdize_name(preset_name, ppdname, sizeof(ppdname));
-+ ppd_put_string(fp, lang, strings, "APPrinterPreset", ppdname, msgid);
- }
- }
-
-@@ -5360,6 +5414,43 @@ cups_get_url(http_t **http, /* IO - Current HTTP connection */
- }
-
-
-+/*
-+ * 'ppd_put_strings()' - Write localization attributes to a PPD file.
-+ */
-+
-+static void
-+ppd_put_string(cups_file_t *fp, /* I - PPD file */
-+ cups_lang_t *lang, /* I - Language */
-+ cups_array_t *strings, /* I - Strings */
-+ const char *ppd_option,/* I - PPD option */
-+ const char *ppd_choice,/* I - PPD choice */
-+ const char *pwg_msgid) /* I - PWG message ID */
-+{
-+ const char *text; /* Localized text */
-+
-+
-+ if ((text = _cupsLangString(lang, pwg_msgid)) == pwg_msgid || !strcmp(pwg_msgid, text))
-+ {
-+ if ((text = _cupsMessageLookup(strings, pwg_msgid)) == pwg_msgid)
-+ return;
-+ }
-+
-+ // Add the first line of localized text...
-+ cupsFilePrintf(fp, "*%s.%s %s/", lang->language, ppd_option, ppd_choice);
-+ while (*text && *text != '\n')
-+ {
-+ // Escape ":" and "<"...
-+ if (*text == ':' || *text == '<')
-+ cupsFilePrintf(fp, "<%02X>", *text);
-+ else
-+ cupsFilePutChar(fp, *text);
-+
-+ text ++;
-+ }
-+ cupsFilePuts(fp, ": \"\"\n");
-+}
-+
-+
- /*
- * 'pwg_add_finishing()' - Add a finishings value.
- */
-@@ -5473,7 +5564,7 @@ pwg_ppdize_name(const char *ipp, /* I - IPP keyword */
- *end; /* End of name buffer */
-
-
-- if (!ipp)
-+ if (!ipp || !_cups_isalnum(*ipp))
- {
- *name = '\0';
- return;
-@@ -5488,8 +5579,14 @@ pwg_ppdize_name(const char *ipp, /* I - IPP keyword */
- ipp ++;
- *ptr++ = (char)toupper(*ipp++ & 255);
- }
-- else
-+ else if (*ipp == '_' || *ipp == '.' || *ipp == '-' || _cups_isalnum(*ipp))
-+ {
- *ptr++ = *ipp++;
-+ }
-+ else
-+ {
-+ ipp ++;
-+ }
- }
-
- *ptr = '\0';
-diff --git a/scheduler/ipp.c b/scheduler/ipp.c
-index 37623c54e..14b1fe1e0 100644
---- a/scheduler/ipp.c
-+++ b/scheduler/ipp.c
-@@ -1,7 +1,7 @@
- /*
- * IPP routines for the CUPS scheduler.
- *
-- * Copyright © 2020-2023 by OpenPrinting
-+ * Copyright © 2020-2024 by OpenPrinting
- * Copyright © 2007-2021 by Apple Inc.
- * Copyright © 1997-2007 by Easy Software Products, all rights reserved.
- *
-@@ -5417,6 +5417,13 @@ create_local_bg_thread(
- }
- }
-
-+ // Validate response from printer...
-+ if (!ippValidateAttributes(response))
-+ {
-+ send_ipp_status(con, IPP_STATUS_ERROR_DEVICE, _("Printer returned invalid data: %s"), cupsLastErrorString());
-+ goto finish_response;
-+ }
-+
- // TODO: Grab printer icon file...
- httpClose(http);
-
---
-2.46.0
-
diff --git a/gnu/packages/patches/cups-relax-root-ownership-check.patch b/gnu/packages/patches/cups-relax-root-ownership-check.patch
new file mode 100644
index 0000000000..f24461153d
--- /dev/null
+++ b/gnu/packages/patches/cups-relax-root-ownership-check.patch
@@ -0,0 +1,34 @@
+From 943e44dafa192b54fadcbb24f5f87d62a22c9f84 Mon Sep 17 00:00:00 2001
+From: Sergey Trofimov <sarg@sarg.org.ru>
+Date: Wed, 17 Sep 2025 12:09:34 +0200
+Subject: [PATCH] Exempt files in /gnu/store from root ownership check.
+
+---
+ cups/file.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/cups/file.c b/cups/file.c
+index 95054f3c8..9822619d4 100644
+--- a/cups/file.c
++++ b/cups/file.c
+@@ -159,7 +159,8 @@ _cupsFileCheck(
+ * 4. Must not be writable by others
+ */
+
+- if (fileinfo.st_uid || /* 1. Must be owned by root */
++ int in_gnu_store = !strncmp(filename, "/gnu/store/", 11);
++ if ((fileinfo.st_uid && !in_gnu_store) || /* 1. Must be owned by root or be in /gnu/store */
+ (fileinfo.st_mode & S_IWGRP) || /* 2. Must not be writable by group */
+ (fileinfo.st_mode & S_ISUID) || /* 3. Must not be setuid */
+ (fileinfo.st_mode & S_IWOTH)) /* 4. Must not be writable by others */
+@@ -198,7 +199,7 @@ _cupsFileCheck(
+ goto finishup;
+ }
+
+- if (fileinfo.st_uid || /* 1. Must be owned by root */
++ if ((fileinfo.st_uid && !in_gnu_store) || /* 1. Must be owned by root or be in /gnu/store */
+ (fileinfo.st_mode & S_IWGRP) || /* 2. Must not be writable by group */
+ (fileinfo.st_mode & S_ISUID) || /* 3. Must not be setuid */
+ (fileinfo.st_mode & S_IWOTH)) /* 4. Must not be writable by others */
+--
+2.51.0
diff --git a/gnu/packages/patches/cyrus-sasl-fix-time-h.patch b/gnu/packages/patches/cyrus-sasl-fix-time-h.patch
new file mode 100644
index 0000000000..27c6a7b578
--- /dev/null
+++ b/gnu/packages/patches/cyrus-sasl-fix-time-h.patch
@@ -0,0 +1,59 @@
+Patch applied upstream afer the 2.1.28 release.
+
+From 266f0acf7f5e029afbb3e263437039e50cd6c262 Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Wed, 23 Feb 2022 00:45:15 +0000
+Subject: [PATCH] Fix <time.h> check
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+We're conditionally including based on HAVE_TIME_H in a bunch of places,
+but we're not actually checking for time.h, so that's never going to be defined.
+
+While at it, add in a missing include in the cram plugin.
+
+This fixes a bunch of implicit declaration warnings:
+```
+ * cyrus-sasl-2.1.28/lib/saslutil.c:280:3: warning: implicit declaration of function ‘time’ [-Wimplicit-function-declaration]
+ * cyrus-sasl-2.1.28/lib/saslutil.c:364:41: warning: implicit declaration of function ‘clock’ [-Wimplicit-function-declaration]
+ * cyrus-sasl-2.1.28/plugins/cram.c:132:7: warning: implicit declaration of function ‘time’ [-Wimplicit-function-declaration]
+ * cyrus-sasl-2.1.28/lib/saslutil.c:280:3: warning: implicit declaration of function ‘time’ [-Wimplicit-function-declaration]
+ * cyrus-sasl-2.1.28/lib/saslutil.c:364:41: warning: implicit declaration of function ‘clock’ [-Wimplicit-function-declaration]
+ * cyrus-sasl-2.1.28/plugins/cram.c:132:7: warning: implicit declaration of function ‘time’ [-Wimplicit-function-declaration]
+```
+
+Signed-off-by: Sam James <sam@gentoo.org>
+---
+ configure.ac | 2 +-
+ plugins/cram.c | 4 ++++
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index e1bf53b6..ad781830 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1290,7 +1290,7 @@ AC_CHECK_HEADERS_ONCE([sys/time.h])
+
+ AC_HEADER_DIRENT
+ AC_HEADER_SYS_WAIT
+-AC_CHECK_HEADERS(crypt.h des.h dlfcn.h fcntl.h limits.h malloc.h paths.h strings.h sys/file.h sys/time.h syslog.h unistd.h inttypes.h sys/uio.h sys/param.h sysexits.h stdarg.h varargs.h krb5.h)
++AC_CHECK_HEADERS(crypt.h des.h dlfcn.h fcntl.h limits.h malloc.h paths.h strings.h sys/file.h sys/time.h syslog.h time.h unistd.h inttypes.h sys/uio.h sys/param.h sysexits.h stdarg.h varargs.h krb5.h)
+
+ IPv6_CHECK_SS_FAMILY()
+ IPv6_CHECK_SA_LEN()
+diff --git a/plugins/cram.c b/plugins/cram.c
+index d02e9baa..695aaa91 100644
+--- a/plugins/cram.c
++++ b/plugins/cram.c
+@@ -53,6 +53,10 @@
+ #endif
+ #include <fcntl.h>
+
++#ifdef HAVE_TIME_H
++#include <time.h>
++#endif
++
+ #include <sasl.h>
+ #include <saslplug.h>
+ #include <saslutil.h>
diff --git a/gnu/packages/patches/daemontools-gcc14.patch b/gnu/packages/patches/daemontools-gcc14.patch
new file mode 100644
index 0000000000..00b772bc3b
--- /dev/null
+++ b/gnu/packages/patches/daemontools-gcc14.patch
@@ -0,0 +1,561 @@
+Taken from Debian, see
+https://salsa.debian.org/debian/daemontools/-/blob/6b5584ccae6bd7c8cb6f47dd71062e3b1cd0a038/debian/patches/0005-fix-ftbfs.patch
+
+From: =?utf-8?b?SmFuIE1vasW+w63FoQ==?= <jan.mojzis@gmail.com>
+Date: Sat, 30 Mar 2024 10:15:13 +0100
+Subject: fix ftbfs
+
+Forwarded: no
+---
+ daemontools-0.76/src/chkshsgr.c | 3 ++-
+ daemontools-0.76/src/envdir.c | 2 +-
+ daemontools-0.76/src/envuidgid.c | 2 +-
+ daemontools-0.76/src/fghack.c | 6 ++++--
+ daemontools-0.76/src/matchtest.c | 1 +
+ daemontools-0.76/src/multilog.c | 3 ++-
+ daemontools-0.76/src/pathexec.h | 4 ++--
+ daemontools-0.76/src/pathexec_env.c | 6 +++---
+ daemontools-0.76/src/pathexec_run.c | 3 ++-
+ daemontools-0.76/src/pgrphack.c | 2 +-
+ daemontools-0.76/src/prot.c | 4 +++-
+ daemontools-0.76/src/seek_set.c | 1 +
+ daemontools-0.76/src/setlock.c | 2 +-
+ daemontools-0.76/src/setuidgid.c | 2 +-
+ daemontools-0.76/src/sgetopt.c | 2 +-
+ daemontools-0.76/src/sgetopt.h | 2 +-
+ daemontools-0.76/src/softlimit.c | 2 +-
+ daemontools-0.76/src/subgetopt.c | 2 +-
+ daemontools-0.76/src/subgetopt.h | 2 +-
+ daemontools-0.76/src/supervise.c | 6 ++++--
+ daemontools-0.76/src/svc.c | 2 +-
+ daemontools-0.76/src/svscan.c | 2 +-
+ daemontools-0.76/src/trycpp.c | 3 +++
+ daemontools-0.76/src/tryflock.c | 2 +-
+ daemontools-0.76/src/trypoll.c | 1 +
+ daemontools-0.76/src/trysgact.c | 2 +-
+ daemontools-0.76/src/trysgprm.c | 2 +-
+ daemontools-0.76/src/tryshsgr.c | 13 ++++++++-----
+ daemontools-0.76/src/tryulong64.c | 5 ++++-
+ daemontools-0.76/src/trywaitp.c | 2 +-
+ daemontools-0.76/src/uint64.h1 | 2 +-
+ daemontools-0.76/src/uint64.h2 | 5 +++--
+ daemontools-0.76/src/x86cpuid.c | 2 ++
+ 33 files changed, 62 insertions(+), 38 deletions(-)
+
+diff --git a/daemontools-0.76/src/chkshsgr.c b/daemontools-0.76/src/chkshsgr.c
+index 38c352d..470f565 100644
+--- a/daemontools-0.76/src/chkshsgr.c
++++ b/daemontools-0.76/src/chkshsgr.c
+@@ -1,12 +1,13 @@
+ /* Public domain. */
+
+ #include <unistd.h>
++#include <grp.h>
+
+ int main()
+ {
+ short x[4];
+
+ x[0] = x[1] = 0;
+- if (getgroups(1,x) == 0) if (setgroups(1,x) == -1) _exit(1);
++ if (getgroups(1,(gid_t *)x) == 0) if (setgroups(1,(gid_t *)x) == -1) _exit(1);
+ _exit(0);
+ }
+diff --git a/daemontools-0.76/src/envdir.c b/daemontools-0.76/src/envdir.c
+index beb1b1f..d02bc63 100644
+--- a/daemontools-0.76/src/envdir.c
++++ b/daemontools-0.76/src/envdir.c
+@@ -21,7 +21,7 @@ void nomem(void)
+
+ static stralloc sa;
+
+-int main(int argc,const char *const *argv)
++int main(int argc,char **argv)
+ {
+ int fdorigdir;
+ const char *fn;
+diff --git a/daemontools-0.76/src/envuidgid.c b/daemontools-0.76/src/envuidgid.c
+index 294960a..f097db1 100644
+--- a/daemontools-0.76/src/envuidgid.c
++++ b/daemontools-0.76/src/envuidgid.c
+@@ -15,7 +15,7 @@ char strnum[FMT_ULONG];
+ const char *account;
+ struct passwd *pw;
+
+-int main(int argc,const char *const *argv)
++int main(int argc,char **argv)
+ {
+ account = *++argv;
+ if (!account || !*++argv)
+diff --git a/daemontools-0.76/src/fghack.c b/daemontools-0.76/src/fghack.c
+index 34ca1db..262876a 100644
+--- a/daemontools-0.76/src/fghack.c
++++ b/daemontools-0.76/src/fghack.c
+@@ -9,12 +9,13 @@
+
+ int pid;
+
+-int main(int argc,const char * const *argv,const char * const *envp)
++int main(int argc,char **argv,char **envp)
+ {
+ char ch;
+ int wstat;
+ int pi[2];
+ int i;
++ int dummy;
+
+ if (!argv[1])
+ strerr_die1x(100,"fghack: usage: fghack child");
+@@ -28,7 +29,8 @@ int main(int argc,const char * const *argv,const char * const *envp)
+ case 0:
+ close(pi[0]);
+ for (i = 0;i < 30;++i)
+- dup(pi[1]);
++ dummy = dup(pi[1]);
++ (void) dummy;
+ pathexec_run(argv[1],argv + 1,envp);
+ strerr_die4sys(111,FATAL,"unable to run ",argv[1],": ");
+ }
+diff --git a/daemontools-0.76/src/matchtest.c b/daemontools-0.76/src/matchtest.c
+index 980dd1c..1bd4bbc 100644
+--- a/daemontools-0.76/src/matchtest.c
++++ b/daemontools-0.76/src/matchtest.c
+@@ -1,3 +1,4 @@
++#include <unistd.h>
+ #include "match.h"
+ #include "buffer.h"
+ #include "str.h"
+diff --git a/daemontools-0.76/src/multilog.c b/daemontools-0.76/src/multilog.c
+index be27a6a..ea02909 100644
+--- a/daemontools-0.76/src/multilog.c
++++ b/daemontools-0.76/src/multilog.c
+@@ -1,6 +1,7 @@
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <stdio.h>
+ #include "direntry.h"
+ #include "alloc.h"
+ #include "buffer.h"
+@@ -172,7 +173,7 @@ void finish(struct cyclog *d,const char *file,const char *code)
+
+ void startprocessor(struct cyclog *d)
+ {
+- const char *args[4];
++ char *args[4];
+ int fd;
+
+ sig_uncatch(sig_term);
+diff --git a/daemontools-0.76/src/pathexec.h b/daemontools-0.76/src/pathexec.h
+index 61da922..f984f77 100644
+--- a/daemontools-0.76/src/pathexec.h
++++ b/daemontools-0.76/src/pathexec.h
+@@ -3,8 +3,8 @@
+ #ifndef PATHEXEC_H
+ #define PATHEXEC_H
+
+-extern void pathexec_run(const char *,const char * const *,const char * const *);
++extern void pathexec_run(const char *,char **,char **);
+ extern int pathexec_env(const char *,const char *);
+-extern void pathexec(const char * const *);
++extern void pathexec(char **);
+
+ #endif
+diff --git a/daemontools-0.76/src/pathexec_env.c b/daemontools-0.76/src/pathexec_env.c
+index 2cb101c..a1404ad 100644
+--- a/daemontools-0.76/src/pathexec_env.c
++++ b/daemontools-0.76/src/pathexec_env.c
+@@ -22,9 +22,9 @@ int pathexec_env(const char *s,const char *t)
+ return stralloc_cat(&plus,&tmp);
+ }
+
+-void pathexec(const char *const *argv)
++void pathexec(char **argv)
+ {
+- const char **e;
++ char **e;
+ unsigned int elen;
+ unsigned int i;
+ unsigned int j;
+@@ -40,7 +40,7 @@ void pathexec(const char *const *argv)
+ if (!plus.s[i])
+ ++elen;
+
+- e = (const char **) alloc((elen + 1) * sizeof(char *));
++ e = (char **) alloc((elen + 1) * sizeof(char *));
+ if (!e) return;
+
+ elen = 0;
+diff --git a/daemontools-0.76/src/pathexec_run.c b/daemontools-0.76/src/pathexec_run.c
+index 1770ac7..7929144 100644
+--- a/daemontools-0.76/src/pathexec_run.c
++++ b/daemontools-0.76/src/pathexec_run.c
+@@ -1,5 +1,6 @@
+ /* Public domain. */
+
++#include <unistd.h>
+ #include "error.h"
+ #include "stralloc.h"
+ #include "str.h"
+@@ -8,7 +9,7 @@
+
+ static stralloc tmp;
+
+-void pathexec_run(const char *file,const char * const *argv,const char * const *envp)
++void pathexec_run(const char *file,char **argv,char **envp)
+ {
+ const char *path;
+ unsigned int split;
+diff --git a/daemontools-0.76/src/pgrphack.c b/daemontools-0.76/src/pgrphack.c
+index 9aa10dc..6b06a84 100644
+--- a/daemontools-0.76/src/pgrphack.c
++++ b/daemontools-0.76/src/pgrphack.c
+@@ -4,7 +4,7 @@
+
+ #define FATAL "pgrphack: fatal: "
+
+-int main(int argc,const char * const *argv,const char * const *envp)
++int main(int argc,char **argv,char **envp)
+ {
+ if (!argv[1]) strerr_die1x(100,"pgrphack: usage: pgrphack child");
+ setsid(); /* shouldn't fail; if it does, too bad */
+diff --git a/daemontools-0.76/src/prot.c b/daemontools-0.76/src/prot.c
+index 79a88c5..45af0ef 100644
+--- a/daemontools-0.76/src/prot.c
++++ b/daemontools-0.76/src/prot.c
+@@ -1,5 +1,7 @@
+ /* Public domain. */
+
++#include <unistd.h>
++#include <grp.h>
+ #include "hasshsgr.h"
+ #include "prot.h"
+
+@@ -8,7 +10,7 @@ int prot_gid(int gid)
+ #ifdef HASSHORTSETGROUPS
+ short x[2];
+ x[0] = gid; x[1] = 73; /* catch errors */
+- if (setgroups(1,x) == -1) return -1;
++ if (setgroups(1,(gid_t *)x) == -1) return -1;
+ #else
+ if (setgroups(1,&gid) == -1) return -1;
+ #endif
+diff --git a/daemontools-0.76/src/seek_set.c b/daemontools-0.76/src/seek_set.c
+index 19b8265..5299201 100644
+--- a/daemontools-0.76/src/seek_set.c
++++ b/daemontools-0.76/src/seek_set.c
+@@ -1,5 +1,6 @@
+ /* Public domain. */
+
++#include <unistd.h>
+ #include <sys/types.h>
+ #include "seek.h"
+
+diff --git a/daemontools-0.76/src/setlock.c b/daemontools-0.76/src/setlock.c
+index eec2192..d900540 100644
+--- a/daemontools-0.76/src/setlock.c
++++ b/daemontools-0.76/src/setlock.c
+@@ -14,7 +14,7 @@ void usage() {
+ int flagndelay = 0;
+ int flagx = 0;
+
+-int main(int argc,const char *const *argv,const char *const *envp)
++int main(int argc,char **argv,char **envp)
+ {
+ int opt;
+ int fd;
+diff --git a/daemontools-0.76/src/setuidgid.c b/daemontools-0.76/src/setuidgid.c
+index 8c683de..90485e9 100644
+--- a/daemontools-0.76/src/setuidgid.c
++++ b/daemontools-0.76/src/setuidgid.c
+@@ -9,7 +9,7 @@
+ const char *account;
+ struct passwd *pw;
+
+-int main(int argc,const char *const *argv,const char *const *envp)
++int main(int argc,char **argv,char **envp)
+ {
+ account = *++argv;
+ if (!account || !*++argv)
+diff --git a/daemontools-0.76/src/sgetopt.c b/daemontools-0.76/src/sgetopt.c
+index 8bb608f..1d6d9f4 100644
+--- a/daemontools-0.76/src/sgetopt.c
++++ b/daemontools-0.76/src/sgetopt.c
+@@ -27,7 +27,7 @@ Documentation in sgetopt.3.
+ int opterr = 1;
+ const char *optprogname = 0;
+
+-int getopt(int argc,const char *const *argv,const char *opts)
++int getopt(int argc,char **argv,const char *opts)
+ {
+ int c;
+ const char *s;
+diff --git a/daemontools-0.76/src/sgetopt.h b/daemontools-0.76/src/sgetopt.h
+index bf8bce6..6a6e111 100644
+--- a/daemontools-0.76/src/sgetopt.h
++++ b/daemontools-0.76/src/sgetopt.h
+@@ -16,7 +16,7 @@
+
+ #include "subgetopt.h"
+
+-extern int sgetoptmine(int,const char *const *,const char *);
++extern int sgetoptmine(int,char **,const char *);
+ extern int sgetopterr;
+ extern const char *sgetoptprogname;
+
+diff --git a/daemontools-0.76/src/softlimit.c b/daemontools-0.76/src/softlimit.c
+index 8be40b8..4d9f81e 100644
+--- a/daemontools-0.76/src/softlimit.c
++++ b/daemontools-0.76/src/softlimit.c
+@@ -36,7 +36,7 @@ void doit(int resource,const char *arg)
+ strerr_die2sys(111,FATAL,"setrlimit failed: ");
+ }
+
+-int main(int argc,const char *const *argv,const char *const *envp)
++int main(int argc,char **argv,char **envp)
+ {
+ int opt;
+
+diff --git a/daemontools-0.76/src/subgetopt.c b/daemontools-0.76/src/subgetopt.c
+index 266e72a..bbbbb6c 100644
+--- a/daemontools-0.76/src/subgetopt.c
++++ b/daemontools-0.76/src/subgetopt.c
+@@ -16,7 +16,7 @@ const char *optarg = 0;
+ int optproblem = 0;
+ int optdone = SUBGETOPTDONE;
+
+-int sgopt(int argc,const char *const *argv,const char *opts)
++int sgopt(int argc,char **argv,const char *opts)
+ {
+ int c;
+ const char *s;
+diff --git a/daemontools-0.76/src/subgetopt.h b/daemontools-0.76/src/subgetopt.h
+index 41ad26a..7e5636e 100644
+--- a/daemontools-0.76/src/subgetopt.h
++++ b/daemontools-0.76/src/subgetopt.h
+@@ -15,7 +15,7 @@
+
+ #define SUBGETOPTDONE -1
+
+-extern int subgetopt(int,const char *const *,const char *);
++extern int subgetopt(int,char **,const char *);
+ extern const char *subgetoptarg;
+ extern int subgetoptind;
+ extern int subgetoptpos;
+diff --git a/daemontools-0.76/src/supervise.c b/daemontools-0.76/src/supervise.c
+index 483e9a2..3a27f42 100644
+--- a/daemontools-0.76/src/supervise.c
++++ b/daemontools-0.76/src/supervise.c
+@@ -2,6 +2,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <signal.h>
++#include <stdio.h>
+ #include "sig.h"
+ #include "strerr.h"
+ #include "error.h"
+@@ -81,10 +82,11 @@ void announce(void)
+
+ void trigger(void)
+ {
+- write(selfpipe[1],"",1);
++ int dummy = write(selfpipe[1],"",1);
++ (void) dummy;
+ }
+
+-const char *run[2] = { "./run", 0 };
++char *run[2] = { "./run", 0 };
+
+ int flagfailed = 0;
+
+diff --git a/daemontools-0.76/src/svc.c b/daemontools-0.76/src/svc.c
+index 08e9a5c..aae2d9d 100644
+--- a/daemontools-0.76/src/svc.c
++++ b/daemontools-0.76/src/svc.c
+@@ -19,7 +19,7 @@ char bspace[1];
+
+ int fdorigdir;
+
+-int main(int argc,const char *const *argv)
++int main(int argc,char **argv)
+ {
+ int opt;
+ int fd;
+diff --git a/daemontools-0.76/src/svscan.c b/daemontools-0.76/src/svscan.c
+index 15a8c89..39b8887 100644
+--- a/daemontools-0.76/src/svscan.c
++++ b/daemontools-0.76/src/svscan.c
+@@ -36,7 +36,7 @@ void start(char *fn)
+ struct stat st;
+ int child;
+ int i;
+- const char *args[3];
++ char *args[3];
+
+ if (fn[0] == '.') return;
+
+diff --git a/daemontools-0.76/src/trycpp.c b/daemontools-0.76/src/trycpp.c
+index e4503d4..70bc8d6 100644
+--- a/daemontools-0.76/src/trycpp.c
++++ b/daemontools-0.76/src/trycpp.c
+@@ -1,5 +1,8 @@
+ /* Public domain. */
+
++#include <stdio.h>
++#include <stdlib.h>
++
+ int main()
+ {
+ #ifdef NeXT
+diff --git a/daemontools-0.76/src/tryflock.c b/daemontools-0.76/src/tryflock.c
+index a82ffc2..68599d3 100644
+--- a/daemontools-0.76/src/tryflock.c
++++ b/daemontools-0.76/src/tryflock.c
+@@ -4,7 +4,7 @@
+ #include <sys/file.h>
+ #include <fcntl.h>
+
+-main()
++int main()
+ {
+ flock(0,LOCK_EX | LOCK_UN | LOCK_NB);
+ }
+diff --git a/daemontools-0.76/src/trypoll.c b/daemontools-0.76/src/trypoll.c
+index 6506617..a7b26df 100644
+--- a/daemontools-0.76/src/trypoll.c
++++ b/daemontools-0.76/src/trypoll.c
+@@ -3,6 +3,7 @@
+ #include <sys/types.h>
+ #include <fcntl.h>
+ #include <poll.h>
++#include <unistd.h>
+
+ int main()
+ {
+diff --git a/daemontools-0.76/src/trysgact.c b/daemontools-0.76/src/trysgact.c
+index e264ef2..841b88a 100644
+--- a/daemontools-0.76/src/trysgact.c
++++ b/daemontools-0.76/src/trysgact.c
+@@ -2,7 +2,7 @@
+
+ #include <signal.h>
+
+-main()
++int main()
+ {
+ struct sigaction sa;
+ sa.sa_handler = 0;
+diff --git a/daemontools-0.76/src/trysgprm.c b/daemontools-0.76/src/trysgprm.c
+index a46c82c..3e78a82 100644
+--- a/daemontools-0.76/src/trysgprm.c
++++ b/daemontools-0.76/src/trysgprm.c
+@@ -2,7 +2,7 @@
+
+ #include <signal.h>
+
+-main()
++int main()
+ {
+ sigset_t ss;
+
+diff --git a/daemontools-0.76/src/tryshsgr.c b/daemontools-0.76/src/tryshsgr.c
+index c5ed6d6..ba298a7 100644
+--- a/daemontools-0.76/src/tryshsgr.c
++++ b/daemontools-0.76/src/tryshsgr.c
+@@ -1,16 +1,19 @@
+ /* Public domain. */
+
++#include <unistd.h>
++#include <grp.h>
++
+ int main()
+ {
+ short x[4];
+-
++
+ x[0] = x[1] = 1;
+- if (getgroups(1,x) == 0) if (setgroups(1,x) == -1) _exit(1);
+-
+- if (getgroups(1,x) == -1) _exit(1);
++ if (getgroups(1,(gid_t *)x) == 0) if (setgroups(1,(gid_t *)x) == -1) _exit(1);
++
++ if (getgroups(1,(gid_t *)x) == -1) _exit(1);
+ if (x[1] != 1) _exit(1);
+ x[1] = 2;
+- if (getgroups(1,x) == -1) _exit(1);
++ if (getgroups(1,(gid_t *)x) == -1) _exit(1);
+ if (x[1] != 2) _exit(1);
+ _exit(0);
+ }
+diff --git a/daemontools-0.76/src/tryulong64.c b/daemontools-0.76/src/tryulong64.c
+index 003548a..f3b111d 100644
+--- a/daemontools-0.76/src/tryulong64.c
++++ b/daemontools-0.76/src/tryulong64.c
+@@ -1,8 +1,11 @@
+ /* Public domain. */
+
++#include <unistd.h>
++#include <stdint.h>
++
+ int main()
+ {
+- unsigned long u;
++ uint64_t u;
+ u = 1;
+ u += u; u += u; u += u; u += u; u += u; u += u; u += u; u += u;
+ u += u; u += u; u += u; u += u; u += u; u += u; u += u; u += u;
+diff --git a/daemontools-0.76/src/trywaitp.c b/daemontools-0.76/src/trywaitp.c
+index 319b81f..76b3329 100644
+--- a/daemontools-0.76/src/trywaitp.c
++++ b/daemontools-0.76/src/trywaitp.c
+@@ -3,7 +3,7 @@
+ #include <sys/types.h>
+ #include <sys/wait.h>
+
+-main()
++int main()
+ {
+ waitpid(0,0,0);
+ }
+diff --git a/daemontools-0.76/src/uint64.h1 b/daemontools-0.76/src/uint64.h1
+index 486a380..fde25ca 100644
+--- a/daemontools-0.76/src/uint64.h1
++++ b/daemontools-0.76/src/uint64.h1
+@@ -3,7 +3,7 @@
+ #ifndef UINT64_H
+ #define UINT64_H
+
+-/* sysdep: -ulong64 */
++/* sysdep: -uint64_t */
+
+ typedef unsigned long long uint64;
+
+diff --git a/daemontools-0.76/src/uint64.h2 b/daemontools-0.76/src/uint64.h2
+index 8869e43..fd134f2 100644
+--- a/daemontools-0.76/src/uint64.h2
++++ b/daemontools-0.76/src/uint64.h2
+@@ -3,8 +3,9 @@
+ #ifndef UINT64_H
+ #define UINT64_H
+
+-/* sysdep: +ulong64 */
++/* sysdep: +uint64_t */
+
+-typedef unsigned long uint64;
++#include <stdint.h>
++typedef uint64_t uint64;
+
+ #endif
+diff --git a/daemontools-0.76/src/x86cpuid.c b/daemontools-0.76/src/x86cpuid.c
+index f81c593..122eed1 100644
+--- a/daemontools-0.76/src/x86cpuid.c
++++ b/daemontools-0.76/src/x86cpuid.c
+@@ -1,6 +1,8 @@
+ /* Public domain. */
+
+ #include <signal.h>
++#include <stdlib.h>
++#include <stdio.h>
+
+ void nope()
+ {
diff --git a/gnu/packages/patches/django-compressor-build-with-beautifulsoup-4.14+.patch b/gnu/packages/patches/django-compressor-build-with-beautifulsoup-4.14+.patch
new file mode 100644
index 0000000000..b63251779f
--- /dev/null
+++ b/gnu/packages/patches/django-compressor-build-with-beautifulsoup-4.14+.patch
@@ -0,0 +1,40 @@
+From 53f50bc0cee1cdfaf023ba65e1524b820cb7c18e Mon Sep 17 00:00:00 2001
+From: Matthias Kestenholz <mk@feinheit.ch>
+Date: Thu, 22 May 2025 10:37:20 +0200
+Subject: [PATCH 1/2] Disable bs4's multi valued attributes
+
+---
+ compressor/parser/beautifulsoup.py | 12 ++++--------
+ 1 file changed, 4 insertions(+), 8 deletions(-)
+
+diff --git a/compressor/parser/beautifulsoup.py b/compressor/parser/beautifulsoup.py
+index 91897485..f673410e 100644
+--- a/compressor/parser/beautifulsoup.py
++++ b/compressor/parser/beautifulsoup.py
+@@ -10,7 +10,9 @@ def __init__(self, content):
+ try:
+ from bs4 import BeautifulSoup
+
+- self.soup = BeautifulSoup(self.content, "html.parser")
++ # Disable multi_valued_attributes
++ # http://www.crummy.com/software/BeautifulSoup/bs4/doc/#multi-valued-attributes
++ self.soup = BeautifulSoup(self.content, "html.parser", multi_valued_attributes={})
+ except ImportError as err:
+ raise ImproperlyConfigured("Error while importing BeautifulSoup: %s" % err)
+
+@@ -21,13 +23,7 @@ def js_elems(self):
+ return self.soup.find_all("script")
+
+ def elem_attribs(self, elem):
+- attrs = dict(elem.attrs)
+- # hack around changed behaviour in bs4, it returns lists now instead of one string, see
+- # http://www.crummy.com/software/BeautifulSoup/bs4/doc/#multi-valued-attributes
+- for key, value in attrs.items():
+- if type(value) is list:
+- attrs[key] = " ".join(value)
+- return attrs
++ return elem.attrs
+
+ def elem_content(self, elem):
+ return elem.string
+
diff --git a/gnu/packages/patches/dolphin-emu-unbundle-tinygltf.patch b/gnu/packages/patches/dolphin-emu-unbundle-tinygltf.patch
index 1c91823785..8c6e954926 100644
--- a/gnu/packages/patches/dolphin-emu-unbundle-tinygltf.patch
+++ b/gnu/packages/patches/dolphin-emu-unbundle-tinygltf.patch
@@ -1,46 +1,9 @@
Upstream-status: https://github.com/dolphin-emu/dolphin/pull/13824
-diff --git a/CMake/DolphinLibraryTools.cmake b/CMake/DolphinLibraryTools.cmake
-index 4c395a8ef9..efa0d6a9e2 100644
---- a/CMake/DolphinLibraryTools.cmake
-+++ b/CMake/DolphinLibraryTools.cmake
-@@ -1,14 +1,3 @@
--# like add_library(new ALIAS old) but avoids add_library cannot create ALIAS target "new" because target "old" is imported but not globally visible. on older cmake
--# This can be replaced with a direct alias call once our minimum is cmake 3.18
--function(dolphin_alias_library new old)
-- string(REPLACE "::" "" library_no_namespace ${old})
-- if (NOT TARGET _alias_${library_no_namespace})
-- add_library(_alias_${library_no_namespace} INTERFACE)
-- target_link_libraries(_alias_${library_no_namespace} INTERFACE ${old})
-- endif()
-- add_library(${new} ALIAS _alias_${library_no_namespace})
--endfunction()
--
- # Makes an imported target if it doesn't exist. Useful for when find scripts from older versions of cmake don't make the targets you need
- function(dolphin_make_imported_target_if_missing target lib)
- if(${lib}_FOUND AND NOT TARGET ${target})
-@@ -85,7 +74,7 @@ function(dolphin_find_optional_system_library_pkgconfig library search alias bun
- endif()
- if(${library}_FOUND)
- message(STATUS "Using system ${library}")
-- dolphin_alias_library(${alias} PkgConfig::${library})
-+ add_library(${alias} ALIAS PkgConfig::${library})
- set(${library}_TYPE "System" PARENT_SCOPE)
- else()
- dolphin_add_bundled_library(${library} ${use_system} ${bundled_path})
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index c277e2a10a..67b72179f3 100644
+index 964a33ac13..7779cf2eac 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -1,7 +1,7 @@
- ########################################
- # General setup
- #
--cmake_minimum_required(VERSION 3.13)
-+cmake_minimum_required(VERSION 3.18)
-
- cmake_policy(SET CMP0079 NEW) # let target_link_libraries() link to a target defined in a different directory
- cmake_policy(SET CMP0080 OLD) # allow using BundleUtilities at configure time
@@ -657,7 +657,11 @@ add_subdirectory(Externals/glslang)
if(WIN32 OR APPLE)
add_subdirectory(Externals/spirv_cross)
@@ -48,7 +11,7 @@ index c277e2a10a..67b72179f3 100644
-add_subdirectory(Externals/tinygltf)
+
+dolphin_find_optional_system_library(TinyGLTF Externals/tinygltf)
-+if(NOT DEFINED tinygltf)
++if(NOT TARGET tinygltf)
+ add_library(tinygltf ALIAS tinygltf::tinygltf) # using system library
+endif()
@@ -65,6 +28,32 @@ index 0d86268bbe..9e6a99c6f8 100644
-target_include_directories(tinygltf INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
+target_include_directories(tinygltf INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/tinygltf)
dolphin_disable_warnings(tinygltf)
+diff --git a/Externals/tinygltf/exports.props b/Externals/tinygltf/exports.props
+index 7e2fde81cf..09f43c1bae 100644
+--- a/Externals/tinygltf/exports.props
++++ b/Externals/tinygltf/exports.props
+@@ -2,7 +2,7 @@
+ <Project>
+ <ItemDefinitionGroup>
+ <ClCompile>
+- <AdditionalIncludeDirectories>$(ExternalsDir)tinygltf;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++ <AdditionalIncludeDirectories>$(ExternalsDir)tinygltf\tinygltf;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>TINYGLTF_NOEXCEPTION;TINYGLTF_NO_EXTERNAL_IMAGE;TINYGLTF_USE_CPP14;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ </ItemDefinitionGroup>
+diff --git a/Externals/tinygltf/tinygltf.vcxproj b/Externals/tinygltf/tinygltf.vcxproj
+index e33d949e56..4995626f22 100644
+--- a/Externals/tinygltf/tinygltf.vcxproj
++++ b/Externals/tinygltf/tinygltf.vcxproj
+@@ -17,7 +17,7 @@
+ <PropertyGroup Label="UserMacros" />
+ <ItemDefinitionGroup>
+ <ClCompile>
+- <AdditionalIncludeDirectories>tinygltf;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++ <AdditionalIncludeDirectories>tinygltf\tinygltf;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemGroup>
diff --git a/Source/Core/VideoCommon/Assets/MeshAsset.cpp b/Source/Core/VideoCommon/Assets/MeshAsset.cpp
index bde8c8aab6..13eb2b4448 100644
--- a/Source/Core/VideoCommon/Assets/MeshAsset.cpp
diff --git a/gnu/packages/patches/dolphin-emu-unbundle-watcher.patch b/gnu/packages/patches/dolphin-emu-unbundle-watcher.patch
index c18a6c2ec4..d6046d440c 100644
--- a/gnu/packages/patches/dolphin-emu-unbundle-watcher.patch
+++ b/gnu/packages/patches/dolphin-emu-unbundle-watcher.patch
@@ -1,50 +1,30 @@
Upstream-status: https://github.com/dolphin-emu/dolphin/pull/13823
-diff --git a/CMake/DolphinLibraryTools.cmake b/CMake/DolphinLibraryTools.cmake
-index 4c395a8ef9..fb806b1b90 100644
---- a/CMake/DolphinLibraryTools.cmake
-+++ b/CMake/DolphinLibraryTools.cmake
-@@ -92,3 +92,30 @@ function(dolphin_find_optional_system_library_pkgconfig library search alias bun
- set(${library}_TYPE "Bundled" PARENT_SCOPE)
- endif()
- endfunction()
-+
-+# This can be used for header-only libraries that doesn't offer a
-+# pkg-config or CMake file. It uses CMake's find_file. LIBRARY is the
-+# name of the library providing it, INCLUDE is the header file name
-+# without its installation prefix (e.g. "wtr/watcher.hpp") while
-+# BUNDLED_PATH is the root directory of the bundled library.
-+function(dolphin_find_optional_system_include library include bundled_path)
-+ dolphin_optional_system_library(use_system ${library})
-+ string(TOUPPER ${library} upperlib)
-+ if(use_system)
-+ find_file(${library}_INCLUDE ${include})
-+ if((NOT ${library}_INCLUDE) AND (NOT ${use_system} STREQUAL "AUTO"))
-+ message(FATAL_ERROR "No system ${library} headers found. \
-+Please install it or set USE_SYSTEM_${upperlib} to AUTO or OFF.")
-+ endif()
-+ endif()
-+ if(${library}_INCLUDE)
-+ message(STATUS "Using system ${library} headers")
-+ set(${library}_TYPE "System" PARENT_SCOPE)
-+ add_library(${library} INTERFACE IMPORTED GLOBAL)
-+ set_target_properties(${library} PROPERTIES
-+ INTERFACE_INCLUDE_DIRECTORIES ${${library}_INCLUDE})
-+ else()
-+ dolphin_add_bundled_library(${library} ${use_system} ${bundled_path})
-+ set(${library}_TYPE "Bundled" PARENT_SCOPE)
-+ endif()
-+endfunction()
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index c277e2a10a..12b1c36ef0 100644
+index c277e2a10a..9b9ec00f91 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -786,7 +786,7 @@ if (USE_RETRO_ACHIEVEMENTS)
+@@ -786,7 +786,9 @@ if (USE_RETRO_ACHIEVEMENTS)
add_subdirectory(Externals/rcheevos)
endif()
-add_subdirectory(Externals/watcher)
-+dolphin_find_optional_system_include(watcher wtr/watcher.hpp Externals/watcher)
++dolphin_find_optional_system_library_pkgconfig(
++ WATCHER watcher watcher::watcher Externals/watcher
++)
########################################
# Pre-build events: Define configuration variables and write SCM info header
+diff --git a/Source/Core/Common/CMakeLists.txt b/Source/Core/Common/CMakeLists.txt
+index ee738ba4e3..629c739c8d 100644
+--- a/Source/Core/Common/CMakeLists.txt
++++ b/Source/Core/Common/CMakeLists.txt
+@@ -186,7 +186,7 @@ PRIVATE
+ FatFs
+ Iconv::Iconv
+ spng::spng
+- watcher
++ watcher::watcher
+ ${VTUNE_LIBRARIES}
+ )
+
diff --git a/gnu/packages/patches/dynaconf-unvendor-deps.patch b/gnu/packages/patches/dynaconf-unvendor-deps.patch
deleted file mode 100644
index f816264f4a..0000000000
--- a/gnu/packages/patches/dynaconf-unvendor-deps.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-From d3252748b0f9036cb31f4697ebb5c6a494aceaca Mon Sep 17 00:00:00 2001
-From: Giacomo Leidi <goodoldpaul@autistici.org>
-Date: Sun, 14 Jan 2024 12:05:49 +0100
-Subject: [PATCH] Use system site dependencies.
-
-* Box was not unvendored because it appears to be heavily patched.
-* Tomllib seems to be a backport from Python 3.11, as such it wasn't unvendored.
----
- dynaconf/cli.py | 4 ++--
- dynaconf/default_settings.py | 2 +-
- dynaconf/loaders/env_loader.py | 2 +-
- dynaconf/loaders/toml_loader.py | 2 +-
- dynaconf/loaders/yaml_loader.py | 2 +-
- dynaconf/utils/inspect.py | 2 +-
- dynaconf/utils/parse_conf.py | 2 +-
- dynaconf/vendor/box/converters.py | 2 +-
- dynaconf/vendor/box/from_file.py | 2 +-
- tests/test_cli.py | 2 +-
- tests/test_inspect.py | 2 +-
- 11 files changed, 12 insertions(+), 12 deletions(-)
-
-diff --git a/dynaconf/cli.py b/dynaconf/cli.py
-index c0fd489..5739e79 100644
---- a/dynaconf/cli.py
-+++ b/dynaconf/cli.py
-@@ -24,8 +24,8 @@ from dynaconf.utils.parse_conf import parse_conf_data
- from dynaconf.utils.parse_conf import unparse_conf_data
- from dynaconf.validator import ValidationError
- from dynaconf.validator import Validator
--from dynaconf.vendor import click
--from dynaconf.vendor import toml
-+import click
-+import toml
- from dynaconf.vendor import tomllib
-
-
-diff --git a/dynaconf/default_settings.py b/dynaconf/default_settings.py
-index 7e8c222..526b01e 100644
---- a/dynaconf/default_settings.py
-+++ b/dynaconf/default_settings.py
-@@ -11,7 +11,7 @@ from dynaconf.utils import warn_deprecations
- from dynaconf.utils.files import find_file
- from dynaconf.utils.parse_conf import boolean_fix
- from dynaconf.utils.parse_conf import parse_conf_data
--from dynaconf.vendor.dotenv import load_dotenv
-+from dotenv import load_dotenv
-
-
- def try_renamed(key, value, older_key, current_key):
-diff --git a/dynaconf/loaders/env_loader.py b/dynaconf/loaders/env_loader.py
-index a563b4e..91ac3ae 100644
---- a/dynaconf/loaders/env_loader.py
-+++ b/dynaconf/loaders/env_loader.py
-@@ -11,7 +11,7 @@ from dynaconf.utils.parse_conf import parse_conf_data
-
- DOTENV_IMPORTED = False
- with suppress(ImportError, FileNotFoundError):
-- from dynaconf.vendor.dotenv import cli as dotenv_cli
-+ from dotenv import cli as dotenv_cli
-
- DOTENV_IMPORTED = True
-
-diff --git a/dynaconf/loaders/toml_loader.py b/dynaconf/loaders/toml_loader.py
-index 42db7b3..ba0188b 100644
---- a/dynaconf/loaders/toml_loader.py
-+++ b/dynaconf/loaders/toml_loader.py
-@@ -7,7 +7,7 @@ from dynaconf import default_settings
- from dynaconf.constants import TOML_EXTENSIONS
- from dynaconf.loaders.base import BaseLoader
- from dynaconf.utils import object_merge
--from dynaconf.vendor import toml # Backwards compatibility with uiri/toml
-+import toml # Backwards compatibility with uiri/toml
- from dynaconf.vendor import tomllib # New tomllib stdlib on py3.11
-
-
-diff --git a/dynaconf/loaders/yaml_loader.py b/dynaconf/loaders/yaml_loader.py
-index 5721681..ab628c2 100644
---- a/dynaconf/loaders/yaml_loader.py
-+++ b/dynaconf/loaders/yaml_loader.py
-@@ -10,7 +10,7 @@ from dynaconf.constants import YAML_EXTENSIONS
- from dynaconf.loaders.base import BaseLoader
- from dynaconf.utils import object_merge
- from dynaconf.utils.parse_conf import try_to_encode
--from dynaconf.vendor.ruamel import yaml
-+from ruamel import yaml
-
- # Add support for Dynaconf Lazy values to YAML dumper
- yaml.SafeDumper.yaml_representers[
-diff --git a/dynaconf/utils/inspect.py b/dynaconf/utils/inspect.py
-index 21d724e..2933b8f 100644
---- a/dynaconf/utils/inspect.py
-+++ b/dynaconf/utils/inspect.py
-@@ -18,7 +18,7 @@ from dynaconf.loaders.base import SourceMetadata
- from dynaconf.utils.boxing import DynaBox
- from dynaconf.utils.functional import empty
- from dynaconf.vendor.box.box_list import BoxList
--from dynaconf.vendor.ruamel.yaml import YAML
-+from ruamel.yaml import YAML
-
- if TYPE_CHECKING: # pragma: no cover
- from dynaconf.base import LazySettings, Settings
-diff --git a/dynaconf/utils/parse_conf.py b/dynaconf/utils/parse_conf.py
-index 882110e..a262864 100644
---- a/dynaconf/utils/parse_conf.py
-+++ b/dynaconf/utils/parse_conf.py
-@@ -12,7 +12,7 @@ from dynaconf.utils import multi_replace
- from dynaconf.utils import recursively_evaluate_lazy_format
- from dynaconf.utils.boxing import DynaBox
- from dynaconf.utils.functional import empty
--from dynaconf.vendor import toml
-+import toml
- from dynaconf.vendor import tomllib
-
- try:
-diff --git a/dynaconf/vendor/box/converters.py b/dynaconf/vendor/box/converters.py
-index 08694fe..4e84930 100644
---- a/dynaconf/vendor/box/converters.py
-+++ b/dynaconf/vendor/box/converters.py
-@@ -9,7 +9,7 @@ import sys
- import warnings
- from pathlib import Path
-
--import dynaconf.vendor.ruamel.yaml as yaml
-+import ruamel.yaml as yaml
- from dynaconf.vendor.box.exceptions import BoxError, BoxWarning
- from dynaconf.vendor import tomllib as toml
-
-diff --git a/dynaconf/vendor/box/from_file.py b/dynaconf/vendor/box/from_file.py
-index a82ac96..cd01f13 100644
---- a/dynaconf/vendor/box/from_file.py
-+++ b/dynaconf/vendor/box/from_file.py
-@@ -4,7 +4,7 @@ from json import JSONDecodeError
- from pathlib import Path
- from typing import Union
- from dynaconf.vendor.tomllib import TOMLDecodeError
--from dynaconf.vendor.ruamel.yaml import YAMLError
-+from ruamel.yaml import YAMLError
-
-
- from .exceptions import BoxError
-diff --git a/tests/test_cli.py b/tests/test_cli.py
-index c679ae5..9df5f7f 100644
---- a/tests/test_cli.py
-+++ b/tests/test_cli.py
-@@ -15,7 +15,7 @@ from dynaconf.cli import main
- from dynaconf.cli import read_file_in_root_directory
- from dynaconf.cli import WRITERS
- from dynaconf.utils.files import read_file
--from dynaconf.vendor.click.testing import CliRunner
-+from click.testing import CliRunner
-
- settings = LazySettings(OPTION_FOR_TESTS=True, environments=True)
-
-diff --git a/tests/test_inspect.py b/tests/test_inspect.py
-index 0819715..96638c1 100644
---- a/tests/test_inspect.py
-+++ b/tests/test_inspect.py
-@@ -18,7 +18,7 @@ from dynaconf.utils.inspect import inspect_settings
- from dynaconf.utils.inspect import KeyNotFoundError
- from dynaconf.utils.inspect import OutputFormatError
- from dynaconf.validator import Validator
--from dynaconf.vendor.ruamel import yaml
-+from ruamel import yaml
-
-
- def create_file(filename: str, data: str) -> str:
---
-2.41.0
-
diff --git a/gnu/packages/patches/elixir-httpoison-tag-network-dependent-test-cases.patch b/gnu/packages/patches/elixir-httpoison-tag-network-dependent-test-cases.patch
new file mode 100644
index 0000000000..763e20a697
--- /dev/null
+++ b/gnu/packages/patches/elixir-httpoison-tag-network-dependent-test-cases.patch
@@ -0,0 +1,64 @@
+From 788c481157871fe37becb2ec0280510061174e95 Mon Sep 17 00:00:00 2001
+From: Giacomo Leidi <goodoldpaul@autistici.org>
+Date: Sun, 21 Sep 2025 20:25:03 +0200
+Subject: [PATCH] tests: Tag network dependent test cases.
+
+Many environments, such as Linux distributions one, segragate builds
+from accessing many system resources like Internet access. Currently it
+is impossible to run the test suite offline, as it needs access to
+badssl.com. This commit tags network dependent test cases to allow them
+to be excluded in offline environments using mix test --exclude.
+
+This holds at least for openSUSE Tumbleweed, NixOS, Guix System and
+probably many others.
+---
+ test/httpoison_test.exs | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/test/httpoison_test.exs b/test/httpoison_test.exs
+index b260c65..f342b59 100644
+--- a/test/httpoison_test.exs
++++ b/test/httpoison_test.exs
+@@ -409,6 +409,7 @@ defmodule HTTPoisonTest do
+ )
+ end
+
++ @tag :network
+ test "expired certificate" do
+ assert {:error, %HTTPoison.Error{reason: {:tls_alert, {:certificate_expired, reason}}}} =
+ HTTPoison.get("https://expired.badssl.com/")
+@@ -440,6 +441,7 @@ defmodule HTTPoisonTest do
+ )
+ end
+
++ @tag :network
+ test "allows changing TLS1.0 settings" do
+ assert {:error,
+ %HTTPoison.Error{
+@@ -455,6 +457,7 @@ defmodule HTTPoisonTest do
+ end
+ end
+
++ @tag :network
+ test "allows changing TLS1.1 settings" do
+ assert {:error,
+ %HTTPoison.Error{
+@@ -472,6 +475,7 @@ defmodule HTTPoisonTest do
+ end
+ end
+
++ @tag :network
+ test "does support tls1.2" do
+ if :"tlsv1.2" in :ssl.versions()[:supported] do
+ assert {:ok, _} = HTTPoison.get("https://tls-v1-2.badssl.com:1012/", [])
+@@ -485,6 +489,7 @@ defmodule HTTPoisonTest do
+ end
+ end
+
++ @tag :network
+ test "invalid common name" do
+ assert {:error,
+ %HTTPoison.Error{
+--
+2.51.0
+
diff --git a/gnu/packages/patches/emacs-eglot-x-fix-apply-text-edits.patch b/gnu/packages/patches/emacs-eglot-x-fix-apply-text-edits.patch
deleted file mode 100644
index b9dcebded3..0000000000
--- a/gnu/packages/patches/emacs-eglot-x-fix-apply-text-edits.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff --git a/eglot-x.el b/eglot-x.el
-index a694f90..221822d 100644
---- a/eglot-x.el
-+++ b/eglot-x.el
-@@ -659,10 +659,17 @@ (defun eglot-x--check-capability (&rest capabilities)
-
- ;;; Snippet TextEdit
-
--(defun eglot-x--apply-text-edits (edits &optional version)
-+(defun eglot-x--apply-text-edits (edits &optional version silent)
- "Apply EDITS for current buffer if at VERSION, or if it's nil.
- This is almost a verbatim copy of `eglot--apply-text-edits', but
- it handles the SnippetTextEdit format."
-+ ;; NOTE: eglot--apply-text-edits changed a lot since this defun was
-+ ;; imlemented. Additionally, rust-analyzer has changed as well.
-+ ;; Now it only sends one SnippetTextEdit. Hence the implementation
-+ ;; should be updated, but "if it ain't broke, don't fix it". And
-+ ;; this whole extension is going to be obsoleted soon:
-+ ;; https://github.com/microsoft/language-server-protocol/issues/724#issuecomment-1850413029
-+
- ;; This is quite rust-analyzer specific. It assumes there is at
- ;; most one meaningful SnippetTextEdit and that can be identified by
- ;; searching for "$0".
diff --git a/gnu/packages/patches/emacs-elpy-dup-test-name.patch b/gnu/packages/patches/emacs-elpy-dup-test-name.patch
deleted file mode 100644
index 02f3f45cec..0000000000
--- a/gnu/packages/patches/emacs-elpy-dup-test-name.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-Forwarded upstream: https://github.com/jorgenschaefer/elpy/pull/2031
-
-diff --git a/test/elpy-config--insert-help-test.el b/test/elpy-config--insert-help-test.el
-index bb293ff..2584fd4 100644
---- a/test/elpy-config--insert-help-test.el
-+++ b/test/elpy-config--insert-help-test.el
-@@ -2,6 +2,6 @@
- ;; with output. We will test its constituent functions later, and just
- ;; make sure it doesn't throw an error here.
-
--(ert-deftest elpy-config-should-not-fail ()
-+(ert-deftest elpy-config-should-not-fail-insert-help ()
- (elpy-testcase ()
- (elpy-config--insert-help)))
-diff --git a/test/elpy-library-root-test.el b/test/elpy-library-root-test.el
-index fdc88b2..2f7484c 100644
---- a/test/elpy-library-root-test.el
-+++ b/test/elpy-library-root-test.el
-@@ -4,7 +4,7 @@
- (should (f-equal? (elpy-library-root)
- project-root))))
-
--(ert-deftest elpy-library-root-should-find-current-directory ()
-+(ert-deftest elpy-library-root-should-find-current-directory-2 ()
- (elpy-testcase ((:project project-root
- "p1/p2/test.py"
- "p1/p2/__init__.py"
-diff --git a/test/elpy-open-and-indent-line-above-test.el b/test/elpy-open-and-indent-line-above-test.el
-index d846712..790dd26 100644
---- a/test/elpy-open-and-indent-line-above-test.el
-+++ b/test/elpy-open-and-indent-line-above-test.el
-@@ -1,4 +1,4 @@
--(ert-deftest elpy-open-and-indent-line-below ()
-+(ert-deftest elpy-open-and-indent-line-above ()
- (elpy-testcase ()
- (elpy-enable)
- (python-mode)
-diff --git a/test/elpy-rpc-get-usages-test.el b/test/elpy-rpc-get-usages-test.el
-index 85f0ad4..be5d7c5 100644
---- a/test/elpy-rpc-get-usages-test.el
-+++ b/test/elpy-rpc-get-usages-test.el
-@@ -1,4 +1,4 @@
--(ert-deftest elpy-rpc-get-completions ()
-+(ert-deftest elpy-rpc-get-completions-usages ()
- (elpy-testcase ()
- (mletf* ((called-args nil)
- (elpy-rpc (&rest args) (setq called-args args)))
-diff --git a/test/elpy-rpc-test.el b/test/elpy-rpc-test.el
-index 8b5bdca..3ff6965 100644
---- a/test/elpy-rpc-test.el
-+++ b/test/elpy-rpc-test.el
-@@ -17,7 +17,7 @@
- (should (equal error 'elpy-rpc--default-error-callback))))
- (elpy-rpc "test-method" nil 'success))))
-
--(ert-deftest elpy-rpc-should-use-default-without-error-callback ()
-+(ert-deftest elpy-rpc-should-use-default-without-error-callback-2 ()
- (elpy-testcase ()
- (mletf* ((elpy-rpc--call-blocking
- (method params)
diff --git a/gnu/packages/patches/emacs-zoom-image-test-fix.patch b/gnu/packages/patches/emacs-zoom-image-test-fix.patch
new file mode 100644
index 0000000000..b47cc4f800
--- /dev/null
+++ b/gnu/packages/patches/emacs-zoom-image-test-fix.patch
@@ -0,0 +1,25 @@
+From 462a541db904405ede8446c48ba0c71ad41c544d Mon Sep 17 00:00:00 2001
+From: Eli Zaretskii <eliz@gnu.org>
+Date: Thu, 17 Jul 2025 19:34:50 +0300
+Subject: [PATCH] ; * test/lisp/net/shr-tests.el (shr-test/zoom-image): Fix
+ <img> (bug#79041).
+
+---
+ test/lisp/net/shr-tests.el | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/test/lisp/net/shr-tests.el b/test/lisp/net/shr-tests.el
+index 363cd144e8f3..a931d07a1631 100644
+--- a/test/lisp/net/shr-tests.el
++++ b/test/lisp/net/shr-tests.el
+@@ -145,8 +145,8 @@ settings, then once more for each (OPTION . VALUE) pair.")
+ (dolist (alt '(nil "" "nothing to see here"))
+ (with-temp-buffer
+ (ert-info ((format "image with alt=%S" alt))
+- (let ((attrs (if alt (format " alt=\"%s\"" alt) "")))
+- (insert (format "<img src=\"%s\" %s" image-url attrs)))
++ (let ((attrs (if alt (format " alt=\"%s\">" alt) ">")))
++ (insert (format "<img src=\"%s\"%s" image-url attrs)))
+ (cl-letf* (;; Pretend we're a graphical display.
+ ((symbol-function 'display-graphic-p) #'always)
+ ((symbol-function 'url-queue-retrieve)
diff --git a/gnu/packages/patches/erlang-binpp-disable-failing-tests.patch b/gnu/packages/patches/erlang-binpp-disable-failing-tests.patch
new file mode 100644
index 0000000000..ba567b3e0a
--- /dev/null
+++ b/gnu/packages/patches/erlang-binpp-disable-failing-tests.patch
@@ -0,0 +1,73 @@
+From 4ee37e2617e3de954113d64046fce7566dd39910 Mon Sep 17 00:00:00 2001
+From: Giacomo Leidi <goodoldpaul@autistici.org>
+Date: Tue, 17 Sep 2024 03:11:47 +0200
+Subject: [PATCH] These tests fail on current Guix.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+ binpp: -print_bucket_test_/0-fun-4- (Print 00FF)...*failed*
+in function binpp:'-print_bucket_test_/0-fun-4-'/3 (/tmp/guix-build-erlang-binpp-1.1.1.drv-0/src/binpp.erl, line 290)
+in call from eunit_test:run_testfun/1 (eunit_test.erl, line 72)
+in call from eunit_proc:run_test/1 (eunit_proc.erl, line 544)
+in call from eunit_proc:with_timeout/3 (eunit_proc.erl, line 369)
+in call from eunit_proc:handle_test/2 (eunit_proc.erl, line 527)
+in call from eunit_proc:tests_inorder/3 (eunit_proc.erl, line 469)
+in call from eunit_proc:with_timeout/3 (eunit_proc.erl, line 359)
+in call from eunit_proc:run_group/2 (eunit_proc.erl, line 583)
+**error:{assertEqual,[{module,binpp},
+ {line,290},
+ {expression,"F ( I )"},
+ {expected,["00 FF ",
+ 32,".ÿ","\n"]},
+ {value,["00 FF ",32,
+ ".ÿ",10]}]}
+ output:<<"">>
+
+ binpp: -print_bucket_test_/0-fun-4- (Print 41414141414141414141414141414141)...*failed*
+in function binpp:'-print_bucket_test_/0-fun-4-'/3 (/tmp/guix-build-erlang-binpp-1.1.1.drv-0/src/binpp.erl, line 290)
+in call from eunit_test:run_testfun/1 (eunit_test.erl, line 72)
+in call from eunit_proc:run_test/1 (eunit_proc.erl, line 544)
+in call from eunit_proc:with_timeout/3 (eunit_proc.erl, line 369)
+in call from eunit_proc:handle_test/2 (eunit_proc.erl, line 527)
+in call from eunit_proc:tests_inorder/3 (eunit_proc.erl, line 469)
+in call from eunit_proc:with_timeout/3 (eunit_proc.erl, line 359)
+in call from eunit_proc:run_group/2 (eunit_proc.erl, line 583)
+**error:{assertEqual,[{module,binpp},
+ {line,290},
+ {expression,"F ( I )"},
+ {expected,["41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 ",
+ 32,"AAAAAAAAAAAAAAAA","\n"]},
+ {value,["41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 ",32,
+ "AAAAAAAAAAAAAAAA",10]}]}
+ output:<<"">>
+---
+ src/binpp.erl | 12 ------------
+ 1 file changed, 12 deletions(-)
+
+diff --git a/src/binpp.erl b/src/binpp.erl
+index ec5f8cf..4ec98e4 100644
+--- a/src/binpp.erl
++++ b/src/binpp.erl
+@@ -278,18 +278,6 @@ diff_test_() ->
+ [ { <<"Diff">>, fun() -> ?assertEqual({ok, R}, F(I1, I2)) end }
+ || { {I1, I2}, R } <- Tests ].
+
+-print_bucket_test_() ->
+- F = fun print_bucket/1,
+- Tests = [
+- { ["00", "FF"],
+- ["00 FF ", ?SPACE, [?SPECIAL, 255], "\n"] },
+-
+- { ["41" || _ <- lists:seq(1, 16) ],
+- ["41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 ", ?SPACE, [$A || _ <- lists:seq(1, 16)], "\n"] }
+- ],
+- [ { iolist_to_binary(["Print ", I]), fun() -> ?assertEqual(R, F(I)) end }
+- || { I, R } <- Tests ].
+-
+ print_buckets_test_() ->
+ F = fun print_buckets/1,
+ Tests = [
+--
+2.46.0
+
diff --git a/gnu/packages/patches/erlang-mochiweb-disable-known-to-fail-tests.patch b/gnu/packages/patches/erlang-mochiweb-disable-known-to-fail-tests.patch
new file mode 100644
index 0000000000..b4b1073df0
--- /dev/null
+++ b/gnu/packages/patches/erlang-mochiweb-disable-known-to-fail-tests.patch
@@ -0,0 +1,25 @@
+From 7fc5dfe2d1ab999f280edaad10426fdc51801287 Mon Sep 17 00:00:00 2001
+From: Giacomo Leidi <goodoldpaul@autistici.org>
+Date: Fri, 12 Sep 2025 19:14:49 +0200
+Subject: [PATCH] Disable known to fail bugs.
+
+---
+ test/mochiweb_http_tests.erl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/mochiweb_http_tests.erl b/test/mochiweb_http_tests.erl
+index 8b8ba64..0fbb7fb 100644
+--- a/test/mochiweb_http_tests.erl
++++ b/test/mochiweb_http_tests.erl
+@@ -3,7 +3,7 @@
+ -include_lib("eunit/include/eunit.hrl").
+ -include("mochiweb_test_util.hrl").
+
+-has_acceptor_bug_test_() ->
++has_acceptor_bug_() ->
+ {setup, fun start_server/0, fun mochiweb_http:stop/1,
+ fun has_acceptor_bug_tests/1}.
+
+--
+2.51.0
+
diff --git a/gnu/packages/patches/esound-c99.patch b/gnu/packages/patches/esound-c99.patch
new file mode 100644
index 0000000000..8167b1e5c3
--- /dev/null
+++ b/gnu/packages/patches/esound-c99.patch
@@ -0,0 +1,19 @@
+Retrieved from: https://src.fedoraproject.org/rpms/esound/raw/rawhide/f/esound-c99.patch
+
+Declare clean_exit to avoid an implicit function declaration and
+future build breakage. This style of declarations outside of header
+files is already used for other functions.
+
+diff --git a/clients.c b/clients.c
+index 1f7e4aa644bdc32c..14416e620dcccbbf 100644
+--- a/clients.c
++++ b/clients.c
+@@ -33,7 +33,7 @@ static int write_wait = 0;
+ /* prototypes */
+ void dump_clients(void);
+ void free_client( esd_client_t *client );
+-
++void clean_exit(int signum);
+
+ /*******************************************************************/
+ /* for debugging purposes, dump the list of the clients and data */
diff --git a/gnu/packages/patches/fail2ban-fix-sshd-filter.patch b/gnu/packages/patches/fail2ban-fix-sshd-filter.patch
new file mode 100644
index 0000000000..14ea5db076
--- /dev/null
+++ b/gnu/packages/patches/fail2ban-fix-sshd-filter.patch
@@ -0,0 +1,96 @@
+Retrieved from https://patch-diff.githubusercontent.com/raw/fail2ban/fail2ban/pull/3782.patch
+With ChangeLog hunk removed since it would not apply cleanly.
+
+From 2fed408c05ac5206b490368d94599869bd6a056d Mon Sep 17 00:00:00 2001
+From: Fabian Dellwing <fabian.dellwing@mbconnectline.de>
+Date: Tue, 2 Jul 2024 07:54:15 +0200
+Subject: [PATCH 1/5] Adjust sshd filter for OpenSSH 9.8 new daemon name
+
+---
+ config/filter.d/sshd.conf | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/config/filter.d/sshd.conf b/config/filter.d/sshd.conf
+index 1c8a02deb5..a1fd749aed 100644
+--- a/config/filter.d/sshd.conf
++++ b/config/filter.d/sshd.conf
+@@ -16,7 +16,7 @@ before = common.conf
+
+ [DEFAULT]
+
+-_daemon = sshd
++_daemon = (?:sshd(?:-session)?)
+
+ # optional prefix (logged from several ssh versions) like "error: ", "error: PAM: " or "fatal: "
+ __pref = (?:(?:error|fatal): (?:PAM: )?)?
+
+From 7b335f47ea112e2a36e59287582e613aef2fa0a3 Mon Sep 17 00:00:00 2001
+From: "Sergey G. Brester" <serg.brester@sebres.de>
+Date: Wed, 3 Jul 2024 19:09:28 +0200
+Subject: [PATCH 2/5] sshd: add test coverage for new format, gh-3782
+
+---
+ fail2ban/tests/files/logs/sshd | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/fail2ban/tests/files/logs/sshd b/fail2ban/tests/files/logs/sshd
+index ed54ded4d4..7d3948ed80 100644
+--- a/fail2ban/tests/files/logs/sshd
++++ b/fail2ban/tests/files/logs/sshd
+@@ -20,6 +20,9 @@ Feb 25 14:34:10 belka sshd[31603]: Failed password for invalid user ROOT from aa
+ # failJSON: { "time": "2005-02-25T14:34:11", "match": true , "host": "aaaa:bbbb:cccc:1234::1:1" }
+ Feb 25 14:34:11 belka sshd[31603]: Failed password for invalid user ROOT from aaaa:bbbb:cccc:1234::1:1
+
++# failJSON: { "time": "2005-07-03T14:59:17", "match": true , "host": "192.0.2.1", "desc": "new log with session in daemon prefix, gh-3782" }
++Jul 3 14:59:17 host sshd-session[1571]: Failed password for root from 192.0.2.1 port 56502 ssh2
++
+ #3
+ # failJSON: { "time": "2005-01-05T01:31:41", "match": true , "host": "1.2.3.4" }
+ Jan 5 01:31:41 www sshd[1643]: ROOT LOGIN REFUSED FROM 1.2.3.4
+
+From 8360776ce1b119d519a842069c73bec7f5e24fad Mon Sep 17 00:00:00 2001
+From: "Sergey G. Brester" <serg.brester@sebres.de>
+Date: Wed, 3 Jul 2024 19:33:39 +0200
+Subject: [PATCH 3/5] zzz-sshd-obsolete-multiline.conf: adjusted to new
+ sshd-session log format
+
+---
+ fail2ban/tests/config/filter.d/zzz-sshd-obsolete-multiline.conf | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/fail2ban/tests/config/filter.d/zzz-sshd-obsolete-multiline.conf b/fail2ban/tests/config/filter.d/zzz-sshd-obsolete-multiline.conf
+index ad8adeb69f..14256ba68c 100644
+--- a/fail2ban/tests/config/filter.d/zzz-sshd-obsolete-multiline.conf
++++ b/fail2ban/tests/config/filter.d/zzz-sshd-obsolete-multiline.conf
+@@ -9,7 +9,7 @@ before = ../../../../config/filter.d/common.conf
+
+ [DEFAULT]
+
+-_daemon = sshd
++_daemon = sshd(?:-session)?
+
+ # optional prefix (logged from several ssh versions) like "error: ", "error: PAM: " or "fatal: "
+ __pref = (?:(?:error|fatal): (?:PAM: )?)?
+
+From 50ff131a0fd8f54fdeb14b48353f842ee8ae8c1a Mon Sep 17 00:00:00 2001
+From: "Sergey G. Brester" <serg.brester@sebres.de>
+Date: Wed, 3 Jul 2024 19:35:28 +0200
+Subject: [PATCH 4/5] filter.d/sshd.conf: ungroup (unneeded for _daemon)
+
+---
+ config/filter.d/sshd.conf | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/config/filter.d/sshd.conf b/config/filter.d/sshd.conf
+index a1fd749aed..3a84b1ba52 100644
+--- a/config/filter.d/sshd.conf
++++ b/config/filter.d/sshd.conf
+@@ -16,7 +16,7 @@ before = common.conf
+
+ [DEFAULT]
+
+-_daemon = (?:sshd(?:-session)?)
++_daemon = sshd(?:-session)?
+
+ # optional prefix (logged from several ssh versions) like "error: ", "error: PAM: " or "fatal: "
+ __pref = (?:(?:error|fatal): (?:PAM: )?)?
diff --git a/gnu/packages/patches/fbgemm-use-system-libraries.patch b/gnu/packages/patches/fbgemm-use-system-libraries.patch
index a799443f1d..37d690f156 100644
--- a/gnu/packages/patches/fbgemm-use-system-libraries.patch
+++ b/gnu/packages/patches/fbgemm-use-system-libraries.patch
@@ -1,19 +1,19 @@
Use the asmjit and cpuinfo packages.
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 0243f686..f40dc408 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -247,7 +247,7 @@ message(WARNING "CMAKE_CXX_FLAGS_DEBUG is ${CMAKE_CXX_FLAGS_DEBUG}")
- message(WARNING "CMAKE_CXX_FLAGS_RELEASE is ${CMAKE_CXX_FLAGS_RELEASE}")
- message(WARNING "==========")
+diff --git i/CMakeLists.txt w/CMakeLists.txt
+index 73b043ac..703204dd 100644
+--- i/CMakeLists.txt
++++ w/CMakeLists.txt
+@@ -258,7 +258,7 @@ message(STATUS "CMAKE_CXX_FLAGS_DEBUG is ${CMAKE_CXX_FLAGS_DEBUG}")
+ message(STATUS "CMAKE_CXX_FLAGS_RELEASE is ${CMAKE_CXX_FLAGS_RELEASE}")
+ message(STATUS "==========")
-if(NOT TARGET asmjit)
+if(FALSE)
# Download asmjit from github if ASMJIT_SRC_DIR is not specified.
if(NOT DEFINED ASMJIT_SRC_DIR)
set(ASMJIT_SRC_DIR "${FBGEMM_SOURCE_DIR}/external/asmjit"
-@@ -280,7 +280,7 @@ if(NOT TARGET asmjit)
+@@ -291,7 +291,7 @@ if(NOT TARGET asmjit)
endif()
endif()
@@ -22,7 +22,7 @@ index 0243f686..f40dc408 100644
#Download cpuinfo from github if CPUINFO_SOURCE_DIR is not specified.
if(NOT DEFINED CPUINFO_SOURCE_DIR)
set(CPUINFO_SOURCE_DIR "${FBGEMM_SOURCE_DIR}/external/cpuinfo"
-@@ -367,9 +367,12 @@ target_include_directories(fbgemm BEFORE
+@@ -378,9 +378,12 @@ target_include_directories(fbgemm BEFORE
target_link_libraries(fbgemm
$<BUILD_INTERFACE:asmjit>
$<BUILD_INTERFACE:cpuinfo>)
@@ -38,10 +38,10 @@ index 0243f686..f40dc408 100644
if(OpenMP_FOUND)
target_link_libraries(fbgemm OpenMP::OpenMP_CXX)
-diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
-index da0be7fe..615f34ae 100644
---- a/test/CMakeLists.txt
-+++ b/test/CMakeLists.txt
+diff --git i/test/CMakeLists.txt w/test/CMakeLists.txt
+index 1ddb2882..6e81c902 100644
+--- i/test/CMakeLists.txt
++++ w/test/CMakeLists.txt
@@ -14,7 +14,7 @@ set(CMAKE_C_STANDARD 17)
set(CMAKE_C_EXTENSIONS OFF)
set(CMAKE_C_STANDARD_REQUIRED ON)
diff --git a/gnu/packages/patches/ffmpeg-jami-pipewiregrab-source-filter.patch b/gnu/packages/patches/ffmpeg-jami-pipewiregrab-source-filter.patch
index 53b6ad7da2..b8da1e428a 100644
--- a/gnu/packages/patches/ffmpeg-jami-pipewiregrab-source-filter.patch
+++ b/gnu/packages/patches/ffmpeg-jami-pipewiregrab-source-filter.patch
@@ -72,10 +72,10 @@ index d7db46c2af..87204fec71 100644
extern const AVFilter ff_vsrc_smptebars;
diff --git a/libavfilter/vsrc_pipewiregrab.c b/libavfilter/vsrc_pipewiregrab.c
new file mode 100644
-index 0000000000..ff9c3468ab
+index 0000000000..44d64b1eac
--- /dev/null
+++ b/libavfilter/vsrc_pipewiregrab.c
-@@ -0,0 +1,1375 @@
+@@ -0,0 +1,1376 @@
+/*
+ * PipeWire input grabber (ScreenCast)
+ * Copyright (C) 2024 Savoir-faire Linux, Inc.
@@ -117,8 +117,6 @@ index 0000000000..ff9c3468ab
+#include <sys/mman.h>
+#include <sys/queue.h>
+
-+#include "libavfilter/formats.h"
-+#include "libavfilter/video.h"
+#include "libavutil/internal.h"
+#include "libavutil/mathematics.h"
+#include "libavutil/opt.h"
@@ -129,7 +127,9 @@ index 0000000000..ff9c3468ab
+#include "libavformat/internal.h"
+#include "libavutil/avassert.h"
+#include "avfilter.h"
++#include "formats.h"
+#include "internal.h"
++#include "video.h"
+
+#include <pipewire/pipewire.h>
+#include <pipewire/thread-loop.h>
@@ -671,6 +671,7 @@ index 0000000000..ff9c3468ab
+ memcpy(pw_ctx->current_frame->data[0], sdata, spa_buf->datas[0].chunk->size);
+ pw_ctx->current_frame->width = frame_width;
+ pw_ctx->current_frame->height = frame_height;
++ pw_ctx->current_frame->linesize[0] = spa_buf->datas[0].chunk->stride;
+ pthread_mutex_unlock(&pw_ctx->current_frame_mutex);
+
+ // Cleanup
diff --git a/gnu/packages/patches/gimp-fix-metadata-editor.patch b/gnu/packages/patches/gimp-fix-metadata-editor.patch
new file mode 100644
index 0000000000..848227ff4b
--- /dev/null
+++ b/gnu/packages/patches/gimp-fix-metadata-editor.patch
@@ -0,0 +1,25 @@
+From 51311f913d9f417d121f59b83d560c7b4b853d1c Mon Sep 17 00:00:00 2001
+From: Simon Budig <simon@budig.de>
+Date: Sat, 20 May 2023 22:25:40 +0200
+Subject: [PATCH] metadata: shut up a weird warning
+
+---
+ plug-ins/metadata/metadata-editor.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/plug-ins/metadata/metadata-editor.c b/plug-ins/metadata/metadata-editor.c
+index a3992e40ddc..5bf6ef709f1 100644
+--- a/plug-ins/metadata/metadata-editor.c
++++ b/plug-ins/metadata/metadata-editor.c
+@@ -2846,7 +2846,7 @@ metadata_dialog_editor_set_metadata (GExiv2Metadata *metadata,
+ }
+ else
+ {
+- if (! g_strv_contains (values, equiv_values[evi]))
++ if (! g_strv_contains ((const gchar * const *) values, equiv_values[evi]))
+ {
+ gchar *tmpvalue;
+
+--
+GitLab
+
diff --git a/gnu/packages/patches/gimp-fix-tiff-load.patch b/gnu/packages/patches/gimp-fix-tiff-load.patch
new file mode 100644
index 0000000000..ba12d0892f
--- /dev/null
+++ b/gnu/packages/patches/gimp-fix-tiff-load.patch
@@ -0,0 +1,25 @@
+From a2458f1528e5733574bb26ff5452b1329116e6db Mon Sep 17 00:00:00 2001
+From: Simon Budig <simon@budig.de>
+Date: Sat, 20 May 2023 18:40:41 +0200
+Subject: [PATCH] file-tiff-load: fix mismatching variable type
+
+---
+ plug-ins/file-tiff/file-tiff-load.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/plug-ins/file-tiff/file-tiff-load.c b/plug-ins/file-tiff/file-tiff-load.c
+index 0aafbaec5fd..a26e7af2752 100644
+--- a/plug-ins/file-tiff/file-tiff-load.c
++++ b/plug-ins/file-tiff/file-tiff-load.c
+@@ -1297,8 +1297,8 @@ load_image (GFile *file,
+
+ /* any resolution info in the file? */
+ {
+- gfloat xres = 72.0;
+- gfloat yres = 72.0;
++ gdouble xres = 72.0;
++ gdouble yres = 72.0;
+ gushort read_unit;
+ GimpUnit unit = GIMP_UNIT_PIXEL; /* invalid unit */
+
+
diff --git a/gnu/packages/patches/go-github-com-jbenet-go-context-fix-import-error.patch b/gnu/packages/patches/go-github-com-jbenet-go-context-fix-import-error.patch
new file mode 100644
index 0000000000..26a3db2fab
--- /dev/null
+++ b/gnu/packages/patches/go-github-com-jbenet-go-context-fix-import-error.patch
@@ -0,0 +1,137 @@
+Retrieved from
+<https://patch-diff.githubusercontent.com/raw/jbenet/go-context/pull/3.patch>.
+
+From a55d3832cfe7bb061123c7e90ed3c6195d8ce890 Mon Sep 17 00:00:00 2001
+From: Prudhvi Surapaneni <p@supr.io>
+Date: Wed, 13 Mar 2019 16:29:55 -0500
+Subject: [PATCH] No-longer necessary to import context package
+
+---
+ dag/dagctx.go | 3 +--
+ dag/dagctx_test.go | 3 +--
+ frac/fracctx.go | 3 +--
+ frac/fracctx_test.go | 12 +++++++-----
+ io/ctxio.go | 3 +--
+ io/ctxio_test.go | 3 +--
+ 6 files changed, 12 insertions(+), 15 deletions(-)
+
+diff --git a/dag/dagctx.go b/dag/dagctx.go
+index 521390b..17a9090 100644
+--- a/dag/dagctx.go
++++ b/dag/dagctx.go
+@@ -1,10 +1,9 @@
+ package ctxext
+
+ import (
++ "context"
+ "sync"
+ "time"
+-
+- context "golang.org/x/net/context"
+ )
+
+ // WithParents returns a Context that listens to all given
+diff --git a/dag/dagctx_test.go b/dag/dagctx_test.go
+index 30a27e2..8692f54 100644
+--- a/dag/dagctx_test.go
++++ b/dag/dagctx_test.go
+@@ -1,11 +1,10 @@
+ package ctxext
+
+ import (
++ "context"
+ "math/rand"
+ "testing"
+ "time"
+-
+- context "golang.org/x/net/context"
+ )
+
+ func TestWithParentsSingle(t *testing.T) {
+diff --git a/frac/fracctx.go b/frac/fracctx.go
+index 60938c0..d1ee94a 100644
+--- a/frac/fracctx.go
++++ b/frac/fracctx.go
+@@ -2,9 +2,8 @@
+ package ctxext
+
+ import (
++ "context"
+ "time"
+-
+- context "golang.org/x/net/context"
+ )
+
+ // WithDeadlineFraction returns a Context with a fraction of the
+diff --git a/frac/fracctx_test.go b/frac/fracctx_test.go
+index c6dd10d..8de81be 100644
+--- a/frac/fracctx_test.go
++++ b/frac/fracctx_test.go
+@@ -1,11 +1,10 @@
+ package ctxext
+
+ import (
++ "context"
+ "os"
+ "testing"
+ "time"
+-
+- context "golang.org/x/net/context"
+ )
+
+ // this test is on the context tool itself, not our stuff. it's for sanity on ours.
+@@ -14,7 +13,8 @@ func TestDeadline(t *testing.T) {
+ t.Skip("timeouts don't work reliably on travis")
+ }
+
+- ctx, _ := context.WithTimeout(context.Background(), 5*time.Millisecond)
++ ctx, cncl := context.WithTimeout(context.Background(), 5*time.Millisecond)
++ defer cncl()
+
+ select {
+ case <-ctx.Done():
+@@ -46,8 +46,10 @@ func TestDeadlineFractionHalf(t *testing.T) {
+ t.Skip("timeouts don't work reliably on travis")
+ }
+
+- ctx1, _ := context.WithTimeout(context.Background(), 10*time.Millisecond)
+- ctx2, _ := WithDeadlineFraction(ctx1, 0.5)
++ ctx1, cncl1 := context.WithTimeout(context.Background(), 10*time.Millisecond)
++ defer cncl1()
++ ctx2, cncl2 := WithDeadlineFraction(ctx1, 0.5)
++ defer cncl2()
+
+ select {
+ case <-ctx1.Done():
+diff --git a/io/ctxio.go b/io/ctxio.go
+index b4f2454..b27689b 100644
+--- a/io/ctxio.go
++++ b/io/ctxio.go
+@@ -11,9 +11,8 @@
+ package ctxio
+
+ import (
++ "context"
+ "io"
+-
+- context "golang.org/x/net/context"
+ )
+
+ type ioret struct {
+diff --git a/io/ctxio_test.go b/io/ctxio_test.go
+index 884e090..bc4a0e9 100644
+--- a/io/ctxio_test.go
++++ b/io/ctxio_test.go
+@@ -2,11 +2,10 @@ package ctxio
+
+ import (
+ "bytes"
++ "context"
+ "io"
+ "testing"
+ "time"
+-
+- context "golang.org/x/net/context"
+ )
+
+ func TestReader(t *testing.T) {
diff --git a/gnu/packages/patches/godot-libjpeg-turbo-unbundle.patch b/gnu/packages/patches/godot-libjpeg-turbo-unbundle.patch
new file mode 100644
index 0000000000..f324de3d0b
--- /dev/null
+++ b/gnu/packages/patches/godot-libjpeg-turbo-unbundle.patch
@@ -0,0 +1,217 @@
+From 6d8aa8582f5c312cd5aab396f90904df1ddc0567 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= <rverschelde@gmail.com>
+Date: Mon, 15 Sep 2025 23:43:13 +0200
+Subject: [PATCH] Linux: Allow unbundling libjpeg-turbo to use system package
+
+---
+ modules/jpg/SCsub | 182 ++++++++++++++++++------------------
+ platform/linuxbsd/detect.py | 3 +
+ 2 files changed, 93 insertions(+), 92 deletions(-)
+
+diff --git a/modules/jpg/SCsub b/modules/jpg/SCsub
+index e5b1bc19c0b9..a45b5eff33f1 100644
+--- a/modules/jpg/SCsub
++++ b/modules/jpg/SCsub
+@@ -8,98 +8,96 @@ env_jpg = env_modules.Clone()
+
+ thirdparty_obj = []
+
+-thirdparty_dir = "#thirdparty/libjpeg-turbo"
+-
+-thirdparty_sources_common = [
+- "jaricom.c",
+- "jcapimin.c",
+- "jcarith.c",
+- "jchuff.c",
+- "jcicc.c",
+- "jcinit.c",
+- "jcmarker.c",
+- "jcmaster.c",
+- "jcomapi.c",
+- "jcparam.c",
+- "jcphuff.c",
+- "jctrans.c",
+- "jdapimin.c",
+- "jdarith.c",
+- "jdatadst.c",
+- "jdatadst-tj.c",
+- "jdatasrc.c",
+- "jdatasrc-tj.c",
+- "jdhuff.c",
+- "jdicc.c",
+- "jdinput.c",
+- "jdmarker.c",
+- "jdmaster.c",
+- "jdphuff.c",
+- "jdtrans.c",
+- "jerror.c",
+- "jfdctflt.c",
+- "jmemmgr.c",
+- "jmemnobs.c",
+- "jpeg_nbits.c",
+- "transupp.c",
+- "turbojpeg.c",
+-]
+-
+-thirdparty_sources_bit_dependent = [
+- "jcapistd.c",
+- "jccoefct.c",
+- "jccolor.c",
+- "jcdctmgr.c",
+- "jcmainct.c",
+- "jcprepct.c",
+- "jcsample.c",
+- "jdcoefct.c",
+- "jdcolor.c",
+- "jdapistd.c",
+- "jddctmgr.c",
+- "jdmainct.c",
+- "jdmerge.c",
+- "jdpostct.c",
+- "jdsample.c",
+- "jfdctfst.c",
+- "jfdctint.c",
+- "jidctflt.c",
+- "jidctfst.c",
+- "jidctint.c",
+- "jidctred.c",
+- "jutils.c",
+- "jquant1.c",
+- "jquant2.c",
+-]
+-
+-thirdparty_sources_by_bits = {
+- 8: list(thirdparty_sources_bit_dependent),
+- 12: list(thirdparty_sources_bit_dependent),
+-}
+-
+-
+-def source_paths(files):
+- return [thirdparty_dir + "/src/" + f for f in files]
+-
+-
+-env_jpg.Prepend(CPPEXTPATH=[thirdparty_dir + "/src"])
+-
+-
+-def add_bit_depth(bit_depth: int):
+- env_bit_depth = env_jpg.Clone()
+- env_bit_depth.disable_warnings()
+- env_bit_depth["OBJSUFFIX"] = f"_{bit_depth}{env_bit_depth['OBJSUFFIX']}"
+- env_bit_depth.Append(CPPDEFINES=[f"BITS_IN_JSAMPLE={bit_depth}"])
+- env_bit_depth.add_source_files(thirdparty_obj, source_paths(thirdparty_sources_by_bits[bit_depth]))
+-
+-
+-add_bit_depth(8)
+-add_bit_depth(12)
+-
+-env_thirdparty = env_jpg.Clone()
+-env_thirdparty.disable_warnings()
+-env_thirdparty.add_source_files(thirdparty_obj, source_paths(thirdparty_sources_common))
+-env.modules_sources += thirdparty_obj
++if env["builtin_libjpeg_turbo"]:
++ thirdparty_dir = "#thirdparty/libjpeg-turbo"
++
++ thirdparty_sources_common = [
++ "jaricom.c",
++ "jcapimin.c",
++ "jcarith.c",
++ "jchuff.c",
++ "jcicc.c",
++ "jcinit.c",
++ "jcmarker.c",
++ "jcmaster.c",
++ "jcomapi.c",
++ "jcparam.c",
++ "jcphuff.c",
++ "jctrans.c",
++ "jdapimin.c",
++ "jdarith.c",
++ "jdatadst.c",
++ "jdatadst-tj.c",
++ "jdatasrc.c",
++ "jdatasrc-tj.c",
++ "jdhuff.c",
++ "jdicc.c",
++ "jdinput.c",
++ "jdmarker.c",
++ "jdmaster.c",
++ "jdphuff.c",
++ "jdtrans.c",
++ "jerror.c",
++ "jfdctflt.c",
++ "jmemmgr.c",
++ "jmemnobs.c",
++ "jpeg_nbits.c",
++ "transupp.c",
++ "turbojpeg.c",
++ ]
++
++ thirdparty_sources_bit_dependent = [
++ "jcapistd.c",
++ "jccoefct.c",
++ "jccolor.c",
++ "jcdctmgr.c",
++ "jcmainct.c",
++ "jcprepct.c",
++ "jcsample.c",
++ "jdcoefct.c",
++ "jdcolor.c",
++ "jdapistd.c",
++ "jddctmgr.c",
++ "jdmainct.c",
++ "jdmerge.c",
++ "jdpostct.c",
++ "jdsample.c",
++ "jfdctfst.c",
++ "jfdctint.c",
++ "jidctflt.c",
++ "jidctfst.c",
++ "jidctint.c",
++ "jidctred.c",
++ "jutils.c",
++ "jquant1.c",
++ "jquant2.c",
++ ]
++
++ thirdparty_sources_by_bits = {
++ 8: list(thirdparty_sources_bit_dependent),
++ 12: list(thirdparty_sources_bit_dependent),
++ }
++
++ def source_paths(files):
++ return [thirdparty_dir + "/src/" + f for f in files]
++
++ env_jpg.Prepend(CPPEXTPATH=[thirdparty_dir + "/src"])
++
++ def add_bit_depth(bit_depth: int):
++ env_bit_depth = env_jpg.Clone()
++ env_bit_depth.disable_warnings()
++ env_bit_depth["OBJSUFFIX"] = f"_{bit_depth}{env_bit_depth['OBJSUFFIX']}"
++ env_bit_depth.Append(CPPDEFINES=[f"BITS_IN_JSAMPLE={bit_depth}"])
++ env_bit_depth.add_source_files(thirdparty_obj, source_paths(thirdparty_sources_by_bits[bit_depth]))
++
++ add_bit_depth(8)
++ add_bit_depth(12)
++
++ env_thirdparty = env_jpg.Clone()
++ env_thirdparty.disable_warnings()
++ env_thirdparty.add_source_files(thirdparty_obj, source_paths(thirdparty_sources_common))
++ env.modules_sources += thirdparty_obj
++
+
+ # Godot source files
+
+diff --git a/platform/linuxbsd/detect.py b/platform/linuxbsd/detect.py
+index df4dbddedd36..fbb3cdf1f13c 100644
+--- a/platform/linuxbsd/detect.py
++++ b/platform/linuxbsd/detect.py
+@@ -278,6 +278,9 @@ def configure(env: "SConsEnvironment"):
+ if not env["builtin_libwebp"]:
+ env.ParseConfig("pkg-config libwebp --cflags --libs")
+
++ if not env["builtin_libjpeg_turbo"]:
++ env.ParseConfig("pkg-config libturbojpeg --cflags --libs")
++
+ if not env["builtin_mbedtls"]:
+ # mbedTLS only provides a pkgconfig file since 3.6.0, but we still support 2.28.x,
+ # so fallback to manually specifying LIBS if it fails.
diff --git a/gnu/packages/patches/gtk-doc-mkhtml-test-fix.patch b/gnu/packages/patches/gtk-doc-mkhtml-test-fix.patch
new file mode 100644
index 0000000000..b6adbbba8e
--- /dev/null
+++ b/gnu/packages/patches/gtk-doc-mkhtml-test-fix.patch
@@ -0,0 +1,33 @@
+From 951743698610eaaa0cc9030f7d7d02437419ac24 Mon Sep 17 00:00:00 2001
+From: Neil Hanlon <neil@shrug.pw>
+Date: Fri, 9 Feb 2024 15:32:38 -0500
+Subject: [PATCH] Add gobject example source code to path for mkhtml test
+
+Fixes #150
+
+I'm not really sure why this is required, but I suspect it has to do
+with changes in how GCC handles path traversal due to recent (ish)
+security issues, as the code here is evaluated to
+`../xml/../../examples/gobject.c` which probably looks unhealthy to
+automatically include.
+
+Signed-off-by: Neil Hanlon <neil@shrug.pw>
+---
+ tests/gobject/docs/meson.build | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tests/gobject/docs/meson.build b/tests/gobject/docs/meson.build
+index a1dd66ca..236a1cc0 100644
+--- a/tests/gobject/docs/meson.build
++++ b/tests/gobject/docs/meson.build
+@@ -119,6 +119,7 @@ test(
+ '--path=@0@'.format(':'.join([
+ gobject_test_docs_dir,
+ srcdir,
++ join_paths(srcdir, 'tests/gobject/examples'),
+ ])
+ ),
+ ],
+--
+GitLab
+
diff --git a/gnu/packages/patches/guile-gi-fix-marshall-tests.patch b/gnu/packages/patches/guile-gi-fix-marshall-tests.patch
new file mode 100644
index 0000000000..dc2bd2607b
--- /dev/null
+++ b/gnu/packages/patches/guile-gi-fix-marshall-tests.patch
@@ -0,0 +1,27 @@
+From 776c456dc767a261e026865ab5c3a76fe68ff4a2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?No=C3=A9=20Lopez?= <noelopez@free.fr>
+Date: Tue, 12 Aug 2025 12:30:31 +0200
+Subject: [PATCH] Fix marshall tests
+
+See <https://github.com/spk121/guile-gi/pull/142>.
+
+---
+ test/marshall.scm | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/marshall.scm b/test/marshall.scm
+index e15b3ee..fd826de 100644
+--- a/test/marshall.scm
++++ b/test/marshall.scm
+@@ -23,7 +23,7 @@
+ (("Marshall" "1.0")
+ #:renamer (protect* '(sizeof short int long size_t)))
+ (("GLib" "2.0")
+- #:renamer (protect* '(test-equal test-assert test-skip))))
++ #:renamer (protect* '(test-equal test-assert test-skip int))))
+
+ (define-syntax-rule (boolarray-input f)
+ (test-assert (symbol->string (quote f))
+--
+2.50.1
+
diff --git a/gnu/packages/patches/hare-fallback-cache.patch b/gnu/packages/patches/hare-fallback-cache.patch
new file mode 100644
index 0000000000..b6a99d7d9a
--- /dev/null
+++ b/gnu/packages/patches/hare-fallback-cache.patch
@@ -0,0 +1,33 @@
+From 04fb25e334492432c0c1a09e1abb4c506fb1e710 Mon Sep 17 00:00:00 2001
+Message-ID: <04fb25e334492432c0c1a09e1abb4c506fb1e710.1754429792.git.lilah@lunabee.space>
+From: Lilah Tascheter <lilah@lunabee.space>
+Date: Tue, 5 Aug 2025 16:35:24 -0500
+Subject: [PATCH] dirs::xdg: Fallback to cwd.
+
+Guix builds take place without a valid HOME, which will immediately prevent hare
+from functioning. Provide a usable, if unfortunate, default.
+---
+ dirs/xdg.ha | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/dirs/xdg.ha b/dirs/xdg.ha
+index 9dc6c3b9..65eb92db 100644
+--- a/dirs/xdg.ha
++++ b/dirs/xdg.ha
+@@ -29,7 +29,12 @@ fn lookup(prog: str, var: str, default: str) str = {
+ case void => void;
+ };
+
+- const home = os::getenv("HOME") as str;
++ let home = os::getenv("HOME") as str;
++ if(match(os::stat(home)) {
++ case let err: fs::error => yield true;
++ case let st: fs::filestat => yield !fs::isdir(st.mode);
++ }){ home = "."; };
++
+ const path = path::set(&buf, home, default, prog)!;
+ match (os::mkdirs(path, 0o755)) {
+ case let err: fs::error =>
+--
+2.50.0
+
diff --git a/gnu/packages/patches/hare-toolpath.patch b/gnu/packages/patches/hare-toolpath.patch
new file mode 100644
index 0000000000..872ae0ef55
--- /dev/null
+++ b/gnu/packages/patches/hare-toolpath.patch
@@ -0,0 +1,72 @@
+From 98677305eba7acd487803b6670a1bd67e1fc2796 Mon Sep 17 00:00:00 2001
+Message-ID: <98677305eba7acd487803b6670a1bd67e1fc2796.1754431105.git.lilah@lunabee.space>
+From: Lilah Tascheter <lilah@lunabee.space>
+Date: Tue, 5 Aug 2025 16:42:50 -0500
+Subject: [PATCH] cmd::hare::tool: Use HARE_TOOLPATH when available.
+
+Some distros, like Guix, do not have set search paths, and instead rely on
+environment variables. Allow tools to be specified through a new variable,
+HARE_TOOLPATH.
+---
+ cmd/hare/tool.ha | 35 +++++++++++++++++++++--------------
+ 1 file changed, 21 insertions(+), 14 deletions(-)
+
+diff --git a/cmd/hare/tool.ha b/cmd/hare/tool.ha
+index b14250fc..b7e4e2ff 100644
+--- a/cmd/hare/tool.ha
++++ b/cmd/hare/tool.ha
+@@ -7,6 +7,7 @@ use getopt;
+ use os;
+ use os::exec;
+ use path;
++use strings;
+
+ fn tool(name: str, cmd: *getopt::command) (void | error) = {
+ if (len(cmd.args) < 1) {
+@@ -19,23 +20,29 @@ fn tool(name: str, cmd: *getopt::command) (void | error) = {
+ args = cmd.args[1..];
+ };
+
+- const path = path::init(TOOLDIR)?;
++ const paths = strings::tokenize(os::tryenv("HARE_TOOLPATH", TOOLDIR), ":");
+ const tool = cmd.args[0];
+ const name = fmt::asprintf("hare-{}", tool)!;
+ defer free(name);
+- path::push(&path, name)?;
+-
+- const cmd = match (exec::cmd(path::string(&path), args...)) {
+- case let cmd: exec::command =>
+- yield cmd;
+- case errors::noentry =>
+- fmt::fatalf("hare tool {}: tool not found", tool);
+- case let err: exec::error =>
+- return err;
++
++ for(const segment => strings::next_token(&paths)) {
++ const path = path::init(segment)?;
++ path::push(&path, name)?;
++
++ const cmd = match (exec::cmd(path::string(&path), args...)) {
++ case let cmd: exec::command =>
++ yield cmd;
++ case errors::noentry =>
++ continue;
++ case let err: exec::error =>
++ return err;
++ };
++
++ const argv0 = fmt::asprintf("hare tool {}", tool)!;
++ exec::setname(&cmd, argv0)!;
++ const err = exec::exec(&cmd);
++ fmt::fatalf("exec {}: {}", path::string(&path), exec::strerror(err));
+ };
+
+- const argv0 = fmt::asprintf("hare tool {}", tool)!;
+- exec::setname(&cmd, argv0)!;
+- const err = exec::exec(&cmd);
+- fmt::fatalf("exec {}: {}", path::string(&path), exec::strerror(err));
++ fmt::fatalf("hare tool {}: tool not found", tool);
+ };
+--
+2.50.0
+
diff --git a/gnu/packages/patches/icecat-compare-paths.patch b/gnu/packages/patches/icecat-compare-paths.patch
index 87a49d58fa..6c3f503f35 100644
--- a/gnu/packages/patches/icecat-compare-paths.patch
+++ b/gnu/packages/patches/icecat-compare-paths.patch
@@ -2,20 +2,11 @@ See comment in gnu/build/icecat-extension.scm.
--- a/toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs
+++ b/toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs
-@@ -3613,6 +3613,7 @@ const XPIDatabaseReconcile = {
+@@ -3753,6 +3753,7 @@
if (
newAddon ||
oldAddon.updateDate != xpiState.mtime ||
+ oldAddon.path != xpiState.path ||
- (aUpdateCompatibility && this.isAppBundledLocation(installLocation))
- ) {
- newAddon = this.updateMetadata(
-@@ -3621,8 +3622,6 @@ const XPIDatabaseReconcile = {
- xpiState,
- newAddon
- );
-- } else if (oldAddon.path != xpiState.path) {
-- newAddon = this.updatePath(installLocation, oldAddon, xpiState);
- } else if (aUpdateCompatibility || aSchemaChange) {
- newAddon = this.updateCompatibility(
- installLocation,
+ (aUpdateCompatibility && this.isAppBundledLocation(installLocation)) ||
+ // update addon metadata if the addon in bundled into
+ // the omni jar and version or the resource URI pointing
diff --git a/gnu/packages/patches/icecat-fhs-configure-option.patch b/gnu/packages/patches/icecat-fhs-configure-option.patch
new file mode 100644
index 0000000000..6c1e4b8b83
--- /dev/null
+++ b/gnu/packages/patches/icecat-fhs-configure-option.patch
@@ -0,0 +1,38 @@
+Upstream-status: https://phabricator.services.mozilla.com/D263231
+
+diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
+index 6162d68699dd..193272588caa 100644
+--- a/build/moz.configure/init.configure
++++ b/build/moz.configure/init.configure
+@@ -1351,3 +1351,17 @@ option(
+ help="Object code libraries in DIR",
+ )
+ set_config("libdir", depends("--libdir")(lambda ldir: ldir[0]))
++
++# Support for using platform-specific standard (FHS-like) locations.
++option(
++ "--enable-fhs",
++ default=True,
++ help="Enable the search of standard platform-specific (FHS-like) locations",
++)
++
++@depends("--enable-fhs")
++def use_fhs(value):
++ return bool(value)
++
++set_config("USE_FHS", use_fhs)
++set_define("USE_FHS", use_fhs)
+diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
+index 547cc4c255c4..79133c879be4 100644
+--- a/toolkit/xre/nsXREDirProvider.cpp
++++ b/toolkit/xre/nsXREDirProvider.cpp
+@@ -295,6 +295,9 @@ static nsresult GetSystemParentDirectory(nsIFile** aFile) {
+ localDir.forget(aFile);
+ return rv;
+ }
++# ifndef USE_FHS
++ return rv;
++# endif
+
+ // ... falling back to the conventional fixed location otherwise.
+ # if defined(XP_MACOSX)
diff --git a/gnu/packages/patches/icecat-use-system-wide-dir.patch b/gnu/packages/patches/icecat-use-system-wide-dir.patch
index 223467a9c1..c7454a72b9 100644
--- a/gnu/packages/patches/icecat-use-system-wide-dir.patch
+++ b/gnu/packages/patches/icecat-use-system-wide-dir.patch
@@ -1,36 +1,36 @@
-Replace "/usr/lib/mozilla" (the system-wide directory for extensions and
-native manifests) with "$ICECAT_SYSTEM_DIR".
+Upstream-status: https://bugzilla.mozilla.org/show_bug.cgi?id=1986219
+diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
+index 9c94cb8808aa..dfee051b302f 100644
--- a/toolkit/xre/nsXREDirProvider.cpp
+++ b/toolkit/xre/nsXREDirProvider.cpp
-@@ -296,24 +296,12 @@ nsresult nsXREDirProvider::GetBackgroundTasksProfilesRootDir(
+@@ -276,11 +276,27 @@ nsresult nsXREDirProvider::GetBackgroundTasksProfilesRootDir(
+ *
+ * On OSX this is /Library/Application Support/Mozilla
+ * On Linux this is /usr/{lib,lib64}/mozilla
+- * (for 32- and 64-bit systems respsectively)
++ * (for 32- and 64-bit systems respectively)
++ *
++ * The MOZILLA_SYSTEM_DIR environment variable can be used to override
++ * the system directory used.
+ */
static nsresult GetSystemParentDirectory(nsIFile** aFile) {
- nsresult rv;
+- nsresult rv;
++ nsresult rv = NS_ERROR_FAILURE;
nsCOMPtr<nsIFile> localDir;
--# if defined(XP_MACOSX)
-- rv = GetOSXFolderType(kOnSystemDisk, kApplicationSupportFolderType,
-- getter_AddRefs(localDir));
-- if (NS_SUCCEEDED(rv)) {
-- rv = localDir->AppendNative("Mozilla"_ns);
-- }
--# else
-- constexpr auto dirname =
--# ifdef HAVE_USR_LIB64_DIR
-- "/usr/lib64/mozilla"_ns
--# elif defined(__OpenBSD__) || defined(__FreeBSD__)
-- "/usr/local/lib/mozilla"_ns
--# else
-- "/usr/lib/mozilla"_ns
--# endif
-- ;
-- rv = NS_NewNativeLocalFile(dirname, false, getter_AddRefs(localDir));
--# endif
+
-+ const char* systemParentDir = getenv("ICECAT_SYSTEM_DIR");
-+ if (!systemParentDir || !*systemParentDir) return NS_ERROR_FAILURE;
++ // Honor a the MOZILLA_SYSTEM_DIR environment variable first...
++ const char* systemParentDir = getenv("MOZILLA_SYSTEM_DIR");
++ if (systemParentDir) {
++ rv = NS_NewNativeLocalFile(nsDependentCString(systemParentDir),
++ getter_AddRefs(localDir));
++ }
++ if (NS_SUCCEEDED(rv)) {
++ localDir.forget(aFile);
++ return rv;
++ }
+
-+ rv = NS_NewNativeLocalFile(nsDependentCString(systemParentDir), false,
-+ getter_AddRefs(localDir));
-
- if (NS_SUCCEEDED(rv)) {
- localDir.forget(aFile);
++ // ... falling back to the conventional fixed location otherwise.
+ # if defined(XP_MACOSX)
+ rv = GetOSXFolderType(kOnSystemDisk, kApplicationSupportFolderType,
+ getter_AddRefs(localDir));
diff --git a/gnu/packages/patches/icedove-observer-fix.patch b/gnu/packages/patches/icedove-observer-fix.patch
new file mode 100644
index 0000000000..99645bf10d
--- /dev/null
+++ b/gnu/packages/patches/icedove-observer-fix.patch
@@ -0,0 +1,35 @@
+
+# HG changeset patch
+# User Magnus Melin <mkmelin+mozilla@iki.fi>
+# Date 1757493192 0
+# Node ID 1cc168c9d0a5c55744d2886aa380f5a7bf712ef4
+# Parent 20980bc07105ebb761347e9c99937e572eedf03a
+Bug 1987834 - Don't remove not added observer of AUTO_UPDATE_CHANGED_TOPIC when MOZ_UPDATER is off. r=john.bieling
+
+Differential Revision: https://phabricator.services.mozilla.com/D264376
+
+diff --git a/mail/components/preferences/general.js b/mail/components/preferences/general.js
+--- a/mail/components/preferences/general.js
++++ b/mail/components/preferences/general.js
+@@ -2175,17 +2175,19 @@ var gGeneralPane = {
+ }
+
+ return /^https?/.test(uri.scheme) ? uri.resolve("/favicon.ico") : "";
+ },
+
+ destroy() {
+ window.removeEventListener("unload", this);
+
+- Services.obs.removeObserver(this, AUTO_UPDATE_CHANGED_TOPIC);
++ if (AppConstants.MOZ_UPDATER) {
++ Services.obs.removeObserver(this, AUTO_UPDATE_CHANGED_TOPIC);
++ }
+ Services.prefs.removeObserver("mailnews.tags.", this);
+ },
+
+ // nsISupports
+
+ QueryInterface: ChromeUtils.generateQI(["nsIObserver"]),
+
+ // nsIObserver
+
diff --git a/gnu/packages/patches/inkscape-libxml2.patch b/gnu/packages/patches/inkscape-libxml2.patch
new file mode 100644
index 0000000000..dc5b0f5346
--- /dev/null
+++ b/gnu/packages/patches/inkscape-libxml2.patch
@@ -0,0 +1,33 @@
+From 694d8ae43d06efff21adebf377ce614d660b24cd Mon Sep 17 00:00:00 2001
+From: Christian Hesse <mail@eworm.de>
+Date: Fri, 17 Nov 2023 22:30:42 +0100
+Subject: [PATCH] include missing header file
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This fixes build error:
+```
+/build/inkscape/src/inkscape/src/object/uri.cpp: In constructor ‘Inkscape::URI::URI(const gchar*, const char*)’:
+/build/inkscape/src/inkscape/src/object/uri.cpp:86:9: error: ‘xmlFree’ was not declared in this scope; did you mean ‘xmlFreeURI’?
+ 86 | xmlFree(full);
+```
+---
+ src/object/uri.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/object/uri.h b/src/object/uri.h
+index 381adec58cf..d5b211fe2b2 100644
+--- a/src/object/uri.h
++++ b/src/object/uri.h
+@@ -13,6 +13,7 @@
+ #define INKSCAPE_URI_H
+
+ #include <libxml/uri.h>
++#include <libxml/xmlmemory.h>
+ #include <memory>
+ #include <string>
+
+--
+GitLab
+
diff --git a/gnu/packages/patches/ispell-for-linphone-cmake.patch b/gnu/packages/patches/ispell-for-linphone-cmake.patch
new file mode 100644
index 0000000000..6785ca4b7e
--- /dev/null
+++ b/gnu/packages/patches/ispell-for-linphone-cmake.patch
@@ -0,0 +1,43 @@
+Retrieved from: https://git.pld-linux.org/?p=packages/bc-ispell.git;a=blob_plain;f=ispell-cmake.patch;hb=HEAD
+
+--- ispell-05574fe160222c3d0b6283c1433c9b087271fad1/CMakeLists.txt.orig 2023-11-07 11:53:37.000000000 +0100
++++ ispell-05574fe160222c3d0b6283c1433c9b087271fad1/CMakeLists.txt 2024-03-28 20:53:45.068632010 +0100
+@@ -49,6 +49,26 @@ set(ISPELL_SOURCES
+
+ add_library(${ISPELL_TARGET_NAME} SHARED ${ISPELL_SOURCES})
+
++set(CMAKE_MODULES_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/cmake/${ISPELL_TARGET_NAME}")
++configure_package_config_file("${ISPELL_TARGET_NAME}Config.cmake.in" "${PROJECT_BINARY_DIR}/${ISPELL_TARGET_NAME}Config.cmake"
++ INSTALL_DESTINATION "${CMAKE_MODULES_INSTALL_DIR}"
++ NO_SET_AND_CHECK_MACRO
++)
++write_basic_package_version_file("${PROJECT_BINARY_DIR}/${ISPELL_TARGET_NAME}ConfigVersion.cmake"
++ VERSION ${PROJECT_VERSION}
++ COMPATIBILITY AnyNewerVersion
++)
++install(FILES
++ "${PROJECT_BINARY_DIR}/${ISPELL_TARGET_NAME}Config.cmake"
++ "${PROJECT_BINARY_DIR}/${ISPELL_TARGET_NAME}ConfigVersion.cmake"
++ DESTINATION ${CMAKE_MODULES_INSTALL_DIR}
++)
++
++install(EXPORT ${ISPELL_TARGET_NAME}LibraryDepends
++ FILE "${ISPELL_TARGET_NAME}LibraryDepends.cmake"
++ DESTINATION ${CMAKE_MODULES_INSTALL_DIR}
++)
++
+ install(TARGETS ${ISPELL_TARGET_NAME}
+ EXPORT ${ISPELL_TARGET_NAME}LibraryDepends
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+--- ispell-05574fe160222c3d0b6283c1433c9b087271fad1/ISpellConfig.cmake.in.orig 2023-11-07 11:53:37.000000000 +0100
++++ ispell-05574fe160222c3d0b6283c1433c9b087271fad1/ISpellConfig.cmake.in 2024-03-28 21:54:40.692161132 +0100
+@@ -12,7 +12,7 @@ set(ISPELL_LIBRARIES "@ISPELL_TARGET_NAM
+ get_target_property(ISPELL_INCLUDE_DIRS "@ISPELL_TARGET_NAME@" INTERFACE_INCLUDE_DIRECTORIES)
+
+ if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.18.0)
+- add_library(@ISpell_TARGET_NAME@::@ISpell_TARGET_NAME@ ALIAS @ISpell_TARGET_NAME@)
++ add_library(@ISPELL_TARGET_NAME@::@ISPELL_TARGET_NAME@ ALIAS @ISPELL_TARGET_NAME@)
+ endif()
+
+-check_required_components(@ISpell_TARGET_NAME@)
++check_required_components(@ISPELL_TARGET_NAME@)
diff --git a/gnu/packages/patches/jami-disable-webengine.patch b/gnu/packages/patches/jami-disable-webengine.patch
deleted file mode 100644
index 1a08fea80b..0000000000
--- a/gnu/packages/patches/jami-disable-webengine.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-Upstream-status: https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/2072
-
---- a/src/app/LayoutManager.qml 2025-06-18 02:28:42.298627257 +0300
-+++ b/src/app/LayoutManager.qml 2025-06-18 02:34:07.528403540 +0300
-@@ -17,7 +17,6 @@
-
- import QtQuick
- import QtQuick.Controls
--import QtWebEngine
-
- import net.jami.Adapters 1.1
- import net.jami.Enums 1.1
-@@ -41,9 +40,6 @@ QtObject {
- // Used to store if a CallStackView component is fullscreened.
- property bool isCallFullscreen: false
-
-- // Used to store if a WebEngineView component is fullscreened.
-- property bool isWebFullscreen: false
--
- // QWK: Provide spacing for widgets that may be occluded by the system buttons.
- property QtObject qwkSystemButtonSpacing: QtObject {
- id: qwkSystemButtonSpacing
-@@ -253,9 +249,6 @@ QtObject {
- isCallFullscreen = fullScreenItems
- .filter(o => o.item.objectName === "callViewLoader")
- .length
-- isWebFullscreen = fullScreenItems
-- .filter(o => o.item instanceof WebEngineView)
-- .length
- }
-
- // Listen for a hangup combined with a fullscreen call state and
---- a/src/app/mainview/components/CallStackView.qml 2025-06-18 02:36:58.863782993 +0300
-+++ b/src/app/mainview/components/CallStackView.qml 2025-06-18 02:38:00.994456741 +0300
-@@ -43,7 +43,7 @@ Item {
- Shortcut {
- sequence: "F11"
- context: Qt.ApplicationShortcut
-- enabled: CurrentConversation.hasCall && !layoutManager.isWebFullscreen
-+ enabled: CurrentConversation.hasCall
- onActivated: toggleFullScreen();
- }
-
diff --git a/gnu/packages/patches/jami-enable-testing.patch b/gnu/packages/patches/jami-enable-testing.patch
deleted file mode 100644
index 3e27a8def9..0000000000
--- a/gnu/packages/patches/jami-enable-testing.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Fix an issue where ctest wouldn't find the qml test files.
-Upstream status: forwarded to jami@gnu.org
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index e802357f..75cffda2 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -884,5 +884,6 @@ qt_finalize_executable(${PROJECT_NAME})
- # tests
- if(BUILD_TESTING)
- message("Add Jami tests")
-+ enable_testing()
- add_subdirectory(${TESTS_DIR})
- endif()
-diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
-index 37796e52..06008ccf 100644
---- a/tests/CMakeLists.txt
-+++ b/tests/CMakeLists.txt
-@@ -1,6 +1,6 @@
- cmake_minimum_required(VERSION 3.16)
-
--enable_testing(true)
-+enable_testing()
-
- set(QT_TESTING_MODULES
- ${QT_MODULES}
diff --git a/gnu/packages/patches/jami-find-package-avutil.patch b/gnu/packages/patches/jami-find-package-avutil.patch
new file mode 100644
index 0000000000..2462e6da10
--- /dev/null
+++ b/gnu/packages/patches/jami-find-package-avutil.patch
@@ -0,0 +1,54 @@
+kestrelwx: The upstream CMake recipe does not link ffmpeg's libavutil,
+resulting in a build failure. INCLUDE_DIRS from pkg-config here are actually
+empty inside the build enviornment, but don't seem to affect the build.
+Relevant upstream issue:
+https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/2110
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 29bfde9a..db46776e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -453,12 +453,6 @@ endif()
+
+ # For libavutil/avframe.
+ set(LIBJAMI_CONTRIB_DIR "${DAEMON_DIR}/contrib")
+-find_path(AVUTIL_INCLUDE_DIR libavutil/avutil.h
+- PATHS
+- ${LIBJAMI_CONTRIB_DIR}/native/ffmpeg
+- ${LIBJAMI_CONTRIB_DIR}/${CONTRIB_DARWIN_FOLDER}/include/
+- ${LIBJAMI_CONTRIB_DIR}/build/ffmpeg/Build/win32/x64/include)
+-include_directories(${AVUTIL_INCLUDE_DIR})
+
+ find_package(Vulkan)
+ if(Vulkan_FOUND)
+@@ -479,6 +473,11 @@ endif()
+
+ find_package(PkgConfig REQUIRED)
+
++# avutil
++pkg_search_module(avutil IMPORTED_TARGET libavutil)
++list(APPEND CLIENT_LIBS PkgConfig::avutil)
++include_directories(${avutil_INCLUDE_DIRS})
++
+ # hunspell
+ pkg_search_module(hunspell IMPORTED_TARGET hunspell)
+ if(hunspell_FOUND)
+diff --git a/src/libclient/CMakeLists.txt b/src/libclient/CMakeLists.txt
+index 01405038..b56a621b 100644
+--- a/src/libclient/CMakeLists.txt
++++ b/src/libclient/CMakeLists.txt
+@@ -318,11 +318,9 @@ if(APPLE)
+ endif()
+ endif()
+
+-find_path(AVUTIL_INCLUDE_DIR libavutil/avutil.h
+- PATHS
+- ${LIBJAMI_CONTRIB_DIR}/native/ffmpeg
+- ${LIBJAMI_CONTRIB_DIR}/${CONTRIB_DARWIN_FOLDER}/include/
+- ${LIBJAMI_CONTRIB_DIR}/build/ffmpeg/Build/win32/x64/include)
++pkg_search_module(AVUTIL libavutil)
++set(AVUTIL_INCLUDE_DIR ${AVUTIL_INCLUDE_DIRS})
++set(AVUTIL_LIBRARY ${AVUTIL_LIBRARIES})
+ include_directories(${AVUTIL_INCLUDE_DIR})
+ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
+ execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine
diff --git a/gnu/packages/patches/jami-libjami-headers-search.patch b/gnu/packages/patches/jami-libjami-headers-search.patch
index 3e7e19d703..a7f6c7d368 100644
--- a/gnu/packages/patches/jami-libjami-headers-search.patch
+++ b/gnu/packages/patches/jami-libjami-headers-search.patch
@@ -3,89 +3,19 @@ It was applied, then reverted (by mistake?) in 4d2c55348bc014.
It's been resubmitted here:
https://lists.gnu.org/archive/html/jami/2024-01/msg00005.html
+The remaining hunk was reverted by 22be4be8.
+Submitted:
+https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/2112
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 8d71b84b..36729698 100644
+index 29bfde9a..3b4c7a92 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -136,7 +136,7 @@ set(CMAKE_MODULE_PATH
- ${CMAKE_MODULE_PATH} "${EXTRAS_DIR}/build/cmake/modules")
- find_package(LibJami REQUIRED)
- if(LIBJAMI_FOUND)
-- include_directories(${LIBJAMI_INCLUDE_DIRS})
-+ include_directories(${LIBJAMI_INCLUDE_DIR})
- endif()
-
- include(FindPython3)
-diff --git a/extras/build/cmake/modules/FindLibJami.cmake b/extras/build/cmake/modules/FindLibJami.cmake
-index 5cce45fc..11746cd8 100644
---- a/extras/build/cmake/modules/FindLibJami.cmake
-+++ b/extras/build/cmake/modules/FindLibJami.cmake
-@@ -20,30 +20,19 @@
-
- # Once done, this find module will set:
- #
--# LIBJAMI_INCLUDE_DIRS - libjami include directories
-+# LIBJAMI_INCLUDE_DIR - libjami include directory
- # LIBJAMI_FOUND - whether it was able to find the include directories
- # LIBJAMI_LIB - path to libjami or libring library
-
- set(LIBJAMI_FOUND true)
-
- if(WITH_DAEMON_SUBMODULE)
-- set(LIBJAMI_INCLUDE_DIRS ${DAEMON_DIR}/src/jami)
-+ set(LIBJAMI_INCLUDE_DIR ${DAEMON_DIR}/src/jami)
- else()
-- if(EXISTS ${LIBJAMI_INCLUDE_DIR}/jami.h)
-- set(LIBJAMI_INCLUDE_DIRS ${LIBJAMI_INCLUDE_DIR})
-- elseif(EXISTS ${LIBJAMI_BUILD_DIR}/jami/jami.h)
-- set(LIBJAMI_INCLUDE_DIRS ${LIBJAMI_BUILD_DIR}/jami)
-- elseif(EXISTS ${RING_INCLUDE_DIR}/jami.h)
-- set(LIBJAMI_INCLUDE_DIRS ${RING_INCLUDE_DIR})
-- elseif(EXISTS ${RING_BUILD_DIR}/jami/jami.h)
-- set(LIBJAMI_INCLUDE_DIRS ${RING_BUILD_DIR}/jami)
-- elseif(EXISTS ${CMAKE_INSTALL_PREFIX}/include/jami/jami.h)
-- set(LIBJAMI_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include/jami)
-- elseif(EXISTS ${CMAKE_INSTALL_PREFIX}/daemon/include/jami/jami.h)
-- set(LIBJAMI_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/daemon/include/jami)
-- else()
-+ find_path(LIBJAMI_INCLUDE_DIR jami.h PATH_SUFFIXES jami)
-+ if(NOT LIBJAMI_INCLUDE_DIR)
- message(STATUS "Jami daemon headers not found!
--Set -DLIBJAMI_BUILD_DIR or -DCMAKE_INSTALL_PREFIX")
-+To build using the daemon git submodule, set -DWITH_DAEMON_SUBMODULE")
- set(LIBJAMI_FOUND false)
+@@ -237,6 +237,6 @@ list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/extras/build/cmake/modules)
+ if (NOT JAMICORE_AS_SUBDIR)
+ find_package(LibJami REQUIRED)
+ if(LIBJAMI_FOUND)
+- include_directories(${LIBJAMI_INCLUDE_DIRS})
++ include_directories(${LIBJAMI_INCLUDE_DIR})
endif()
endif()
-@@ -115,5 +104,5 @@ endif()
- # Restore the original value of CMAKE_FIND_LIBRARY_SUFFIXES.
- set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_orig})
-
--message(STATUS "Jami daemon headers are in " ${LIBJAMI_INCLUDE_DIRS})
-+message(STATUS "Jami daemon headers are in " ${LIBJAMI_INCLUDE_DIR})
- message(STATUS "Jami daemon library is at " ${LIBJAMI_LIB})
-diff --git a/src/libclient/CMakeLists.txt b/src/libclient/CMakeLists.txt
-index 144efaf5..cb87fc2a 100644
---- a/src/libclient/CMakeLists.txt
-+++ b/src/libclient/CMakeLists.txt
-@@ -62,7 +62,7 @@ set(CMAKE_MODULE_PATH
- ${CMAKE_MODULE_PATH} "${EXTRAS_DIR}/build/cmake/modules")
- find_package(LibJami REQUIRED)
- if(LIBJAMI_FOUND)
-- include_directories(${LIBJAMI_INCLUDE_DIRS})
-+ include_directories(${LIBJAMI_INCLUDE_DIR})
- endif()
-
- string(SUBSTRING ${CMAKE_GENERATOR} 0 14 CMAKE_GENERATOR_SHORT)
-diff --git a/src/libclient/qtwrapper/CMakeLists.txt b/src/libclient/qtwrapper/CMakeLists.txt
-index 46887051..a20658ad 100644
---- a/src/libclient/qtwrapper/CMakeLists.txt
-+++ b/src/libclient/qtwrapper/CMakeLists.txt
-@@ -46,7 +46,7 @@ else()
- endif()
-
- include_directories(${CMAKE_CURRENT_SOURCE_DIR})
--include_directories(${LIBJAMI_INCLUDE_DIRS})
-+include_directories(${LIBJAMI_INCLUDE_DIR})
- include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../)
- include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../dbus)
-
diff --git a/gnu/packages/patches/jami-qwindowkit.patch b/gnu/packages/patches/jami-qwindowkit.patch
index 3a341a4286..30940700bf 100644
--- a/gnu/packages/patches/jami-qwindowkit.patch
+++ b/gnu/packages/patches/jami-qwindowkit.patch
@@ -3,10 +3,10 @@ Upstream-status: https://lists.gnu.org/archive/html/jami/2024-03/msg00008.html
This makes it possible to use the system-provided qwindowkit library.
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 6d2dccfb..8dedff50 100644
+index 29bfde9a..3b4c7a92 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -100,13 +100,13 @@ endif()
+@@ -101,13 +101,13 @@ endif()
# qwindowkit (frameless window)
add_fetch_content(
@@ -21,12 +21,12 @@ index 6d2dccfb..8dedff50 100644
+
list(APPEND CLIENT_LIBS QWindowKit::Quick)
- set(CMAKE_AUTOMOC ON)
+ # If ENABLE_CRASHREPORTS is enabled, we will use crashpad_cmake for now.
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
-index b2730b71..4960899e 100644
+index c5228ccf..816f97a7 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
-@@ -48,7 +48,7 @@ target_include_directories(test_common_obj PRIVATE
+@@ -61,7 +61,7 @@ target_include_directories(test_common_obj PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/src)
target_link_directories(test_common_obj PRIVATE ${CLIENT_LINK_DIRS})
diff --git a/gnu/packages/patches/jami-tests-qtwebengine-ifdef-to-if.patch b/gnu/packages/patches/jami-tests-qtwebengine-ifdef-to-if.patch
deleted file mode 100644
index 63bfde6af0..0000000000
--- a/gnu/packages/patches/jami-tests-qtwebengine-ifdef-to-if.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Upstream-status: https://lists.gnu.org/archive/html/jami/2024-03/msg00005.html
-
-Fix macro value checking.
-
-diff --git a/tests/qml/main.cpp b/tests/qml/main.cpp
-index 2fbecebe..8cb3de69 100644
---- a/tests/qml/main.cpp
-+++ b/tests/qml/main.cpp
-@@ -35,7 +35,7 @@
- #include <QtQuickTest/quicktest.h>
- #include <QSignalSpy>
-
--#ifdef WITH_WEBENGINE
-+#if WITH_WEBENGINE
- #include <QtWebEngineCore>
- #include <QtWebEngineQuick>
- #endif
-@@ -192,7 +192,7 @@ main(int argc, char** argv)
- // Allow the user to enable fatal warnings for certain tests.
- Utils::remove_argument(argv, argc, "--failonwarn", [&]() { qputenv("QT_FATAL_WARNINGS", "1"); });
-
--#ifdef WITH_WEBENGINE
-+#if WITH_WEBENGINE
- QtWebEngineQuick::initialize();
- #endif
- QTEST_SET_MAIN_SOURCE_PATH
diff --git a/gnu/packages/patches/jami-unbundle-dependencies.patch b/gnu/packages/patches/jami-unbundle-dependencies.patch
index 8e32c736e6..7871690c5e 100644
--- a/gnu/packages/patches/jami-unbundle-dependencies.patch
+++ b/gnu/packages/patches/jami-unbundle-dependencies.patch
@@ -5,50 +5,7 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt
index e802357f..6d2dccfb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -696,29 +696,50 @@ add_subdirectory(3rdparty/SortFilterProx
- set(SFPM_OBJECTS $<TARGET_OBJECTS:SortFilterProxyModel>)
-
- # md4c
--set(BUILD_MD2HTML_EXECUTABLE OFF CACHE BOOL "Don't build md2html executable" FORCE)
--set(BUILD_SHARED_LIBS OFF CACHE BOOL "Don't build shared md4c library" FORCE)
--add_subdirectory(3rdparty/md4c EXCLUDE_FROM_ALL)
--list(APPEND CLIENT_LINK_DIRS ${MD4C_BINARY_DIR}/src)
--list(APPEND CLIENT_INCLUDE_DIRS ${MD4C_SOURCE_DIR}/src)
--list(APPEND CLIENT_LIBS md4c-html)
-+find_package(md4c)
-+if(md4c_FOUND)
-+ message(STATUS "Using system-provided md4c-html")
-+ list(APPEND CLIENT_LIBS md4c::md4c-html)
-+else()
-+ message("Using bundled md4c-html library")
-+ set(BUILD_MD2HTML_EXECUTABLE OFF CACHE BOOL "Don't build md2html executable" FORCE)
-+ set(BUILD_SHARED_LIBS OFF CACHE BOOL "Don't build shared md4c library" FORCE)
-+ add_subdirectory(3rdparty/md4c EXCLUDE_FROM_ALL)
-+ list(APPEND CLIENT_LINK_DIRS ${MD4C_BINARY_DIR}/src)
-+ list(APPEND CLIENT_INCLUDE_DIRS ${MD4C_SOURCE_DIR}/src)
-+ list(APPEND CLIENT_LIBS md4c-html)
-+endif()
-
- # tidy-html5
--set(BUILD_SHARED_LIB OFF CACHE BOOL "Don't build shared tidy library" FORCE)
--set(SUPPORT_CONSOLE_APP OFF CACHE BOOL "Don't build tidy console app" FORCE)
--add_subdirectory(3rdparty/tidy-html5 EXCLUDE_FROM_ALL)
--list(APPEND CLIENT_LINK_DIRS ${tidy_BINARY_DIR}/Release)
--list(APPEND CLIENT_INCLUDE_DIRS ${tidy_SOURCE_DIR}/include)
--list(APPEND CLIENT_LIBS tidy-static)
-+pkg_check_modules(tidy IMPORTED_TARGET tidy)
-+if(tidy_FOUND)
-+ message(STATUS "Using system-provided tidy")
-+ list(APPEND CLIENT_LIBS PkgConfig::tidy)
-+else()
-+ message("Using bundled tidy library")
-+ set(BUILD_SHARED_LIB OFF CACHE BOOL "Don't build shared tidy library" FORCE)
-+ set(SUPPORT_CONSOLE_APP OFF CACHE BOOL "Don't build tidy console app" FORCE)
-+ add_subdirectory(3rdparty/tidy-html5 EXCLUDE_FROM_ALL)
-+ list(APPEND CLIENT_LINK_DIRS ${tidy_BINARY_DIR}/Release)
-+ list(APPEND CLIENT_INCLUDE_DIRS ${tidy_SOURCE_DIR}/include)
-+ list(APPEND CLIENT_LIBS tidy-static)
-+endif()
+@@ -696,12 +696,19 @@ add_subdirectory(3rdparty/SortFilterProx
# ZXing-cpp configuration
-set(BUILD_EXAMPLES OFF CACHE BOOL "")
diff --git a/gnu/packages/patches/jami-unittests-fix-build.patch b/gnu/packages/patches/jami-unittests-fix-build.patch
deleted file mode 100644
index c39be41c2b..0000000000
--- a/gnu/packages/patches/jami-unittests-fix-build.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-Upstream-status: https://review.jami.net/c/jami-client-qt/+/31508
-
-diff --git a/tests/unittests/previewengine_unittest.cpp b/tests/unittests/previewengine_unittest.cpp
-index f5c103cf..810e621b 100644
---- a/tests/unittests/previewengine_unittest.cpp
-+++ b/tests/unittests/previewengine_unittest.cpp
-@@ -17,7 +17,8 @@
-
- #include "globaltestenvironment.h"
-
--#include <QtHttpServer/QHttpServer>
-+#include <QtHttpServer>
-+#include <QTcpServer>
-
- class PreviewEngineFixture : public ::testing::Test
- {
-@@ -27,19 +28,27 @@ public:
- void SetUp() override
- {
- server = new QHttpServer();
-- // Setup a server that can return an HTML body.
-- server->listen(QHostAddress::LocalHost, 8000);
-+ tcpserver = new QTcpServer();
-+
-+ // Setup a server that can return an HTML body, which listens
-+ // on 127.0.0.1 (localhost) and port 8000.
-+ if (!tcpserver->listen(QHostAddress::LocalHost, 8000)
-+ || !server->bind(tcpserver)) {
-+ qFatal() << "failed to listen:" << tcpserver->errorString();
-+ }
- }
-
- // Close unit test context. Called
- // after each unit test ending
- void TearDown() override
- {
-+ delete tcpserver;
- delete server;
- }
-
- // An instance of QHttpServer used to create a server.
- QHttpServer* server;
-+ QTcpServer* tcpserver;
- };
-
- /*!
diff --git a/gnu/packages/patches/komikku-future-servers-compat.patch b/gnu/packages/patches/komikku-future-servers-compat.patch
new file mode 100644
index 0000000000..2131e81830
--- /dev/null
+++ b/gnu/packages/patches/komikku-future-servers-compat.patch
@@ -0,0 +1,360 @@
+This patch is a partial combination of the following upstream patches to make
+Komikku compatible with servers >= 1.79.0.
+
+https://codeberg.org/valos/Komikku/commit/311a8915d7fa80278979a6d80d75a5febef9f2c1
+https://codeberg.org/valos/Komikku/commit/6820caac4b1f3538b8ce6ed729c19c1f6f66ea7f
+
+diff --git a/data/info.febvre.Komikku.gresource.xml.in b/data/info.febvre.Komikku.gresource.xml.in
+index 87fe29f..8dca096 100644
+--- a/data/info.febvre.Komikku.gresource.xml.in
++++ b/data/info.febvre.Komikku.gresource.xml.in
+@@ -36,6 +36,9 @@
+ <!-- CSS -->
+ <file compressed="true" alias="style.css">css/style.css</file>
+
++ <!-- Fonts -->
++ <file compressed="true" alias="text-image.otf">fonts/0xPropo-Medium.otf</file>
++
+ <!-- Icons -->
+ <file compressed="true" preprocess="xml-stripblanks" alias="icons/scalable/apps/brush-symbolic.svg">icons/brush-symbolic.svg</file>
+ <file compressed="true" preprocess="xml-stripblanks" alias="icons/scalable/apps/computer-fail-symbolic.svg">icons/computer-fail-symbolic.svg</file>
+diff --git a/komikku/servers/__init__.py b/komikku/servers/__init__.py
+index ab73cff..8482ab2 100644
+--- a/komikku/servers/__init__.py
++++ b/komikku/servers/__init__.py
+@@ -44,6 +44,7 @@ LANGUAGES = dict(
+ eo='Espéranto',
+ es='Español',
+ es_419='Español (Latinoamérica)',
++ fa='فارسی',
+ fr='Français',
+ it='Italiano',
+ nl='Nederlands',
+diff --git a/komikku/servers/existentialcomics/__init__.py b/komikku/servers/existentialcomics/__init__.py
+index 1ecb85f..f1747bd 100644
+--- a/komikku/servers/existentialcomics/__init__.py
++++ b/komikku/servers/existentialcomics/__init__.py
+@@ -8,6 +8,7 @@ import textwrap
+
+ from komikku.servers import Server
+ from komikku.servers import USER_AGENT
++from komikku.servers.utils import TextImage
+ from komikku.utils import get_buffer_mime_type
+
+
+@@ -105,24 +106,26 @@ class Existentialcomics(Server):
+ """
+ if page.get('slug'):
+ r = self.session_get(self.image_url.format(page['slug']))
++ if r.status_code != 200:
++ return None
++
++ mime_type = get_buffer_mime_type(r.content)
++ if not mime_type.startswith('image'):
++ return None
++
+ name = page['slug']
++ content = r.content
+ else:
+- r = self.session_get(
+- 'https://fakeimg.pl/1500x2126/ffffff/000000/',
+- params=dict(
+- text='\n'.join(textwrap.wrap(page['text'], 25)),
+- font_size=64,
+- font='museo'
+- )
+- )
+- name = '{0}-alt-text.png'.format(page['name'])
++ text = '\n'.join(textwrap.wrap(page['text'], 25))
++ image = TextImage(text)
+
+- mime_type = get_buffer_mime_type(r.content)
+- if not mime_type.startswith('image'):
+- return None
++ mime_type = image.mime_type
++ name = f'{page["name"]}-alt-text.{image.format}'
++ print(name)
++ content = image.content
+
+ return dict(
+- buffer=r.content,
++ buffer=content,
+ mime_type=mime_type,
+ name=name,
+ )
+diff --git a/komikku/servers/fosscomics/__init__.py b/komikku/servers/fosscomics/__init__.py
+index f77e13d..a3097e5 100644
+--- a/komikku/servers/fosscomics/__init__.py
++++ b/komikku/servers/fosscomics/__init__.py
+@@ -11,6 +11,7 @@ import requests
+ from komikku.servers import Server
+ from komikku.servers import USER_AGENT
+ from komikku.servers.utils import convert_date_string
++from komikku.servers.utils import TextImage
+ from komikku.utils import get_buffer_mime_type
+
+
+@@ -122,27 +123,25 @@ class Fosscomics(Server):
+
+ if page.get('image'):
+ r = self.session_get(self.image_url.format(chapter_slug, page['image']))
+- name = f'{chapter_num:02d}_{page["index"]:02d}.png' # noqa: E231
+- else:
+- r = self.session_get(
+- 'https://fakeimg.pl/1500x2126/ffffff/000000/',
+- params=dict(
+- text='\n'.join(textwrap.wrap(page['text'], 40)),
+- font_size=64,
+- font='museo'
+- )
+- )
+- name = f'{chapter_num:02d}_{page["index"]:02d}_text_{page["subindex"]:02d}.png' # noqa: E231
++ if r.status_code != 200:
++ return None
+
+- if r.status_code != 200:
+- return None
++ mime_type = get_buffer_mime_type(r.content)
++ if not mime_type.startswith('image'):
++ return None
+
+- mime_type = get_buffer_mime_type(r.content)
+- if not mime_type.startswith('image'):
+- return None
++ name = f'{chapter_num:02d}_{page["index"]:02d}.{mime_type.split("/")[-1]}' # noqa: E231
++ content = r.content
++ else:
++ text = '\n'.join(textwrap.wrap(page['text'], 25))
++ image = TextImage(text)
++
++ mime_type = image.mime_type
++ name = f'{chapter_num:02d}_{page["index"]:02d}_text_{page["subindex"]:02d}.{image.format}' # noqa: E231
++ content = image.content
+
+ return dict(
+- buffer=r.content,
++ buffer=content,
+ mime_type=mime_type,
+ name=name,
+ )
+diff --git a/komikku/servers/grisebouille/__init__.py b/komikku/servers/grisebouille/__init__.py
+index 49aa539..211fbb9 100644
+--- a/komikku/servers/grisebouille/__init__.py
++++ b/komikku/servers/grisebouille/__init__.py
+@@ -9,6 +9,7 @@ import textwrap
+ from komikku.servers import Server
+ from komikku.servers import USER_AGENT
+ from komikku.servers.utils import convert_date_string
++from komikku.servers.utils import TextImage
+ from komikku.utils import get_buffer_mime_type
+
+
+@@ -123,27 +124,22 @@ class Grisebouille(Server):
+ if r.status_code != 200:
+ return None
+
+- name = page['image'].split('/')[-1]
+- else:
+- r = self.session_get(
+- 'https://fakeimg.pl/1500x2126/ffffff/000000/',
+- params=dict(
+- text='\n'.join(textwrap.wrap(page['text'], 25)),
+- font_size=64,
+- font='museo',
+- )
+- )
+- if r.status_code != 200:
++ mime_type = get_buffer_mime_type(r.content)
++ if not mime_type.startswith('image'):
+ return None
+
+- name = 'txt_{0:03d}.png'.format(page['index'])
++ name = page['image'].split('/')[-1]
++ content = r.content
++ else:
++ text = '\n'.join(textwrap.wrap(page['text'], 25))
++ image = TextImage(text)
+
+- mime_type = get_buffer_mime_type(r.content)
+- if not mime_type.startswith('image'):
+- return None
++ mime_type = image.mime_type
++ name = f'txt_{page["index"]:03d}.{image.format}' # noqa: E231
++ content = image.content
+
+ return dict(
+- buffer=r.content,
++ buffer=content,
+ mime_type=mime_type,
+ name=name,
+ )
+diff --git a/komikku/servers/multi/hiveworks/__init__.py b/komikku/servers/multi/hiveworks/__init__.py
+index a0bb405..ec9d955 100644
+--- a/komikku/servers/multi/hiveworks/__init__.py
++++ b/komikku/servers/multi/hiveworks/__init__.py
+@@ -17,6 +17,7 @@ import textwrap
+ from komikku.servers import Server
+ from komikku.servers import USER_AGENT
+ from komikku.servers.utils import convert_date_string
++from komikku.servers.utils import TextImage
+ from komikku.utils import get_buffer_mime_type
+
+
+@@ -112,27 +113,25 @@ class Hiveworks(Server):
+ """Returns chapter page scan (image) content"""
+ if page.get('image'):
+ r = self.session_get(self.image_url.format(page['image']))
++ if r.status_code != 200:
++ return None
++
++ mime_type = get_buffer_mime_type(r.content)
++ if not mime_type.startswith('image'):
++ return None
++
+ name = page['image']
++ content = r.content
+ else:
+- r = self.session_get(
+- 'https://fakeimg.pl/1500x2126/ffffff/000000/',
+- params=dict(
+- text='\n'.join(textwrap.wrap(page['text'], 25)),
+- font_size=64,
+- font='museo'
+- )
+- )
+- name = '{0}-alt-text.png'.format(chapter_slug)
+-
+- if r.status_code != 200:
+- return None
++ text = '\n'.join(textwrap.wrap(page['text'], 25))
++ image = TextImage(text)
+
+- mime_type = get_buffer_mime_type(r.content)
+- if not mime_type.startswith('image'):
+- return None
++ mime_type = image.mime_type
++ name = f'{chapter_slug}-alt-text.{image.format}'
++ content = image.content
+
+ return dict(
+- buffer=r.content,
++ buffer=content,
+ mime_type=mime_type,
+ name=name,
+ )
+diff --git a/komikku/servers/utils.py b/komikku/servers/utils.py
+index cf898fc..9fb2139 100644
+--- a/komikku/servers/utils.py
++++ b/komikku/servers/utils.py
+@@ -23,15 +23,54 @@ from bs4 import BeautifulSoup
+ from bs4 import NavigableString
+ import dateparser
+ import emoji
++from gi.repository import Gio
+ from PIL import Image
++from PIL import ImageDraw
++from PIL import ImageFont
+ import requests
+
+ from komikku.servers.loader import ServerFinder
+ from komikku.utils import get_cached_logos_dir
+
+ logger = logging.getLogger(__name__)
+
+
++class TextImage:
++ def __init__(self, text, width=1500, height=2126, bg_color='#fff', fg_color='#000', font_size=64, format='webp'):
++ self.format = format
++ self.image = Image.new('RGB', (width, height), bg_color)
++
++ if text is None:
++ text = ''
++
++ rfont = Gio.resources_lookup_data('/info/febvre/Komikku/text-image.otf', Gio.ResourceLookupFlags.NONE)
++ font = ImageFont.truetype(BytesIO(rfont.get_data()), font_size)
++
++ draw = ImageDraw.Draw(self.image)
++ if '\n' in text:
++ left, top, right, bottom = draw.multiline_textbbox((0, 0), text, font, font_size=font_size)
++ else:
++ left, top, right, bottom = draw.textbbox((0, 0), text, font, font_size=font_size)
++
++ text_width = right - left
++ text_height = bottom - top
++ text_coord = ((width - text_width) // 2, (height - text_height) // 2)
++
++ draw.multiline_text(text_coord, text, fill=fg_color, font=font, align='center')
++ del draw
++
++ @property
++ def content(self):
++ buf = BytesIO()
++ self.image.save(buf, self.format.upper())
++
++ return buf.getvalue()
++
++ @property
++ def mime_type(self):
++ return f'image/{self.format}'
++
++
+ def convert_date_string(date_string, format=None, languages=None):
+ """
+ Convert a date string into a date object
+diff --git a/komikku/servers/xkcd/__init__.py b/komikku/servers/xkcd/__init__.py
+index 3445884..0eaeb5e 100644
+--- a/komikku/servers/xkcd/__init__.py
++++ b/komikku/servers/xkcd/__init__.py
+@@ -9,6 +9,7 @@ import textwrap
+ from komikku.servers import Server
+ from komikku.servers import USER_AGENT
+ from komikku.servers.utils import convert_date_string
++from komikku.servers.utils import TextImage
+ from komikku.utils import get_buffer_mime_type
+
+
+@@ -108,27 +109,25 @@ class Xkcd(Server):
+ """
+ if page.get('image'):
+ r = self.session_get(self.image_url.format(page['image']))
++ if r.status_code != 200:
++ return None
++
++ mime_type = get_buffer_mime_type(r.content)
++ if not mime_type.startswith('image'):
++ return None
++
+ name = page['image']
++ content = r.content
+ else:
+- r = self.session_get(
+- 'https://fakeimg.pl/1500x2126/ffffff/000000/',
+- params=dict(
+- text='\n'.join(textwrap.wrap(page['text'], 25)),
+- font_size=64,
+- font='museo'
+- )
+- )
+- name = '{0}-alt-text.png'.format(chapter_slug)
+-
+- if r.status_code != 200:
+- return None
++ text = '\n'.join(textwrap.wrap(page['text'], 25))
++ image = TextImage(text)
+
+- mime_type = get_buffer_mime_type(r.content)
+- if not mime_type.startswith('image'):
+- return None
++ mime_type = image.mime_type
++ name = f'{chapter_slug}-alt-text.{image.format}'
++ content = image.content
+
+ return dict(
+- buffer=r.content,
++ buffer=content,
+ mime_type=mime_type,
+ name=name,
+ )
+--
+libgit2 1.5.2
+
diff --git a/gnu/packages/patches/komikku-python-3.11-compat.patch b/gnu/packages/patches/komikku-python-3.11-compat.patch
new file mode 100644
index 0000000000..927de1075e
--- /dev/null
+++ b/gnu/packages/patches/komikku-python-3.11-compat.patch
@@ -0,0 +1,57 @@
+This patch fixes quote nesting in format strings in a way that's compatible with
+Python 3.11. A larger cleanup patch [1] applies some of these hunks upstream.
+
+[1] https://codeberg.org/valos/Komikku/commit/e76766c6012d9d5c18c2c3bbaa7dfc11a6ee2d77
+
+diff --git a/komikku/card/tracking.py b/komikku/card/tracking.py
+index ce333780..76119e20 100644
+--- a/komikku/card/tracking.py
++++ b/komikku/card/tracking.py
+@@ -279,7 +279,7 @@ class TrackerRow(Adw.ExpanderRow):
+ self.set_expanded(True)
+ self.set_arrow_visible(True)
+ self.btn.set_visible(False)
+- self.action_row.set_title(f'<a href="{self.tracker.get_manga_url(data['id'])}">{html_escape(data["name"])}</a>')
++ self.action_row.set_title(f'<a href="{self.tracker.get_manga_url(data["id"])}">{html_escape(data["name"])}</a>')
+
+ with self.chapters_progress_row.handler_block(self.num_chapter_changed_handler_id):
+ adj = Gtk.Adjustment(
+--
+diff --git a/komikku/servers/mangalib/__init__.py b/komikku/servers/mangalib/__init__.py
+index b631f617..c48c1cf2 100644
+--- a/komikku/servers/mangalib/__init__.py
++++ b/komikku/servers/mangalib/__init__.py
+@@ -124,9 +124,9 @@ class Mangalib(Server):
+ for team in branch['teams']:
+ scanlators.append(team['name'])
+
+ data['chapters'].append(dict(
+- slug=f'v{chapter['volume']}/c{chapter['number']}',
++ slug=f'v{chapter["volume"]}/c{chapter["number"]}',
+ title=f'Том {chapter["volume"]} Глава {chapter["number"]} - {chapter["name"]}',
+ num=chapter['number'] if is_number(chapter['number']) else None,
+ num_volume=chapter['volume'] if is_number(chapter['volume']) else None,
+ date=convert_date_string(date, format='%Y-%m-%d') if date else None,
+diff --git a/komikku/servers/perfscan/__init__.py b/komikku/servers/perfscan/__init__.py
+index 8d77c131..ea9df5e4 100644
+--- a/komikku/servers/perfscan/__init__.py
++++ b/komikku/servers/perfscan/__init__.py
+@@ -69,7 +69,7 @@ class Perfscan(Server):
+ ))
+
+ data['name'] = resp_data['title']
+- data['cover'] = f'{self.media_url}/{resp_data['cover']}'
++ data['cover'] = f'{self.media_url}/{resp_data["cover"]}'
+
+ if resp_data.get('author'):
+ data['authors'].append(resp_data['author'])
+@@ -95,7 +95,7 @@ class Perfscan(Server):
+ for chapter in resp_data.get('Chapter'):
+ title = chapter['title'].strip()
+ if title in (None, '', '-'):
+- title = f'Chapitre {chapter['index']}'
++ title = f'Chapitre {chapter["index"]}'
+
+ data['chapters'].append({
+ 'slug': chapter['id'],
+
diff --git a/gnu/packages/patches/kvmfr-linux-module-fix-build.patch b/gnu/packages/patches/kvmfr-linux-module-fix-build.patch
deleted file mode 100644
index 49c1a713a5..0000000000
--- a/gnu/packages/patches/kvmfr-linux-module-fix-build.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Copied from
-https://github.com/gnif/LookingGlass/issues/1075#issuecomment-1546422678 and
-https://github.com/gnif/LookingGlass/issues/1134 with adjustments for current
-kvmfr source version.
-
-From c4950a830fbe2ca27337793aa227c86f5c044f46 Mon Sep 17 00:00:00 2001
-From: Oleg Pykhalov <go.wigust@gmail.com>
-Date: Sat, 5 Oct 2024 16:11:45 +0300
-Subject: [PATCH] Fix build
-
----
- module/kvmfr.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/module/kvmfr.c b/module/kvmfr.c
-index 121aae5..4c386f9 100644
---- a/module/kvmfr.c
-+++ b/module/kvmfr.c
-@@ -30,6 +30,7 @@
- #include <linux/highmem.h>
- #include <linux/memremap.h>
- #include <linux/version.h>
-+#include <linux/vmalloc.h>
-
- #include <asm/io.h>
-
-@@ -539,7 +540,11 @@ static int __init kvmfr_module_init(void)
- if (kvmfr->major < 0)
- goto out_free;
-
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0)
- kvmfr->pClass = class_create(THIS_MODULE, KVMFR_DEV_NAME);
-+#else
-+ kvmfr->pClass = class_create(KVMFR_DEV_NAME);
-+#endif
- if (IS_ERR(kvmfr->pClass))
- goto out_unreg;
-
---
-2.41.0
-
diff --git a/gnu/packages/patches/libfaketime-32bit.patch b/gnu/packages/patches/libfaketime-32bit.patch
new file mode 100644
index 0000000000..b8ef2d0af0
--- /dev/null
+++ b/gnu/packages/patches/libfaketime-32bit.patch
@@ -0,0 +1,241 @@
+Taken from https://github.com/wolfcw/libfaketime/pull/487
+Rebased onto v0.9.10
+
+From 86e067a01a7882d2140adcf085509e5d72ac3daa Mon Sep 17 00:00:00 2001
+From: Helge Deller <deller@gmx.de>
+Date: Sun, 12 Jan 2025 22:23:16 +0000
+Subject: [PATCH 1/4] Interpose clock_gettime64
+
+Since debian generally added 64-bit time support on 32-bit
+arches, now glibc sometimes calls the clock_gettime64 syscall
+(and library wrapper). This function was missing, and is added here.
+
+Patch originally supplied here
+ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1064555
+---
+ src/libfaketime.c | 24 ++++++++++++++++++++++++
+ test/Makefile | 2 +-
+ 2 files changed, 25 insertions(+), 1 deletion(-)
+
+diff --git a/src/libfaketime.c b/src/libfaketime.c
+index e632395..b9d3d8d 100644
+--- a/src/libfaketime.c
++++ b/src/libfaketime.c
+@@ -159,6 +159,13 @@ struct utimbuf {
+ #include <sys/random.h>
+ #endif
+
++/* __timespec64 is needed for clock_gettime64 on 32-bit architectures */
++struct __timespec64
++{
++ uint64_t tv_sec; /* Seconds */
++ uint64_t tv_nsec; /* Nanoseconds */
++};
++
+ /*
+ * Per thread variable, which we turn on inside real_* calls to avoid modifying
+ * time multiple times of for the whole process to prevent faking time
+@@ -193,6 +200,7 @@ static time_t (*real_time) (time_t *);
+ static int (*real_ftime) (struct timeb *);
+ static int (*real_gettimeofday) (struct timeval *, void *);
+ static int (*real_clock_gettime) (clockid_t clk_id, struct timespec *tp);
++static int (*real_clock_gettime64) (clockid_t clk_id, struct __timespec64 *tp);
+ static int (*real_timespec_get) (struct timespec *ts, int base);
+ #ifdef FAKE_INTERNAL_CALLS
+ static int (*real___ftime) (struct timeb *);
+@@ -2319,6 +2327,17 @@ int clock_gettime(clockid_t clk_id, struct timespec *tp)
+ return result;
+ }
+
++/* this is used by 32-bit architectures only */
++int __clock_gettime64(clockid_t clk_id, struct __timespec64 *tp64)
++{
++ struct timespec tp;
++ int result;
++
++ result = clock_gettime(clk_id, &tp);
++ tp64->tv_sec = tp.tv_sec;
++ tp64->tv_nsec = tp.tv_nsec;
++ return result;
++}
+
+ #ifdef MACOS_DYLD_INTERPOSE
+ int macos_timespec_get(struct timespec *ts, int base)
+@@ -2652,6 +2671,11 @@ static void ftpl_init(void)
+ {
+ real_clock_gettime = dlsym(RTLD_NEXT, "clock_gettime");
+ }
++ real_clock_gettime64 = dlsym(RTLD_NEXT, "clock_gettime64");
++ if (NULL == real_clock_gettime64)
++ {
++ real_clock_gettime64 = dlsym(RTLD_NEXT, "__clock_gettime64");
++ }
+ #ifdef FAKE_TIMERS
+ #if defined(__sun)
+ real_timer_gettime_233 = dlsym(RTLD_NEXT, "timer_gettime");
+diff --git a/test/Makefile b/test/Makefile
+index 1b2a4aa..093d639 100644
+--- a/test/Makefile
++++ b/test/Makefile
+@@ -1,6 +1,6 @@
+ CC = gcc
+
+-CFLAGS += -std=gnu99 -Wall -DFAKE_STAT -Werror -Wextra $(FAKETIME_COMPILE_CFLAGS)
++CFLAGS += -std=gnu99 -Wall -DFAKE_STAT -Werror -Wextra $(FAKETIME_COMPILE_CFLAGS) -U_FILE_OFFSET_BITS -U_TIME_BITS
+ LDFLAGS += -lrt -lpthread
+
+ SRC = timetest.c
+--
+2.51.0
+
+From 1e2626e62e7f3fa3266fbdb93b69bc08a649feaa Mon Sep 17 00:00:00 2001
+From: Ian Jackson <ijackson@chiark.greenend.org.uk>
+Date: Fri, 17 Jan 2025 12:05:09 +0000
+Subject: [PATCH 2/4] Fix interposition of clock_gettime64
+
+timespec.tv_nsec is 32-bit, even though timeval.tv_usec is
+64-bit (weirdly). This doesn't matter very much in practice because
+ * on little endian architectures (which is all our 32-bit release
+ arches) writing to a too big integer ends up writing the
+ desired value in the desired location, and
+ * it doesn't affect the overall struct size on any of our actual
+ architectures (which align the uint64_t to 8 so must make the
+ whole struct 16 not 12), so the write overflow is harmless.
+
+> #include <time.h>
+> #include <sys/time.h>
+> #include <stdio.h>
+> struct timeval tv;
+> struct timespec ts;
+> int main(void) {
+> printf("time_t %lld\n", (unsigned long long) sizeof(time_t));
+> printf("timeval %lld %lld %lld\n",
+> (unsigned long long) sizeof(tv),
+> (unsigned long long) sizeof(tv.tv_sec),
+> (unsigned long long) sizeof(tv.tv_usec)
+> );
+> printf("timespec %lld %lld %lld\n",
+> (unsigned long long) sizeof(ts),
+> (unsigned long long) sizeof(ts.tv_sec),
+> (unsigned long long) sizeof(ts.tv_nsec)
+> );
+> }
+> (sid_armhf-dchroot)iwj@amdahl:~/Faketime/test$ gcc t.c
+> (sid_armhf-dchroot)iwj@amdahl:~/Faketime/test$ ./a.out
+> time_t 8
+> timeval 16 8 8
+> timespec 16 8 4
+> (sid_armhf-dchroot)iwj@amdahl:~/Faketime/test$
+---
+ src/libfaketime.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/libfaketime.c b/src/libfaketime.c
+index b9d3d8d..6d9ec1c 100644
+--- a/src/libfaketime.c
++++ b/src/libfaketime.c
+@@ -163,7 +163,7 @@ struct utimbuf {
+ struct __timespec64
+ {
+ uint64_t tv_sec; /* Seconds */
+- uint64_t tv_nsec; /* Nanoseconds */
++ uint32_t tv_nsec; /* this is 32-bit, apparently! */
+ };
+
+ /*
+--
+2.51.0
+
+From a2d1dce073b7ffe50009584c89d0b7b061066d53 Mon Sep 17 00:00:00 2001
+From: Ian Jackson <ijackson@chiark.greenend.org.uk>
+Date: Fri, 17 Jan 2025 09:03:21 +0000
+Subject: [PATCH 3/4] Interpose __time64
+
+---
+ src/libfaketime.c | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+diff --git a/src/libfaketime.c b/src/libfaketime.c
+index 6d9ec1c..f3706a3 100644
+--- a/src/libfaketime.c
++++ b/src/libfaketime.c
+@@ -2339,6 +2339,27 @@ int __clock_gettime64(clockid_t clk_id, struct __timespec64 *tp64)
+ return result;
+ }
+
++/* this is used by 32-bit architectures only */
++uint64_t __time64(uint64_t *write_out)
++{
++ struct timespec tp;
++ uint64_t output;
++ int error;
++
++ error = clock_gettime(CLOCK_REALTIME, &tp);
++ if (error == -1)
++ {
++ return (uint64_t)error;
++ }
++ output = tp.tv_sec;
++
++ if (write_out)
++ {
++ *write_out = output;
++ }
++ return output;
++}
++
+ #ifdef MACOS_DYLD_INTERPOSE
+ int macos_timespec_get(struct timespec *ts, int base)
+ #else
+--
+2.51.0
+
+From dfc04d2e0b11903a9db1e0b9d435b4c58c4b27ef Mon Sep 17 00:00:00 2001
+From: Ian Jackson <ijackson@chiark.greenend.org.uk>
+Date: Fri, 17 Jan 2025 12:08:23 +0000
+Subject: [PATCH 4/4] Interpose gettimeofday64
+
+---
+ src/libfaketime.c | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+diff --git a/src/libfaketime.c b/src/libfaketime.c
+index f3706a3..0270f93 100644
+--- a/src/libfaketime.c
++++ b/src/libfaketime.c
+@@ -166,6 +166,13 @@ struct __timespec64
+ uint32_t tv_nsec; /* this is 32-bit, apparently! */
+ };
+
++/* __timespec64 is needed for clock_gettime64 on 32-bit architectures */
++struct __timeval64
++{
++ uint64_t tv_sec; /* Seconds */
++ uint64_t tv_usec; /* this is 64-bit, apparently! */
++};
++
+ /*
+ * Per thread variable, which we turn on inside real_* calls to avoid modifying
+ * time multiple times of for the whole process to prevent faking time
+@@ -2339,6 +2346,18 @@ int __clock_gettime64(clockid_t clk_id, struct __timespec64 *tp64)
+ return result;
+ }
+
++/* this is used by 32-bit architectures only */
++int __gettimeofday64(struct __timeval64 *tv64, void *tz)
++{
++ struct timeval tv;
++ int result;
++
++ result = gettimeofday(&tv, tz);
++ tv64->tv_sec = tv.tv_sec;
++ tv64->tv_usec = tv.tv_usec;
++ return result;
++}
++
+ /* this is used by 32-bit architectures only */
+ uint64_t __time64(uint64_t *write_out)
+ {
+--
+2.51.0
+
diff --git a/gnu/packages/patches/libgcrypt-arm32-register-pressure.patch b/gnu/packages/patches/libgcrypt-arm32-register-pressure.patch
new file mode 100644
index 0000000000..9eff5c42e1
--- /dev/null
+++ b/gnu/packages/patches/libgcrypt-arm32-register-pressure.patch
@@ -0,0 +1,133 @@
+This patch is from upstream and probably can be dropped with any version
+after 1.11.0.
+
+From 9c93b4607adcf9b3efd53aba43e2d33bf5aef9df Mon Sep 17 00:00:00 2001
+From: Jussi Kivilinna <jussi.kivilinna@iki.fi>
+Date: Sun, 4 Aug 2024 18:04:49 +0300
+Subject: [PATCH] mpi/ec-inline: reduce register pressure on 32-bit ARM
+
+* mpi/ec-inline.h [HAVE_COMPATIBLE_GCC_ARM_PLATFORM_AS] (ADD4_LIMB32)
+(ADD6_LIMB32, SUB4_LIMB32, SUB6_LIMB32): Reuse input registers
+as output (use just two unique operators).
+--
+
+This fixes building ec-nist.c with GCC-14 on 32-bit ARM.
+
+GnuPG-bug-id: 7226
+Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
+---
+ mpi/ec-inline.h | 63 ++++++++++++++++++++++++-------------------------
+ 1 file changed, 31 insertions(+), 32 deletions(-)
+
+diff --git a/mpi/ec-inline.h b/mpi/ec-inline.h
+index c24d5352..3a526246 100644
+--- a/mpi/ec-inline.h
++++ b/mpi/ec-inline.h
+@@ -836,18 +836,18 @@ LIMB64_HILO(mpi_limb_t hi, mpi_limb_t lo)
+ #ifdef HAVE_COMPATIBLE_GCC_ARM_PLATFORM_AS
+
+ #define ADD4_LIMB32(A3, A2, A1, A0, B3, B2, B1, B0, C3, C2, C1, C0) \
+- __asm__ ("adds %3, %7, %11\n" \
+- "adcs %2, %6, %10\n" \
+- "adcs %1, %5, %9\n" \
+- "adc %0, %4, %8\n" \
++ __asm__ ("adds %3, %3, %11\n" \
++ "adcs %2, %2, %10\n" \
++ "adcs %1, %1, %9\n" \
++ "adc %0, %0, %8\n" \
+ : "=r" (A3), \
+ "=&r" (A2), \
+ "=&r" (A1), \
+ "=&r" (A0) \
+- : "r" ((mpi_limb_t)(B3)), \
+- "r" ((mpi_limb_t)(B2)), \
+- "r" ((mpi_limb_t)(B1)), \
+- "r" ((mpi_limb_t)(B0)), \
++ : "0" ((mpi_limb_t)(B3)), \
++ "1" ((mpi_limb_t)(B2)), \
++ "2" ((mpi_limb_t)(B1)), \
++ "3" ((mpi_limb_t)(B0)), \
+ "Ir" ((mpi_limb_t)(C3)), \
+ "Ir" ((mpi_limb_t)(C2)), \
+ "Ir" ((mpi_limb_t)(C1)), \
+@@ -857,18 +857,18 @@ LIMB64_HILO(mpi_limb_t hi, mpi_limb_t lo)
+ #define ADD6_LIMB32(A5, A4, A3, A2, A1, A0, B5, B4, B3, B2, B1, B0, \
+ C5, C4, C3, C2, C1, C0) do { \
+ mpi_limb_t __carry6_32; \
+- __asm__ ("adds %3, %7, %10\n" \
+- "adcs %2, %6, %9\n" \
+- "adcs %1, %5, %8\n" \
+- "adc %0, %4, %4\n" \
++ __asm__ ("adds %3, %3, %10\n" \
++ "adcs %2, %2, %9\n" \
++ "adcs %1, %1, %8\n" \
++ "adc %0, %0, %0\n" \
+ : "=r" (__carry6_32), \
+ "=&r" (A2), \
+ "=&r" (A1), \
+ "=&r" (A0) \
+- : "r" ((mpi_limb_t)(0)), \
+- "r" ((mpi_limb_t)(B2)), \
+- "r" ((mpi_limb_t)(B1)), \
+- "r" ((mpi_limb_t)(B0)), \
++ : "0" ((mpi_limb_t)(0)), \
++ "1" ((mpi_limb_t)(B2)), \
++ "2" ((mpi_limb_t)(B1)), \
++ "3" ((mpi_limb_t)(B0)), \
+ "Ir" ((mpi_limb_t)(C2)), \
+ "Ir" ((mpi_limb_t)(C1)), \
+ "Ir" ((mpi_limb_t)(C0)) \
+@@ -878,18 +878,18 @@ LIMB64_HILO(mpi_limb_t hi, mpi_limb_t lo)
+ } while (0)
+
+ #define SUB4_LIMB32(A3, A2, A1, A0, B3, B2, B1, B0, C3, C2, C1, C0) \
+- __asm__ ("subs %3, %7, %11\n" \
+- "sbcs %2, %6, %10\n" \
+- "sbcs %1, %5, %9\n" \
+- "sbc %0, %4, %8\n" \
++ __asm__ ("subs %3, %3, %11\n" \
++ "sbcs %2, %2, %10\n" \
++ "sbcs %1, %1, %9\n" \
++ "sbc %0, %0, %8\n" \
+ : "=r" (A3), \
+ "=&r" (A2), \
+ "=&r" (A1), \
+ "=&r" (A0) \
+- : "r" ((mpi_limb_t)(B3)), \
+- "r" ((mpi_limb_t)(B2)), \
+- "r" ((mpi_limb_t)(B1)), \
+- "r" ((mpi_limb_t)(B0)), \
++ : "0" ((mpi_limb_t)(B3)), \
++ "1" ((mpi_limb_t)(B2)), \
++ "2" ((mpi_limb_t)(B1)), \
++ "3" ((mpi_limb_t)(B0)), \
+ "Ir" ((mpi_limb_t)(C3)), \
+ "Ir" ((mpi_limb_t)(C2)), \
+ "Ir" ((mpi_limb_t)(C1)), \
+@@ -899,18 +899,17 @@ LIMB64_HILO(mpi_limb_t hi, mpi_limb_t lo)
+ #define SUB6_LIMB32(A5, A4, A3, A2, A1, A0, B5, B4, B3, B2, B1, B0, \
+ C5, C4, C3, C2, C1, C0) do { \
+ mpi_limb_t __borrow6_32; \
+- __asm__ ("subs %3, %7, %10\n" \
+- "sbcs %2, %6, %9\n" \
+- "sbcs %1, %5, %8\n" \
+- "sbc %0, %4, %4\n" \
++ __asm__ ("subs %3, %3, %9\n" \
++ "sbcs %2, %2, %8\n" \
++ "sbcs %1, %1, %7\n" \
++ "sbc %0, %0, %0\n" \
+ : "=r" (__borrow6_32), \
+ "=&r" (A2), \
+ "=&r" (A1), \
+ "=&r" (A0) \
+- : "r" ((mpi_limb_t)(0)), \
+- "r" ((mpi_limb_t)(B2)), \
+- "r" ((mpi_limb_t)(B1)), \
+- "r" ((mpi_limb_t)(B0)), \
++ : "1" ((mpi_limb_t)(B2)), \
++ "2" ((mpi_limb_t)(B1)), \
++ "3" ((mpi_limb_t)(B0)), \
+ "Ir" ((mpi_limb_t)(C2)), \
+ "Ir" ((mpi_limb_t)(C1)), \
+ "Ir" ((mpi_limb_t)(C0)) \
+--
diff --git a/gnu/packages/patches/liblinphone-jsoncpp.patch b/gnu/packages/patches/liblinphone-jsoncpp.patch
new file mode 100644
index 0000000000..d012b07870
--- /dev/null
+++ b/gnu/packages/patches/liblinphone-jsoncpp.patch
@@ -0,0 +1,82 @@
+diff --git a/cmake/FindJsonCPP.cmake b/cmake/FindJsonCPP.cmake
+index 59e971a58..18260fde8 100644
+--- a/cmake/FindJsonCPP.cmake
++++ b/cmake/FindJsonCPP.cmake
+@@ -39,10 +39,11 @@
+ # JsonCPP_FOUND - The jsoncpp library has been found
+ # JsonCPP_TARGET - The name of the CMake target for the jsoncpp library
+
++if(TARGET jsoncpp_lib OR TARGET jsoncpp_static OR TARGET PkgConfig::jsoncpp)
+
+-if(TARGET jsoncpp_lib OR TARGET jsoncpp_static)
+-
+- if(TARGET jsoncpp_lib)
++ if(TARGET PkgConfig::jsoncpp)
++ set(JsonCPP_TARGET PkgConfig::jsoncpp)
++ elseif(TARGET jsoncpp_lib)
+ set(JsonCPP_TARGET jsoncpp_lib)
+ else()
+ set(JsonCPP_TARGET jsoncpp_static)
+@@ -57,24 +58,50 @@ if(TARGET jsoncpp_lib OR TARGET jsoncpp_static)
+ mark_as_advanced(JsonCPP_TARGET)
+
+ else()
+-
+- set(_OPTIONS "CONFIG")
++ find_package(PkgConfig QUIET)
++
++ set(_OPTIONS1 "CONFIG")
++ set(_OPTIONS2 "IMPORTED_TARGET") # for pkg_check_modules fallback
++
+ if(JsonCPP_FIND_REQUIRED)
+- list(APPEND _OPTIONS "REQUIRED")
+- endif()
+- if(JsonCPP_FIND_QUIETLY)
+- list(APPEND _OPTIONS "QUIET")
++ if(PKG_CONFIG_FOUND)
++ list(APPEND _OPTIONS2 "REQUIRED")
++ else()
++ list(APPEND _OPTIONS1 "REQUIRED")
++ endif()
+ endif()
+- if(JsonCPP_FIND_VERSION)
+- list(PREPEND _OPTIONS "${jsoncpp_FIND_VERSION}")
++ if(JsonCPP_FIND_QUIETLY)
++ list(APPEND _OPTIONS1 "QUIET")
++ list(APPEND _OPTIONS2 "QUIET")
+ endif()
+- if(JsonCPP_FIND_EXACT)
+- list(APPEND _OPTIONS "EXACT")
++ if(PKG_CONFIG_FOUND)
++ if(JsonCPP_FIND_VERSION)
++ if(JsonCPP_FIND_EXACT)
++ list(APPEND _OPTIONS2 "jsoncpp=${JsonCPP_FIND_VERSION}")
++ else()
++ list(APPEND _OPTIONS2 "jsoncpp>=${JsonCPP_FIND_VERSION}")
++ endif()
++ else()
++ list(APPEND _OPTIONS2 "jsoncpp")
++ endif()
++ else()
++ if(JsonCPP_FIND_VERSION)
++ list(PREPEND _OPTIONS1 "${jsoncpp_FIND_VERSION}")
++ endif()
++ if(JsonCPP_FIND_EXACT)
++ list(APPEND _OPTIONS1 "EXACT")
++ endif()
+ endif()
+
+- find_package(jsoncpp ${_OPTIONS})
++ find_package(jsoncpp ${_OPTIONS1})
++
++ if(NOT JsonCPP_FOUND)
++ pkg_check_modules(jsoncpp ${_OPTIONS2})
++ endif()
+
+- if(TARGET jsoncpp_lib)
++ if(TARGET PkgConfig::jsoncpp)
++ set(JsonCPP_TARGET jsoncpp)
++ elseif(TARGET jsoncpp_lib)
+ set(JsonCPP_TARGET jsoncpp_lib)
+ else()
+ set(JsonCPP_TARGET jsoncpp_static)
diff --git a/gnu/packages/patches/libmygpo-qt-fix-qt-5.11.patch b/gnu/packages/patches/libmygpo-qt-fix-qt-5.11.patch
deleted file mode 100644
index 69673c90ee..0000000000
--- a/gnu/packages/patches/libmygpo-qt-fix-qt-5.11.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 1b53767b988b339aac8b353327a1542b2a0c0610 Mon Sep 17 00:00:00 2001
-From: Andreas Sturmlechner <andreas.sturmlechner@gmail.com>
-Date: Sun, 15 Apr 2018 22:29:33 +0200
-Subject: [PATCH] Fix build with Qt 5.11_beta3 (dropping qt5_use_modules)
-
----
- CMakeLists.txt | 3 ---
- src/CMakeLists.txt | 8 ++++++--
- tests/CMakeLists.txt | 12 +++++++++---
- 3 files changed, 15 insertions(+), 8 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index eb006d9..fa4b0cb 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -34,9 +34,6 @@ else()
- set( QT_DONT_USE_QTGUI TRUE )
- include( ${QT_USE_FILE} )
-
-- macro(qt5_use_modules)
-- endmacro()
--
- macro(qt_wrap_cpp)
- qt4_wrap_cpp(${ARGN})
- endmacro()
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index 802125b..253e81e 100644
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -79,9 +79,13 @@ QT_WRAP_CPP(LIBMYGPO_QT_MOC_SRC ${LIBMYGPO_QT_MOC_H} )
-
- add_library( ${MYGPO_QT_TARGET_NAME} SHARED ${LIBMYGPO_QT_SRC} ${LIBMYGPO_QT_MOC_SRC} )
-
--target_link_libraries( ${MYGPO_QT_TARGET_NAME} ${QJSON_LIBRARIES} ${QT_QTCORE_LIBRARY} ${QT_QTNETWORK_LIBRARY} )
- set_target_properties( ${MYGPO_QT_TARGET_NAME} PROPERTIES VERSION ${MYGPO_QT_VERSION} SOVERSION ${MYGPO_QT_SONAME} DEFINE_SYMBOL MYGPO_MAKEDLL)
--qt5_use_modules( ${MYGPO_QT_TARGET_NAME} Core Network )
-+
-+if( NOT BUILD_WITH_QT4 )
-+ target_link_libraries( ${MYGPO_QT_TARGET_NAME} Qt5::Core Qt5::Network)
-+else()
-+ target_link_libraries( ${MYGPO_QT_TARGET_NAME} ${QT_QTCORE_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QJSON_LIBRARIES})
-+endif()
-
- install( TARGETS ${MYGPO_QT_TARGET_NAME} EXPORT ${MYGPO_QT_TARGET_NAME}Export DESTINATION ${LIB_INSTALL_DIR} )
-
-diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
-index a3e3223..4f77158 100644
---- a/tests/CMakeLists.txt
-+++ b/tests/CMakeLists.txt
-@@ -11,11 +11,15 @@ include_directories( ${QJSON_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CU
-
- # UrlBuilder library
- add_library( UrlBuilder ${TESTOBJECTS_SRCDIR}/UrlBuilder.cpp ${TESTOBJECTS_SRCDIR}/Config.cpp )
--qt5_use_modules( UrlBuilder Core )
-+if( NOT BUILD_WITH_QT4 )
-+ target_link_libraries( UrlBuilder Qt5::Core )
-+endif()
- # JSONCreator library
- QT_WRAP_CPP(LIBMYGPO_QT_MOC_SRC ${TESTOBJECTS_SRCDIR}/EpisodeAction.h ${TESTOBJECTS_SRCDIR}/EpisodeAction_p.h )
- add_library( JsonCreator ${TESTOBJECTS_SRCDIR}/JsonCreator.cpp ${TESTOBJECTS_SRCDIR}/EpisodeAction.cpp ${TESTOBJECTS_SRCDIR}/qjsonwrapper/Json.cpp ${LIBMYGPO_QT_MOC_SRC})
--qt5_use_modules( JsonCreator Core Network )
-+if( NOT BUILD_WITH_QT4 )
-+ target_link_libraries( JsonCreator Qt5::Core Qt5::Network )
-+endif()
-
- set( EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR} )
-
-@@ -25,7 +29,9 @@ macro(add_libmygpo_test _source)
- add_executable(${_name} ${_source} ${${_name}_MOC_SRC})
- target_link_libraries(${_name} ${QT_QTCORE_LIBRARY} ${QT_QTTEST_LIBRARY} ${QT_QTNETWORK_LIBRARY})
- add_test(${_name}-test ${EXECUTABLE_OUTPUT_PATH}/${_name})
-- qt5_use_modules(${_name} Network Test)
-+ if( NOT BUILD_WITH_QT4 )
-+ target_link_libraries(${_name} Qt5::Network Qt5::Test)
-+ endif()
- endmacro(add_libmygpo_test)
-
- add_libmygpo_test( UrlBuilderTest.cpp )
diff --git a/gnu/packages/patches/libmygpo-qt-missing-qt5-modules.patch b/gnu/packages/patches/libmygpo-qt-missing-qt5-modules.patch
deleted file mode 100644
index aa9ed2c0f7..0000000000
--- a/gnu/packages/patches/libmygpo-qt-missing-qt5-modules.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 0d76d960727018bddf04c6cc89552af69aaa7e55 Mon Sep 17 00:00:00 2001
-From: Andreas Sturmlechner <andreas.sturmlechner@gmail.com>
-Date: Sun, 15 Apr 2018 22:20:34 +0200
-Subject: [PATCH] Add missing Qt5Network, Qt5Test, make BUILD_WITH_QT4 more
- strict
-
----
- CMakeLists.txt | 22 +++++++++++-----------
- 1 file changed, 11 insertions(+), 11 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 2a1f652..eb006d9 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -5,25 +5,25 @@ project( libmygpo-qt )
- set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
- set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII" )
-
--option(BUILD_WITH_QT4 "Build libmygpo-qt with Qt4 no matter if Qt5 was found" OFF)
-+option(BUILD_WITH_QT4 "Build libmygpo-qt with Qt4" OFF)
-
- if( NOT BUILD_WITH_QT4 )
-- find_package(Qt5Core QUIET)
-- if( Qt5Core_DIR )
-- set(MYGPO_QT_VERSION_SUFFIX 5)
--
-- macro(qt_wrap_cpp)
-- qt5_wrap_cpp(${ARGN})
-- endmacro()
-+ if( MYGPO_BUILD_TESTS )
-+ find_package(Qt5 REQUIRED COMPONENTS Core Network Test CONFIG)
-+ else()
-+ find_package(Qt5 REQUIRED COMPONENTS Core Network CONFIG)
- endif()
-+ set(MYGPO_QT_VERSION_SUFFIX 5)
-+
-+ macro(qt_wrap_cpp)
-+ qt5_wrap_cpp(${ARGN})
-+ endmacro()
-
- # pkg-config names of QtCore and QtNetwork are Qt5Core and Qt5Network for
- # Qt5
- set(MYGPO_QT_MAJOR_VERSION "5")
- set(MYGPO_QT4_QJSON_DEP "")
--endif()
--
--if( NOT Qt5Core_DIR )
-+else()
- message(STATUS "Could not find Qt5, searching for Qt4 instead...")
- message(STATUS "Qt4 Support is deprecated, building with Qt4 is no longer officially supported")
- if( MYGPO_BUILD_TESTS )
diff --git a/gnu/packages/patches/libosinfo-libxml2-fix.patch b/gnu/packages/patches/libosinfo-libxml2-fix.patch
new file mode 100644
index 0000000000..71d620532c
--- /dev/null
+++ b/gnu/packages/patches/libosinfo-libxml2-fix.patch
@@ -0,0 +1,83 @@
+From 0adf38535637ec668e658d43f04f60f11f51574f Mon Sep 17 00:00:00 2001
+From: Roman Bogorodskiy <bogorodskiy@gmail.com>
+Date: Thu, 10 Apr 2025 13:54:02 +0200
+Subject: [PATCH] loader: don't use libxml2 deprecated APIs
+
+Address the following items:
+
+ - Deprecated direct access to buf's content
+ - Mismatching error function signature
+ - Deprecated direct access to ctxt's lastError
+
+Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
+---
+ osinfo/osinfo_loader.c | 42 +++++++++++++++++++++++-------------------
+ 1 file changed, 23 insertions(+), 19 deletions(-)
+
+diff --git a/osinfo/osinfo_loader.c b/osinfo/osinfo_loader.c
+index 0a9004af..b3fd4535 100644
+--- a/osinfo/osinfo_loader.c
++++ b/osinfo/osinfo_loader.c
+@@ -354,7 +354,7 @@ osinfo_loader_doc(const char *xpath,
+ xmlXPathFreeObject(obj);
+ OSINFO_LOADER_SET_ERROR(err, "Cannot format stylesheet");
+ }
+- ret = g_strdup((char *)buf->content);
++ ret = g_strdup((char *)xmlBufferContent(buf));
+
+ xmlBufferFree(buf);
+ xmlXPathFreeObject(obj);
+@@ -1902,28 +1902,32 @@ static void osinfo_loader_root(OsinfoLoader *loader,
+ }
+
+ static void
+-catchXMLError(void *ctx, const char *msg ATTRIBUTE_UNUSED, ...)
++catchXMLError(void *ctx, const char *msg, ...)
+ {
+ xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
++ const xmlError *xmlErr = NULL;
++ g_autofree gchar *xmlmsg = NULL;
+
+- if (ctxt && ctxt->_private) {
+- GError **err = ctxt->_private;
+- if (!error_is_set(err)) {
+- gchar *xmlmsg;
+- if (ctxt->lastError.file) {
+- xmlmsg = g_strdup_printf("%s:%d: %s",
+- ctxt->lastError.file,
+- ctxt->lastError.line,
+- ctxt->lastError.message);
+- } else {
+- xmlmsg = g_strdup_printf("at line %d: %s",
+- ctxt->lastError.line,
+- ctxt->lastError.message);
+- }
+- OSINFO_LOADER_SET_ERROR(ctxt->_private, xmlmsg);
+- g_free(xmlmsg);
+- }
++ if (!ctxt || !ctxt->_private)
++ return;
++
++ if (error_is_set(ctxt->_private))
++ return;
++
++ if (!(xmlErr = xmlCtxtGetLastError(ctx)))
++ return;
++
++ if (xmlErr->file) {
++ xmlmsg = g_strdup_printf("%s:%d: %s",
++ xmlErr->file,
++ xmlErr->line,
++ xmlErr->message);
++ } else {
++ xmlmsg = g_strdup_printf("at line %d: %s",
++ xmlErr->line,
++ xmlErr->message);
+ }
++ OSINFO_LOADER_SET_ERROR(ctxt->_private, xmlmsg);
+ }
+
+ static void osinfo_loader_process_xml(OsinfoLoader *loader,
+--
+GitLab
+
diff --git a/gnu/packages/patches/libspatialite-libxml2-2.14.patch b/gnu/packages/patches/libspatialite-libxml2-2.14.patch
new file mode 100644
index 0000000000..d45897aac7
--- /dev/null
+++ b/gnu/packages/patches/libspatialite-libxml2-2.14.patch
@@ -0,0 +1,52 @@
+Source: https://www.gaia-gis.it/fossil/libspatialite/tktview?name=ac85f0fca3
+
+Index: spatialite-5.1.0/configure.ac
+===================================================================
+--- a/configure.ac
++++ b/configure.ac
+@@ -61,6 +61,8 @@ AH_TEMPLATE([OMIT_FREEXL],
+ [Should be defined in order to disable FREEXL support.])
+ AH_TEMPLATE([ENABLE_LIBXML2],
+ [Should be defined in order to enable LIBXML2 support.])
++AH_TEMPLATE([ENABLE_LIBXML2_NANOHTTP],
++ [Should be defined in order to enable LIBXML2 HTTP support.])
+ AH_TEMPLATE([ENABLE_MINIZIP],
+ [Should be defined in order to enable MiniZIP support.])
+ AH_TEMPLATE([ENABLE_GEOPACKAGE],
+@@ -441,6 +443,7 @@ if test x"$enable_libxml2" != "xno"; the
+ AC_SUBST(LIBXML2_CFLAGS)
+ AC_SUBST(LIBXML2_LIBS)
+ AC_DEFINE(ENABLE_LIBXML2)
++ AC_SEARCH_LIBS(xmlNanoHTTPCleanup,xml2,AC_DEFINE(ENABLE_LIBXML2_NANOHTTP),,)
+ fi
+
+ #-----------------------------------------------------------------------
+Index: spatialite-5.1.0/src/wfs/wfs_in.c
+===================================================================
+--- a/src/wfs/wfs_in.c
++++ b/src/wfs/wfs_in.c
+@@ -76,7 +76,10 @@ Regione Toscana - Settore Sistema Inform
+ #ifdef ENABLE_LIBXML2 /* LIBXML2 enabled: supporting XML documents */
+
+ #include <libxml/parser.h>
++
++#ifdef ENABLE_LIBXML2_NANOHTTP
+ #include <libxml/nanohttp.h>
++#endif
+
+ #define MAX_GTYPES 28
+
+@@ -4636,8 +4639,13 @@ get_wfs_schema_column_info (gaiaWFScolum
+ SPATIALITE_DECLARE void
+ reset_wfs_http_connection (void)
+ {
++#ifdef ENABLE_LIBXML2_NANOHTTP
+ /* Resets the libxml2 "nano HTTP": useful when changing the HTTP_PROXY settings */
+ xmlNanoHTTPCleanup ();
++#else
++/* LIBXML2 doesn't have HTTP support: does absolutely nothing */
++ return;
++#endif
+ }
+
+ #else /* LIBXML2 isn't enabled */
diff --git a/gnu/packages/patches/libvirt-add-install-prefix.patch b/gnu/packages/patches/libvirt-add-install-prefix.patch
index 041f39e097..30e35567ad 100644
--- a/gnu/packages/patches/libvirt-add-install-prefix.patch
+++ b/gnu/packages/patches/libvirt-add-install-prefix.patch
@@ -1,6 +1,6 @@
Patch from NixOS:
- https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/libvirt/0001-meson-patch-in-an-install-prefix-for-building-on-nix.patch
+ https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/li/libvirt/0001-meson-patch-in-an-install-prefix-for-building-on-nix.patch
From 58c07f1d59ef683faf8b747e40bd75401306acf4 Mon Sep 17 00:00:00 2001
From: Euan Kemp <euank@euank.com>
@@ -406,10 +406,10 @@ index 3b859ea7b4..ccddb3e805 100644
]
endif
diff --git a/src/security/apparmor/meson.build b/src/security/apparmor/meson.build
-index b9257c816d..98701755d8 100644
+index 09d9fac02c..ee0c74ceec 100644
--- a/src/security/apparmor/meson.build
+++ b/src/security/apparmor/meson.build
-@@ -57,7 +57,7 @@ foreach name : apparmor_gen_profiles
+@@ -20,16 +20,16 @@ foreach name : apparmor_gen_profiles
output: name,
configuration: apparmor_gen_profiles_conf,
install: true,
@@ -417,39 +417,25 @@ index b9257c816d..98701755d8 100644
+ install_dir: install_prefix + apparmor_dir,
)
endforeach
-
-@@ -68,13 +68,13 @@ foreach name : apparmor_gen_abstractions
- command: apparmor_gen_cmd,
- capture: true,
- install: true,
-- install_dir: apparmor_dir / 'abstractions',
-+ install_dir: install_prefix + apparmor_dir / 'abstractions',
- )
- endforeach
-
+
+ install_data(
+ [ 'libvirt-qemu', 'libvirt-lxc' ],
+- install_dir: apparmor_dir / 'abstractions',
++ install_dir: install_prefix + apparmor_dir / 'abstractions',
+ )
+
install_data(
[ 'TEMPLATE.qemu', 'TEMPLATE.lxc' ],
- install_dir: apparmor_dir / 'libvirt',
+ install_dir: install_prefix + apparmor_dir / 'libvirt',
)
-
- if not conf.has('WITH_APPARMOR_3')
-@@ -83,7 +83,7 @@ if not conf.has('WITH_APPARMOR_3')
- # files in order to limit the amount of filesystem clutter.
- install_data(
- 'usr.lib.libvirt.virt-aa-helper.local',
-- install_dir: apparmor_dir / 'local',
-+ install_dir: install_prefix + apparmor_dir / 'local',
- rename: 'usr.lib.libvirt.virt-aa-helper',
- )
- endif
diff --git a/src/storage/meson.build b/src/storage/meson.build
index 404d6a6941..fb4e67a0a8 100644
--- a/src/storage/meson.build
+++ b/src/storage/meson.build
@@ -126,9 +126,9 @@ if conf.has('WITH_STORAGE')
}
-
+
virt_install_dirs += [
- confdir / 'storage',
- confdir / 'storage' / 'autostart',
@@ -459,20 +445,27 @@ index 404d6a6941..fb4e67a0a8 100644
+ install_prefix + runstatedir / 'libvirt' / 'storage',
]
endif
-
+
diff --git a/tools/meson.build b/tools/meson.build
-index 1bb84be0be..e04a4e986d 100644
+index a099148d3c..d0d6510f17 100644
--- a/tools/meson.build
+++ b/tools/meson.build
-@@ -121,7 +121,7 @@ if conf.has('WITH_LOGIN_SHELL')
+@@ -123,12 +123,12 @@ if conf.has('WITH_LOGIN_SHELL')
install_rpath: libvirt_rpath,
)
-
+
- install_data('virt-login-shell.conf', install_dir: sysconfdir / 'libvirt')
+ install_data('virt-login-shell.conf', install_dir: install_prefix + sysconfdir / 'libvirt')
+
+ # Install the sysuser config for the setgid binary
+ install_data(
+ 'libvirt-login-shell.sysusers.conf',
+- install_dir: sysusersdir,
++ install_dir: install_prefix + sysusersdir,
+ rename: [ 'libvirt-login-shell.conf' ],
+ )
endif
-
- if host_machine.system() == 'windows'
+
diff --git a/tools/ssh-proxy/meson.build b/tools/ssh-proxy/meson.build
index e9f312fa25..95d5d8fe0b 100644
--- a/tools/ssh-proxy/meson.build
diff --git a/gnu/packages/patches/libvpx-CVE-2025-5262.patch b/gnu/packages/patches/libvpx-CVE-2025-5262.patch
deleted file mode 100644
index 413487126b..0000000000
--- a/gnu/packages/patches/libvpx-CVE-2025-5262.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-Copied from <https://chromium.googlesource.com/webm/libvpx/+/1c758781c428c0e895645b95b8ff1512b6bdcecb%5E%21/>
-See also: <https://www.mozilla.org/en-US/security/advisories/mfsa2025-44/#CVE-2025-5262>
- and: <https://hg-edge.mozilla.org/releases/mozilla-esr128/rev/69f53ce5ef0bca2816a3b13cae570e835938c010>
-
-Author: James Zern <jzern@google.com> Thu May 01 02:28:48 2025
-
-vpx_codec_enc_init_multi: fix double free on init failure
-
-In `vp8e_init()`, the encoder would take ownership of
-`mr_cfg.mr_low_res_mode_info` even if `vp8_create_compressor()` failed.
-This caused confusion at the call site as other failures in
-`vp8e_init()` did not result in ownership transfer and the caller would
-free the memory. In the case of `vp8_create_compressor()` failure both
-the caller and `vpx_codec_destroy()` would free the memory, causing a
-crash. `mr_*` related variables are now cleared on failure to prevent
-this situation.
-
-Bug: webm:413411335
-Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1962421
-Change-Id: Ie951d42b9029a586bf9059b650bd8863db9f9ffc
-
---- a/vp8/vp8_cx_iface.c
-+++ b/vp8/vp8_cx_iface.c
-@@ -727,17 +727,27 @@ static vpx_codec_err_t vp8e_init(vpx_cod
- priv->pts_offset_initialized = 0;
- priv->timestamp_ratio.den = priv->cfg.g_timebase.den;
- priv->timestamp_ratio.num = (int64_t)priv->cfg.g_timebase.num;
- priv->timestamp_ratio.num *= TICKS_PER_SEC;
- reduce_ratio(&priv->timestamp_ratio);
-
- set_vp8e_config(&priv->oxcf, priv->cfg, priv->vp8_cfg, mr_cfg);
- priv->cpi = vp8_create_compressor(&priv->oxcf);
-- if (!priv->cpi) res = VPX_CODEC_MEM_ERROR;
-+ if (!priv->cpi) {
-+#if CONFIG_MULTI_RES_ENCODING
-+ // Release ownership of mr_cfg->mr_low_res_mode_info on failure. This
-+ // prevents ownership confusion with the caller and avoids a double
-+ // free when vpx_codec_destroy() is called on this instance.
-+ priv->oxcf.mr_total_resolutions = 0;
-+ priv->oxcf.mr_encoder_id = 0;
-+ priv->oxcf.mr_low_res_mode_info = NULL;
-+#endif
-+ res = VPX_CODEC_MEM_ERROR;
-+ }
- }
- }
-
- return res;
- }
-
- static vpx_codec_err_t vp8e_destroy(vpx_codec_alg_priv_t *ctx) {
- #if CONFIG_MULTI_RES_ENCODING
---- a/vpx/src/vpx_encoder.c
-+++ b/vpx/src/vpx_encoder.c
-@@ -109,16 +109,19 @@ vpx_codec_err_t vpx_codec_enc_init_multi
- mr_cfg.mr_down_sampling_factor.num = dsf->num;
- mr_cfg.mr_down_sampling_factor.den = dsf->den;
-
- ctx->iface = iface;
- ctx->name = iface->name;
- ctx->priv = NULL;
- ctx->init_flags = flags;
- ctx->config.enc = cfg;
-+ // ctx takes ownership of mr_cfg.mr_low_res_mode_info if and only if
-+ // this call succeeds. The first ctx entry in the array is
-+ // responsible for freeing the memory.
- res = ctx->iface->init(ctx, &mr_cfg);
- }
-
- if (res) {
- const char *error_detail = ctx->priv ? ctx->priv->err_detail : NULL;
- /* Destroy current ctx */
- ctx->err_detail = error_detail;
- vpx_codec_destroy(ctx);
-
diff --git a/gnu/packages/patches/libxcb-path-max.patch b/gnu/packages/patches/libxcb-path-max.patch
new file mode 100644
index 0000000000..64a870569f
--- /dev/null
+++ b/gnu/packages/patches/libxcb-path-max.patch
@@ -0,0 +1,37 @@
+Taken from:
+https://gitlab.freedesktop.org/xorg/lib/libxcb/-/commit/6a7661f60a70ff42c64b32a725edcbee790d1c0d
+
+From 6a7661f60a70ff42c64b32a725edcbee790d1c0d Mon Sep 17 00:00:00 2001
+From: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date: Tue, 8 Jul 2025 13:29:00 +0200
+Subject: [PATCH] Get rid of PATH_MAX
+
+There could be no upper limit on the length of a path according
+to POSIX, therefore these macros may not be defined at all on
+some systems (such as GNU Hurd). There is however a limit on
+sizeof(struct sockaddr_un.sun_path), so use it.
+
+Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Part-of: <https://gitlab.freedesktop.org/xorg/lib/libxcb/-/merge_requests/65>
+---
+ src/xcb_util.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/xcb_util.c b/src/xcb_util.c
+index 5124d14..017583e 100644
+--- a/src/xcb_util.c
++++ b/src/xcb_util.c
+@@ -104,7 +104,9 @@ static int _xcb_parse_display_path_to_socket(const char *name, char **host, char
+ int *displayp, int *screenp)
+ {
+ struct stat sbuf;
+- char path[PATH_MAX];
++ /* In addition to the AF_UNIX path, there may be a screen number.
++ * The trailing \0 is already accounted in the size of sun_path. */
++ char path[sizeof(((struct sockaddr_un*)0)->sun_path) + 1 + 10];
+ size_t len;
+ int _screen = 0, res;
+
+--
+GitLab
+
diff --git a/gnu/packages/patches/libxslt-generated-ids.patch b/gnu/packages/patches/libxslt-generated-ids.patch
deleted file mode 100644
index 1cd2363d6a..0000000000
--- a/gnu/packages/patches/libxslt-generated-ids.patch
+++ /dev/null
@@ -1,173 +0,0 @@
-This makes generated IDs deterministic.
-
-Written by Daniel Veillard.
-
-This should be fixed in next release (2.29).
-See https://bugzilla.gnome.org/show_bug.cgi?id=751621.
-
-diff --git a/libxslt/functions.c b/libxslt/functions.c
-index 6448bde..5b00a6d 100644
---- a/libxslt/functions.c
-+++ b/libxslt/functions.c
-@@ -651,6 +651,63 @@ xsltFormatNumberFunction(xmlXPathParserContextPtr ctxt, int nargs)
- }
-
- /**
-+ * xsltCleanupIds:
-+ * @ctxt: the transformation context
-+ * @root: the root of the resulting document
-+ *
-+ * This clean up ids which may have been saved in Element contents
-+ * by xsltGenerateIdFunction() to provide stable IDs on elements.
-+ *
-+ * Returns the number of items cleaned or -1 in case of error
-+ */
-+int
-+xsltCleanupIds(xsltTransformContextPtr ctxt, xmlNodePtr root) {
-+ xmlNodePtr cur;
-+ int count = 0;
-+
-+ if ((ctxt == NULL) || (root == NULL))
-+ return(-1);
-+ if (root->type != XML_ELEMENT_NODE)
-+ return(-1);
-+
-+ cur = root;
-+ while (cur != NULL) {
-+ if (cur->type == XML_ELEMENT_NODE) {
-+ if (cur->content != NULL) {
-+ cur->content = NULL;
-+ count++;
-+ }
-+ if (cur->children != NULL) {
-+ cur = cur->children;
-+ continue;
-+ }
-+ }
-+ if (cur->next != NULL) {
-+ cur = cur->next;
-+ continue;
-+ }
-+ do {
-+ cur = cur->parent;
-+ if (cur == NULL)
-+ break;
-+ if (cur == (xmlNodePtr) root) {
-+ cur = NULL;
-+ break;
-+ }
-+ if (cur->next != NULL) {
-+ cur = cur->next;
-+ break;
-+ }
-+ } while (cur != NULL);
-+ }
-+
-+fprintf(stderr, "Attributed %d IDs for element, cleaned up %d\n",
-+ ctxt->nextid, count);
-+
-+ return(count);
-+}
-+
-+/**
- * xsltGenerateIdFunction:
- * @ctxt: the XPath Parser context
- * @nargs: the number of arguments
-@@ -701,7 +758,39 @@ xsltGenerateIdFunction(xmlXPathParserContextPtr ctxt, int nargs){
- if (obj)
- xmlXPathFreeObject(obj);
-
-- val = (long)((char *)cur - (char *)&base_address);
-+ /*
-+ * Try to provide stable ID for generated document:
-+ * - usually ID are computed to be placed on elements via attributes
-+ * so using the element as the node for the ID
-+ * - the cur->content should be a correct placeholder for this, we use
-+ * it to hold element node numbers in xmlXPathOrderDocElems to
-+ * speed up XPath too
-+ * - xsltCleanupIds() clean them up before handing the XSLT output
-+ * to the API client.
-+ * - other nodes types use the node address method but that should
-+ * not end up in resulting document ID
-+ * - we can enable this by default without risk of performance issues
-+ * only the one pass xsltCleanupIds() is added
-+ */
-+ if (cur->type == XML_ELEMENT_NODE) {
-+ if (cur->content == NULL) {
-+ xsltTransformContextPtr tctxt;
-+
-+ tctxt = xsltXPathGetTransformContext(ctxt);
-+ if (tctxt == NULL) {
-+ val = (long)((char *)cur - (char *)&base_address);
-+ } else {
-+ tctxt->nextid++;
-+ val = tctxt->nextid;
-+ cur->content = (void *) (val);
-+ }
-+ } else {
-+ val = (long) cur->content;
-+ }
-+ } else {
-+ val = (long)((char *)cur - (char *)&base_address);
-+ }
-+
- if (val >= 0) {
- sprintf((char *)str, "idp%ld", val);
- } else {
-diff --git a/libxslt/functions.h b/libxslt/functions.h
-index e0e0bf9..4a1e163 100644
---- a/libxslt/functions.h
-+++ b/libxslt/functions.h
-@@ -64,6 +64,13 @@ XSLTPUBFUN void XSLTCALL
- int nargs);
-
- /*
-+ * Cleanup for ID generation
-+ */
-+XSLTPUBFUN int XSLTCALL
-+ xsltCleanupIds (xsltTransformContextPtr ctxt,
-+ xmlNodePtr root);
-+
-+/*
- * And the registration
- */
-
-diff --git a/libxslt/transform.c b/libxslt/transform.c
-index 24f9eb2..2bdf6bf 100644
---- a/libxslt/transform.c
-+++ b/libxslt/transform.c
-@@ -700,6 +700,7 @@ xsltNewTransformContext(xsltStylesheetPtr style, xmlDocPtr doc) {
- cur->traceCode = (unsigned long*) &xsltDefaultTrace;
- cur->xinclude = xsltGetXIncludeDefault();
- cur->keyInitLevel = 0;
-+ cur->nextid = 0;
-
- return(cur);
-
-@@ -6092,6 +6093,13 @@ xsltApplyStylesheetInternal(xsltStylesheetPtr style, xmlDocPtr doc,
- if (root != NULL) {
- const xmlChar *doctype = NULL;
-
-+ /*
-+ * cleanup ids which may have been saved in Elements content ptrs
-+ */
-+ if (ctxt->nextid != 0) {
-+ xsltCleanupIds(ctxt, root);
-+ }
-+
- if ((root->ns != NULL) && (root->ns->prefix != NULL))
- doctype = xmlDictQLookup(ctxt->dict, root->ns->prefix, root->name);
- if (doctype == NULL)
-diff --git a/libxslt/xsltInternals.h b/libxslt/xsltInternals.h
-index 95e8fe6..8eedae4 100644
---- a/libxslt/xsltInternals.h
-+++ b/libxslt/xsltInternals.h
-@@ -1782,6 +1782,8 @@ struct _xsltTransformContext {
- int maxTemplateVars;
- unsigned long opLimit;
- unsigned long opCount;
-+
-+ unsigned long nextid;/* for generating stable ids */
- };
-
- /**
diff --git a/gnu/packages/patches/libzmf-doxygen-1.14.patch b/gnu/packages/patches/libzmf-doxygen-1.14.patch
new file mode 100644
index 0000000000..46d05a2549
--- /dev/null
+++ b/gnu/packages/patches/libzmf-doxygen-1.14.patch
@@ -0,0 +1,30 @@
+From 48f94abff2fcc4943626a62c6180c60862288b08 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Fridrich=20=C5=A0trba?= <fridrich.strba@bluewin.ch>
+Date: Tue, 3 Jun 2025 11:57:29 +0200
+Subject: [PATCH 245/248] Install all files generated by doxygen
+
+Install the whole directory and do not pick only some file-types
+
+Change-Id: I743253696f3e57dfe70c6509b7d620dc2bf39e76
+---
+ docs/doxygen/Makefile.am | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/docs/doxygen/Makefile.am b/docs/doxygen/Makefile.am
+index 4351042..40a02e8 100644
+--- a/docs/doxygen/Makefile.am
++++ b/docs/doxygen/Makefile.am
+@@ -6,9 +6,7 @@ if WITH_LIBZMF_DOCS
+
+ install-data-am:
+ mkdir -p $(DESTDIR)$(docdir)/html
+- $(INSTALL_DATA) html/*.html $(DESTDIR)$(docdir)/html/
+- $(INSTALL_DATA) html/*.png $(DESTDIR)$(docdir)/html/
+- $(INSTALL_DATA) html/*.css $(DESTDIR)$(docdir)/html/
++ $(INSTALL_DATA) html/* $(DESTDIR)$(docdir)/html/
+
+ uninstall-am:
+ -rm -rf $(DESTDIR)$(docdir)/html
+--
+2.51.0
+
diff --git a/gnu/packages/patches/linphone-desktop-cmake-belcard.patch b/gnu/packages/patches/linphone-desktop-cmake-belcard.patch
new file mode 100644
index 0000000000..3cc573b938
--- /dev/null
+++ b/gnu/packages/patches/linphone-desktop-cmake-belcard.patch
@@ -0,0 +1,39 @@
+From 0216b81c46f2612b8acf33b1a7c5886db25f45ff Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Thu, 13 Jun 2024 16:04:29 -0400
+Subject: [PATCH] cmake: Fix BelCard cmake module name.
+
+* linphone-app/CMakeLists.txt: cmake: Fix BelCard cmake module name.
+
+Fixes: <https://gitlab.linphone.org/BC/public/linphone-desktop/-/issues/32>
+---
+ linphone-app/CMakeLists.txt | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/linphone-app/CMakeLists.txt b/linphone-app/CMakeLists.txt
+index d40842fa..f1c225a5 100644
+--- a/linphone-app/CMakeLists.txt
++++ b/linphone-app/CMakeLists.txt
+@@ -24,7 +24,7 @@ cmake_minimum_required(VERSION 3.22)
+
+
+ #Linphone targets
+-set(LINPHONE_PACKAGES LinphoneCxx Mediastreamer2 Belcard LibLinphone)
++set(LINPHONE_PACKAGES LinphoneCxx Mediastreamer2 BelCard LibLinphone)
+
+ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+
+@@ -115,7 +115,7 @@ set(PLUGIN_TARGETS ${LinphoneCxx_TARGET})
+ set(APP_TARGETS ${LinphoneCxx_TARGET}
+ ${BCToolbox_TARGET}#Logger/App
+ ${Mediastreamer2_TARGET}#MediastreamerUtils
+- ${Belcard_TARGET}#VCard Model
++ ${BelCard_TARGET}#VCard Model
+ ${LibLinphone_TARGET})#MediastreamerUtils
+
+ ####################################
+
+base-commit: e34beffe06802efcc5904d5059006ac0d2f7ef32
+--
+2.45.1
+
diff --git a/gnu/packages/patches/linphone-desktop-cmake-find-modules.patch b/gnu/packages/patches/linphone-desktop-cmake-find-modules.patch
new file mode 100644
index 0000000000..96353eef28
--- /dev/null
+++ b/gnu/packages/patches/linphone-desktop-cmake-find-modules.patch
@@ -0,0 +1,422 @@
+From 25bdfe9ad3a33e1db6e5db8290b3a5112f4d621e Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Fri, 14 Jun 2024 22:33:58 -0400
+Subject: [PATCH] cmake: Delete most CMake find modules.
+
+They do not appear to bring any value compared to the config files
+installed by each project, and cause issues like the following, at
+least when using system libraries:
+
+ -- Trying to find LibLinphone
+ CMake Error at linphone-app/cmake/FindLibLinphone.cmake:31 (include):
+ include could not find requested file:
+
+ LibLinphoneTargets
+ Call Stack (most recent call first):
+ linphone-app/CMakeLists.txt:108 (find_package)
+
+Fixes: <https://gitlab.linphone.org/BC/public/linphone-desktop/-/issues/30>
+---
+ linphone-app/cmake/FindBCToolbox.cmake | 60 ---------------------
+ linphone-app/cmake/FindBelcard.cmake | 44 ---------------
+ linphone-app/cmake/FindISpell.cmake | 47 ----------------
+ linphone-app/cmake/FindLibLinphone.cmake | 46 ----------------
+ linphone-app/cmake/FindLinphoneCxx.cmake | 45 ----------------
+ linphone-app/cmake/FindMediastreamer2.cmake | 49 -----------------
+ linphone-app/cmake/FindQtKeychain.cmake | 48 -----------------
+ 7 files changed, 339 deletions(-)
+ delete mode 100644 linphone-app/cmake/FindBCToolbox.cmake
+ delete mode 100644 linphone-app/cmake/FindBelcard.cmake
+ delete mode 100644 linphone-app/cmake/FindISpell.cmake
+ delete mode 100644 linphone-app/cmake/FindLibLinphone.cmake
+ delete mode 100644 linphone-app/cmake/FindLinphoneCxx.cmake
+ delete mode 100644 linphone-app/cmake/FindMediastreamer2.cmake
+ delete mode 100644 linphone-app/cmake/FindQtKeychain.cmake
+
+diff --git a/linphone-app/cmake/FindBCToolbox.cmake b/linphone-app/cmake/FindBCToolbox.cmake
+deleted file mode 100644
+index 707cc147..00000000
+--- a/linphone-app/cmake/FindBCToolbox.cmake
++++ /dev/null
+@@ -1,60 +0,0 @@
+-############################################################################
+-# FindBctoolbox.cmake
+-# Copyright (C) 2023 Belledonne Communications, Grenoble France
+-#
+-############################################################################
+-#
+-# This program is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU General Public License
+-# as published by the Free Software Foundation; either version 2
+-# of the License, or (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-#
+-############################################################################
+-
+-# This module will set the following variables in your project:
+-#
+-# BCToolbox_FOUND - The bctoolbox library has been found
+-# BCToolbox_TARGET - The name of the CMake target for the bctoolbox library
+-# BCToolbox_CMAKE_DIR - The bctoolbox CMake directory
+-# BCToolbox_CMAKE_UTILS - The path to the bctoolbox CMake utils script
+-# BCToolbox_tester_FOUND - The bctoolbox-tester library has been found
+-# BCToolbox_tester_TARGET - The name of the CMake target for the bctoolbox-tester library
+-
+-
+-if(NOT TARGET bctoolbox)
+- set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
+- include(GNUInstallDirs)
+- set(BCToolbox_CMAKE_DIR ${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/bctoolbox/cmake)
+- include(${BCToolbox_CMAKE_DIR}/bctoolboxTargets.cmake)
+-endif()
+-
+-set(_BCToolbox_REQUIRED_VARS BCToolbox_TARGET BCToolbox_CMAKE_DIR BCToolbox_CMAKE_UTILS)
+-set(_BCToolbox_CACHE_VARS ${_BCToolbox_REQUIRED_VARS})
+-
+-if(TARGET bctoolbox)
+- set(BCToolbox_TARGET bctoolbox)
+- get_target_property(_BCToolbox_SOURCE_DIR ${BCToolbox_TARGET} SOURCE_DIR)
+- set(BCToolbox_CMAKE_DIR "${_BCToolbox_SOURCE_DIR}/../cmake")
+- set(BCToolbox_CMAKE_UTILS "${BCToolbox_CMAKE_DIR}/BCToolboxCMakeUtils.cmake")
+- if(TARGET bctoolbox-tester)
+- set(BCToolbox_tester_FOUND TRUE)
+- set(BCToolbox_tester_TARGET bctoolbox-tester)
+- list(APPEND _BCToolbox_CACHE_VARS BCToolbox_tester_TARGET)
+- endif()
+-endif()
+-
+-include(FindPackageHandleStandardArgs)
+-find_package_handle_standard_args(BCToolbox
+- REQUIRED_VARS ${_BCToolbox_REQUIRED_VARS}
+- HANDLE_COMPONENTS
+-)
+-mark_as_advanced(${_BCToolbox_CACHE_VARS})
+diff --git a/linphone-app/cmake/FindBelcard.cmake b/linphone-app/cmake/FindBelcard.cmake
+deleted file mode 100644
+index ce89497c..00000000
+--- a/linphone-app/cmake/FindBelcard.cmake
++++ /dev/null
+@@ -1,44 +0,0 @@
+-############################################################################
+-# FindBelcard.cmake
+-# Copyright (C) 2023 Belledonne Communications, Grenoble France
+-#
+-############################################################################
+-#
+-# This program is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU General Public License
+-# as published by the Free Software Foundation; either version 2
+-# of the License, or (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-#
+-############################################################################
+-#
+-# Belcard_FOUND - The liblinphone library has been found
+-# Belcard_TARGET - The name of the CMake target
+-
+-if(NOT TARGET belcard)
+- set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
+- include(GNUInstallDirs)
+- include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/Belcard/cmake/BelcardTargets.cmake)
+-endif()
+-
+-set(_Belcard_REQUIRED_VARS Belcard_TARGET)
+-set(_Belcard_CACHE_VARS ${_Belcard_REQUIRED_VARS})
+-
+-if(TARGET belcard)
+- set(Belcard_TARGET belcard)
+-endif()
+-
+-include(FindPackageHandleStandardArgs)
+-find_package_handle_standard_args(Belcard
+- REQUIRED_VARS ${_Belcard_REQUIRED_VARS}
+- HANDLE_COMPONENTS
+-)
+-mark_as_advanced(${_Belcard_CACHE_VARS})
+diff --git a/linphone-app/cmake/FindISpell.cmake b/linphone-app/cmake/FindISpell.cmake
+deleted file mode 100644
+index 7a9269fa..00000000
+--- a/linphone-app/cmake/FindISpell.cmake
++++ /dev/null
+@@ -1,47 +0,0 @@
+-############################################################################
+-# FindISpell.cmake
+-# Copyright (C) 2023 Belledonne Communications, Grenoble France
+-#
+-############################################################################
+-#
+-# This program is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU General Public License
+-# as published by the Free Software Foundation; either version 2
+-# of the License, or (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-#
+-############################################################################
+-#
+-# - Find the ispell include files and library
+-#
+-# ISpell_FOUND - system has lib ispell
+-# ISpell_SOURCE_DIR - the ispell include directory
+-# ISpell_BINARY_DIR - the ispell library directory
+-
+-if(NOT TARGET ${ISPELL_TARGET_NAME})
+- set(EXPORT_PATH ${ISPELL_OUTPUT_DIR})
+- include(GNUInstallDirs)
+- include(${EXPORT_PATH}/${CMAKE_INSTALL_LIBDIR}/cmake/${ISPELL_TARGET_NAME}/${ISPELL_TARGET_NAME}Config.cmake)
+-endif()
+-
+-set(_ISpell_REQUIRED_VARS ISpell_TARGET)
+-set(_ISpell_CACHE_VARS ${_ISpell_REQUIRED_VARS})
+-
+-if(TARGET ${ISPELL_TARGET_NAME})
+- set(ISpell_TARGET ${ISPELL_TARGET_NAME})
+-endif()
+-
+-include(FindPackageHandleStandardArgs)
+-find_package_handle_standard_args(ISpell
+- REQUIRED_VARS ${_ISpell_REQUIRED_VARS}
+- HANDLE_COMPONENTS
+-)
+-mark_as_advanced(${_ISpell_CACHE_VARS})
+diff --git a/linphone-app/cmake/FindLibLinphone.cmake b/linphone-app/cmake/FindLibLinphone.cmake
+deleted file mode 100644
+index 826bb0d8..00000000
+--- a/linphone-app/cmake/FindLibLinphone.cmake
++++ /dev/null
+@@ -1,46 +0,0 @@
+-############################################################################
+-# FindLinphone.cmake
+-# Copyright (C) 2023 Belledonne Communications, Grenoble France
+-#
+-############################################################################
+-#
+-# This program is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU General Public License
+-# as published by the Free Software Foundation; either version 2
+-# of the License, or (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-#
+-############################################################################
+-#
+-# LibLinphone_FOUND - The liblinphone library has been found
+-# LibLinphone_TARGET - The name of the CMake target for the liblinphone library
+-# LibLinphone_PLUGINS_DIR - The directory where to install liblinphone plugins
+-
+-if(NOT TARGET liblinphone)
+- set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
+- include(GNUInstallDirs)
+- include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/linphone/cmake/linphoneTargets.cmake)
+-endif()
+-
+-set(_LibLinphone_REQUIRED_VARS LibLinphone_TARGET LibLinphone_PLUGINS_DIR)
+-set(_LibLinphone_CACHE_VARS ${_LibLinphone_REQUIRED_VARS})
+-
+-if(TARGET liblinphone)
+- set(LibLinphone_TARGET liblinphone)
+- get_target_property(LibLinphone_PLUGINS_DIR ${LibLinphone_TARGET} LIBLINPHONE_PLUGINS_DIR)
+-endif()
+-
+-include(FindPackageHandleStandardArgs)
+-find_package_handle_standard_args(LibLinphone
+- REQUIRED_VARS ${_LibLinphone_REQUIRED_VARS}
+- HANDLE_COMPONENTS
+-)
+-mark_as_advanced(${_LibLinphone_CACHE_VARS})
+diff --git a/linphone-app/cmake/FindLinphoneCxx.cmake b/linphone-app/cmake/FindLinphoneCxx.cmake
+deleted file mode 100644
+index 0f81fe20..00000000
+--- a/linphone-app/cmake/FindLinphoneCxx.cmake
++++ /dev/null
+@@ -1,45 +0,0 @@
+-############################################################################
+-# FindLinphoneCxx.cmake
+-# Copyright (C) 2023 Belledonne Communications, Grenoble France
+-#
+-############################################################################
+-#
+-# This program is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU General Public License
+-# as published by the Free Software Foundation; either version 2
+-# of the License, or (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-#
+-############################################################################
+-#
+-# LinphoneCxx_FOUND - The liblinphone library has been found
+-# LinphoneCxx_TARGET - The name of the CMake target for the liblinphone library
+-
+-if(NOT TARGET liblinphone++)
+- set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
+- include(GNUInstallDirs)
+- include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/LinphoneCxx/cmake/LinphoneCxxTargets.cmake)
+-endif()
+-
+-set(_LinphoneCxx_REQUIRED_VARS LinphoneCxx_TARGET)
+-set(_LinphoneCxx_CACHE_VARS ${_LinphoneCxx_REQUIRED_VARS})
+-
+-if(TARGET liblinphone++)
+- set(LinphoneCxx_TARGET liblinphone++)
+-endif()
+-
+-include(FindPackageHandleStandardArgs)
+-find_package_handle_standard_args(LinphoneCxx
+- REQUIRED_VARS ${_LinphoneCxx_REQUIRED_VARS}
+- HANDLE_COMPONENTS
+-)
+-mark_as_advanced(${_LinphoneCxx_CACHE_VARS})
+-
+diff --git a/linphone-app/cmake/FindMediastreamer2.cmake b/linphone-app/cmake/FindMediastreamer2.cmake
+deleted file mode 100644
+index dc41f187..00000000
+--- a/linphone-app/cmake/FindMediastreamer2.cmake
++++ /dev/null
+@@ -1,49 +0,0 @@
+-############################################################################
+-# FindMediastreamer2.cmake
+-# Copyright (C) 2023 Belledonne Communications, Grenoble France
+-#
+-############################################################################
+-#
+-# This program is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU General Public License
+-# as published by the Free Software Foundation; either version 2
+-# of the License, or (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-#
+-############################################################################
+-#
+-# This module will set the following variables in your project:
+-#
+-# Mediastreamer2_FOUND - The mediastreamer2 library has been found
+-# Mediastreamer2_TARGET - The name of the CMake target for the mediastreamer2 library
+-# Mediastreamer2_PLUGINS_DIR - The directory where to install mediastreamer2 plugins
+-
+-if(NOT TARGET mediastreamer2)
+- set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
+- include(GNUInstallDirs)
+- include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/Mediastreamer2/cmake/Mediastreamer2Targets.cmake)
+-endif()
+-
+-set(_Mediastreamer2_REQUIRED_VARS Mediastreamer2_TARGET Mediastreamer2_PLUGINS_DIR)
+-set(_Mediastreamer2_CACHE_VARS ${_Mediastreamer2_REQUIRED_VARS})
+-
+-if(TARGET mediastreamer2)
+- set(Mediastreamer2_TARGET mediastreamer2)
+- get_target_property(Mediastreamer2_PLUGINS_DIR ${Mediastreamer2_TARGET} MS2_PLUGINS_DIR)
+-endif()
+-
+-include(FindPackageHandleStandardArgs)
+-find_package_handle_standard_args(Mediastreamer2
+- REQUIRED_VARS ${_Mediastreamer2_REQUIRED_VARS}
+- HANDLE_COMPONENTS
+-)
+-mark_as_advanced(${_Mediastreamer2_CACHE_VARS})
+-
+diff --git a/linphone-app/cmake/FindQtKeychain.cmake b/linphone-app/cmake/FindQtKeychain.cmake
+deleted file mode 100644
+index 9b7911aa..00000000
+--- a/linphone-app/cmake/FindQtKeychain.cmake
++++ /dev/null
+@@ -1,48 +0,0 @@
+-############################################################################
+-# FindQtKeychain.cmake
+-# Copyright (C) 2023 Belledonne Communications, Grenoble France
+-#
+-############################################################################
+-#
+-# This program is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU General Public License
+-# as published by the Free Software Foundation; either version 2
+-# of the License, or (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-#
+-############################################################################
+-#
+-# - Find the linphonecxx include files and library
+-#
+-# QtKeychain_FOUND - system has lib linphonecxx
+-# QtKeychain_INCLUDE_DIRS - the linphonecxx include directory
+-# QtKeychain_LIBRARIES - The library needed to use linphonecxx
+-if(NOT TARGET ${QTKEYCHAIN_TARGET_NAME})
+- set(EXPORT_PATH ${QTKEYCHAIN_OUTPUT_DIR})
+- include(GNUInstallDirs)
+- include(${EXPORT_PATH}/${CMAKE_INSTALL_LIBDIR}/cmake/${QTKEYCHAIN_TARGET_NAME}/${QTKEYCHAIN_TARGET_NAME}Config.cmake)
+-endif()
+-
+-set(_QtKeychain_REQUIRED_VARS QtKeychain_TARGET)
+-set(_QtKeychain_CACHE_VARS ${_QtKeychain_REQUIRED_VARS})
+-
+-if(TARGET ${QTKEYCHAIN_TARGET_NAME})
+- set(QtKeychain_TARGET ${QTKEYCHAIN_TARGET_NAME})
+- set(QtKeychain_USE_BUILD_INTERFACE TRUE)
+-endif()
+-
+-include(FindPackageHandleStandardArgs)
+-find_package_handle_standard_args(QtKeychain
+- REQUIRED_VARS ${_QtKeychain_REQUIRED_VARS}
+- HANDLE_COMPONENTS
+-)
+-mark_as_advanced(${_QtKeychain_CACHE_VARS})
+-
+
+base-commit: d69e033508265f756fb47b39b76b7d589be159c0
+prerequisite-patch-id: 1df5d6e9367036cd8ce918e1f3e3d7b3661f73c2
+--
+2.45.1
+
diff --git a/gnu/packages/patches/linphone-desktop-ispell.patch b/gnu/packages/patches/linphone-desktop-ispell.patch
new file mode 100644
index 0000000000..679703ec02
--- /dev/null
+++ b/gnu/packages/patches/linphone-desktop-ispell.patch
@@ -0,0 +1,24 @@
+Retrieved from: https://git.pld-linux.org/?p=packages/linphone.git;a=blob_plain;f=linphone-ispell.patch;h=67bbae61835c7fa813edcc006b5b67901ca42abe;hb=HEAD
+
+--- linphone-desktop-5.2.2/linphone-app/src/components/other/spell-checker/SpellCheckerLinux.cpp.orig 2024-03-11 18:30:37.000000000 +0100
++++ linphone-desktop-5.2.2/linphone-app/src/components/other/spell-checker/SpellCheckerLinux.cpp 2024-03-31 18:17:09.041543370 +0200
+@@ -20,7 +20,7 @@
+
+
+ #include "SpellChecker.hpp"
+-#include <libispell.h>
++#include <ISpell/libispell.h>
+ #include "app/paths/Paths.hpp"
+ #include <unistd.h>
+ #include <cstdio>
+--- linphone-desktop-5.2.2/linphone-app/cmake_builder/linphone_package/CMakeLists.txt.orig 2024-04-01 08:06:42.275231951 +0200
++++ linphone-desktop-5.2.2/linphone-app/cmake_builder/linphone_package/CMakeLists.txt 2024-04-01 17:44:16.670826307 +0200
+@@ -338,8 +338,6 @@ else()# Not Windows and Apple
+ if(ENABLE_APP_WEBVIEW)
+ install(FILES "${QT_PATH}/plugins/webview/libqtwebview_webengine.so" DESTINATION "plugins/webview") #Workaround : linuxdeploy doesn't deploy it
+ endif()
+-# ISPELL
+- install(DIRECTORY "${ISpell_SOURCE_DIR}/ispell_dictionaries" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${EXECUTABLE_NAME}" USE_SOURCE_PERMISSIONS)
+ endif ()
+
+
diff --git a/gnu/packages/patches/linphone-desktop-qtkeychain.patch b/gnu/packages/patches/linphone-desktop-qtkeychain.patch
new file mode 100644
index 0000000000..b19761672a
--- /dev/null
+++ b/gnu/packages/patches/linphone-desktop-qtkeychain.patch
@@ -0,0 +1,36 @@
+Retrieved from https://git.pld-linux.org/?p=packages/linphone.git;a=blob_plain;f=linphone-qtkeychain.patch;hb=HEAD
+
+--- linphone-desktop-5.2.2/CMakeLists.txt.orig 2024-03-11 18:30:37.000000000 +0100
++++ linphone-desktop-5.2.2/CMakeLists.txt 2024-03-31 17:21:32.069621299 +0200
+@@ -168,7 +168,7 @@ add_option(OPTION_LIST LIBSECRET_SUPPORT
+ if(WIN32)
+ add_cache(OPTION_LIST QTKEYCHAIN_TARGET_NAME "Override Qt5Keychain library name for a workaround with windeployqt" "EQt5Keychain")
+ else()
+- add_cache(OPTION_LIST QTKEYCHAIN_TARGET_NAME "Override Qt5Keychain library name" "Qt5Keychain")
++ add_cache(OPTION_LIST QTKEYCHAIN_TARGET_NAME "Override Qt5Keychain library name" "qt5keychain")
+ endif()
+ if(WIN32)
+ add_option(OPTION_LIST ENABLE_OPENSSL_EXPORT "Enable OpenSSL deployment" YES)
+--- linphone-desktop-5.2.2/linphone-app/CMakeLists.txt.orig 2024-03-31 16:15:24.501115462 +0200
++++ linphone-desktop-5.2.2/linphone-app/CMakeLists.txt 2024-03-31 16:27:54.837050544 +0200
+@@ -118,10 +118,7 @@ set(APP_TARGETS ${LinphoneCxx_TARGET}
+ ####################################
+
+ if(ENABLE_QT_KEYCHAIN)
+- find_package(QtKeychain)
+- if(NOT QtKeychain_FOUND)
+- find_package(${QTKEYCHAIN_TARGET_NAME} CONFIG REQUIRED)
+- endif()
++ find_package(Qt5Keychain)
+
+ add_compile_definitions("ENABLE_QT_KEYCHAIN")
+ if(QtKeychain_USE_BUILD_INTERFACE)
+@@ -197,7 +194,7 @@ if(ENABLE_VIDEO)
+ endif()
+ if( ENABLE_QT_KEYCHAIN)
+ if(NOT QTKEYCHAIN_TARGET_NAME)
+- set(QTKEYCHAIN_TARGET_NAME "Qt5Keychain")
++ set(QTKEYCHAIN_TARGET_NAME "qt5keychain")
+ endif()
+ list(APPEND APP_TARGETS ${QTKEYCHAIN_TARGET_NAME})
+ endif()
diff --git a/gnu/packages/patches/linphone-desktop-without-sdk.patch b/gnu/packages/patches/linphone-desktop-without-sdk.patch
deleted file mode 100644
index ef61b86707..0000000000
--- a/gnu/packages/patches/linphone-desktop-without-sdk.patch
+++ /dev/null
@@ -1,214 +0,0 @@
-From cfdf6d1c2051d6a20d0cbb94d81fe398f70dea4d Mon Sep 17 00:00:00 2001
-From: Raghav Gururajan <rg@raghavgururajan.name>
-Date: Sun, 21 Mar 2021 21:13:53 -0400
-Subject: [PATCH] [PATCH]: Fix building from git.
-
----
- CMakeLists.txt | 73 +------------------
- linphone-app/CMakeLists.txt | 12 +--
- .../cmake_builder/additional_steps.cmake | 2 +-
- .../linphone_package/CMakeLists.txt | 38 ----------
- linphone-app/linphoneqt_version.cmake | 1 +
- linphone-app/src/config.h.cmake | 1 +
- 6 files changed, 6 insertions(+), 121 deletions(-)
- create mode 100644 linphone-app/linphoneqt_version.cmake
-
-diff -ru a/CMakeLists.txt b/CMakeLists.txt
---- a/CMakeLists.txt 1970-01-01 01:00:01.000000000 +0100
-+++ b/CMakeLists.txt 2023-04-08 16:00:45.487927870 +0200
-@@ -51,23 +51,6 @@
-
- set(CMAKE_CXX_STANDARD 11)
-
--# Prepare gobal CMAKE configuration specific to the current project
--set(SDK_BUILD_DIR "${CMAKE_BINARY_DIR}/WORK") # SDK build in WORK. Keep all in it.
--set(LINPHONE_OUTPUT_DIR "${CMAKE_BINARY_DIR}/linphone-sdk/desktop")
--
--set(APPLICATION_OUTPUT_DIR "${CMAKE_BINARY_DIR}/OUTPUT")
--
--set(CMAKE_PREFIX_PATH "${LINPHONE_OUTPUT_DIR};${APPLICATION_OUTPUT_DIR};${APPLICATION_OUTPUT_DIR}/include${PREFIX_PATH}")
--if(WIN32)
-- set( CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${APPLICATION_OUTPUT_DIR}/${CMAKE_INSTALL_BINDIR}")
--elseif(APPLE)
-- set( CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${APPLICATION_NAME}.app/Contents/Frameworks")
--else()
-- set( CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${APPLICATION_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}")
--endif()
--string(REPLACE ";" "|" PREFIX_PATH "${CMAKE_PREFIX_PATH}")
--#set(PREFIX_PATH "${LINPHONE_OUTPUT_DIR}|${APPLICATION_OUTPUT_DIR}${PREFIX_PATH}")
--
- # Avoid cmake warning if CMP0071 is not set.
- if (POLICY CMP0071)
- cmake_policy(SET CMP0071 NEW)
-@@ -177,10 +160,8 @@
- endif()
- list(APPEND APP_OPTIONS "-DENABLE_RELATIVE_PREFIX=${ENABLE_RELATIVE_PREFIX}")
-
--list(APPEND APP_OPTIONS "-DLINPHONE_OUTPUT_DIR=${LINPHONE_OUTPUT_DIR}")
- list(APPEND APP_OPTIONS "-DENABLE_QT_GL=${ENABLE_VIDEO}")#Activate on video
-
--include(ExternalProject)
- set(PROJECT_BUILD_COMMAND "")
- if(CMAKE_BUILD_PARALLEL_LEVEL)
- list(APPEND APP_OPTIONS "-DCMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL}")
-@@ -195,7 +176,6 @@
- endif()
- endif()
- if(UNIX AND NOT APPLE)
-- set(CMAKE_INSTALL_RPATH "$ORIGIN:$ORIGIN/lib64:$ORIGIN/../lib64:$ORIGIN/lib:$ORIGIN/../lib:${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}")
- list(APPEND APP_OPTIONS "-DCMAKE_INSTALL_RPATH=${CMAKE_INSTALL_RPATH}")
- elseif(APPLE)
- list(APPEND APP_OPTIONS "-DENABLE_FAT_BINARY=ON") #Disable XCFrameworks as it is not supported.
-@@ -222,28 +202,9 @@
-
-
- if(NOT LINPHONE_QT_ONLY)
--ExternalProject_Add(sdk PREFIX "${CMAKE_BINARY_DIR}/sdk"
-- SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-sdk"
-- INSTALL_DIR "${LINPHONE_OUTPUT_DIR}"
-- STAMP_DIR "${SDK_BUILD_DIR}/stamp"
-- BINARY_DIR "${SDK_BUILD_DIR}"
-- STEP_TARGETS build
-- BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND}
-- INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step is already done at build time."
-- LIST_SEPARATOR | # Use the alternate list separator
-- CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH}
-- BUILD_ALWAYS NO #${DO_BUILD}
--)
--ExternalProject_Add_Step(sdk force_build
-- COMMENT "Forcing build for 'desktop'"
-- DEPENDEES configure
-- DEPENDERS build
-- ALWAYS 1
--)
- endif()
- include(FindPkgConfig)
-
--set(APP_DEPENDS sdk)
- find_package(Qt5 5.10 COMPONENTS Core REQUIRED)
-
- if ( NOT Qt5_FOUND )
-@@ -257,62 +218,5 @@
- find_package(Mediastreamer2 CONFIG QUIET)
- find_package(ortp CONFIG QUIET)
-
--if(NOT (LinphoneCxx_FOUND) OR NOT (Linphone_FOUND) OR NOT (bctoolbox_FOUND) OR NOT (belcard_FOUND) OR NOT (Mediastreamer2_FOUND) OR NOT (ortp_FOUND) OR FORCE_APP_EXTERNAL_PROJECTS)
-- message("Projects are set as External projects. You can start building them by using for example : cmake --build . --target install")
-- ExternalProject_Add(linphone-qt PREFIX "${CMAKE_BINARY_DIR}/linphone-app"
-- SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-app"
-- INSTALL_DIR "${APPLICATION_OUTPUT_DIR}"
-- BINARY_DIR "${CMAKE_BINARY_DIR}/linphone-app"
-- DEPENDS ${APP_DEPENDS}
-- BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND}
-- INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step is already done at build time."
-- LIST_SEPARATOR | # Use the alternate list separator
-- CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH}
-- # ${APP_OPTIONS}
-- BUILD_ALWAYS ON
-- )
-- if( ENABLE_BUILD_APP_PLUGINS)
-- ExternalProject_Add(app-plugins PREFIX "${CMAKE_BINARY_DIR}/plugins-app"
-- SOURCE_DIR "${CMAKE_SOURCE_DIR}/plugins"
-- INSTALL_DIR "${APPLICATION_OUTPUT_DIR}"
-- BINARY_DIR "${CMAKE_BINARY_DIR}/plugins-app"
-- DEPENDS linphone-qt
-- BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND}
-- INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step is already done at build time."
-- LIST_SEPARATOR | # Use the alternate list separator
-- CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH}
-- )
-- endif()
-- install(CODE "message(STATUS Running install)")
-- set(AUTO_REGENERATION auto_regeneration)
-- if( ENABLE_BUILD_APP_PLUGINS)
-- add_custom_target(${AUTO_REGENERATION} ALL
-- COMMAND ${CMAKE_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR}
-- DEPENDS app-plugins)
-- else()
-- add_custom_target(${AUTO_REGENERATION} ALL
-- COMMAND ${CMAKE_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR}
-- DEPENDS linphone-qt)
-- endif()
--else()
-- message("Adding Linphone Desktop in an IDE-friendly state")
-- set(CMAKE_INSTALL_PREFIX "${APPLICATION_OUTPUT_DIR}")
-- add_subdirectory(${CMAKE_SOURCE_DIR}/linphone-app)
-- if(NOT LINPHONE_QT_ONLY)
-- add_dependencies(app-library ${APP_DEPENDS})
-- endif()
-- if( ENABLE_BUILD_APP_PLUGINS)
-- add_subdirectory(${CMAKE_SOURCE_DIR}/plugins "plugins-app")
-- endif()
--endif()
--ExternalProject_Add(linphone-qt-only PREFIX "${CMAKE_BINARY_DIR}/linphone-app"
-- SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-app"
-- INSTALL_DIR "${APPLICATION_OUTPUT_DIR}"
-- BINARY_DIR "${CMAKE_BINARY_DIR}/linphone-app"
-- BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND}
--# INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step is already done at build time."
-- LIST_SEPARATOR | # Use the alternate list separator
-- CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH}
-- EXCLUDE_FROM_ALL ON
-- #BUILD_ALWAYS ON
--)
-+message("Adding Linphone Desktop in an IDE-friendly state")
-+add_subdirectory(${CMAKE_SOURCE_DIR}/linphone-app)
-diff -ru a/linphone-app/cmake_builder/additional_steps.cmake ./linphone-app/cmake_builder/additional_steps.cmake
---- a/linphone-app/cmake_builder/additional_steps.cmake 1970-01-01 01:00:01.000000000 +0100
-+++ ./linphone-app/cmake_builder/additional_steps.cmake 2023-04-08 16:02:33.005843116 +0200
-@@ -61,7 +61,7 @@
- SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/linphone_package"
- DOWNLOAD_COMMAND ""
- CMAKE_GENERATOR ${CMAKE_GENERATOR}
-- CMAKE_ARGS ${LINPHONE_BUILDER_EP_ARGS} -DCMAKE_INSTALL_PREFIX=${LINPHONE_BUILDER_WORK_DIR}/PACKAGE -DTOOLS_DIR=${CMAKE_BINARY_DIR}/programs -DLINPHONE_OUTPUT_DIR=${CMAKE_INSTALL_PREFIX} -DLINPHONE_DESKTOP_DIR=${CMAKE_CURRENT_LIST_DIR}/.. -DLINPHONE_SOURCE_DIR=${EP_linphone_SOURCE_DIR} ${ENABLE_VARIABLES} -DLINPHONE_BUILDER_SIGNING_IDENTITY=${LINPHONE_BUILDER_SIGNING_IDENTITY}
-+ CMAKE_ARGS ${LINPHONE_BUILDER_EP_ARGS} -DCMAKE_INSTALL_PREFIX=${LINPHONE_BUILDER_WORK_DIR}/PACKAGE -DTOOLS_DIR=${CMAKE_BINARY_DIR}/programs -DLINPHONE_DESKTOP_DIR=${CMAKE_CURRENT_LIST_DIR}/.. -DLINPHONE_SOURCE_DIR=${EP_linphone_SOURCE_DIR} ${ENABLE_VARIABLES} -DLINPHONE_BUILDER_SIGNING_IDENTITY=${LINPHONE_BUILDER_SIGNING_IDENTITY}
- )
- endif ()
- endif ()
-diff -ru a/linphone-app/CMakeLists.txt ./linphone-app/CMakeLists.txt
---- a/linphone-app/CMakeLists.txt 1970-01-01 01:00:01.000000000 +0100
-+++ ./linphone-app/CMakeLists.txt 2023-04-08 16:01:32.699012115 +0200
-@@ -21,17 +21,8 @@
- ################################################################################
- cmake_minimum_required(VERSION 3.1)
-
-+include(linphoneqt_version.cmake)
- find_package(bctoolbox CONFIG)
--set(FULL_VERSION )
--bc_compute_full_version(FULL_VERSION)
--set(version_major )
--set(version_minor )
--set(version_patch )
--set(identifiers )
--set(metadata )
--bc_parse_full_version("${FULL_VERSION}" version_major version_minor version_patch identifiers metadata)
--
--project(linphoneqt VERSION "${version_major}.${version_minor}.${version_patch}")
-
-
- if(ENABLE_BUILD_VERBOSE)
-@@ -51,7 +42,6 @@
- set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
- endif()
- list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake")
--list(APPEND CMAKE_MODULE_PATH "${LINPHONE_OUTPUT_DIR}/cmake")
-
- set(APP_LIBRARY app-library)
- set(APP_PLUGIN app-plugin)
-diff --git a/linphone-app/linphoneqt_version.cmake b/linphone-app/linphoneqt_version.cmake
-new file mode 100644
-index 00000000..a85d3455
---- /dev/null
-+++ b/linphone-app/linphoneqt_version.cmake
-@@ -0,0 +1,1 @@
-+project(linphoneqt VERSION ${GUIX-SET-VERSION})
-\ No newline at end of file
-diff -ru a/linphone-app/src/config.h.cmake b/linphone-app/src/config.h.cmake
---- a/linphone-app/src/config.h.cmake 1970-01-01 01:00:01.000000000 +0100
-+++ b/linphone-app/src/config.h.cmake 2023-04-08 16:05:33.458349986 +0200
-@@ -32,3 +32,4 @@
- #cmakedefine EXECUTABLE_NAME "${EXECUTABLE_NAME}"
- #cmakedefine MSPLUGINS_DIR "${MSPLUGINS_DIR}"
- #cmakedefine ENABLE_APP_WEBVIEW "${ENABLE_APP_WEBVIEW}"
-+#define LINPHONE_QT_GIT_VERSION "${PROJECT_VERSION}"
-\ No newline at end of file
diff --git a/gnu/packages/patches/linuxdcpp-openssl-1.1.patch b/gnu/packages/patches/linuxdcpp-openssl-1.1.patch
deleted file mode 100644
index 6f9912afd8..0000000000
--- a/gnu/packages/patches/linuxdcpp-openssl-1.1.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- a/dcpp/CryptoManager.cpp.orig 2011-04-17 17:57:09 UTC
-+++ b/dcpp/CryptoManager.cpp
-@@ -107,12 +107,20 @@ CryptoManager::CryptoManager()
- };
-
- if(dh) {
-- dh->p = BN_bin2bn(dh4096_p, sizeof(dh4096_p), 0);
-- dh->g = BN_bin2bn(dh4096_g, sizeof(dh4096_g), 0);
-+ BIGNUM *p, *g;
-
-- if (!dh->p || !dh->g) {
-+ p = BN_bin2bn(dh4096_p, sizeof(dh4096_p), 0);
-+ g = BN_bin2bn(dh4096_g, sizeof(dh4096_g), 0);
-+
-+ if (!p || !g) {
- dh.reset();
- } else {
-+#if OPENSSL_VERSION_NUMBER < 0x10100005L
-+ dh->p = p;
-+ dh->g = g;
-+#else
-+ DH_set0_pqg(dh, p, NULL, g);
-+#endif
- SSL_CTX_set_options(serverContext, SSL_OP_SINGLE_DH_USE);
- SSL_CTX_set_options(serverVerContext, SSL_OP_SINGLE_DH_USE);
- SSL_CTX_set_tmp_dh(serverContext, (DH*)dh);
diff --git a/gnu/packages/patches/llvm-10-missing-include.patch b/gnu/packages/patches/llvm-10-missing-include.patch
deleted file mode 100644
index 9c56cbca42..0000000000
--- a/gnu/packages/patches/llvm-10-missing-include.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Provided by tobtoht, see https://codeberg.org/guix/guix/issues/1234#issuecomment-5838284
-
-diff --git a/include/llvm/Support/Signals.h b/include/llvm/Support/Signals.h
-index e0a18e72..c66ea8b3 100644
---- a/include/llvm/Support/Signals.h
-+++ b/include/llvm/Support/Signals.h
-@@ -15,6 +15,7 @@
- #define LLVM_SUPPORT_SIGNALS_H
-
- #include <string>
-+#include <cstdint>
-
- namespace llvm {
- class StringRef;
diff --git a/gnu/packages/patches/llvm-3.5-fix-clang-build-with-gcc5.patch b/gnu/packages/patches/llvm-3.5-fix-clang-build-with-gcc5.patch
deleted file mode 100644
index faa8252c43..0000000000
--- a/gnu/packages/patches/llvm-3.5-fix-clang-build-with-gcc5.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-This patch was downloaded from https://sft.its.cern.ch/jira/browse/ROOT-7047.
-It fixes the build of clang 3.5 with GCC 5. File paths have been adjusted.
-
-From 00f3ed6eee41da871799ad0fd19153c7682d61fe Mon Sep 17 00:00:00 2001
-From: Alexander Klimov <alserkli@inbox.ru>
-Date: Mon, 26 Jan 2015 18:45:23 +0200
-Subject: [PATCH] [ADT/IntrusiveRefCntPtr] Give friend access to
- IntrusiveRefCntPtr<X> so the relevant move constructor can
- access 'Obj'.
-
-From LLVM upstream:
-Author: Argyrios Kyrtzidis <akyrtzi@gmail.com>
-Date: Tue Sep 23 06:06:43 2014 +0000
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218295 91177308-0d34-0410-b5e6-96231b3b80d8
----
- interpreter/llvm/src/include/llvm/ADT/IntrusiveRefCntPtr.h | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/include/llvm/ADT/IntrusiveRefCntPtr.h b/include/llvm/ADT/IntrusiveRefCntPtr.h
-index f9df378..c859c98 100644
---- a/include/llvm/ADT/IntrusiveRefCntPtr.h
-+++ b/include/llvm/ADT/IntrusiveRefCntPtr.h
-@@ -197,6 +197,9 @@ public:
- private:
- void retain() { if (Obj) IntrusiveRefCntPtrInfo<T>::retain(Obj); }
- void release() { if (Obj) IntrusiveRefCntPtrInfo<T>::release(Obj); }
-+
-+ template <typename X>
-+ friend class IntrusiveRefCntPtr;
- };
-
- template<class T, class U>
---
-1.7.10.4
-
diff --git a/gnu/packages/patches/llvm-3.6-fix-build-with-gcc-10.patch b/gnu/packages/patches/llvm-3.6-fix-build-with-gcc-10.patch
deleted file mode 100644
index 4982587d15..0000000000
--- a/gnu/packages/patches/llvm-3.6-fix-build-with-gcc-10.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Adapted from https://github.com/digego/extempore/pull/322/files
-
---- a/include/llvm/IR/ValueMap.h 2015-08-04 00:30:24.000000000 +0200
-+++ b/include/llvm/IR/ValueMap.h 2018-07-14 21:09:09.769502736 +0200
-@@ -99,7 +99,7 @@
- explicit ValueMap(const ExtraData &Data, unsigned NumInitBuckets = 64)
- : Map(NumInitBuckets), Data(Data) {}
-
-- bool hasMD() const { return MDMap; }
-+ bool hasMD() const { return static_cast<bool>(MDMap); }
- MDMapT &MD() {
- if (!MDMap)
- MDMap.reset(new MDMapT);
diff --git a/gnu/packages/patches/llvm-3.x.1-fix-build-with-gcc.patch b/gnu/packages/patches/llvm-3.x.1-fix-build-with-gcc.patch
deleted file mode 100644
index 75236c4069..0000000000
--- a/gnu/packages/patches/llvm-3.x.1-fix-build-with-gcc.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Patch from https://github.com/digego/extempore/issues/318
-
-diff --git a/include/llvm/IR/ValueMap.h.orig b/include/llvm/IR/ValueMap.h
-index ad518ac..d928f6a 100644
---- a/include/llvm/IR/ValueMap.h
-+++ b/include/llvm/IR/ValueMap.h
-@@ -99,7 +99,7 @@
- explicit ValueMap(const ExtraData &Data, unsigned NumInitBuckets = 64)
- : Map(NumInitBuckets), Data(Data) {}
-
-- bool hasMD() const { return MDMap; }
-+ bool hasMD() const { return static_cast<bool>(MDMap); }
- MDMapT &MD() {
- if (!MDMap)
- MDMap.reset(new MDMapT);
diff --git a/gnu/packages/patches/llvm-8-fix-build-with-gcc-10.patch b/gnu/packages/patches/llvm-8-fix-build-with-gcc-10.patch
deleted file mode 100644
index 9b36cc772c..0000000000
--- a/gnu/packages/patches/llvm-8-fix-build-with-gcc-10.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From b288d90b39f4b905c02092a9bfcfd6d78f99b191 Mon Sep 17 00:00:00 2001
-From: Than McIntosh <thanm@google.com>
-Date: Fri, 19 Jul 2019 13:13:54 +0000
-Subject: [PATCH] [NFC] include cstdint/string prior to using uint8_t/string
-
-Summary: include proper header prior to use of uint8_t typedef
-and std::string.
-
-Subscribers: llvm-commits
-
-Reviewers: cherry
-
-Tags: #llvm
-
-Differential Revision: https://reviews.llvm.org/D64937
-
-llvm-svn: 366572
----
- llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/include/llvm/Demangle/MicrosoftDemangleNodes.h b/include/llvm/Demangle/MicrosoftDemangleNodes.h
-index da9d9d5bfdc0c..3d47471f0ef0e 100644
---- a/include/llvm/Demangle/MicrosoftDemangleNodes.h
-+++ b/include/llvm/Demangle/MicrosoftDemangleNodes.h
-@@ -16,6 +16,8 @@
- #include "llvm/Demangle/DemangleConfig.h"
- #include "llvm/Demangle/StringView.h"
- #include <array>
-+#include <cstdint>
-+#include <string>
-
- namespace llvm {
- namespace itanium_demangle {
diff --git a/gnu/packages/patches/llvm-8-missing-include.patch b/gnu/packages/patches/llvm-8-missing-include.patch
deleted file mode 100644
index 4d7ca6d332..0000000000
--- a/gnu/packages/patches/llvm-8-missing-include.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Add missing include statement for compatibility with libstdc++ 11.
-
-Taken from upstream:
-
- https://github.com/llvm/llvm-project/commit/b498303066a63a203d24f739b2d2e0e56dca70d1
-
-diff --git a/utils/benchmark/src/benchmark_register.h b/utils/benchmark/src/benchmark_register.h
---- a/utils/benchmark/src/benchmark_register.h
-+++ b/utils/benchmark/src/benchmark_register.h
-@@ -1,6 +1,7 @@
- #ifndef BENCHMARK_REGISTER_H
- #define BENCHMARK_REGISTER_H
-
-+#include <limits>
- #include <vector>
-
- #include "check.h"
diff --git a/gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch
deleted file mode 100644
index ec8e888618..0000000000
--- a/gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch
+++ /dev/null
@@ -1,192 +0,0 @@
-From f8e146f3430de3a6cd904f3f3f7aa1bfaefee14c Mon Sep 17 00:00:00 2001
-From: Bjorn Pettersson <bjorn.a.pettersson@ericsson.com>
-Date: Thu, 28 Nov 2019 23:18:28 +0100
-Subject: [PATCH] [InstCombine] Fix big-endian miscompile of (bitcast
- (zext/trunc (bitcast)))
-
-Summary:
-optimizeVectorResize is rewriting patterns like:
- %1 = bitcast vector %src to integer
- %2 = trunc/zext %1
- %dst = bitcast %2 to vector
-
-Since bitcasting between integer an vector types gives
-different integer values depending on endianness, we need
-to take endianness into account. As it happens the old
-implementation only produced the correct result for little
-endian targets.
-
-Fixes: https://bugs.llvm.org/show_bug.cgi?id=44178
-
-Reviewers: spatel, lattner, lebedev.ri
-
-Reviewed By: spatel, lebedev.ri
-
-Subscribers: lebedev.ri, hiraditya, uabelho, llvm-commits
-
-Tags: #llvm
-
-Differential Revision: https://reviews.llvm.org/D70844
-
-(cherry picked from commit a9d6b0e5444741d08ff1df7cf71d1559e7fefc1f)
----
- .../InstCombine/InstCombineCasts.cpp | 79 +++++++++++++------
- llvm/test/Transforms/InstCombine/cast.ll | 6 +-
- 2 files changed, 60 insertions(+), 25 deletions(-)
-
-diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
-index 2c9ba203fbf3..0af3de300e77 100644
---- llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
-+++ llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
-@@ -18,6 +18,7 @@
- #include "llvm/IR/DIBuilder.h"
- #include "llvm/IR/PatternMatch.h"
- #include "llvm/Support/KnownBits.h"
-+#include <numeric>
- using namespace llvm;
- using namespace PatternMatch;
-
-@@ -1820,12 +1821,24 @@ Instruction *InstCombiner::visitPtrToInt(PtrToIntInst &CI) {
- }
-
- /// This input value (which is known to have vector type) is being zero extended
--/// or truncated to the specified vector type.
-+/// or truncated to the specified vector type. Since the zext/trunc is done
-+/// using an integer type, we have a (bitcast(cast(bitcast))) pattern,
-+/// endianness will impact which end of the vector that is extended or
-+/// truncated.
-+///
-+/// A vector is always stored with index 0 at the lowest address, which
-+/// corresponds to the most significant bits for a big endian stored integer and
-+/// the least significant bits for little endian. A trunc/zext of an integer
-+/// impacts the big end of the integer. Thus, we need to add/remove elements at
-+/// the front of the vector for big endian targets, and the back of the vector
-+/// for little endian targets.
-+///
- /// Try to replace it with a shuffle (and vector/vector bitcast) if possible.
- ///
- /// The source and destination vector types may have different element types.
--static Instruction *optimizeVectorResize(Value *InVal, VectorType *DestTy,
-- InstCombiner &IC) {
-+static Instruction *optimizeVectorResizeWithIntegerBitCasts(Value *InVal,
-+ VectorType *DestTy,
-+ InstCombiner &IC) {
- // We can only do this optimization if the output is a multiple of the input
- // element size, or the input is a multiple of the output element size.
- // Convert the input type to have the same element type as the output.
-@@ -1844,31 +1857,53 @@ static Instruction *optimizeVectorResize(Value *InVal, VectorType *DestTy,
- InVal = IC.Builder.CreateBitCast(InVal, SrcTy);
- }
-
-+ bool IsBigEndian = IC.getDataLayout().isBigEndian();
-+ unsigned SrcElts = SrcTy->getNumElements();
-+ unsigned DestElts = DestTy->getNumElements();
-+
-+ assert(SrcElts != DestElts && "Element counts should be different.");
-+
- // Now that the element types match, get the shuffle mask and RHS of the
- // shuffle to use, which depends on whether we're increasing or decreasing the
- // size of the input.
-- SmallVector<uint32_t, 16> ShuffleMask;
-+ SmallVector<uint32_t, 16> ShuffleMaskStorage;
-+ ArrayRef<uint32_t> ShuffleMask;
- Value *V2;
-
-- if (SrcTy->getNumElements() > DestTy->getNumElements()) {
-- // If we're shrinking the number of elements, just shuffle in the low
-- // elements from the input and use undef as the second shuffle input.
-- V2 = UndefValue::get(SrcTy);
-- for (unsigned i = 0, e = DestTy->getNumElements(); i != e; ++i)
-- ShuffleMask.push_back(i);
-+ // Produce an identify shuffle mask for the src vector.
-+ ShuffleMaskStorage.resize(SrcElts);
-+ std::iota(ShuffleMaskStorage.begin(), ShuffleMaskStorage.end(), 0);
-
-+ if (SrcElts > DestElts) {
-+ // If we're shrinking the number of elements (rewriting an integer
-+ // truncate), just shuffle in the elements corresponding to the least
-+ // significant bits from the input and use undef as the second shuffle
-+ // input.
-+ V2 = UndefValue::get(SrcTy);
-+ // Make sure the shuffle mask selects the "least significant bits" by
-+ // keeping elements from back of the src vector for big endian, and from the
-+ // front for little endian.
-+ ShuffleMask = ShuffleMaskStorage;
-+ if (IsBigEndian)
-+ ShuffleMask = ShuffleMask.take_back(DestElts);
-+ else
-+ ShuffleMask = ShuffleMask.take_front(DestElts);
- } else {
-- // If we're increasing the number of elements, shuffle in all of the
-- // elements from InVal and fill the rest of the result elements with zeros
-- // from a constant zero.
-+ // If we're increasing the number of elements (rewriting an integer zext),
-+ // shuffle in all of the elements from InVal. Fill the rest of the result
-+ // elements with zeros from a constant zero.
- V2 = Constant::getNullValue(SrcTy);
-- unsigned SrcElts = SrcTy->getNumElements();
-- for (unsigned i = 0, e = SrcElts; i != e; ++i)
-- ShuffleMask.push_back(i);
--
-- // The excess elements reference the first element of the zero input.
-- for (unsigned i = 0, e = DestTy->getNumElements()-SrcElts; i != e; ++i)
-- ShuffleMask.push_back(SrcElts);
-+ // Use first elt from V2 when indicating zero in the shuffle mask.
-+ uint32_t NullElt = SrcElts;
-+ // Extend with null values in the "most significant bits" by adding elements
-+ // in front of the src vector for big endian, and at the back for little
-+ // endian.
-+ unsigned DeltaElts = DestElts - SrcElts;
-+ if (IsBigEndian)
-+ ShuffleMaskStorage.insert(ShuffleMaskStorage.begin(), DeltaElts, NullElt);
-+ else
-+ ShuffleMaskStorage.append(DeltaElts, NullElt);
-+ ShuffleMask = ShuffleMaskStorage;
- }
-
- return new ShuffleVectorInst(InVal, V2,
-@@ -2359,8 +2394,8 @@ Instruction *InstCombiner::visitBitCast(BitCastInst &CI) {
- CastInst *SrcCast = cast<CastInst>(Src);
- if (BitCastInst *BCIn = dyn_cast<BitCastInst>(SrcCast->getOperand(0)))
- if (isa<VectorType>(BCIn->getOperand(0)->getType()))
-- if (Instruction *I = optimizeVectorResize(BCIn->getOperand(0),
-- cast<VectorType>(DestTy), *this))
-+ if (Instruction *I = optimizeVectorResizeWithIntegerBitCasts(
-+ BCIn->getOperand(0), cast<VectorType>(DestTy), *this))
- return I;
- }
-
-diff --git a/llvm/test/Transforms/InstCombine/cast.ll b/llvm/test/Transforms/InstCombine/cast.ll
-index b6d1eda0601d..3ce8de033422 100644
---- llvm/test/Transforms/InstCombine/cast.ll
-+++ llvm/test/Transforms/InstCombine/cast.ll
-@@ -824,7 +824,7 @@ define i64 @test59(i8 %A, i8 %B) {
-
- define <3 x i32> @test60(<4 x i32> %call4) {
- ; CHECK-LABEL: @test60(
--; CHECK-NEXT: [[P10:%.*]] = shufflevector <4 x i32> [[CALL4:%.*]], <4 x i32> undef, <3 x i32> <i32 0, i32 1, i32 2>
-+; CHECK-NEXT: [[P10:%.*]] = shufflevector <4 x i32> [[CALL4:%.*]], <4 x i32> undef, <3 x i32> <i32 1, i32 2, i32 3>
- ; CHECK-NEXT: ret <3 x i32> [[P10]]
- ;
- %p11 = bitcast <4 x i32> %call4 to i128
-@@ -836,7 +836,7 @@ define <3 x i32> @test60(<4 x i32> %call4) {
-
- define <4 x i32> @test61(<3 x i32> %call4) {
- ; CHECK-LABEL: @test61(
--; CHECK-NEXT: [[P10:%.*]] = shufflevector <3 x i32> [[CALL4:%.*]], <3 x i32> <i32 0, i32 undef, i32 undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
-+; CHECK-NEXT: [[P10:%.*]] = shufflevector <3 x i32> [[CALL4:%.*]], <3 x i32> <i32 0, i32 undef, i32 undef>, <4 x i32> <i32 3, i32 0, i32 1, i32 2>
- ; CHECK-NEXT: ret <4 x i32> [[P10]]
- ;
- %p11 = bitcast <3 x i32> %call4 to i96
-@@ -848,7 +848,7 @@ define <4 x i32> @test61(<3 x i32> %call4) {
- define <4 x i32> @test62(<3 x float> %call4) {
- ; CHECK-LABEL: @test62(
- ; CHECK-NEXT: [[TMP1:%.*]] = bitcast <3 x float> [[CALL4:%.*]] to <3 x i32>
--; CHECK-NEXT: [[P10:%.*]] = shufflevector <3 x i32> [[TMP1]], <3 x i32> <i32 0, i32 undef, i32 undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
-+; CHECK-NEXT: [[P10:%.*]] = shufflevector <3 x i32> [[TMP1]], <3 x i32> <i32 0, i32 undef, i32 undef>, <4 x i32> <i32 3, i32 0, i32 1, i32 2>
- ; CHECK-NEXT: ret <4 x i32> [[P10]]
- ;
- %p11 = bitcast <3 x float> %call4 to i96
---
-2.26.2
-
diff --git a/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch
deleted file mode 100644
index 9a97d82ddc..0000000000
--- a/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 011fb5bf8b31316472fccb1a19c91912246df9b2 Mon Sep 17 00:00:00 2001
-From: Reid Kleckner <rnk@google.com>
-Date: Sat, 28 Mar 2020 11:03:14 -0700
-Subject: [PATCH] [CodeGen] Fix sinking local values in lpads with phis
-
-There was already a test case for landingpads to handle this case, but I
-had forgotten to consider PHI instructions preceding the EH_LABEL in the
-landingpad.
-
-PR45261
----
- llvm/lib/CodeGen/SelectionDAG/FastISel.cpp | 17 +++++++++-
- llvm/test/CodeGen/X86/sink-local-value.ll | 36 ++++++++++++++++++++++
- 2 files changed, 52 insertions(+), 1 deletion(-)
-
-diff --git a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
-index 5ac3606dc662..2638b1e8a05c 100644
---- llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
-+++ llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
-@@ -225,6 +225,21 @@ static bool isRegUsedByPhiNodes(unsigned DefReg,
- return false;
- }
-
-+static bool isTerminatingEHLabel(MachineBasicBlock *MBB, MachineInstr &MI) {
-+ // Ignore non-EH labels.
-+ if (!MI.isEHLabel())
-+ return false;
-+
-+ // Any EH label outside a landing pad must be for an invoke. Consider it a
-+ // terminator.
-+ if (!MBB->isEHPad())
-+ return true;
-+
-+ // If this is a landingpad, the first non-phi instruction will be an EH_LABEL.
-+ // Don't consider that label to be a terminator.
-+ return MI.getIterator() != MBB->getFirstNonPHI();
-+}
-+
- /// Build a map of instruction orders. Return the first terminator and its
- /// order. Consider EH_LABEL instructions to be terminators as well, since local
- /// values for phis after invokes must be materialized before the call.
-@@ -233,7 +248,7 @@ void FastISel::InstOrderMap::initialize(
- unsigned Order = 0;
- for (MachineInstr &I : *MBB) {
- if (!FirstTerminator &&
-- (I.isTerminator() || (I.isEHLabel() && &I != &MBB->front()))) {
-+ (I.isTerminator() || isTerminatingEHLabel(MBB, I))) {
- FirstTerminator = &I;
- FirstTerminatorOrder = Order;
- }
-diff --git a/llvm/test/CodeGen/X86/sink-local-value.ll b/llvm/test/CodeGen/X86/sink-local-value.ll
-index b0e511ac1189..f7d861ac9b6c 100644
---- llvm/test/CodeGen/X86/sink-local-value.ll
-+++ llvm/test/CodeGen/X86/sink-local-value.ll
-@@ -145,6 +145,42 @@ try.cont: ; preds = %entry, %lpad
- ; CHECK: retl
-
-
-+define i32 @lpad_phi() personality i32 (...)* @__gxx_personality_v0 {
-+entry:
-+ store i32 42, i32* @sink_across
-+ invoke void @may_throw()
-+ to label %try.cont unwind label %lpad
-+
-+lpad: ; preds = %entry
-+ %p = phi i32 [ 11, %entry ] ; Trivial, but -O0 keeps it
-+ %0 = landingpad { i8*, i32 }
-+ catch i8* null
-+ store i32 %p, i32* @sink_across
-+ br label %try.cont
-+
-+try.cont: ; preds = %entry, %lpad
-+ %r.0 = phi i32 [ 13, %entry ], [ 55, %lpad ]
-+ ret i32 %r.0
-+}
-+
-+; The constant materialization should be *after* the stores to sink_across, but
-+; before any EH_LABEL.
-+
-+; CHECK-LABEL: lpad_phi:
-+; CHECK: movl $42, sink_across
-+; CHECK: movl $13, %{{[a-z]*}}
-+; CHECK: .Ltmp{{.*}}:
-+; CHECK: calll may_throw
-+; CHECK: .Ltmp{{.*}}:
-+; CHECK: jmp .LBB{{.*}}
-+; CHECK: .LBB{{.*}}: # %lpad
-+; CHECK-NEXT: .Ltmp{{.*}}:
-+; CHECK: movl {{.*}}, sink_across
-+; CHECK: movl $55, %{{[a-z]*}}
-+; CHECK: .LBB{{.*}}: # %try.cont
-+; CHECK: retl
-+
-+
- ; Function Attrs: nounwind readnone speculatable
- declare void @llvm.dbg.value(metadata, metadata, metadata) #0
-
diff --git a/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch
deleted file mode 100644
index ec37dc16fd..0000000000
--- a/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-Guix note: this got detected with the test suite of rustc 1.41.1, but
-the issue potentially affects all consumers of LLVM.
-
-From 58e8c793d0e43150a6452e971a32d7407a8a7401 Mon Sep 17 00:00:00 2001
-From: Tim Northover <tnorthover@apple.com>
-Date: Mon, 30 Sep 2019 07:46:52 +0000
-Subject: [PATCH] Revert "[SCEV] add no wrap flag for SCEVAddExpr."
-
-This reverts r366419 because the analysis performed is within the context of
-the loop and it's only valid to add wrapping flags to "global" expressions if
-they're always correct.
-
-llvm-svn: 373184
----
- llvm/lib/Analysis/ScalarEvolution.cpp | 2 +-
- llvm/test/Analysis/ScalarEvolution/limit-depth.ll | 2 +-
- llvm/test/Analysis/ScalarEvolution/nsw.ll | 2 +-
- llvm/test/Analysis/ScalarEvolution/trip-count12.ll | 2 +-
- llvm/test/Analysis/ScalarEvolution/trip-count9.ll | 8 ++++----
- 5 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
-index 354ae05bb841..c29fc5dbccfb 100644
---- llvm/lib/Analysis/ScalarEvolution.cpp
-+++ llvm/lib/Analysis/ScalarEvolution.cpp
-@@ -4992,7 +4992,7 @@ const SCEV *ScalarEvolution::createSimpleAffineAddRec(PHINode *PN,
- // overflow.
- if (auto *BEInst = dyn_cast<Instruction>(BEValueV))
- if (isLoopInvariant(Accum, L) && isAddRecNeverPoison(BEInst, L))
-- (void)getAddRecExpr(getAddExpr(StartVal, Accum, Flags), Accum, L, Flags);
-+ (void)getAddRecExpr(getAddExpr(StartVal, Accum), Accum, L, Flags);
-
- return PHISCEV;
- }
-diff --git a/llvm/test/Analysis/ScalarEvolution/limit-depth.ll b/llvm/test/Analysis/ScalarEvolution/limit-depth.ll
-index db68a4f84c91..6fdf8c5df974 100644
---- llvm/test/Analysis/ScalarEvolution/limit-depth.ll
-+++ llvm/test/Analysis/ScalarEvolution/limit-depth.ll
-@@ -46,7 +46,7 @@ define void @test_mul(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f) {
- define void @test_sext(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f) {
- ; CHECK-LABEL: @test_sext
- ; CHECK: %se2 = sext i64 %iv2.inc to i128
--; CHECK-NEXT: --> {(1 + (sext i64 {(sext i32 (1 + %a)<nsw> to i64),+,1}<nsw><%loop> to i128))<nsw>,+,1}<nsw><%loop2>
-+; CHECK-NEXT: --> {(1 + (sext i64 {(sext i32 (1 + %a) to i64),+,1}<nsw><%loop> to i128))<nsw>,+,1}<nsw><%loop2>
- entry:
- br label %loop
-
-diff --git a/llvm/test/Analysis/ScalarEvolution/nsw.ll b/llvm/test/Analysis/ScalarEvolution/nsw.ll
-index 69427368625d..ca24f9d4a04b 100644
---- llvm/test/Analysis/ScalarEvolution/nsw.ll
-+++ llvm/test/Analysis/ScalarEvolution/nsw.ll
-@@ -163,7 +163,7 @@ bb5: ; preds = %bb2
- declare void @f(i32)
-
- ; CHECK-LABEL: nswnowrap
--; CHECK: --> {(1 + %v)<nsw>,+,1}<nsw><%for.body>{{ U: [^ ]+ S: [^ ]+}}{{ *}}Exits: (2 + %v)
-+; CHECK: --> {(1 + %v)<nsw>,+,1}<nsw><%for.body>{{ U: [^ ]+ S: [^ ]+}}{{ *}}Exits: (1 + ((1 + %v)<nsw> smax %v))
- define void @nswnowrap(i32 %v, i32* %buf) {
- entry:
- %add = add nsw i32 %v, 1
-diff --git a/llvm/test/Analysis/ScalarEvolution/trip-count12.ll b/llvm/test/Analysis/ScalarEvolution/trip-count12.ll
-index 5e7d72d5e4f3..d0086ee2e6ac 100644
---- llvm/test/Analysis/ScalarEvolution/trip-count12.ll
-+++ llvm/test/Analysis/ScalarEvolution/trip-count12.ll
-@@ -1,7 +1,7 @@
- ; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s
-
- ; CHECK: Determining loop execution counts for: @test
--; CHECK: Loop %for.body: backedge-taken count is ((-2 + %len)<nsw> /u 2)
-+; CHECK: Loop %for.body: backedge-taken count is ((-2 + %len) /u 2)
- ; CHECK: Loop %for.body: max backedge-taken count is 1073741823
-
- define zeroext i16 @test(i16* nocapture %p, i32 %len) nounwind readonly {
-diff --git a/llvm/test/Analysis/ScalarEvolution/trip-count9.ll b/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
-index c0a1d12fa00e..9a080b34743f 100644
---- llvm/test/Analysis/ScalarEvolution/trip-count9.ll
-+++ llvm/test/Analysis/ScalarEvolution/trip-count9.ll
-@@ -179,7 +179,7 @@ exit:
- }
-
- ; CHECK: Determining loop execution counts for: @nsw_startx
--; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x)<nsw> smax %n))
-+; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax %n))
- ; CHECK: Loop %loop: max backedge-taken count is -1
- define void @nsw_startx(i4 %n, i4 %x) {
- entry:
-@@ -195,7 +195,7 @@ exit:
- }
-
- ; CHECK: Determining loop execution counts for: @nsw_startx_step2
--; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x)<nsw> smax %n)) /u 2)
-+; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax %n)) /u 2)
- ; CHECK: Loop %loop: max backedge-taken count is 7
- define void @nsw_startx_step2(i4 %n, i4 %x) {
- entry:
-@@ -381,7 +381,7 @@ exit:
- }
-
- ; CHECK: Determining loop execution counts for: @even_nsw_startx
--; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x)<nsw> smax (2 * %n)))
-+; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax (2 * %n)))
- ; CHECK: Loop %loop: max backedge-taken count is -2
- define void @even_nsw_startx(i4 %n, i4 %x) {
- entry:
-@@ -398,7 +398,7 @@ exit:
- }
-
- ; CHECK: Determining loop execution counts for: @even_nsw_startx_step2
--; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x)<nsw> smax (2 * %n))) /u 2)
-+; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax (2 * %n))) /u 2)
- ; CHECK: Loop %loop: max backedge-taken count is 7
- define void @even_nsw_startx_step2(i4 %n, i4 %x) {
- entry:
diff --git a/gnu/packages/patches/lxsession-potfiles-ignore.patch b/gnu/packages/patches/lxsession-potfiles-ignore.patch
new file mode 100644
index 0000000000..ddf45cf506
--- /dev/null
+++ b/gnu/packages/patches/lxsession-potfiles-ignore.patch
@@ -0,0 +1,15 @@
+diff --git a/po/POTFILES.skip b/po/POTFILES.skip
+index 353b0ec..adbe1d6 100644
+--- a/po/POTFILES.skip
++++ b/po/POTFILES.skip
+@@ -1,7 +1,10 @@
+ # Autogenerated files with translatable strings.
+ lxsession-default-apps/main.c
+ lxsession-default-apps/combobox.c
++lxpolkit/main.c
++lxsession/app.c
+ # This is a source file for configure, output will be translated instead.
+ data/lxpolkit.desktop.in.in
+ # bug of intltool with automake 1.15
+ sub/data/lxpolkit.desktop.in
++data/lxpolkit.desktop.in
diff --git a/gnu/packages/patches/mariadb-rocksdb-atomic-linking.patch b/gnu/packages/patches/mariadb-rocksdb-atomic-linking.patch
deleted file mode 100644
index 03e8acd907..0000000000
--- a/gnu/packages/patches/mariadb-rocksdb-atomic-linking.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-https://github.com/MariaDB/server/pull/2477
-https://github.com/MariaDB/server/commit/195c0e81493c41f1d20b91a5bcc6aaaf4979d781.patch
-
-From 195c0e81493c41f1d20b91a5bcc6aaaf4979d781 Mon Sep 17 00:00:00 2001
-From: Daniel Black <daniel@mariadb.org>
-Date: Fri, 3 Feb 2023 11:51:20 +1100
-Subject: [PATCH] MDEV-30554 RockDB libatomic linking on riscv64
-
-The existing storage/rocksdb/CMakeCache.txt defined
-ATOMIC_EXTRA_LIBS when atomics where required. This was
-determined by the toplevel configure.cmake test
-(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC).
-
-As build_rocksdb.cmake is included after ATOMIC_EXTRA_LIBS
-was set, we just need to use it. As such no riscv64
-specific macro is needed in build_rocksdb.cmake.
-
-As highlighted by Gianfranco Costamagna (@LocutusOfBorg)
-in #2472 overwriting SYSTEM_LIBS was problematic.
-This is corrected in case in future SYSTEM_LIBS is changed
-elsewhere.
-
-Closes #2472.
----
- storage/rocksdb/build_rocksdb.cmake | 8 ++------
- 1 file changed, 2 insertions(+), 6 deletions(-)
-
-diff --git a/storage/rocksdb/build_rocksdb.cmake b/storage/rocksdb/build_rocksdb.cmake
-index e23862ee65901..647e51e2f90d9 100644
---- a/storage/rocksdb/build_rocksdb.cmake
-+++ b/storage/rocksdb/build_rocksdb.cmake
-@@ -129,10 +129,6 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64")
- ADD_DEFINITIONS(-DHAVE_POWER8 -DHAS_ALTIVEC)
- endif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64")
-
--if(CMAKE_SYSTEM_PROCESSOR STREQUAL "riscv64")
-- set(SYSTEM_LIBS ${SYSTEM_LIBS} -latomic)
--endif()
--
- option(WITH_FALLOCATE "build with fallocate" ON)
-
- if(WITH_FALLOCATE AND UNIX)
-@@ -161,9 +157,9 @@ include_directories(SYSTEM ${ROCKSDB_SOURCE_DIR}/third-party/gtest-1.7.0/fused-s
-
- find_package(Threads REQUIRED)
- if(WIN32)
-- set(SYSTEM_LIBS ${SYSTEM_LIBS} Shlwapi.lib Rpcrt4.lib)
-+ set(SYSTEM_LIBS ${SYSTEM_LIBS} ${ATOMIC_EXTRA_LIBS} Shlwapi.lib Rpcrt4.lib)
- else()
-- set(SYSTEM_LIBS ${CMAKE_THREAD_LIBS_INIT} ${LIBRT} ${CMAKE_DL_LIBS})
-+ set(SYSTEM_LIBS ${SYSTEM_LIBS} ${CMAKE_THREAD_LIBS_INIT} ${LIBRT} ${CMAKE_DL_LIBS} ${ATOMIC_EXTRA_LIBS})
- endif()
-
- set(ROCKSDB_LIBS rocksdblib})
diff --git a/gnu/packages/patches/mash-add-missing-headers.patch b/gnu/packages/patches/mash-add-missing-headers.patch
new file mode 100644
index 0000000000..d4eca2a5b4
--- /dev/null
+++ b/gnu/packages/patches/mash-add-missing-headers.patch
@@ -0,0 +1,26 @@
+https://patch-diff.githubusercontent.com/raw/marbl/Mash/pull/181.diff
+
+Add missing includes to support newer compilers.
+---
+diff --git a/src/mash/robin_hood.h b/src/mash/robin_hood.h
+index 573607f..9141848 100644
+--- a/src/mash/robin_hood.h
++++ b/src/mash/robin_hood.h
+@@ -42,6 +42,7 @@
+ #include <cstdlib>
+ #include <cstring>
+ #include <functional>
++#include <limits>
+ #include <memory> // only to support hash of smart pointers
+ #include <stdexcept>
+ #include <string>
+--- a/src/mash/Command.cpp
++++ b/src/mash/Command.cpp
+@@ -8,6 +8,7 @@
+ #include <sys/ioctl.h>
+ #include <sstream>
+ #include <fstream>
++#include <cstdint>
+
+ #include "Command.h"
+ #include "version.h" \ No newline at end of file
diff --git a/gnu/packages/patches/mediastreamer2-cmake-findgsm.patch b/gnu/packages/patches/mediastreamer2-cmake-findgsm.patch
new file mode 100644
index 0000000000..7b48e310b5
--- /dev/null
+++ b/gnu/packages/patches/mediastreamer2-cmake-findgsm.patch
@@ -0,0 +1,63 @@
+Retrieved from: https://git.pld-linux.org/?p=packages/mediastreamer.git;a=blob_plain;f=mediastreamer-cmake-find.patch;h=4f1e3577f43bf791ed5cdb180ca455f919b80c8d;hb=HEAD
+
+--- mediastreamer2-5.3.29/cmake/FindGSM.cmake.orig 2024-02-21 12:02:03.000000000 +0100
++++ mediastreamer2-5.3.29/cmake/FindGSM.cmake 2024-03-09 20:16:25.064077414 +0100
+@@ -58,7 +58,7 @@ else()
+ set(_GSM_ROOT_PATHS ${CMAKE_INSTALL_PREFIX})
+
+ find_path(_GSM_INCLUDE_DIRS
+- NAMES gsm/gsm.h
++ NAMES gsm.h gsm/gsm.h
+ HINTS ${_GSM_ROOT_PATHS}
+ PATH_SUFFIXES include
+ )
+--- mediastreamer2-5.3.29/cmake/FindDav1d.cmake.orig 2024-02-21 12:02:03.000000000 +0100
++++ mediastreamer2-5.3.29/cmake/FindDav1d.cmake 2024-03-09 20:44:17.671682787 +0100
+@@ -65,17 +65,17 @@ else()
+ PATH_SUFFIXES bin lib lib/Win32
+ )
+
+- if(_Dav1d_INCLUDE_DIRS AND _Dav1d_LIBRARY)
++ if(Dav1d_INCLUDE_DIRS AND Dav1d_LIBRARY)
+ add_library(libdav1d UNKNOWN IMPORTED)
+ if(WIN32)
+ set_target_properties(libdav1d PROPERTIES
+- INTERFACE_INCLUDE_DIRECTORIES "${_Dav1d_INCLUDE_DIRS}"
+- IMPORTED_IMPLIB "${_Dav1d_LIBRARY}"
++ INTERFACE_INCLUDE_DIRECTORIES "${Dav1d_INCLUDE_DIRS}"
++ IMPORTED_IMPLIB "${Dav1d_LIBRARY}"
+ )
+ else()
+ set_target_properties(libdav1d PROPERTIES
+- INTERFACE_INCLUDE_DIRECTORIES "${_Dav1d_INCLUDE_DIRS}"
+- IMPORTED_LOCATION "${_Dav1d_LIBRARY}"
++ INTERFACE_INCLUDE_DIRECTORIES "${Dav1d_INCLUDE_DIRS}"
++ IMPORTED_LOCATION "${Dav1d_LIBRARY}"
+ )
+ endif()
+
+--- mediastreamer2-5.3.29/cmake/FindAom.cmake.orig 2024-02-21 12:02:03.000000000 +0100
++++ mediastreamer2-5.3.29/cmake/FindAom.cmake 2024-03-09 20:45:16.931361750 +0100
+@@ -65,17 +65,17 @@ else()
+ PATH_SUFFIXES bin lib lib/Win32
+ )
+
+- if(_Aom_INCLUDE_DIRS AND _Aom_LIBRARY)
++ if(Aom_INCLUDE_DIRS AND Aom_LIBRARY)
+ add_library(aom UNKNOWN IMPORTED)
+ if(WIN32)
+ set_target_properties(aom PROPERTIES
+- INTERFACE_INCLUDE_DIRECTORIES "${_Aom_INCLUDE_DIRS}"
+- IMPORTED_IMPLIB "${_Aom_LIBRARY}"
++ INTERFACE_INCLUDE_DIRECTORIES "${Aom_INCLUDE_DIRS}"
++ IMPORTED_IMPLIB "${Aom_LIBRARY}"
+ )
+ else()
+ set_target_properties(aom PROPERTIES
+- INTERFACE_INCLUDE_DIRECTORIES "${_Aom_INCLUDE_DIRS}"
+- IMPORTED_LOCATION "${_Aom_LIBRARY}"
++ INTERFACE_INCLUDE_DIRECTORIES "${Aom_INCLUDE_DIRS}"
++ IMPORTED_LOCATION "${Aom_LIBRARY}"
+ )
+ endif()
+
diff --git a/gnu/packages/patches/mpv-0.40.0-fix-ffmpeg-8.0.patch b/gnu/packages/patches/mpv-0.40.0-fix-ffmpeg-8.0.patch
new file mode 100644
index 0000000000..847bba9570
--- /dev/null
+++ b/gnu/packages/patches/mpv-0.40.0-fix-ffmpeg-8.0.patch
@@ -0,0 +1,40 @@
+Patch obtained from https://github.com/mpv-player/mpv/commit/26b29fba02a2782f68e2906f837d21201fc6f1b9
+See https://github.com/mpv-player/mpv/issues/16176 for discussion. Next version
+of mpv will have this fixed, but upstream is not planning to release a patch
+release.
+
+From 26b29fba02a2782f68e2906f837d21201fc6f1b9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= <kasper93@gmail.com>
+Date: Fri, 28 Mar 2025 19:12:01 +0100
+Subject: [PATCH] demux_mkv: fix compilation after deprecated definitions
+ removal
+
+See: https://github.com/FFmpeg/FFmpeg/commit/822432769868da325ba03774df1084aa78b9a5a0
+---
+ demux/demux_mkv.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c
+index 135edcc23d82b..cc7ce3e98f4f6 100644
+--- a/demux/demux_mkv.c
++++ b/demux/demux_mkv.c
+@@ -2200,16 +2200,16 @@ static int demux_mkv_open_sub(demuxer_t *demuxer, mkv_track_t *track)
+ // [0x30..0x37] are component tags utilized for
+ // non-mobile captioning service ("profile A").
+ if (component_tag >= 0x30 && component_tag <= 0x37)
+- lav->profile = FF_PROFILE_ARIB_PROFILE_A;
++ lav->profile = AV_PROFILE_ARIB_PROFILE_A;
+ break;
+ case 0x0012:
+ // component tag 0x87 signifies a mobile/partial reception
+ // (1seg) captioning service ("profile C").
+ if (component_tag == 0x87)
+- lav->profile = FF_PROFILE_ARIB_PROFILE_C;
++ lav->profile = AV_PROFILE_ARIB_PROFILE_C;
+ break;
+ }
+- if (lav->profile == FF_PROFILE_UNKNOWN)
++ if (lav->profile == AV_PROFILE_UNKNOWN)
+ MP_WARN(demuxer, "ARIB caption profile %02x / %04x not supported.\n",
+ component_tag, data_component_id);
+ }
diff --git a/gnu/packages/patches/mswebrtc-b64-refactor.patch b/gnu/packages/patches/mswebrtc-b64-refactor.patch
new file mode 100644
index 0000000000..af4a1e1682
--- /dev/null
+++ b/gnu/packages/patches/mswebrtc-b64-refactor.patch
@@ -0,0 +1,949 @@
+From 17e72f00831a36da387ceafe7f3076ffa8f66aba Mon Sep 17 00:00:00 2001
+From: Clemence Him <clemence.him@belledonne-communications.com>
+Date: Fri, 22 Sep 2023 14:28:02 +0200
+Subject: [PATCH] Base64 functions refactoring
+
+---
+ aec.c | 781 +++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 394 insertions(+), 387 deletions(-)
+
+diff --git a/aec.c b/aec.c
+index 271f370..995f655 100644
+--- a/aec.c
++++ b/aec.c
+@@ -24,19 +24,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ #include "mediastreamer2/msfilter.h"
+ #include "mediastreamer2/msticker.h"
+ #ifdef BUILD_AEC
+-#include "echo_cancellation.h"
+ #include "aec_splitting_filter.h"
++#include "echo_cancellation.h"
+ #endif
+ #ifdef BUILD_AECM
+ #include "echo_control_mobile.h"
+ #endif
+-#include "ortp/b64.h"
+
+ #ifdef _WIN32
+ #include <malloc.h> /* for alloca */
+ #endif
+
+-//#define EC_DUMP 1
++// #define EC_DUMP 1
+ #ifdef ANDROID
+ #define EC_DUMP_PREFIX "/sdcard"
+ #else
+@@ -48,466 +47,485 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ static const float smooth_factor = 0.05f;
+ static const int framesize = 80;
+
+-
+ typedef enum _WebRTCAECType {
+- WebRTCAECTypeNormal,
+- WebRTCAECTypeMobile
++ WebRTCAECTypeNormal,
++ WebRTCAECTypeMobile
+ } WebRTCAECType;
+
+ typedef struct WebRTCAECState {
+- void *aecInst;
+- MSBufferizer delayed_ref;
+- MSFlowControlledBufferizer ref;
+- MSBufferizer echo;
+- int framesize;
+- int samplerate;
+- int delay_ms;
+- int nominal_ref_samples;
+- char *state_str;
++ void *aecInst;
++ MSBufferizer delayed_ref;
++ MSFlowControlledBufferizer ref;
++ MSBufferizer echo;
++ int framesize;
++ int samplerate;
++ int delay_ms;
++ int nominal_ref_samples;
++ char *state_str;
+ #ifdef EC_DUMP
+- FILE *echofile;
+- FILE *reffile;
+- FILE *cleanfile;
++ FILE *echofile;
++ FILE *reffile;
++ FILE *cleanfile;
+ #endif
+- bool_t echostarted;
+- bool_t bypass_mode;
+- bool_t using_zeroes;
+- WebRTCAECType aec_type;
++ bool_t echostarted;
++ bool_t bypass_mode;
++ bool_t using_zeroes;
++ WebRTCAECType aec_type;
+ #ifdef BUILD_AEC
+- MSWebRtcAecSplittingFilter *splitting_filter;
++ MSWebRtcAecSplittingFilter *splitting_filter;
+ #endif
+ } WebRTCAECState;
+
+ static void webrtc_aecgeneric_init(MSFilter *f, WebRTCAECType aec_type) {
+- WebRTCAECState *s = (WebRTCAECState *) ms_new0(WebRTCAECState, 1);
+-
+- s->samplerate = 8000;
+- ms_bufferizer_init(&s->delayed_ref);
+- ms_bufferizer_init(&s->echo);
+- ms_flow_controlled_bufferizer_init(&s->ref, f, s->samplerate, 1);
+- s->delay_ms = 0;
+- s->aecInst = NULL;
+- s->framesize = framesize;
+- s->state_str = NULL;
+- s->using_zeroes = FALSE;
+- s->echostarted = FALSE;
+- s->bypass_mode = FALSE;
+- s->aec_type = aec_type;
++ WebRTCAECState *s = (WebRTCAECState *)ms_new0(WebRTCAECState, 1);
++
++ s->samplerate = 8000;
++ ms_bufferizer_init(&s->delayed_ref);
++ ms_bufferizer_init(&s->echo);
++ ms_flow_controlled_bufferizer_init(&s->ref, f, s->samplerate, 1);
++ s->delay_ms = 0;
++ s->aecInst = NULL;
++ s->framesize = framesize;
++ s->state_str = NULL;
++ s->using_zeroes = FALSE;
++ s->echostarted = FALSE;
++ s->bypass_mode = FALSE;
++ s->aec_type = aec_type;
+
+ #ifdef EC_DUMP
+- {
+- char *fname = ms_strdup_printf("%s/mswebrtcaec-%p-echo.raw", EC_DUMP_PREFIX, f);
+- s->echofile = fopen(fname, "w");
+- ms_free(fname);
+- fname = ms_strdup_printf("%s/mswebrtcaec-%p-ref.raw", EC_DUMP_PREFIX, f);
+- s->reffile = fopen(fname, "w");
+- ms_free(fname);
+- fname = ms_strdup_printf("%s/mswebrtcaec-%p-clean.raw", EC_DUMP_PREFIX, f);
+- s->cleanfile = fopen(fname, "w");
+- ms_free(fname);
+- }
++ {
++ char *fname =
++ ms_strdup_printf("%s/mswebrtcaec-%p-echo.raw", EC_DUMP_PREFIX, f);
++ s->echofile = fopen(fname, "w");
++ ms_free(fname);
++ fname = ms_strdup_printf("%s/mswebrtcaec-%p-ref.raw", EC_DUMP_PREFIX, f);
++ s->reffile = fopen(fname, "w");
++ ms_free(fname);
++ fname = ms_strdup_printf("%s/mswebrtcaec-%p-clean.raw", EC_DUMP_PREFIX, f);
++ s->cleanfile = fopen(fname, "w");
++ ms_free(fname);
++ }
+ #endif
+
+- f->data = s;
++ f->data = s;
+ }
+
+ #ifdef BUILD_AEC
+ static void webrtc_aec_init(MSFilter *f) {
+- webrtc_aecgeneric_init(f, WebRTCAECTypeNormal);
++ webrtc_aecgeneric_init(f, WebRTCAECTypeNormal);
+ }
+ #endif
+
+ #ifdef BUILD_AECM
+ static void webrtc_aecm_init(MSFilter *f) {
+- webrtc_aecgeneric_init(f, WebRTCAECTypeMobile);
++ webrtc_aecgeneric_init(f, WebRTCAECTypeMobile);
+ }
+ #endif
+
+ static void webrtc_aec_uninit(MSFilter *f) {
+- WebRTCAECState *s = (WebRTCAECState *) f->data;
+- if (s->state_str) ms_free(s->state_str);
+- ms_bufferizer_uninit(&s->delayed_ref);
++ WebRTCAECState *s = (WebRTCAECState *)f->data;
++ if (s->state_str)
++ ms_free(s->state_str);
++ ms_bufferizer_uninit(&s->delayed_ref);
+ #ifdef EC_DUMP
+- if (s->echofile)
+- fclose(s->echofile);
+- if (s->reffile)
+- fclose(s->reffile);
++ if (s->echofile)
++ fclose(s->echofile);
++ if (s->reffile)
++ fclose(s->reffile);
+ #endif
+- ms_free(s);
++ ms_free(s);
+ }
+
+ static void configure_flow_controlled_bufferizer(WebRTCAECState *s) {
+- ms_flow_controlled_bufferizer_set_samplerate(&s->ref, s->samplerate);
+- ms_flow_controlled_bufferizer_set_max_size_ms(&s->ref, s->delay_ms);
+- ms_flow_controlled_bufferizer_set_granularity_ms(&s->ref, (s->framesize * 1000) / s->samplerate);
++ ms_flow_controlled_bufferizer_set_samplerate(&s->ref, s->samplerate);
++ ms_flow_controlled_bufferizer_set_max_size_ms(&s->ref, s->delay_ms);
++ ms_flow_controlled_bufferizer_set_granularity_ms(
++ &s->ref, (s->framesize * 1000) / s->samplerate);
+ }
+
+ static void webrtc_aec_preprocess(MSFilter *f) {
+- WebRTCAECState *s = (WebRTCAECState *) f->data;
++ WebRTCAECState *s = (WebRTCAECState *)f->data;
+ #ifdef BUILD_AEC
+- AecConfig aec_config;
++ AecConfig aec_config;
+ #endif
+ #ifdef BUILD_AECM
+- AecmConfig aecm_config;
+- int error_code;
++ AecmConfig aecm_config;
++ int error_code;
+ #endif
+- int delay_samples = 0;
+- mblk_t *m;
++ int delay_samples = 0;
++ mblk_t *m;
+
+- s->echostarted = FALSE;
+- delay_samples = s->delay_ms * s->samplerate / 1000;
+- s->framesize=(framesize*s->samplerate)/8000;
+- ms_message("Initializing WebRTC echo canceler with framesize=%i, delay_ms=%i, delay_samples=%i", s->framesize, s->delay_ms, delay_samples);
+- configure_flow_controlled_bufferizer(s);
++ s->echostarted = FALSE;
++ delay_samples = s->delay_ms * s->samplerate / 1000;
++ s->framesize = (framesize * s->samplerate) / 8000;
++ ms_message("Initializing WebRTC echo canceler with framesize=%i, "
++ "delay_ms=%i, delay_samples=%i",
++ s->framesize, s->delay_ms, delay_samples);
++ configure_flow_controlled_bufferizer(s);
+
+ #ifdef BUILD_AEC
+- if (s->aec_type == WebRTCAECTypeNormal) {
+- if ((s->aecInst = WebRtcAec_Create()) == NULL) {
+- s->bypass_mode = TRUE;
+- ms_error("WebRtcAec_Create(): error, entering bypass mode");
+- return;
+- }
+- if ((WebRtcAec_Init(s->aecInst, MIN(48000, s->samplerate), s->samplerate)) < 0) {
+- ms_error("WebRtcAec_Init(): WebRTC echo canceller does not support %d samplerate", s->samplerate);
+- s->bypass_mode = TRUE;
+- ms_error("Entering bypass mode");
+- return;
+- }
+- aec_config.nlpMode = kAecNlpAggressive;
+- aec_config.skewMode = kAecFalse;
+- aec_config.metricsMode = kAecFalse;
+- aec_config.delay_logging = kAecFalse;
+- if (WebRtcAec_set_config(s->aecInst, aec_config) != 0) {
+- ms_error("WebRtcAec_set_config(): failed.");
+- }
+- }
++ if (s->aec_type == WebRTCAECTypeNormal) {
++ if ((s->aecInst = WebRtcAec_Create()) == NULL) {
++ s->bypass_mode = TRUE;
++ ms_error("WebRtcAec_Create(): error, entering bypass mode");
++ return;
++ }
++ if ((WebRtcAec_Init(s->aecInst, MIN(48000, s->samplerate), s->samplerate)) <
++ 0) {
++ ms_error("WebRtcAec_Init(): WebRTC echo canceller does not support %d "
++ "samplerate",
++ s->samplerate);
++ s->bypass_mode = TRUE;
++ ms_error("Entering bypass mode");
++ return;
++ }
++ aec_config.nlpMode = kAecNlpAggressive;
++ aec_config.skewMode = kAecFalse;
++ aec_config.metricsMode = kAecFalse;
++ aec_config.delay_logging = kAecFalse;
++ if (WebRtcAec_set_config(s->aecInst, aec_config) != 0) {
++ ms_error("WebRtcAec_set_config(): failed.");
++ }
++ }
+ #endif
+ #ifdef BUILD_AECM
+- if (s->aec_type == WebRTCAECTypeMobile) {
+- if ((s->aecInst = WebRtcAecm_Create()) == NULL) {
+- s->bypass_mode = TRUE;
+- ms_error("WebRtcAecm_Create(): error, entering bypass mode");
+- return;
+- }
+- if ((error_code = WebRtcAecm_Init(s->aecInst, s->samplerate)) < 0) {
+- if (error_code == AECM_BAD_PARAMETER_ERROR) {
+- ms_error("WebRtcAecm_Init(): WebRTC echo canceller does not support %d samplerate", s->samplerate);
+- }
+- s->bypass_mode = TRUE;
+- ms_error("Entering bypass mode");
+- return;
+- }
+- aecm_config.cngMode = TRUE;
+- aecm_config.echoMode = 3;
+- if (WebRtcAecm_set_config(s->aecInst, aecm_config)!=0){
+- ms_error("WebRtcAecm_set_config(): failed.");
+- }
+- }
++ if (s->aec_type == WebRTCAECTypeMobile) {
++ if ((s->aecInst = WebRtcAecm_Create()) == NULL) {
++ s->bypass_mode = TRUE;
++ ms_error("WebRtcAecm_Create(): error, entering bypass mode");
++ return;
++ }
++ if ((error_code = WebRtcAecm_Init(s->aecInst, s->samplerate)) < 0) {
++ if (error_code == AECM_BAD_PARAMETER_ERROR) {
++ ms_error("WebRtcAecm_Init(): WebRTC echo canceller does not support %d "
++ "samplerate",
++ s->samplerate);
++ }
++ s->bypass_mode = TRUE;
++ ms_error("Entering bypass mode");
++ return;
++ }
++ aecm_config.cngMode = TRUE;
++ aecm_config.echoMode = 3;
++ if (WebRtcAecm_set_config(s->aecInst, aecm_config) != 0) {
++ ms_error("WebRtcAecm_set_config(): failed.");
++ }
++ }
+ #endif
+
+- /* fill with zeroes for the time of the delay*/
+- m = allocb(delay_samples * 2, 0);
+- m->b_wptr += delay_samples * 2;
+- ms_bufferizer_put(&s->delayed_ref, m);
+- s->nominal_ref_samples = delay_samples;
++ /* fill with zeroes for the time of the delay*/
++ m = allocb(delay_samples * 2, 0);
++ m->b_wptr += delay_samples * 2;
++ ms_bufferizer_put(&s->delayed_ref, m);
++ s->nominal_ref_samples = delay_samples;
+ }
+
+ /* inputs[0]= reference signal from far end (sent to soundcard)
+ * inputs[1]= near speech & echo signal (read from soundcard)
+ * outputs[0]= is a copy of inputs[0] to be sent to soundcard
+ * outputs[1]= near end speech, echo removed - towards far end
+-*/
++ */
+ static void webrtc_aec_process(MSFilter *f) {
+- WebRTCAECState *s = (WebRTCAECState *) f->data;
+- int nbytes = s->framesize * sizeof(int16_t);
+- mblk_t *refm;
+- int16_t *ref, *echo;
+- int nbands = 1;
+- int bandsize = s->framesize;
+-
+- if (s->bypass_mode) {
+- while ((refm = ms_queue_get(f->inputs[0])) != NULL) {
+- ms_queue_put(f->outputs[0], refm);
+- }
+- while ((refm = ms_queue_get(f->inputs[1])) != NULL) {
+- ms_queue_put(f->outputs[1], refm);
+- }
+- return;
+- }
+-
+- if (f->inputs[0] != NULL) {
+- if (s->echostarted) {
+- while ((refm = ms_queue_get(f->inputs[0])) != NULL) {
+- mblk_t *cp=dupmsg(refm);
+- ms_bufferizer_put(&s->delayed_ref,cp);
+- ms_flow_controlled_bufferizer_put(&s->ref,refm);
+- }
+- } else {
+- ms_warning("Getting reference signal but no echo to synchronize on.");
+- ms_queue_flush(f->inputs[0]);
+- }
+- }
+-
+- ms_bufferizer_put_from_queue(&s->echo, f->inputs[1]);
+-
+- ref = (int16_t *) alloca(nbytes);
+- echo = (int16_t *) alloca(nbytes);
++ WebRTCAECState *s = (WebRTCAECState *)f->data;
++ int nbytes = s->framesize * sizeof(int16_t);
++ mblk_t *refm;
++ int16_t *ref, *echo;
++ int nbands = 1;
++ int bandsize = s->framesize;
++
++ if (s->bypass_mode) {
++ while ((refm = ms_queue_get(f->inputs[0])) != NULL) {
++ ms_queue_put(f->outputs[0], refm);
++ }
++ while ((refm = ms_queue_get(f->inputs[1])) != NULL) {
++ ms_queue_put(f->outputs[1], refm);
++ }
++ return;
++ }
++
++ if (f->inputs[0] != NULL) {
++ if (s->echostarted) {
++ while ((refm = ms_queue_get(f->inputs[0])) != NULL) {
++ mblk_t *cp = dupmsg(refm);
++ ms_bufferizer_put(&s->delayed_ref, cp);
++ ms_flow_controlled_bufferizer_put(&s->ref, refm);
++ }
++ } else {
++ ms_warning("Getting reference signal but no echo to synchronize on.");
++ ms_queue_flush(f->inputs[0]);
++ }
++ }
++
++ ms_bufferizer_put_from_queue(&s->echo, f->inputs[1]);
++
++ ref = (int16_t *)alloca(nbytes);
++ echo = (int16_t *)alloca(nbytes);
+ #ifdef BUILD_AEC
+- if (s->aec_type == WebRTCAECTypeNormal) {
+- if (s->samplerate > 16000) {
+- nbands = s->samplerate / 16000;
+- bandsize = 160;
+- }
+- if (!s->splitting_filter) {
+- s->splitting_filter = mswebrtc_aec_splitting_filter_create(nbands, bandsize);
+- }
+- }
++ if (s->aec_type == WebRTCAECTypeNormal) {
++ if (s->samplerate > 16000) {
++ nbands = s->samplerate / 16000;
++ bandsize = 160;
++ }
++ if (!s->splitting_filter) {
++ s->splitting_filter =
++ mswebrtc_aec_splitting_filter_create(nbands, bandsize);
++ }
++ }
+ #endif
+- while (ms_bufferizer_read(&s->echo, (uint8_t *)echo, (size_t)nbytes) >= (size_t)nbytes) {
+- mblk_t *oecho = allocb(nbytes, 0);
+- int avail;
+- int avail_samples;
+-
+- if (!s->echostarted) s->echostarted = TRUE;
+- if ((avail = ms_bufferizer_get_avail(&s->delayed_ref)) < ((s->nominal_ref_samples * 2) + nbytes)) {
+- /*we don't have enough to read in a reference signal buffer, inject silence instead*/
+- refm = allocb(nbytes, 0);
+- memset(refm->b_wptr, 0, nbytes);
+- refm->b_wptr += nbytes;
+- ms_bufferizer_put(&s->delayed_ref, refm);
+- /*
+- * However, we don't inject this silence buffer to the sound card, in order to break the following bad loop:
+- * - the sound playback filter detects it has too many pending samples, then triggers an event to request samples to be dropped upstream.
+- * - the upstream MSFlowControl filter is requested to drop samples, which it starts to do.
+- * - necessarily shortly after the AEC goes into a situation where it has not enough reference samples while processing an audio buffer from mic.
+- * - if the AEC injects a silence buffer as output, then it will RECREATE a situation where the sound playback filter has too many pending samples.
+- * That's why we should not do this.
+- * By not doing this, we will create a discrepancy between what we really injected to the soundcard, and what we told to the
+- * echo canceller about the samples we injected. This shifts the echo. The echo canceller will re-converge quickly to take into
+- * account the situation.
+- *
+- */
+- //ms_queue_put(f->outputs[0], dupmsg(refm));
+- if (!s->using_zeroes) {
+- ms_warning("Not enough ref samples, using zeroes");
+- s->using_zeroes = TRUE;
+- }
+- } else {
+- if (s->using_zeroes) {
+- ms_message("Samples are back.");
+- s->using_zeroes = FALSE;
+- }
+- /* read from our no-delay buffer and output */
+- refm = allocb(nbytes, 0);
+- if (ms_flow_controlled_bufferizer_read(&s->ref, refm->b_wptr, nbytes) == 0) {
+- ms_fatal("Should never happen");
+- }
+- refm->b_wptr += nbytes;
+- ms_queue_put(f->outputs[0], refm);
+- }
+-
+- /*now read a valid buffer of delayed ref samples*/
+- if (ms_bufferizer_read(&s->delayed_ref, (uint8_t *)ref, nbytes) == 0) {
+- ms_fatal("Should never happen");
+- }
+- avail -= nbytes;
+- avail_samples = avail / 2;
++ while (ms_bufferizer_read(&s->echo, (uint8_t *)echo, (size_t)nbytes) >=
++ (size_t)nbytes) {
++ mblk_t *oecho = allocb(nbytes, 0);
++ int avail;
++ int avail_samples;
++
++ if (!s->echostarted)
++ s->echostarted = TRUE;
++ if ((avail = ms_bufferizer_get_avail(&s->delayed_ref)) <
++ ((s->nominal_ref_samples * 2) + nbytes)) {
++ /*we don't have enough to read in a reference signal buffer, inject
++ * silence instead*/
++ refm = allocb(nbytes, 0);
++ memset(refm->b_wptr, 0, nbytes);
++ refm->b_wptr += nbytes;
++ ms_bufferizer_put(&s->delayed_ref, refm);
++ /*
++ * However, we don't inject this silence buffer to the sound card, in
++ * order to break the following bad loop:
++ * - the sound playback filter detects it has too many pending samples,
++ * then triggers an event to request samples to be dropped upstream.
++ * - the upstream MSFlowControl filter is requested to drop samples, which
++ * it starts to do.
++ * - necessarily shortly after the AEC goes into a situation where it has
++ * not enough reference samples while processing an audio buffer from mic.
++ * - if the AEC injects a silence buffer as output, then it will RECREATE
++ * a situation where the sound playback filter has too many pending
++ * samples. That's why we should not do this. By not doing this, we will
++ * create a discrepancy between what we really injected to the soundcard,
++ * and what we told to the echo canceller about the samples we injected.
++ * This shifts the echo. The echo canceller will re-converge quickly to
++ * take into account the situation.
++ *
++ */
++ // ms_queue_put(f->outputs[0], dupmsg(refm));
++ if (!s->using_zeroes) {
++ ms_warning("Not enough ref samples, using zeroes");
++ s->using_zeroes = TRUE;
++ }
++ } else {
++ if (s->using_zeroes) {
++ ms_message("Samples are back.");
++ s->using_zeroes = FALSE;
++ }
++ /* read from our no-delay buffer and output */
++ refm = allocb(nbytes, 0);
++ if (ms_flow_controlled_bufferizer_read(&s->ref, refm->b_wptr, nbytes) ==
++ 0) {
++ ms_fatal("Should never happen");
++ }
++ refm->b_wptr += nbytes;
++ ms_queue_put(f->outputs[0], refm);
++ }
++
++ /*now read a valid buffer of delayed ref samples*/
++ if (ms_bufferizer_read(&s->delayed_ref, (uint8_t *)ref, nbytes) == 0) {
++ ms_fatal("Should never happen");
++ }
++ avail -= nbytes;
++ avail_samples = avail / 2;
+
+ #ifdef EC_DUMP
+- if (s->reffile)
+- fwrite(ref, nbytes, 1, s->reffile);
+- if (s->echofile)
+- fwrite(echo, nbytes, 1, s->echofile);
++ if (s->reffile)
++ fwrite(ref, nbytes, 1, s->reffile);
++ if (s->echofile)
++ fwrite(echo, nbytes, 1, s->echofile);
+ #endif
+ #ifdef BUILD_AEC
+- if (s->aec_type == WebRTCAECTypeNormal) {
+- mswebrtc_aec_splitting_filter_analysis(s->splitting_filter, ref, echo);
+- if (WebRtcAec_BufferFarend(s->aecInst,
+- mswebrtc_aec_splitting_filter_get_ref(s->splitting_filter),
+- (size_t)mswebrtc_aec_splitting_filter_get_bandsize(s->splitting_filter)) != 0)
+- ms_error("WebRtcAec_BufferFarend() failed.");
+- if (WebRtcAec_Process(s->aecInst,
+- mswebrtc_aec_splitting_filter_get_echo_bands(s->splitting_filter),
+- mswebrtc_aec_splitting_filter_get_number_of_bands(s->splitting_filter),
+- mswebrtc_aec_splitting_filter_get_output_bands(s->splitting_filter),
+- (size_t)mswebrtc_aec_splitting_filter_get_bandsize(s->splitting_filter), 0, 0) != 0)
+- ms_error("WebRtcAec_Process() failed.");
+- mswebrtc_aec_splitting_filter_synthesis(s->splitting_filter, (int16_t *)oecho->b_wptr);
+- }
++ if (s->aec_type == WebRTCAECTypeNormal) {
++ mswebrtc_aec_splitting_filter_analysis(s->splitting_filter, ref, echo);
++ if (WebRtcAec_BufferFarend(
++ s->aecInst,
++ mswebrtc_aec_splitting_filter_get_ref(s->splitting_filter),
++ (size_t)mswebrtc_aec_splitting_filter_get_bandsize(
++ s->splitting_filter)) != 0)
++ ms_error("WebRtcAec_BufferFarend() failed.");
++ if (WebRtcAec_Process(
++ s->aecInst,
++ mswebrtc_aec_splitting_filter_get_echo_bands(s->splitting_filter),
++ mswebrtc_aec_splitting_filter_get_number_of_bands(
++ s->splitting_filter),
++ mswebrtc_aec_splitting_filter_get_output_bands(
++ s->splitting_filter),
++ (size_t)mswebrtc_aec_splitting_filter_get_bandsize(
++ s->splitting_filter),
++ 0, 0) != 0)
++ ms_error("WebRtcAec_Process() failed.");
++ mswebrtc_aec_splitting_filter_synthesis(s->splitting_filter,
++ (int16_t *)oecho->b_wptr);
++ }
+ #endif
+ #ifdef BUILD_AECM
+- if (s->aec_type == WebRTCAECTypeMobile) {
+- if (WebRtcAecm_BufferFarend(s->aecInst, ref, (size_t)s->framesize) != 0)
+- ms_error("WebRtcAecm_BufferFarend() failed.");
+- if (WebRtcAecm_Process(s->aecInst, echo, NULL, (int16_t *)oecho->b_wptr, (size_t)s->framesize, 0) != 0)
+- ms_error("WebRtcAecm_Process() failed.");
+- }
++ if (s->aec_type == WebRTCAECTypeMobile) {
++ if (WebRtcAecm_BufferFarend(s->aecInst, ref, (size_t)s->framesize) != 0)
++ ms_error("WebRtcAecm_BufferFarend() failed.");
++ if (WebRtcAecm_Process(s->aecInst, echo, NULL, (int16_t *)oecho->b_wptr,
++ (size_t)s->framesize, 0) != 0)
++ ms_error("WebRtcAecm_Process() failed.");
++ }
+ #endif
+ #ifdef EC_DUMP
+- if (s->cleanfile)
+- fwrite(oecho->b_wptr, nbytes, 1, s->cleanfile);
++ if (s->cleanfile)
++ fwrite(oecho->b_wptr, nbytes, 1, s->cleanfile);
+ #endif
+- oecho->b_wptr += nbytes;
+- ms_queue_put(f->outputs[1], oecho);
+- }
++ oecho->b_wptr += nbytes;
++ ms_queue_put(f->outputs[1], oecho);
++ }
+ }
+
+ static void webrtc_aec_postprocess(MSFilter *f) {
+- WebRTCAECState *s = (WebRTCAECState *) f->data;
++ WebRTCAECState *s = (WebRTCAECState *)f->data;
+
+- ms_bufferizer_flush(&s->delayed_ref);
+- ms_bufferizer_flush(&s->echo);
+- ms_flow_controlled_bufferizer_flush(&s->ref);
++ ms_bufferizer_flush(&s->delayed_ref);
++ ms_bufferizer_flush(&s->echo);
++ ms_flow_controlled_bufferizer_flush(&s->ref);
+ #ifdef BUILD_AEC
+- if (s->splitting_filter) {
+- mswebrtc_aec_splitting_filter_destroy(s->splitting_filter);
+- s->splitting_filter = NULL;
+- }
++ if (s->splitting_filter) {
++ mswebrtc_aec_splitting_filter_destroy(s->splitting_filter);
++ s->splitting_filter = NULL;
++ }
+ #endif
+- if (s->aecInst != NULL) {
++ if (s->aecInst != NULL) {
+ #ifdef BUILD_AEC
+- if (s->aec_type == WebRTCAECTypeNormal) {
+- WebRtcAec_Free(s->aecInst);
+- }
++ if (s->aec_type == WebRTCAECTypeNormal) {
++ WebRtcAec_Free(s->aecInst);
++ }
+ #endif
+ #ifdef BUILD_AECM
+- if (s->aec_type == WebRTCAECTypeMobile) {
+- WebRtcAecm_Free(s->aecInst);
+- }
++ if (s->aec_type == WebRTCAECTypeMobile) {
++ WebRtcAecm_Free(s->aecInst);
++ }
+ #endif
+- s->aecInst = NULL;
+- }
++ s->aecInst = NULL;
++ }
+ }
+
+ static int webrtc_aec_set_sr(MSFilter *f, void *arg) {
+- WebRTCAECState *s = (WebRTCAECState *) f->data;
+- int requested_sr = *(int *) arg;
+- int sr = requested_sr;
+-
+- if ((s->aec_type == WebRTCAECTypeNormal) && (requested_sr >= 48000)) {
+- sr = 48000;
+- } else if ((s->aec_type == WebRTCAECTypeNormal) && (requested_sr >= 32000)) {
+- sr = 32000;
+- } else if (requested_sr >= 16000) {
+- sr = 16000;
+- } else {
+- sr = 8000;
+- }
+- if (sr != requested_sr)
+- ms_message("Webrtc %s does not support sampling rate %i, using %i instead", ((s->aec_type == WebRTCAECTypeNormal)?"aec":"aecm"),requested_sr, sr);
+-
+- s->samplerate = sr;
+- configure_flow_controlled_bufferizer(s);
+- return 0;
++ WebRTCAECState *s = (WebRTCAECState *)f->data;
++ int requested_sr = *(int *)arg;
++ int sr = requested_sr;
++
++ if ((s->aec_type == WebRTCAECTypeNormal) && (requested_sr >= 48000)) {
++ sr = 48000;
++ } else if ((s->aec_type == WebRTCAECTypeNormal) && (requested_sr >= 32000)) {
++ sr = 32000;
++ } else if (requested_sr >= 16000) {
++ sr = 16000;
++ } else {
++ sr = 8000;
++ }
++ if (sr != requested_sr)
++ ms_message("Webrtc %s does not support sampling rate %i, using %i instead",
++ ((s->aec_type == WebRTCAECTypeNormal) ? "aec" : "aecm"),
++ requested_sr, sr);
++
++ s->samplerate = sr;
++ configure_flow_controlled_bufferizer(s);
++ return 0;
+ }
+
+ static int webrtc_aec_get_sr(MSFilter *f, void *arg) {
+- WebRTCAECState *s = (WebRTCAECState *) f->data;
+- *(int *) arg=s->samplerate;
+- return 0;
++ WebRTCAECState *s = (WebRTCAECState *)f->data;
++ *(int *)arg = s->samplerate;
++ return 0;
+ }
+
+ static int webrtc_aec_set_framesize(MSFilter *f, void *arg) {
+- /* Do nothing because the WebRTC echo canceller only accept specific values: 80 and 160. We use 80 at 8khz, and 160 at 16khz */
+- return 0;
++ /* Do nothing because the WebRTC echo canceller only accept specific values:
++ * 80 and 160. We use 80 at 8khz, and 160 at 16khz */
++ return 0;
+ }
+
+ static int webrtc_aec_set_delay(MSFilter *f, void *arg) {
+- WebRTCAECState *s = (WebRTCAECState *) f->data;
+- s->delay_ms = *(int *) arg;
+- configure_flow_controlled_bufferizer(s);
+- return 0;
++ WebRTCAECState *s = (WebRTCAECState *)f->data;
++ s->delay_ms = *(int *)arg;
++ configure_flow_controlled_bufferizer(s);
++ return 0;
+ }
+
+ static int webrtc_aec_set_tail_length(MSFilter *f, void *arg) {
+- /* Do nothing because this is not needed by the WebRTC echo canceller. */
+- return 0;
++ /* Do nothing because this is not needed by the WebRTC echo canceller. */
++ return 0;
+ }
+ static int webrtc_aec_set_bypass_mode(MSFilter *f, void *arg) {
+- WebRTCAECState *s = (WebRTCAECState *) f->data;
+- s->bypass_mode = *(bool_t *) arg;
+- ms_message("set EC bypass mode to [%i]", s->bypass_mode);
+- return 0;
++ WebRTCAECState *s = (WebRTCAECState *)f->data;
++ s->bypass_mode = *(bool_t *)arg;
++ ms_message("set EC bypass mode to [%i]", s->bypass_mode);
++ return 0;
+ }
+ static int webrtc_aec_get_bypass_mode(MSFilter *f, void *arg) {
+- WebRTCAECState *s = (WebRTCAECState *) f->data;
+- *(bool_t *) arg = s->bypass_mode;
+- return 0;
++ WebRTCAECState *s = (WebRTCAECState *)f->data;
++ *(bool_t *)arg = s->bypass_mode;
++ return 0;
+ }
+
+ static int webrtc_aec_set_state(MSFilter *f, void *arg) {
+- WebRTCAECState *s = (WebRTCAECState *) f->data;
+- s->state_str = ms_strdup((const char *) arg);
+- return 0;
++ WebRTCAECState *s = (WebRTCAECState *)f->data;
++ s->state_str = ms_strdup((const char *)arg);
++ return 0;
+ }
+
+ static int webrtc_aec_get_state(MSFilter *f, void *arg) {
+- WebRTCAECState *s = (WebRTCAECState *) f->data;
+- *(char **) arg = s->state_str;
+- return 0;
++ WebRTCAECState *s = (WebRTCAECState *)f->data;
++ *(char **)arg = s->state_str;
++ return 0;
+ }
+
+ static MSFilterMethod webrtc_aec_methods[] = {
+- { MS_FILTER_SET_SAMPLE_RATE , webrtc_aec_set_sr },
+- { MS_FILTER_GET_SAMPLE_RATE , webrtc_aec_get_sr },
+- { MS_ECHO_CANCELLER_SET_TAIL_LENGTH , webrtc_aec_set_tail_length },
+- { MS_ECHO_CANCELLER_SET_DELAY , webrtc_aec_set_delay },
+- { MS_ECHO_CANCELLER_SET_FRAMESIZE , webrtc_aec_set_framesize },
+- { MS_ECHO_CANCELLER_SET_BYPASS_MODE , webrtc_aec_set_bypass_mode },
+- { MS_ECHO_CANCELLER_GET_BYPASS_MODE , webrtc_aec_get_bypass_mode },
+- { MS_ECHO_CANCELLER_GET_STATE_STRING , webrtc_aec_get_state },
+- { MS_ECHO_CANCELLER_SET_STATE_STRING , webrtc_aec_set_state },
+- { 0, NULL }
+-};
+-
++ {MS_FILTER_SET_SAMPLE_RATE, webrtc_aec_set_sr},
++ {MS_FILTER_GET_SAMPLE_RATE, webrtc_aec_get_sr},
++ {MS_ECHO_CANCELLER_SET_TAIL_LENGTH, webrtc_aec_set_tail_length},
++ {MS_ECHO_CANCELLER_SET_DELAY, webrtc_aec_set_delay},
++ {MS_ECHO_CANCELLER_SET_FRAMESIZE, webrtc_aec_set_framesize},
++ {MS_ECHO_CANCELLER_SET_BYPASS_MODE, webrtc_aec_set_bypass_mode},
++ {MS_ECHO_CANCELLER_GET_BYPASS_MODE, webrtc_aec_get_bypass_mode},
++ {MS_ECHO_CANCELLER_GET_STATE_STRING, webrtc_aec_get_state},
++ {MS_ECHO_CANCELLER_SET_STATE_STRING, webrtc_aec_set_state},
++ {0, NULL}};
+
+ #ifdef BUILD_AEC
+
+-#define MS_WEBRTC_AEC_NAME "MSWebRTCAEC"
++#define MS_WEBRTC_AEC_NAME "MSWebRTCAEC"
+ #define MS_WEBRTC_AEC_DESCRIPTION "Echo canceller using WebRTC library."
+-#define MS_WEBRTC_AEC_CATEGORY MS_FILTER_OTHER
+-#define MS_WEBRTC_AEC_ENC_FMT NULL
+-#define MS_WEBRTC_AEC_NINPUTS 2
+-#define MS_WEBRTC_AEC_NOUTPUTS 2
+-#define MS_WEBRTC_AEC_FLAGS 0
++#define MS_WEBRTC_AEC_CATEGORY MS_FILTER_OTHER
++#define MS_WEBRTC_AEC_ENC_FMT NULL
++#define MS_WEBRTC_AEC_NINPUTS 2
++#define MS_WEBRTC_AEC_NOUTPUTS 2
++#define MS_WEBRTC_AEC_FLAGS 0
+
+ #ifdef _MSC_VER
+
+ MSFilterDesc ms_webrtc_aec_desc = {
+- MS_FILTER_PLUGIN_ID,
+- MS_WEBRTC_AEC_NAME,
+- MS_WEBRTC_AEC_DESCRIPTION,
+- MS_WEBRTC_AEC_CATEGORY,
+- MS_WEBRTC_AEC_ENC_FMT,
+- MS_WEBRTC_AEC_NINPUTS,
+- MS_WEBRTC_AEC_NOUTPUTS,
+- webrtc_aec_init,
+- webrtc_aec_preprocess,
+- webrtc_aec_process,
+- webrtc_aec_postprocess,
+- webrtc_aec_uninit,
+- webrtc_aec_methods,
+- MS_WEBRTC_AEC_FLAGS
+-};
++ MS_FILTER_PLUGIN_ID, MS_WEBRTC_AEC_NAME, MS_WEBRTC_AEC_DESCRIPTION,
++ MS_WEBRTC_AEC_CATEGORY, MS_WEBRTC_AEC_ENC_FMT, MS_WEBRTC_AEC_NINPUTS,
++ MS_WEBRTC_AEC_NOUTPUTS, webrtc_aec_init, webrtc_aec_preprocess,
++ webrtc_aec_process, webrtc_aec_postprocess, webrtc_aec_uninit,
++ webrtc_aec_methods, MS_WEBRTC_AEC_FLAGS};
+
+ #else
+
+-MSFilterDesc ms_webrtc_aec_desc = {
+- .id = MS_FILTER_PLUGIN_ID,
+- .name = MS_WEBRTC_AEC_NAME,
+- .text = MS_WEBRTC_AEC_DESCRIPTION,
+- .category = MS_WEBRTC_AEC_CATEGORY,
+- .enc_fmt = MS_WEBRTC_AEC_ENC_FMT,
+- .ninputs = MS_WEBRTC_AEC_NINPUTS,
+- .noutputs = MS_WEBRTC_AEC_NOUTPUTS,
+- .init = webrtc_aec_init,
+- .preprocess = webrtc_aec_preprocess,
+- .process = webrtc_aec_process,
+- .postprocess = webrtc_aec_postprocess,
+- .uninit = webrtc_aec_uninit,
+- .methods = webrtc_aec_methods,
+- .flags = MS_WEBRTC_AEC_FLAGS
+-};
++MSFilterDesc ms_webrtc_aec_desc = {.id = MS_FILTER_PLUGIN_ID,
++ .name = MS_WEBRTC_AEC_NAME,
++ .text = MS_WEBRTC_AEC_DESCRIPTION,
++ .category = MS_WEBRTC_AEC_CATEGORY,
++ .enc_fmt = MS_WEBRTC_AEC_ENC_FMT,
++ .ninputs = MS_WEBRTC_AEC_NINPUTS,
++ .noutputs = MS_WEBRTC_AEC_NOUTPUTS,
++ .init = webrtc_aec_init,
++ .preprocess = webrtc_aec_preprocess,
++ .process = webrtc_aec_process,
++ .postprocess = webrtc_aec_postprocess,
++ .uninit = webrtc_aec_uninit,
++ .methods = webrtc_aec_methods,
++ .flags = MS_WEBRTC_AEC_FLAGS};
+
+ #endif
+
+@@ -517,51 +535,40 @@ MS_FILTER_DESC_EXPORT(ms_webrtc_aec_desc)
+
+ #ifdef BUILD_AECM
+
+-#define MS_WEBRTC_AECM_NAME "MSWebRTCAECM"
+-#define MS_WEBRTC_AECM_DESCRIPTION "Echo canceller for mobile using WebRTC library."
+-#define MS_WEBRTC_AECM_CATEGORY MS_FILTER_OTHER
+-#define MS_WEBRTC_AECM_ENC_FMT NULL
+-#define MS_WEBRTC_AECM_NINPUTS 2
+-#define MS_WEBRTC_AECM_NOUTPUTS 2
+-#define MS_WEBRTC_AECM_FLAGS 0
++#define MS_WEBRTC_AECM_NAME "MSWebRTCAECM"
++#define MS_WEBRTC_AECM_DESCRIPTION \
++ "Echo canceller for mobile using WebRTC library."
++#define MS_WEBRTC_AECM_CATEGORY MS_FILTER_OTHER
++#define MS_WEBRTC_AECM_ENC_FMT NULL
++#define MS_WEBRTC_AECM_NINPUTS 2
++#define MS_WEBRTC_AECM_NOUTPUTS 2
++#define MS_WEBRTC_AECM_FLAGS 0
+
+ #ifdef _MSC_VER
+
+ MSFilterDesc ms_webrtc_aecm_desc = {
+- MS_FILTER_PLUGIN_ID,
+- MS_WEBRTC_AECM_NAME,
+- MS_WEBRTC_AECM_DESCRIPTION,
+- MS_WEBRTC_AECM_CATEGORY,
+- MS_WEBRTC_AECM_ENC_FMT,
+- MS_WEBRTC_AECM_NINPUTS,
+- MS_WEBRTC_AECM_NOUTPUTS,
+- webrtc_aecm_init,
+- webrtc_aec_preprocess,
+- webrtc_aec_process,
+- webrtc_aec_postprocess,
+- webrtc_aec_uninit,
+- webrtc_aec_methods,
+- MS_WEBRTC_AECM_FLAGS
+-};
++ MS_FILTER_PLUGIN_ID, MS_WEBRTC_AECM_NAME, MS_WEBRTC_AECM_DESCRIPTION,
++ MS_WEBRTC_AECM_CATEGORY, MS_WEBRTC_AECM_ENC_FMT, MS_WEBRTC_AECM_NINPUTS,
++ MS_WEBRTC_AECM_NOUTPUTS, webrtc_aecm_init, webrtc_aec_preprocess,
++ webrtc_aec_process, webrtc_aec_postprocess, webrtc_aec_uninit,
++ webrtc_aec_methods, MS_WEBRTC_AECM_FLAGS};
+
+ #else
+
+-MSFilterDesc ms_webrtc_aecm_desc = {
+- .id = MS_FILTER_PLUGIN_ID,
+- .name = MS_WEBRTC_AECM_NAME,
+- .text = MS_WEBRTC_AECM_DESCRIPTION,
+- .category = MS_WEBRTC_AECM_CATEGORY,
+- .enc_fmt = MS_WEBRTC_AECM_ENC_FMT,
+- .ninputs = MS_WEBRTC_AECM_NINPUTS,
+- .noutputs = MS_WEBRTC_AECM_NOUTPUTS,
+- .init = webrtc_aecm_init,
+- .preprocess = webrtc_aec_preprocess,
+- .process = webrtc_aec_process,
+- .postprocess = webrtc_aec_postprocess,
+- .uninit = webrtc_aec_uninit,
+- .methods = webrtc_aec_methods,
+- .flags = MS_WEBRTC_AECM_FLAGS
+-};
++MSFilterDesc ms_webrtc_aecm_desc = {.id = MS_FILTER_PLUGIN_ID,
++ .name = MS_WEBRTC_AECM_NAME,
++ .text = MS_WEBRTC_AECM_DESCRIPTION,
++ .category = MS_WEBRTC_AECM_CATEGORY,
++ .enc_fmt = MS_WEBRTC_AECM_ENC_FMT,
++ .ninputs = MS_WEBRTC_AECM_NINPUTS,
++ .noutputs = MS_WEBRTC_AECM_NOUTPUTS,
++ .init = webrtc_aecm_init,
++ .preprocess = webrtc_aec_preprocess,
++ .process = webrtc_aec_process,
++ .postprocess = webrtc_aec_postprocess,
++ .uninit = webrtc_aec_uninit,
++ .methods = webrtc_aec_methods,
++ .flags = MS_WEBRTC_AECM_FLAGS};
+
+ #endif
+
+--
+GitLab
+
diff --git a/gnu/packages/patches/mswebrtc-cmake.patch b/gnu/packages/patches/mswebrtc-cmake.patch
new file mode 100644
index 0000000000..19d0c31b10
--- /dev/null
+++ b/gnu/packages/patches/mswebrtc-cmake.patch
@@ -0,0 +1,626 @@
+From e52911c291e5ebe16da764e53cb740b7deb77e75 Mon Sep 17 00:00:00 2001
+From: Ghislain MARY <ghislain.mary@belledonne-communications.com>
+Date: Mon, 13 Mar 2023 19:05:30 +0100
+Subject: [PATCH] Update CMakeLists.txt so that the project can be added as a
+ subdirectory of linphone-sdk.
+
+Rename CMake targets for uniform naming.
+---
+ CMakeLists.txt | 68 ++++++++++++++++++----------------
+ cmake/FindBcToolbox.cmake | 67 +++++++++++++++++++++++++++++++++
+ cmake/FindMediastreamer2.cmake | 46 +++++++++++++++++++++++
+ cmake/FindOrtp.cmake | 43 +++++++++++++++++++++
+ 4 files changed, 193 insertions(+), 31 deletions(-)
+ create mode 100644 cmake/FindBcToolbox.cmake
+ create mode 100644 cmake/FindMediastreamer2.cmake
+ create mode 100644 cmake/FindOrtp.cmake
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0f26f4f..fd5b52e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,6 +1,6 @@
+ ############################################################################
+ # CMakeLists.txt
+-# Copyright (C) 2014 Belledonne Communications, Grenoble France
++# Copyright (C) 2014-2023 Belledonne Communications, Grenoble France
+ #
+ ############################################################################
+ #
+@@ -20,7 +20,8 @@
+ #
+ ############################################################################
+
+-cmake_minimum_required(VERSION 3.1)
++cmake_minimum_required(VERSION 3.22)
++
+ project(mswebrtc VERSION 1.1.1 LANGUAGES C CXX)
+
+
+@@ -34,8 +35,6 @@ set(PACKAGE_URL "")
+ set(VERSION "${PACKAGE_VERSION}")
+
+
+-option(ENABLE_SHARED "Build shared library." YES)
+-option(ENABLE_STATIC "Build static library." YES)
+ option(ENABLE_AEC "Enable the WebRTC echo canceller support." YES)
+ option(ENABLE_AECM "Enable the WebRTC echo canceller for mobile support." YES)
+ option(ENABLE_ISAC "Enable the ISAC audio codec support." YES)
+@@ -60,9 +59,20 @@ if(NOT CMAKE_INSTALL_RPATH AND CMAKE_INSTALL_PREFIX)
+ message(STATUS "Setting install rpath to ${CMAKE_INSTALL_RPATH}")
+ endif()
+
+-find_package(Mediastreamer2 REQUIRED CONFIG)
+-find_package(ortp REQUIRED CONFIG)
+-find_package(bctoolbox REQUIRED CONFIG)
++list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
++
++find_package(BcToolbox)
++if(NOT BCTOOLBOX_FOUND)
++ find_package(bctoolbox REQUIRED CONFIG)
++endif()
++find_package(Ortp)
++if(NOT ORTP_FOUND)
++ find_package(ortp REQUIRED CONFIG)
++endif()
++find_package(Mediastreamer2)
++if(NOT MEDIASTREAMER2_FOUND)
++ find_package(Mediastreamer2 REQUIRED CONFIG)
++endif()
+
+ find_library(LIBM NAMES m)
+
+@@ -410,24 +420,18 @@ endif()
+
+ set(MS2_PLUGINS_DIR "${MEDIASTREAMER2_PLUGINS_LOCATION}")
+
+-if(ENABLE_STATIC)
+- add_library(mswebrtc-static STATIC ${SOURCE_FILES})
+- set_target_properties(mswebrtc-static PROPERTIES OUTPUT_NAME mswebrtc)
+- set_target_properties(mswebrtc-static PROPERTIES LINKER_LANGUAGE CXX)
+- target_link_libraries(mswebrtc-static ${LIBS})
+- install(TARGETS mswebrtc-static
+- ARCHIVE DESTINATION "${MS2_PLUGINS_DIR}"
+- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+- )
+-endif()
+-if(ENABLE_SHARED)
+- if(NOT IOS)
+- add_library(mswebrtc MODULE ${SOURCE_FILES})
+- else()
++if(BUILD_SHARED_LIBS)
++ if(IOS)
+ add_library(mswebrtc SHARED ${SOURCE_FILES})
++ else()
++ add_library(mswebrtc MODULE ${SOURCE_FILES})
+ endif()
+- target_link_libraries(mswebrtc PRIVATE mediastreamer ortp bctoolbox ${LIBS})
+- set_target_properties(mswebrtc PROPERTIES LINKER_LANGUAGE CXX)
++else()
++ add_library(mswebrtc STATIC ${SOURCE_FILES})
++endif()
++target_link_libraries(mswebrtc PRIVATE mediastreamer2 ortp bctoolbox ${LIBS})
++set_target_properties(mswebrtc PROPERTIES LINKER_LANGUAGE CXX)
++if(BUILD_SHARED_LIBS)
+ if(APPLE)
+ if(IOS)
+ set(MIN_OS ${LINPHONE_IOS_DEPLOYMENT_TARGET})
+@@ -441,7 +445,7 @@ if(ENABLE_SHARED)
+ set(MIN_OS ${CMAKE_OSX_DEPLOYMENT_TARGET})
+ endif()
+
+- set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/build/osx/")
++ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/build/osx/")
+ endif()
+ if(MSVC)
+ if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
+@@ -454,14 +458,16 @@ if(ENABLE_SHARED)
+ set_target_properties(mswebrtc PROPERTIES PREFIX "lib")
+ endif()
+ endif()
+- install(TARGETS mswebrtc
+- RUNTIME DESTINATION ${MS2_PLUGINS_DIR}
+- LIBRARY DESTINATION ${MS2_PLUGINS_DIR}
+- ARCHIVE DESTINATION ${MS2_PLUGINS_DIR}
+- FRAMEWORK DESTINATION Frameworks
+- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+- )
+ endif()
+
++install(TARGETS mswebrtc
++ RUNTIME DESTINATION ${MS2_PLUGINS_DIR}
++ LIBRARY DESTINATION ${MS2_PLUGINS_DIR}
++ ARCHIVE DESTINATION ${MS2_PLUGINS_DIR}
++ FRAMEWORK DESTINATION Frameworks
++ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
++)
++
++
+ add_subdirectory(build)
+
+diff --git a/cmake/FindBcToolbox.cmake b/cmake/FindBcToolbox.cmake
+new file mode 100644
+index 0000000..5766478
+--- /dev/null
++++ b/cmake/FindBcToolbox.cmake
+@@ -0,0 +1,67 @@
++############################################################################
++# FindBctoolbox.cmake
++# Copyright (C) 2023 Belledonne Communications, Grenoble France
++#
++############################################################################
++#
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License
++# as published by the Free Software Foundation; either version 2
++# of the License, or (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++#
++############################################################################
++#
++# - Find the bctoolbox include files and library
++#
++# BCTOOLBOX_FOUND - System has lib bctoolbox
++# BCTOOLBOX_INCLUDE_DIRS - The bctoolbox include directories
++# BCTOOLBOX_LIBRARIES - The libraries needed to use bctoolbox
++# BCTOOLBOX_CMAKE_DIR - The bctoolbox cmake directory
++# BCTOOLBOX_CORE_FOUND - System has core bctoolbox
++# BCTOOLBOX_CORE_INCLUDE_DIRS - The core bctoolbox include directories
++# BCTOOLBOX_CORE_LIBRARIES - The core bctoolbox libraries
++# BCTOOLBOX_TESTER_FOUND - System has bctoolbox tester
++# BCTOOLBOX_TESTER_INCLUDE_DIRS - The bctoolbox tester include directories
++# BCTOOLBOX_TESTER_LIBRARIES - The bctoolbox tester libraries
++
++if(TARGET bctoolbox)
++
++ set(BCTOOLBOX_CORE_LIBRARIES bctoolbox)
++ get_target_property(BCTOOLBOX_CORE_INCLUDE_DIRS bctoolbox INTERFACE_INCLUDE_DIRECTORIES)
++ set(BCTOOLBOX_CORE_FOUND TRUE)
++ get_target_property(BCTOOLBOX_SOURCE_DIR bctoolbox SOURCE_DIR)
++ set(BCTOOLBOX_CMAKE_DIR "${BCTOOLBOX_SOURCE_DIR}/../cmake")
++ if(TARGET bctoolbox-tester)
++ set(BCTOOLBOX_TESTER_LIBRARIES bctoolbox-tester)
++ get_target_property(BCTOOLBOX_TESTER_INCLUDE_DIRS bctoolbox-tester INTERFACE_INCLUDE_DIRECTORIES)
++ set(BCTOOLBOX_TESTER_FOUND TRUE)
++ set(BCTOOLBOX_TESTER_COMPONENT_VARIABLES BCTOOLBOX_TESTER_FOUND BCTOOLBOX_TESTER_INCLUDE_DIRS BCTOOLBOX_TESTER_LIBRARIES)
++ endif()
++ set(BCTOOLBOX_LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BCTOOLBOX_TESTER_LIBRARIES})
++ set(BCTOOLBOX_INCLUDE_DIRS ${BCTOOLBOX_CORE_INCLUDE_DIRS} ${BCTOOLBOX_TESTER_INCLUDE_DIRS})
++
++
++ include(FindPackageHandleStandardArgs)
++ find_package_handle_standard_args(BcToolbox
++ DEFAULT_MSG
++ BCTOOLBOX_INCLUDE_DIRS BCTOOLBOX_LIBRARIES BCTOOLBOX_CMAKE_DIR
++ BCTOOLBOX_CORE_FOUND BCTOOLBOX_CORE_INCLUDE_DIRS BCTOOLBOX_CORE_LIBRARIES
++ ${BCTOOLBOX_TESTER_COMPONENT_VARIABLES}
++ )
++
++ mark_as_advanced(
++ BCTOOLBOX_INCLUDE_DIRS BCTOOLBOX_LIBRARIES BCTOOLBOX_CMAKE_DIR
++ BCTOOLBOX_CORE_FOUND BCTOOLBOX_CORE_INCLUDE_DIRS BCTOOLBOX_CORE_LIBRARIES
++ ${BCTOOLBOX_TESTER_COMPONENT_VARIABLES}
++ )
++
++endif()
+diff --git a/cmake/FindMediastreamer2.cmake b/cmake/FindMediastreamer2.cmake
+new file mode 100644
+index 0000000..64ac8f2
+--- /dev/null
++++ b/cmake/FindMediastreamer2.cmake
+@@ -0,0 +1,46 @@
++############################################################################
++# FindMediastreamer2.cmake
++# Copyright (C) 2023 Belledonne Communications, Grenoble France
++#
++############################################################################
++#
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License
++# as published by the Free Software Foundation; either version 2
++# of the License, or (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++#
++############################################################################
++#
++# - Find the mediastreamer2 include files and library
++#
++# MEDIASTREAMER2_FOUND - system has lib mediastreamer2
++# MEDIASTREAMER2_INCLUDE_DIRS - the mediasteamer2 include directory
++# MEDIASTREAMER2_LIBRARIES - The library needed to use mediasteamer2
++# MEDIASTREAMER2_PLUGINS_LOCATION - The location of the mediastreamer2 plugins
++
++if(TARGET mediastreamer2)
++
++ set(MEDIASTREAMER2_LIBRARIES mediastreamer2)
++ get_target_property(MEDIASTREAMER2_INCLUDE_DIRS mediastreamer2 INTERFACE_INCLUDE_DIRECTORIES)
++ define_property(TARGET PROPERTY "MS2_PLUGINS" BRIEF_DOCS "Stores the location of mediastreamer2 plugins" FULL_DOCS "Stores the location of mediastreamer2 plugins")
++ get_target_property(MEDIASTREAMER2_PLUGINS_LOCATION mediastreamer2 MS2_PLUGINS)
++
++
++ include(FindPackageHandleStandardArgs)
++ find_package_handle_standard_args(Mediastreamer2
++ DEFAULT_MSG
++ MEDIASTREAMER2_INCLUDE_DIRS MEDIASTREAMER2_LIBRARIES
++ )
++
++ mark_as_advanced(MEDIASTREAMER2_INCLUDE_DIRS MEDIASTREAMER2_LIBRARIES)
++
++endif()
+diff --git a/cmake/FindOrtp.cmake b/cmake/FindOrtp.cmake
+new file mode 100644
+index 0000000..13121fb
+--- /dev/null
++++ b/cmake/FindOrtp.cmake
+@@ -0,0 +1,43 @@
++############################################################################
++# FindOrtp.cmake
++# Copyright (C) 2023 Belledonne Communications, Grenoble France
++#
++############################################################################
++#
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License
++# as published by the Free Software Foundation; either version 2
++# of the License, or (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++#
++############################################################################
++#
++# - Find the ortp include files and library
++#
++# ORTP_FOUND - system has lib ortp
++# ORTP_INCLUDE_DIRS - the ortp include directory
++# ORTP_LIBRARIES - The library needed to use ortp
++
++if(TARGET ortp)
++
++ set(ORTP_LIBRARIES ortp)
++ get_target_property(ORTP_INCLUDE_DIRS ortp INTERFACE_INCLUDE_DIRECTORIES)
++
++
++ include(FindPackageHandleStandardArgs)
++ find_package_handle_standard_args(Ortp
++ DEFAULT_MSG
++ ORTP_INCLUDE_DIRS ORTP_LIBRARIES
++ )
++
++ mark_as_advanced(ORTP_INCLUDE_DIRS ORTP_LIBRARIES)
++
++endif()
+--
+GitLab
+
+From b5aea9bdaeecd99f6fc5601bfb88541d4e55841b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micka=C3=ABl=20Turnel?=
+ <mickael.turnel@belledonne-communications.com>
+Date: Fri, 23 Jun 2023 11:05:24 +0200
+Subject: [PATCH] Change the library path in the binary dir so it can be
+ retrieved easily by testers
+
+---
+ CMakeLists.txt | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index fd5b52e..ab3e651 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -24,6 +24,7 @@ cmake_minimum_required(VERSION 3.22)
+
+ project(mswebrtc VERSION 1.1.1 LANGUAGES C CXX)
+
++set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/mediastreamer2/plugins")
+
+ set(PACKAGE "${PROJECT_NAME}")
+ set(PACKAGE_NAME "${PROJECT_NAME}")
+--
+GitLab
+
+From 1809337d6191ec40f88191b5ce07cfb01ed07b20 Mon Sep 17 00:00:00 2001
+From: Ghislain MARY <ghislain.mary@belledonne-communications.com>
+Date: Tue, 20 Jun 2023 11:47:00 +0200
+Subject: [PATCH] Improve CMake find_package functionality.
+
+---
+ CMakeLists.txt | 30 ++++-----------
+ build/CMakeLists.txt | 3 +-
+ cmake/FindBcToolbox.cmake | 67 ----------------------------------
+ cmake/FindMediastreamer2.cmake | 46 -----------------------
+ cmake/FindOrtp.cmake | 43 ----------------------
+ 5 files changed, 10 insertions(+), 179 deletions(-)
+ delete mode 100644 cmake/FindBcToolbox.cmake
+ delete mode 100644 cmake/FindMediastreamer2.cmake
+ delete mode 100644 cmake/FindOrtp.cmake
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index ab3e651..a869908 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -22,7 +22,7 @@
+
+ cmake_minimum_required(VERSION 3.22)
+
+-project(mswebrtc VERSION 1.1.1 LANGUAGES C CXX)
++project(MSWebRTC VERSION 1.1.1 LANGUAGES C CXX)
+
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/mediastreamer2/plugins")
+
+@@ -60,20 +60,8 @@ if(NOT CMAKE_INSTALL_RPATH AND CMAKE_INSTALL_PREFIX)
+ message(STATUS "Setting install rpath to ${CMAKE_INSTALL_RPATH}")
+ endif()
+
+-list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+-
+-find_package(BcToolbox)
+-if(NOT BCTOOLBOX_FOUND)
+- find_package(bctoolbox REQUIRED CONFIG)
+-endif()
+-find_package(Ortp)
+-if(NOT ORTP_FOUND)
+- find_package(ortp REQUIRED CONFIG)
+-endif()
+-find_package(Mediastreamer2)
+-if(NOT MEDIASTREAMER2_FOUND)
+- find_package(Mediastreamer2 REQUIRED CONFIG)
+-endif()
++find_package(BCToolbox 5.3.0 REQUIRED)
++find_package(Mediastreamer2 5.3.0 REQUIRED)
+
+ find_library(LIBM NAMES m)
+
+@@ -92,7 +80,7 @@ endif()
+ if(ENABLE_VAD)
+ set(BUILD_VAD 1)
+ endif()
+-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
++configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake" "${CMAKE_CURRENT_BINARY_DIR}/config.h")
+
+ set(WEBRTC_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/webrtc")
+ set(WEBRTC_SRC_DIR "${WEBRTC_ROOT_DIR}/webrtc")
+@@ -419,8 +407,6 @@ if(LIBM)
+ list(APPEND LIBS ${LIBM})
+ endif()
+
+-set(MS2_PLUGINS_DIR "${MEDIASTREAMER2_PLUGINS_LOCATION}")
+-
+ if(BUILD_SHARED_LIBS)
+ if(IOS)
+ add_library(mswebrtc SHARED ${SOURCE_FILES})
+@@ -430,7 +416,7 @@ if(BUILD_SHARED_LIBS)
+ else()
+ add_library(mswebrtc STATIC ${SOURCE_FILES})
+ endif()
+-target_link_libraries(mswebrtc PRIVATE mediastreamer2 ortp bctoolbox ${LIBS})
++target_link_libraries(mswebrtc PRIVATE ${Mediastreamer2_TARGET} ${LIBS})
+ set_target_properties(mswebrtc PROPERTIES LINKER_LANGUAGE CXX)
+ if(BUILD_SHARED_LIBS)
+ if(APPLE)
+@@ -462,9 +448,9 @@ if(BUILD_SHARED_LIBS)
+ endif()
+
+ install(TARGETS mswebrtc
+- RUNTIME DESTINATION ${MS2_PLUGINS_DIR}
+- LIBRARY DESTINATION ${MS2_PLUGINS_DIR}
+- ARCHIVE DESTINATION ${MS2_PLUGINS_DIR}
++ RUNTIME DESTINATION ${Mediastreamer2_PLUGINS_DIR}
++ LIBRARY DESTINATION ${Mediastreamer2_PLUGINS_DIR}
++ ARCHIVE DESTINATION ${Mediastreamer2_PLUGINS_DIR}
+ FRAMEWORK DESTINATION Frameworks
+ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+ )
+diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt
+index 82694c6..8f9108b 100755
+--- a/build/CMakeLists.txt
++++ b/build/CMakeLists.txt
+@@ -21,7 +21,8 @@
+ ############################################################################
+
+ if(NOT CPACK_PACKAGE_NAME)
+- set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
++ string(TOLOWER "${PROJECT_NAME}" LOWERCASE_PROJECT_NAME)
++ set(CPACK_PACKAGE_NAME "${LOWERCASE_PROJECT_NAME}")
+ endif()
+
+ set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/../COPYING")
+diff --git a/cmake/FindBcToolbox.cmake b/cmake/FindBcToolbox.cmake
+deleted file mode 100644
+index 5766478..0000000
+--- a/cmake/FindBcToolbox.cmake
++++ /dev/null
+@@ -1,67 +0,0 @@
+-############################################################################
+-# FindBctoolbox.cmake
+-# Copyright (C) 2023 Belledonne Communications, Grenoble France
+-#
+-############################################################################
+-#
+-# This program is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU General Public License
+-# as published by the Free Software Foundation; either version 2
+-# of the License, or (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-#
+-############################################################################
+-#
+-# - Find the bctoolbox include files and library
+-#
+-# BCTOOLBOX_FOUND - System has lib bctoolbox
+-# BCTOOLBOX_INCLUDE_DIRS - The bctoolbox include directories
+-# BCTOOLBOX_LIBRARIES - The libraries needed to use bctoolbox
+-# BCTOOLBOX_CMAKE_DIR - The bctoolbox cmake directory
+-# BCTOOLBOX_CORE_FOUND - System has core bctoolbox
+-# BCTOOLBOX_CORE_INCLUDE_DIRS - The core bctoolbox include directories
+-# BCTOOLBOX_CORE_LIBRARIES - The core bctoolbox libraries
+-# BCTOOLBOX_TESTER_FOUND - System has bctoolbox tester
+-# BCTOOLBOX_TESTER_INCLUDE_DIRS - The bctoolbox tester include directories
+-# BCTOOLBOX_TESTER_LIBRARIES - The bctoolbox tester libraries
+-
+-if(TARGET bctoolbox)
+-
+- set(BCTOOLBOX_CORE_LIBRARIES bctoolbox)
+- get_target_property(BCTOOLBOX_CORE_INCLUDE_DIRS bctoolbox INTERFACE_INCLUDE_DIRECTORIES)
+- set(BCTOOLBOX_CORE_FOUND TRUE)
+- get_target_property(BCTOOLBOX_SOURCE_DIR bctoolbox SOURCE_DIR)
+- set(BCTOOLBOX_CMAKE_DIR "${BCTOOLBOX_SOURCE_DIR}/../cmake")
+- if(TARGET bctoolbox-tester)
+- set(BCTOOLBOX_TESTER_LIBRARIES bctoolbox-tester)
+- get_target_property(BCTOOLBOX_TESTER_INCLUDE_DIRS bctoolbox-tester INTERFACE_INCLUDE_DIRECTORIES)
+- set(BCTOOLBOX_TESTER_FOUND TRUE)
+- set(BCTOOLBOX_TESTER_COMPONENT_VARIABLES BCTOOLBOX_TESTER_FOUND BCTOOLBOX_TESTER_INCLUDE_DIRS BCTOOLBOX_TESTER_LIBRARIES)
+- endif()
+- set(BCTOOLBOX_LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BCTOOLBOX_TESTER_LIBRARIES})
+- set(BCTOOLBOX_INCLUDE_DIRS ${BCTOOLBOX_CORE_INCLUDE_DIRS} ${BCTOOLBOX_TESTER_INCLUDE_DIRS})
+-
+-
+- include(FindPackageHandleStandardArgs)
+- find_package_handle_standard_args(BcToolbox
+- DEFAULT_MSG
+- BCTOOLBOX_INCLUDE_DIRS BCTOOLBOX_LIBRARIES BCTOOLBOX_CMAKE_DIR
+- BCTOOLBOX_CORE_FOUND BCTOOLBOX_CORE_INCLUDE_DIRS BCTOOLBOX_CORE_LIBRARIES
+- ${BCTOOLBOX_TESTER_COMPONENT_VARIABLES}
+- )
+-
+- mark_as_advanced(
+- BCTOOLBOX_INCLUDE_DIRS BCTOOLBOX_LIBRARIES BCTOOLBOX_CMAKE_DIR
+- BCTOOLBOX_CORE_FOUND BCTOOLBOX_CORE_INCLUDE_DIRS BCTOOLBOX_CORE_LIBRARIES
+- ${BCTOOLBOX_TESTER_COMPONENT_VARIABLES}
+- )
+-
+-endif()
+diff --git a/cmake/FindMediastreamer2.cmake b/cmake/FindMediastreamer2.cmake
+deleted file mode 100644
+index 64ac8f2..0000000
+--- a/cmake/FindMediastreamer2.cmake
++++ /dev/null
+@@ -1,46 +0,0 @@
+-############################################################################
+-# FindMediastreamer2.cmake
+-# Copyright (C) 2023 Belledonne Communications, Grenoble France
+-#
+-############################################################################
+-#
+-# This program is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU General Public License
+-# as published by the Free Software Foundation; either version 2
+-# of the License, or (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-#
+-############################################################################
+-#
+-# - Find the mediastreamer2 include files and library
+-#
+-# MEDIASTREAMER2_FOUND - system has lib mediastreamer2
+-# MEDIASTREAMER2_INCLUDE_DIRS - the mediasteamer2 include directory
+-# MEDIASTREAMER2_LIBRARIES - The library needed to use mediasteamer2
+-# MEDIASTREAMER2_PLUGINS_LOCATION - The location of the mediastreamer2 plugins
+-
+-if(TARGET mediastreamer2)
+-
+- set(MEDIASTREAMER2_LIBRARIES mediastreamer2)
+- get_target_property(MEDIASTREAMER2_INCLUDE_DIRS mediastreamer2 INTERFACE_INCLUDE_DIRECTORIES)
+- define_property(TARGET PROPERTY "MS2_PLUGINS" BRIEF_DOCS "Stores the location of mediastreamer2 plugins" FULL_DOCS "Stores the location of mediastreamer2 plugins")
+- get_target_property(MEDIASTREAMER2_PLUGINS_LOCATION mediastreamer2 MS2_PLUGINS)
+-
+-
+- include(FindPackageHandleStandardArgs)
+- find_package_handle_standard_args(Mediastreamer2
+- DEFAULT_MSG
+- MEDIASTREAMER2_INCLUDE_DIRS MEDIASTREAMER2_LIBRARIES
+- )
+-
+- mark_as_advanced(MEDIASTREAMER2_INCLUDE_DIRS MEDIASTREAMER2_LIBRARIES)
+-
+-endif()
+diff --git a/cmake/FindOrtp.cmake b/cmake/FindOrtp.cmake
+deleted file mode 100644
+index 13121fb..0000000
+--- a/cmake/FindOrtp.cmake
++++ /dev/null
+@@ -1,43 +0,0 @@
+-############################################################################
+-# FindOrtp.cmake
+-# Copyright (C) 2023 Belledonne Communications, Grenoble France
+-#
+-############################################################################
+-#
+-# This program is free software; you can redistribute it and/or
+-# modify it under the terms of the GNU General Public License
+-# as published by the Free Software Foundation; either version 2
+-# of the License, or (at your option) any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-# GNU General Public License for more details.
+-#
+-# You should have received a copy of the GNU General Public License
+-# along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+-#
+-############################################################################
+-#
+-# - Find the ortp include files and library
+-#
+-# ORTP_FOUND - system has lib ortp
+-# ORTP_INCLUDE_DIRS - the ortp include directory
+-# ORTP_LIBRARIES - The library needed to use ortp
+-
+-if(TARGET ortp)
+-
+- set(ORTP_LIBRARIES ortp)
+- get_target_property(ORTP_INCLUDE_DIRS ortp INTERFACE_INCLUDE_DIRECTORIES)
+-
+-
+- include(FindPackageHandleStandardArgs)
+- find_package_handle_standard_args(Ortp
+- DEFAULT_MSG
+- ORTP_INCLUDE_DIRS ORTP_LIBRARIES
+- )
+-
+- mark_as_advanced(ORTP_INCLUDE_DIRS ORTP_LIBRARIES)
+-
+-endif()
+--
+GitLab
+
diff --git a/gnu/packages/patches/musescore-fix-build.patch b/gnu/packages/patches/musescore-fix-build.patch
deleted file mode 100644
index c9cecded16..0000000000
--- a/gnu/packages/patches/musescore-fix-build.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- a/src/instrumentsscene/view/systemobjectslayersettingsmodel.cpp
-+++ b/src/instrumentsscene/view/systemobjectslayersettingsmodel.cpp
-@@ -83,6 +83,7 @@
-
- void SystemObjectsLayerSettingsModel::setSystemObjectsGroupVisible(int index, bool visible)
- {
-+ using muse::TranslatableString;
- const size_t idx = static_cast<size_t>(index);
- if (idx >= m_systemObjectGroups.size()) {
- return;
-@@ -95,9 +96,9 @@
-
- SystemObjectsGroup& group = m_systemObjectGroups.at(idx);
-
-- const muse::TranslatableString actionName = visible
-- ? TranslatableString("undoableAction", "Make system marking(s) visible")
-- : TranslatableString("undoableAction", "Make system marking(s) invisible");
-+ const TranslatableString actionName = visible
-+ ? TranslatableString("undoableAction", "Make system marking(s) visible")
-+ : TranslatableString("undoableAction", "Make system marking(s) invisible");
-
- notation->undoStack()->prepareChanges(actionName);
-
diff --git a/gnu/packages/patches/nss-3.115-disable-broken-tests.patch b/gnu/packages/patches/nss-3.115-disable-broken-tests.patch
new file mode 100644
index 0000000000..2cb3a6be7b
--- /dev/null
+++ b/gnu/packages/patches/nss-3.115-disable-broken-tests.patch
@@ -0,0 +1,34 @@
+These tests are broken in 3.101.3.
+
+See https://bugzilla.mozilla.org/show_bug.cgi?id=1964304
+
+--- nss-3.113.orig/nss/tests/tools/tools.sh 2025-08-25 16:49:02.402086648 -0700
++++ nss-3.113/nss/tests/tools/tools.sh 2025-08-25 16:49:23.677993887 -0700
+@@ -550,27 +550,6 @@
+ html_msg $ret 0 "Importing private key pbmac1 hmac-sha-512 from PKCS#12 file"
+ check_tmpfile
+
+- echo "${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-iter.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' -I"
+- ${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-iter.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' -I 2>&1
+- ret=$?
+- html_msg $ret 19 "Fail to list private key with bad iterator"
+- check_tmpfile
+-
+- echo "${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-salt.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' -I"
+- ${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-salt.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' -I 2>&1
+- ret=$?
+- echo "Fail to list private key with bad salt val=$ret"
+- html_msg $ret 19 "Fail to import private key with bad salt"
+- check_tmpfile
+-
+- echo "${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-no-length.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' -I "
+- ${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-no-length.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' -I 2>&1
+- ret=$?
+- echo "Fail to import private key with no length val=$ret"
+- html_msg $ret 19 "Fail to import private key with no length"
+- check_tmpfile
+-}
+-
+ ############################## tools_p12 ###############################
+ # local shell function to test basic functionality of pk12util
+ ########################################################################
diff --git a/gnu/packages/patches/nss-3.115-disable-pkix-ocsp-tests.patch b/gnu/packages/patches/nss-3.115-disable-pkix-ocsp-tests.patch
new file mode 100644
index 0000000000..d8e489883c
--- /dev/null
+++ b/gnu/packages/patches/nss-3.115-disable-pkix-ocsp-tests.patch
@@ -0,0 +1,13 @@
+These tests require network.
+
+diff -x .svn -x .git -urN nss-3.113.orig/nss/tests/ssl/ssl.sh nss-3.113/nss/tests/ssl/ssl.sh
+--- nss-3.113.orig/nss/tests/ssl/ssl.sh 2025-08-25 16:49:02.398086665 -0700
++++ nss-3.113/nss/tests/ssl/ssl.sh 2025-08-26 15:46:11.718401605 -0700
+@@ -1600,7 +1600,6 @@
+ if using_sql ; then
+ ssl_policy_listsuites
+ ssl_policy_selfserv
+- ssl_policy_pkix_ocsp
+ ssl_policy
+ fi
+ ;; \ No newline at end of file
diff --git a/gnu/packages/patches/nss-disable-broken-tests.patch b/gnu/packages/patches/nss-disable-broken-tests.patch
new file mode 100644
index 0000000000..8d6e101471
--- /dev/null
+++ b/gnu/packages/patches/nss-disable-broken-tests.patch
@@ -0,0 +1,33 @@
+These tests are broken in 3.101.3.
+
+See https://bugzilla.mozilla.org/show_bug.cgi?id=1964304
+
+--- nss-3.101.3/nss/tests/tools/tools.sh 1969-12-31 16:00:01.000000000 -0800
++++ nss-3.101.3/nss/tests/tools/tools.sh 2025-05-05 16:36:47.835447542 -0700
+@@ -540,26 +540,6 @@
+ ret=$?
+ html_msg $ret 0 "Importing private key pbmac1 hmac-sha-512 from PKCS#12 file"
+ check_tmpfile
+-
+- echo "${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-iter.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234'"
+- ${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-iter.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' 2>&1
+- ret=$?
+- html_msg $ret 19 "Fail to list private key with bad iterator"
+- check_tmpfile
+-
+- echo "${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-salt.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234'"
+- ${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-salt.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' 2>&1
+- ret=$?
+- echo "Fail to list private key with bad salt val=$ret"
+- html_msg $ret 19 "Fail to import private key with bad salt"
+- check_tmpfile
+-
+- echo "${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-no-length.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234'"
+- ${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-no-length.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' 2>&1
+- ret=$?
+- echo "Fail to import private key with no length val=$ret"
+- html_msg $ret 19 "Fail to import private key with no length"
+- check_tmpfile
+ }
+
+ ############################## tools_p12 ############################### \ No newline at end of file
diff --git a/gnu/packages/patches/nyacc-binary-literals.patch b/gnu/packages/patches/nyacc-binary-literals.patch
deleted file mode 100644
index 8159d74032..0000000000
--- a/gnu/packages/patches/nyacc-binary-literals.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 6a08014b77bf435f025ecdac08396580b85f159a Mon Sep 17 00:00:00 2001
-From: Jan Nieuwenhuizen <janneke@gnu.org>
-Date: Sat, 8 Sep 2018 20:22:45 +0200
-Subject: [PATCH] fix binary literals.
-
----
- module/nyacc/lex.scm | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/module/nyacc/lex.scm b/module/nyacc/lex.scm
-index 2ec9895..b205212 100644
---- a/module/nyacc/lex.scm
-+++ b/module/nyacc/lex.scm
-@@ -345,10 +345,11 @@
- ((char-numeric? ch) (iter chl '$fixed ba 1 ch))
- ((char=? #\. ch) (iter (cons ch chl) #f ba 15 (read-char)))
- (else #f)))
-- ((10) ;; allow x after 0
-+ ((10) ;; allow x, b after 0
- (cond
- ((eof-object? ch) (iter chl ty ba 5 ch))
- ((char=? #\x ch) (iter (cons ch chl) ty 16 1 (read-char)))
-+ ((char=? #\b ch) (iter (cons ch chl) ty 2 1 (read-char)))
- (else (iter chl ty ba 1 ch))))
- ((15) ;; got `.' only
- (cond
---
-2.18.0
-
diff --git a/gnu/packages/patches/ocaml-ctypes-test-oo.patch b/gnu/packages/patches/ocaml-ctypes-test-oo.patch
new file mode 100644
index 0000000000..7cb797d07d
--- /dev/null
+++ b/gnu/packages/patches/ocaml-ctypes-test-oo.patch
@@ -0,0 +1,49 @@
+Backport upstream commit fe4be538e389d5caf6c0a562cd02e58fda9361cb.
+
+ Add an explicit upcast in the OO-style test.
+
+https://github.com/yallop/ocaml-ctypes/commit/fe4be538e389d5caf6c0a562cd02e58fda9361cb
+
+It allows to deal with GCC@14 stricter than the previous versions.
+
+diff --git a/tests/clib/test_functions.c b/tests/clib/test_functions.c
+index d19db2b..486b7d1 100644
+--- a/tests/clib/test_functions.c
++++ b/tests/clib/test_functions.c
+@@ -293,6 +293,11 @@ struct chorse *new_chorse(int colour)
+ h->colour = (enum colour)colour;
+ return h;
+ }
++
++struct animal *new_chorse_as_animal(int colour)
++{
++ return (struct animal *)new_chorse(colour);
++}
+ /* (End of OO-style example) */
+
+ int accept_pointers(float *float_p,
+diff --git a/tests/clib/test_functions.h b/tests/clib/test_functions.h
+index 5022e98..579f622 100644
+--- a/tests/clib/test_functions.h
++++ b/tests/clib/test_functions.h
+@@ -79,6 +79,8 @@ extern char *chorse_colour(struct chorse *);
+ extern char *chorse_say(struct animal *);
+ extern char *chorse_identify(struct animal *);
+ extern struct chorse *new_chorse(int);
++extern struct animal *new_chorse_as_animal(int);
++
+ extern int accept_pointers(float *,
+ double *,
+ short *,
+diff --git a/tests/test-oo_style/stubs/functions.ml b/tests/test-oo_style/stubs/functions.ml
+index 4434331..6a8e7bd 100644
+--- a/tests/test-oo_style/stubs/functions.ml
++++ b/tests/test-oo_style/stubs/functions.ml
+@@ -82,6 +82,6 @@ struct
+ let check_name = foreign "check_name"
+ (ptr animal @-> string @-> returning int)
+
+- let new_chorse = foreign "new_chorse"
++ let new_chorse = foreign "new_chorse_as_animal"
+ (int @-> returning (ptr animal))
+ end
diff --git a/gnu/packages/patches/opusfile-CVE-2022-47021.patch b/gnu/packages/patches/opusfile-CVE-2022-47021.patch
new file mode 100644
index 0000000000..b41ef35eb0
--- /dev/null
+++ b/gnu/packages/patches/opusfile-CVE-2022-47021.patch
@@ -0,0 +1,40 @@
+From 0a4cd796df5b030cb866f3f4a5e41a4b92caddf5 Mon Sep 17 00:00:00 2001
+From: Ralph Giles <giles@thaumas.net>
+Date: Tue, 6 Sep 2022 19:04:31 -0700
+Subject: [PATCH] Propagate allocation failure from ogg_sync_buffer.
+
+Instead of segfault, report OP_EFAULT if ogg_sync_buffer returns
+a null pointer. This allows more graceful recovery by the caller
+in the unlikely event of a fallible ogg_malloc call.
+
+We do check the return value elsewhere in the code, so the new
+checks make the code more consistent.
+
+Thanks to https://github.com/xiph/opusfile/issues/36 for reporting.
+
+Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
+Signed-off-by: Mark Harris <mark.hsj@gmail.com>
+---
+ src/opusfile.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/opusfile.c b/src/opusfile.c
+index ca219b2..3c3c81e 100644
+--- a/src/opusfile.c
++++ b/src/opusfile.c
+@@ -148,6 +148,7 @@ static int op_get_data(OggOpusFile *_of,int _nbytes){
+ int nbytes;
+ OP_ASSERT(_nbytes>0);
+ buffer=(unsigned char *)ogg_sync_buffer(&_of->oy,_nbytes);
++ if(OP_UNLIKELY(buffer==NULL))return OP_EFAULT;
+ nbytes=(int)(*_of->callbacks.read)(_of->stream,buffer,_nbytes);
+ OP_ASSERT(nbytes<=_nbytes);
+ if(OP_LIKELY(nbytes>0))ogg_sync_wrote(&_of->oy,nbytes);
+@@ -1527,6 +1528,7 @@ static int op_open1(OggOpusFile *_of,
+ if(_initial_bytes>0){
+ char *buffer;
+ buffer=ogg_sync_buffer(&_of->oy,(long)_initial_bytes);
++ if(OP_UNLIKELY(buffer==NULL))return OP_EFAULT;
+ memcpy(buffer,_initial_data,_initial_bytes*sizeof(*buffer));
+ ogg_sync_wrote(&_of->oy,(long)_initial_bytes);
+ }
diff --git a/gnu/packages/patches/pcsxr-find-harfbuzz.patch b/gnu/packages/patches/pcsxr-find-harfbuzz.patch
new file mode 100644
index 0000000000..69932d719e
--- /dev/null
+++ b/gnu/packages/patches/pcsxr-find-harfbuzz.patch
@@ -0,0 +1,21 @@
+The .cmake files this project includes don't play well with harfbuzz's internal .cmake file.
+This patch works around the issues present in the project's CMake configuration.
+
+diff --git a/cmake/FindPango.cmake b/cmake/FindPango.cmake
+index 2a7da99d..c08fbaab 100644
+--- a/cmake/FindPango.cmake
++++ b/cmake/FindPango.cmake
+@@ -74,6 +74,13 @@ foreach(pango_dep ${Pango_DEPS})
+ set_property (TARGET "${Pango}" APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${${pango_dep}}")
+ endforeach(pango_dep)
+
++if(NOT HARFBUZZ_INCLUDE_DIR)
++find_package(harfbuzz)
++endif()
++
++list(APPEND Pango_INCLUDE_DIRS ${HARFBUZZ_INCLUDE_DIR})
++set_property (TARGET "${Pango}" APPEND PROPERTY INTERFACE_LINK_LIBRARIES "harfbuzz::harfbuzz")
++
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(Pango
+ REQUIRED_VARS
diff --git a/gnu/packages/patches/pcsxr-fix-definitions.patch b/gnu/packages/patches/pcsxr-fix-definitions.patch
new file mode 100644
index 0000000000..8ec389ec09
--- /dev/null
+++ b/gnu/packages/patches/pcsxr-fix-definitions.patch
@@ -0,0 +1,137 @@
+There are a lot of global variable definitions that aren't valid on modern compilers. According to upstream's Dockerfile,
+this project is meant to compile with GCC 6! So there are some declarations that need to be changed.
+
+diff --git a/gui/Linux.h b/gui/Linux.h
+index 2a939050..99404d93 100644
+--- a/gui/Linux.h
++++ b/gui/Linux.h
+@@ -44,8 +44,8 @@
+
+ extern gboolean UseGui;
+ extern int StatesC;
+-char cfgfile[MAXPATHLEN]; /* ADB Comment this out - make a local var, or at least use gchar funcs */
+-char cfgfile_basename[MAXPATHLEN]; /* ADB Comment this out - make a local var, or at least use gchar funcs */
++extern char cfgfile[MAXPATHLEN]; /* ADB Comment this out - make a local var, or at least use gchar funcs */
++extern char cfgfile_basename[MAXPATHLEN]; /* ADB Comment this out - make a local var, or at least use gchar funcs */
+
+ int LoadConfig();
+ void SaveConfig();
+diff --git a/gui/LnxMain.c b/gui/LnxMain.c
+index d6dd9316..02002bc1 100644
+--- a/gui/LnxMain.c
++++ b/gui/LnxMain.c
+@@ -49,6 +49,9 @@ enum {
+
+ gboolean UseGui = TRUE;
+
++char cfgfile[MAXPATHLEN] = {0};
++char cfgfile_basename[MAXPATHLEN] = {0};
++
+ static void CreateMemcard(char *filename, char *conf_mcd) {
+ gchar *mcd;
+ struct stat buf;
+diff --git a/plugins/bladesio1/sio1.c b/plugins/bladesio1/sio1.c
+index 17ac4b65..c6fd585a 100644
+--- a/plugins/bladesio1/sio1.c
++++ b/plugins/bladesio1/sio1.c
+@@ -55,8 +55,6 @@ static const unsigned char build = 1;
+
+ static void (CALLBACK *irqCallback)(void) = 0;
+
+-Settings settings;
+-
+ /* sio status flags.
+ */
+ enum {
+diff --git a/plugins/dfinput/pad.h b/plugins/dfinput/pad.h
+index 8337fe7e..6d44851d 100644
+--- a/plugins/dfinput/pad.h
++++ b/plugins/dfinput/pad.h
+@@ -151,7 +151,7 @@ typedef struct tagKeyDef {
+ enum { ANALOG_XP = 0, ANALOG_XM, ANALOG_YP, ANALOG_YM };
+
+ #if SDL_VERSION_ATLEAST(2,0,0)
+-SDL_GameControllerButton controllerMap[DKEY_TOTAL];
++extern SDL_GameControllerButton controllerMap[DKEY_TOTAL];
+ #endif
+
+ typedef struct tagPadDef {
+diff --git a/plugins/dfnet/cfg.c b/plugins/dfnet/cfg.c
+index 921efbe3..1057426a 100644
+--- a/plugins/dfnet/cfg.c
++++ b/plugins/dfnet/cfg.c
+@@ -11,6 +11,8 @@
+
+ #include "dfnet.h"
+
++Config conf;
++
+ #define CFG_FILENAME "dfnet.cfg"
+
+ void SaveConf() {
+diff --git a/plugins/dfnet/dfnet.c b/plugins/dfnet/dfnet.c
+index 6c6ec5f9..ddc92169 100644
+--- a/plugins/dfnet/dfnet.c
++++ b/plugins/dfnet/dfnet.c
+@@ -24,6 +24,9 @@ const unsigned char build = 3; // increase that with each version
+
+ static char *libraryName = N_("Socket Driver");
+
++fd_set rset;
++fd_set wset;
++
+ unsigned long CALLBACK PSEgetLibType(void) {
+ return PSE_LT_NET;
+ }
+diff --git a/plugins/dfnet/dfnet.h b/plugins/dfnet/dfnet.h
+index 937814f5..e2699ad3 100644
+--- a/plugins/dfnet/dfnet.h
++++ b/plugins/dfnet/dfnet.h
+@@ -56,7 +56,7 @@ __private_extern char* PLUGLOC(char* toloc);
+
+ typedef void* HWND;
+
+-struct timeval tm;
++extern struct timeval tm;
+
+ #define CALLBACK
+
+@@ -70,24 +70,24 @@ typedef struct {
+ char ipAddress[32];
+ } Config;
+
+-Config conf;
++extern Config conf;
+
+ void LoadConf(void);
+ void SaveConf(void);
+
+-int sock;
+-char *PadSendData;
+-char *PadRecvData;
+-char PadSendSize;
+-char PadRecvSize;
+-char PadSize[2];
+-int PadCount;
+-int PadCountMax;
+-int PadInit;
+-int Ping;
+-volatile int WaitCancel;
+-fd_set rset;
+-fd_set wset;
++extern int sock;
++extern char *PadSendData;
++extern char *PadRecvData;
++extern char PadSendSize;
++extern char PadRecvSize;
++extern char PadSize[2];
++extern int PadCount;
++extern int PadCountMax;
++extern int PadInit;
++extern int Ping;
++extern volatile int WaitCancel;
++extern fd_set rset;
++extern fd_set wset;
+
+ long sockInit(void);
+ long sockShutdown(void);
diff --git a/gnu/packages/patches/perl-xml-libxslt-fix-configure.patch b/gnu/packages/patches/perl-xml-libxslt-fix-configure.patch
deleted file mode 100644
index 8433c30bed..0000000000
--- a/gnu/packages/patches/perl-xml-libxslt-fix-configure.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Patch from https://github.com/shlomif/perl-XML-LibXSLT/commit/40fdc7f0.patch
-
-From 40fdc7f0443949d9556f0ecf15eb7777d543cee1 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <fweimer@redhat.com>
-Date: Thu, 9 Feb 2023 19:28:14 +0100
-Subject: [PATCH] Avoid C implicit function declaration in Makefile.PL (C99
- compat)
-
-Future compilers are likely not to support implicit function
-declarations. Add a fake prototype so that the probes will
-not always fail with such compilers.
----
- Makefile.PL | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/Makefile.PL b/Makefile.PL
-index 079f8ea..d720b48 100644
---- a/Makefile.PL
-+++ b/Makefile.PL
-@@ -463,10 +463,11 @@ SRC
- }
- }
- else {
--
-+ # Use a fake prototype in the style of autoconf.
- $result = try_link(<<"SRC", $libs);
--blank() { return 0; }
--int t() { ${func}(); return 0; }
-+char blank(void) { return 0; }
-+char ${func}(void);
-+int t(void) { ${func}(); return 0; }
- SRC
- }
- }
diff --git a/gnu/packages/patches/pharo-vm-cmake.patch b/gnu/packages/patches/pharo-vm-cmake.patch
new file mode 100644
index 0000000000..100c92746d
--- /dev/null
+++ b/gnu/packages/patches/pharo-vm-cmake.patch
@@ -0,0 +1,659 @@
+Upstream-status: <https://github.com/pharo-project/pharo-vm/pull/1003>
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5ec39df40..57f58f515 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -37,6 +37,7 @@ option(DEPENDENCIES_FORCE_BUILD "Force build libraries" OFF)
+ option(BUILD_WITH_GRAPHVIZ "Generate dependency graphs" ON)
+ option(VERSION_UPDATE_FROM_GIT "Extract version information from git tags. Default to true. Follow vX.Y.Z-suffix" TRUE)
+
++option(INSTALL_C_SOURCE "Install the generated C source files to `pharo-vm'" OFF)
+
+ set(APPNAME "Pharo" CACHE STRING "VM Application name")
+ set(FLAVOUR "CoInterpreter" CACHE STRING "The kind of VM to generate. Possible values: StackVM, CoInterpreter")
+@@ -105,6 +106,15 @@ endif()
+ #This needs to be at this point, after setting the toolchain configuration
+ project(PharoVM)
+
++set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib" CACHE STRING "Install-time RPATH")
++
++# Provide a default value for the installation prefix, while
++# preserving any user-specified CMAKE_INSTALL_PREFIX.
++if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
++ set_property(CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE
++ "${CMAKE_CURRENT_BINARY_DIR}/build/dist")
++endif()
++
+ include(cmake/versionExtraction.cmake)
+
+ set(BUILT_FROM "${PharoVM_VERSION_STRING_FULL} - Commit: ${PharoVM_VERSION_GIT_SHA} - Date: ${PharoVM_VERSION_GIT_COMMIT_DATE}")
+@@ -407,7 +417,12 @@ message(STATUS "C++ Compiler: ${CMAKE_CXX_COMPILER}")
+ message(STATUS "Resource Compiler: ${CMAKE_RC_COMPILER}")
+
+ set(VM_FRONTEND_APPLICATION_TYPE)
+-include(cmake/${CMAKE_SYSTEM_NAME}.cmake)
++
++if(UNIX AND NOT OSX AND NOT WIN)
++ include(cmake/Linux.cmake)
++else() # WIN AND OSX
++ include(cmake/${CMAKE_SYSTEM_NAME}.cmake)
++endif()
+
+ set(GENERATED_SOURCES ${VMSOURCEFILES})
+
+diff --git a/cmake/Darwin.cmake b/cmake/Darwin.cmake
+index 9095313d2..e1d1ab77c 100644
+--- a/cmake/Darwin.cmake
++++ b/cmake/Darwin.cmake
+@@ -67,8 +67,6 @@ macro(add_third_party_dependencies_per_platform)
+ endmacro()
+
+ macro(configure_installables INSTALL_COMPONENT)
+- set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/build/dist")
+-
+ install(
+ DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/build/libffi/install/lib/"
+ DESTINATION "${VM_EXECUTABLE_NAME}.app/Contents/MacOS/Plugins"
+diff --git a/cmake/FreeBSD.cmake b/cmake/FreeBSD.cmake
+deleted file mode 100644
+index 0d4386657..000000000
+--- a/cmake/FreeBSD.cmake
++++ /dev/null
+@@ -1,97 +0,0 @@
+-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-z,wxneeded,-rpath=. -I/usr/local/include -I/usr/X11R6/include -lexecinfo")
+-set(PHARO_BIN_LOCATION "default" CACHE STRING "The default location of the PHARO bin, used by the launch.sh.in")
+-
+-if(${PHARO_BIN_LOCATION} STREQUAL "default")
+- set(PHARO_BIN_IN_ROOT "`/usr/bin/dirname \"\$0\"`/libexec")
+- set(PHARO_BIN_IN_BIN "`/usr/bin/dirname \"\$0\"`/../libexec")
+-else()
+- set(PHARO_BIN_IN_ROOT ${PHARO_BIN_LOCATION})
+- set(PHARO_BIN_IN_BIN ${PHARO_BIN_LOCATION})
+-endif()
+-
+-function(add_platform_headers)
+-target_include_directories(${VM_LIBRARY_NAME}
+-PUBLIC
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/include/unix
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/include/common
+-)
+-endfunction() #add_platform_headers
+-
+-set(EXTRACTED_SOURCES
+-#Common sources
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/src/common/sqHeapMap.c
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/src/common/sqVirtualMachine.c
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/src/common/sqNamedPrims.c
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/src/common/sqExternalSemaphores.c
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/src/common/sqTicker.c
+-
+-#Platform sources
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/src/unix/aio.c
+- ${CMAKE_CURRENT_SOURCE_DIR}/src/debugUnix.c
+-
+-#Virtual Memory functions
+- ${CMAKE_CURRENT_SOURCE_DIR}/src/memoryUnix.c
+-
+-# Support sources
+- ${CMAKE_CURRENT_SOURCE_DIR}/src/fileDialogUnix.c
+-)
+-
+-set(VM_FRONTEND_SOURCES
+- ${CMAKE_CURRENT_SOURCE_DIR}/src/unixMain.c)
+-
+-
+-macro(add_third_party_dependencies_per_platform)
+- if(${FEATURE_LIB_GIT2})
+- include(cmake/importLibGit2.cmake)
+- endif()
+-
+- if(${FEATURE_LIB_FREETYPE2})
+- include(cmake/importFreetype2.cmake)
+- endif()
+-
+- if(${FEATURE_LIB_CAIRO})
+- include(cmake/importCairo.cmake)
+- endif()
+-
+- if(${FEATURE_LIB_SDL2})
+- include(cmake/importSDL2.cmake)
+- endif()
+-endmacro()
+-
+-
+-macro(configure_installables INSTALL_COMPONENT)
+- set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/build/dist")
+- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/packaging/linux/launch.sh.in
+- ${CMAKE_CURRENT_BINARY_DIR}/build/packaging/linux/${VM_EXECUTABLE_NAME} @ONLY)
+- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/packaging/linux/bin/launch.sh.in
+- ${CMAKE_CURRENT_BINARY_DIR}/build/packaging/linux/bin/${VM_EXECUTABLE_NAME} @ONLY)
+-
+-
+- install(
+- DIRECTORY "${CMAKE_BINARY_DIR}/build/packaging/linux/"
+- DESTINATION "./"
+- USE_SOURCE_PERMISSIONS
+- COMPONENT ${INSTALL_COMPONENT})
+- install(
+- DIRECTORY "${CMAKE_BINARY_DIR}/build/vm/"
+- DESTINATION "lib"
+- USE_SOURCE_PERMISSIONS
+- COMPONENT ${INSTALL_COMPONENT})
+- install(
+- DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/build/libffi/install/lib/"
+- DESTINATION "lib"
+- USE_SOURCE_PERMISSIONS
+- COMPONENT ${INSTALL_COMPONENT}
+- FILES_MATCHING PATTERN ${DYLIB_EXT})
+-
+-
+- install(
+- DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/include/unix/"
+- DESTINATION include/pharovm
+- COMPONENT include
+- FILES_MATCHING PATTERN *.h)
+-endmacro()
+-
+-macro(add_required_libs_per_platform)
+- target_link_libraries(${VM_LIBRARY_NAME} m pthread)
+-endmacro()
+diff --git a/cmake/Linux.cmake b/cmake/Linux.cmake
+index 0b6b9d7c4..fb43bae6b 100644
+--- a/cmake/Linux.cmake
++++ b/cmake/Linux.cmake
+@@ -1,14 +1,3 @@
+-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-rpath=.")
+-set(PHARO_BIN_LOCATION "default" CACHE STRING "The default location of the PHARO bin, used by the launch.sh.in")
+-
+-if(${PHARO_BIN_LOCATION} STREQUAL "default")
+- set(PHARO_BIN_IN_ROOT "`/usr/bin/dirname \"\$0\"`/lib")
+- set(PHARO_BIN_IN_BIN "`/usr/bin/dirname \"\$0\"`/../lib")
+-else()
+- set(PHARO_BIN_IN_ROOT ${PHARO_BIN_LOCATION})
+- set(PHARO_BIN_IN_BIN ${PHARO_BIN_LOCATION})
+-endif()
+-
+ function(add_platform_headers)
+ target_include_directories(${VM_LIBRARY_NAME}
+ PUBLIC
+@@ -39,7 +28,6 @@ set(EXTRACTED_SOURCES
+ set(VM_FRONTEND_SOURCES
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/unixMain.c)
+
+-
+ macro(add_third_party_dependencies_per_platform)
+ if(${FEATURE_LIB_GIT2})
+ include(cmake/importLibGit2.cmake)
+@@ -58,42 +46,21 @@ macro(add_third_party_dependencies_per_platform)
+ endif()
+ endmacro()
+
+-
+ macro(configure_installables INSTALL_COMPONENT)
+- set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/build/dist")
+- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/packaging/linux/launch.sh.in
+- ${CMAKE_CURRENT_BINARY_DIR}/build/packaging/linux/${VM_EXECUTABLE_NAME} @ONLY)
+- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/packaging/linux/bin/launch.sh.in
+- ${CMAKE_CURRENT_BINARY_DIR}/build/packaging/linux/bin/${VM_EXECUTABLE_NAME} @ONLY)
+-
+-
+ install(
+- DIRECTORY "${CMAKE_BINARY_DIR}/build/packaging/linux/"
+- DESTINATION "./"
+- USE_SOURCE_PERMISSIONS
+- COMPONENT ${INSTALL_COMPONENT})
++ TARGETS ${VM_EXECUTABLE_NAME}
++ COMPONENT ${INSTALL_COMPONENT})
+ install(
+- DIRECTORY "${CMAKE_BINARY_DIR}/build/vm/"
+- DESTINATION "lib"
+- USE_SOURCE_PERMISSIONS
+- COMPONENT ${INSTALL_COMPONENT})
+- install(
+- DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/build/libffi/install/lib/"
+- DESTINATION "lib"
+- USE_SOURCE_PERMISSIONS
+- COMPONENT ${INSTALL_COMPONENT}
+- FILES_MATCHING PATTERN ${DYLIB_EXT})
+-
+-
+- install(
+- DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/include/unix/"
+- DESTINATION include/pharovm
+- COMPONENT include
+- FILES_MATCHING PATTERN *.h)
++ TARGETS ${VM_LIBRARY_NAME}
++ COMPONENT ${INSTALL_COMPONENT}
++ INCLUDES DESTINATION "include/pharovm")
++ install(
++ TARGETS ${VM_PLUGIN_TARGETS}
++ COMPONENT ${INSTALL_COMPONENT})
+ endmacro()
+
+ macro(add_required_libs_per_platform)
+ target_link_libraries(${VM_LIBRARY_NAME} dl)
+ target_link_libraries(${VM_LIBRARY_NAME} m)
+ target_link_libraries(${VM_LIBRARY_NAME} pthread)
+-endmacro()
+\ No newline at end of file
++endmacro()
+diff --git a/cmake/OpenBSD.cmake b/cmake/OpenBSD.cmake
+deleted file mode 100644
+index 19d26483b..000000000
+--- a/cmake/OpenBSD.cmake
++++ /dev/null
+@@ -1,97 +0,0 @@
+-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-z,wxneeded,-rpath=. -I/usr/local/include -I/usr/X11R6/include")
+-set(PHARO_BIN_LOCATION "default" CACHE STRING "The default location of the PHARO bin, used by the launch.sh.in")
+-
+-if(${PHARO_BIN_LOCATION} STREQUAL "default")
+- set(PHARO_BIN_IN_ROOT "`/usr/bin/dirname \"\$0\"`/lib")
+- set(PHARO_BIN_IN_BIN "`/usr/bin/dirname \"\$0\"`/../lib")
+-else()
+- set(PHARO_BIN_IN_ROOT ${PHARO_BIN_LOCATION})
+- set(PHARO_BIN_IN_BIN ${PHARO_BIN_LOCATION})
+-endif()
+-
+-function(add_platform_headers)
+-target_include_directories(${VM_LIBRARY_NAME}
+-PUBLIC
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/include/unix
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/include/common
+-)
+-endfunction() #add_platform_headers
+-
+-set(EXTRACTED_SOURCES
+-#Common sources
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/src/common/sqHeapMap.c
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/src/common/sqVirtualMachine.c
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/src/common/sqNamedPrims.c
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/src/common/sqExternalSemaphores.c
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/src/common/sqTicker.c
+-
+-#Platform sources
+- ${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/src/unix/aio.c
+- ${CMAKE_CURRENT_SOURCE_DIR}/src/debugUnix.c
+-
+-#Virtual Memory functions
+- ${CMAKE_CURRENT_SOURCE_DIR}/src/memoryUnix.c
+-
+-# Support sources
+- ${CMAKE_CURRENT_SOURCE_DIR}/src/fileDialogUnix.c
+-)
+-
+-set(VM_FRONTEND_SOURCES
+- ${CMAKE_CURRENT_SOURCE_DIR}/src/unixMain.c)
+-
+-
+-macro(add_third_party_dependencies_per_platform)
+- if(${FEATURE_LIB_GIT2})
+- include(cmake/importLibGit2.cmake)
+- endif()
+-
+- if(${FEATURE_LIB_FREETYPE2})
+- include(cmake/importFreetype2.cmake)
+- endif()
+-
+- if(${FEATURE_LIB_CAIRO})
+- include(cmake/importCairo.cmake)
+- endif()
+-
+- if(${FEATURE_LIB_SDL2})
+- include(cmake/importSDL2.cmake)
+- endif()
+-endmacro()
+-
+-
+-macro(configure_installables INSTALL_COMPONENT)
+- set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/build/dist")
+- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/packaging/linux/launch.sh.in
+- ${CMAKE_CURRENT_BINARY_DIR}/build/packaging/linux/${VM_EXECUTABLE_NAME} @ONLY)
+- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/packaging/linux/bin/launch.sh.in
+- ${CMAKE_CURRENT_BINARY_DIR}/build/packaging/linux/bin/${VM_EXECUTABLE_NAME} @ONLY)
+-
+-
+- install(
+- DIRECTORY "${CMAKE_BINARY_DIR}/build/packaging/linux/"
+- DESTINATION "./"
+- USE_SOURCE_PERMISSIONS
+- COMPONENT ${INSTALL_COMPONENT})
+- install(
+- DIRECTORY "${CMAKE_BINARY_DIR}/build/vm/"
+- DESTINATION "lib"
+- USE_SOURCE_PERMISSIONS
+- COMPONENT ${INSTALL_COMPONENT})
+- install(
+- DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/build/libffi/install/lib/"
+- DESTINATION "lib"
+- USE_SOURCE_PERMISSIONS
+- COMPONENT ${INSTALL_COMPONENT}
+- FILES_MATCHING PATTERN ${DYLIB_EXT})
+-
+-
+- install(
+- DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/extracted/vm/include/unix/"
+- DESTINATION include/pharovm
+- COMPONENT include
+- FILES_MATCHING PATTERN *.h)
+-endmacro()
+-
+-macro(add_required_libs_per_platform)
+- target_link_libraries(${VM_LIBRARY_NAME} m pthread)
+-endmacro()
+diff --git a/cmake/Windows.cmake b/cmake/Windows.cmake
+index 3082b697c..9be884ebc 100644
+--- a/cmake/Windows.cmake
++++ b/cmake/Windows.cmake
+@@ -98,8 +98,6 @@ macro(add_third_party_dependencies_per_platform)
+ endmacro()
+
+ macro(configure_installables INSTALL_COMPONENT)
+- set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/build/dist")
+-
+ install(
+ DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/build/vm/"
+ DESTINATION "./"
+diff --git a/cmake/packaging.cmake b/cmake/packaging.cmake
+index 4727d56e0..54add1eb4 100644
+--- a/cmake/packaging.cmake
++++ b/cmake/packaging.cmake
+@@ -30,54 +30,52 @@ install(
+ COMPONENT include
+ FILES_MATCHING PATTERN *.h)
+
+-install(DIRECTORY
+- "${CMAKE_CURRENT_SOURCE_DIR}/cmake"
+- "${CMAKE_CURRENT_SOURCE_DIR}/extracted"
+- "${CMAKE_CURRENT_SOURCE_DIR}/include"
+- "${CMAKE_CURRENT_SOURCE_DIR}/packaging"
+- "${CMAKE_CURRENT_SOURCE_DIR}/plugins"
+- "${CMAKE_CURRENT_SOURCE_DIR}/resources"
+- "${CMAKE_CURRENT_SOURCE_DIR}/scripts"
+- "${CMAKE_CURRENT_SOURCE_DIR}/src"
+- "${CMAKE_CURRENT_SOURCE_DIR}/ffiTestLibrary"
+- "${CMAKE_CURRENT_SOURCE_DIR}/ffi"
+- "${CMAKE_CURRENT_SOURCE_DIR}/tty"
+- DESTINATION pharo-vm
+- USE_SOURCE_PERMISSIONS
+- COMPONENT c-src
+-)
+-
+-install(FILES
++if(INSTALL_C_SOURCE)
++ install(DIRECTORY
++ "${CMAKE_CURRENT_SOURCE_DIR}/cmake"
++ "${CMAKE_CURRENT_SOURCE_DIR}/extracted"
++ "${CMAKE_CURRENT_SOURCE_DIR}/include"
++ "${CMAKE_CURRENT_SOURCE_DIR}/plugins"
++ "${CMAKE_CURRENT_SOURCE_DIR}/resources"
++ "${CMAKE_CURRENT_SOURCE_DIR}/scripts"
++ "${CMAKE_CURRENT_SOURCE_DIR}/src"
++ "${CMAKE_CURRENT_SOURCE_DIR}/ffiTestLibrary"
++ "${CMAKE_CURRENT_SOURCE_DIR}/ffi"
++ "${CMAKE_CURRENT_SOURCE_DIR}/tty"
++ DESTINATION pharo-vm
++ USE_SOURCE_PERMISSIONS
++ COMPONENT c-src)
++
++ install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/version.info"
+ DESTINATION pharo-vm
+ COMPONENT c-src)
+
++ install(FILES
++ "CMakeLists.txt"
++ ${SUPPORT_CMAKE_FILES}
++ DESTINATION pharo-vm
++ COMPONENT c-src)
++
++ #Define generated files as elements in the c-src component for packaging
++ install(
++ DIRECTORY "${GENERATED_SOURCE_DIR}/generated/"
++ DESTINATION pharo-vm/generated/
++ USE_SOURCE_PERMISSIONS
++ COMPONENT c-src)
++
++ install(
++ DIRECTORY "${GENERATED_SOURCE_DIR}/generated/32/vm/include/"
++ DESTINATION include/pharovm
++ USE_SOURCE_PERMISSIONS
++ COMPONENT include
++ FILES_MATCHING PATTERN *.h)
++endif(INSTALL_C_SOURCE)
++
+ #List all cmake files
+ file(GLOB SUPPORT_CMAKE_FILES
+ "${CMAKE_CURRENT_SOURCE_DIR}/*.cmake"
+ )
+-
+-install(FILES
+- "CMakeLists.txt"
+- ${SUPPORT_CMAKE_FILES}
+- DESTINATION pharo-vm
+- COMPONENT c-src
+-)
+-
+-#Define generated files as elements in the c-src component for packaging
+-install(
+- DIRECTORY "${GENERATED_SOURCE_DIR}/generated/"
+- DESTINATION pharo-vm/generated/
+- USE_SOURCE_PERMISSIONS
+- COMPONENT c-src)
+-
+-install(
+- DIRECTORY "${GENERATED_SOURCE_DIR}/generated/32/vm/include/"
+- DESTINATION include/pharovm
+- USE_SOURCE_PERMISSIONS
+- COMPONENT include
+- FILES_MATCHING PATTERN *.h)
+-
+ set(CPACK_PACKAGE_DESCRIPTION "${APPNAME} Headless VM for ${FULL_PLATFORM_NAME}")
+ set(CPACK_PACKAGE_VENDOR "${APPNAME}")
+ set(CPACK_PACKAGE_HOMEPAGE_URL "https://pharo.org")
+diff --git a/packaging/linux/bin/launch.sh.in b/packaging/linux/bin/launch.sh.in
+deleted file mode 100755
+index 0d7d656bb..000000000
+--- a/packaging/linux/bin/launch.sh.in
++++ /dev/null
+@@ -1,65 +0,0 @@
+-#!/bin/sh
+-# Run the VM, setting SQUEAK_PLUGINS if unset to the VM's containing directory
+-# if unset, and ensuring LD_LIBRARY_PATH includes the VM's containing directory.
+-BIN=@PHARO_BIN_IN_BIN@
+-GDB=
+-if [ "${SQUEAK_PLUGINS-unset}" = unset ]; then
+- export SQUEAK_PLUGINS="$BIN"
+-fi
+-if [ "$1" = '-gdb' ]; then
+- GDB=gdb
+- shift
+- echo;echo run $@; echo
+- set --
+-fi
+-# At least on linux LD_LIBRARY_PATH's components must be absolute path names
+-case "$BIN" in
+-/*) PLUGINS="$BIN";;
+-*) PLUGINS="`pwd`/$BIN"
+-esac
+-
+-if [ $(uname -s) = "OpenBSD" ]; then
+- LD_LIBRARY_PATH="$PLUGINS:${LD_LIBRARY_PATH}" exec $GDB "$BIN/@VM_EXECUTABLE_NAME@" "$@"
+-fi
+-
+-# On some linuxes there multiple versions of the C library. If the image uses
+-# libc (e.g. through the FFI) then it must use the same version that the VM uses
+-# and so it should take precedence over /lib libc. This is done by setting
+-# LD_LIBRARY_PATH appropriately, based on ldd's idea of the libc use by the VM.
+-#Try extracting Libc
+-LIBC_SO="`/usr/bin/ldd "$BIN/@VM_EXECUTABLE_NAME@" | /bin/fgrep /libc. | sed 's/^.*=> \([^ ]*\).*/\1/'`"
+-PLATFORMLIBDIR=`expr "$LIBC_SO" : '\(.*\)/libc.*'`
+-
+-#If empty try extracting Musl
+-if [ "$PLATFORMLIBDIR" = "" ]; then
+-{
+- LIBC_SO="`/usr/bin/ldd "$BIN/@VM_EXECUTABLE_NAME@" | /bin/fgrep libc. | sed 's/^.*=> \([^ ]*\).*/\1/'`"
+- PLATFORMLIBDIR=`expr "$LIBC_SO" : '\(.*\)/ld-musl.*'`
+-}
+-fi
+-
+-if [ "$PLATFORMLIBDIR" = "" ]; then
+-{
+- echo "Error. Could not determine platform's libc path for VM. "
+- echo "Try forcing \$PLATFORMLIBDIR in $0, based on LIBC_SO."
+- echo "Please report what works to @VM_EXECUTABLE_NAME@ [vm-dev] mail list."
+- echo " LIBC_SO="$LIBC_SO
+- cat /etc/*-release* | grep -v // | sed 's/^/ /'
+- echo -n " UNAME=" ; uname -a
+- MACHINE=`uname -m`
+- case "$MACHINE" in
+- *64*)
+- echo " System seems to be 64 bit. You may need to (re)install the 32-bit libraries."
+- ;;
+- esac
+- exit 1
+-} 1>&2
+-fi
+-# prepending is less flexible but safer because it ensures we find the plugins
+-# in the same directory as the VM. We must include at least /lib and /usr/lib
+-# if libraries there-in are to be found. These directories are not implicit.
+-case $PLATFORMLIBDIR in
+-/lib|/usr/lib) SVMLLP=/lib:/usr/lib;;
+-*) SVMLLP="$PLATFORMLIBDIR:/lib:/usr$PLATFORMLIBDIR:/usr/lib"
+-esac
+-LD_LIBRARY_PATH="$PLUGINS:$SVMLLP:${LD_LIBRARY_PATH}" exec $GDB "$BIN/@VM_EXECUTABLE_NAME@" "$@"
+diff --git a/packaging/linux/launch.sh.in b/packaging/linux/launch.sh.in
+deleted file mode 100755
+index 456444f27..000000000
+--- a/packaging/linux/launch.sh.in
++++ /dev/null
+@@ -1,66 +0,0 @@
+-#!/bin/sh
+-# Run the VM, setting SQUEAK_PLUGINS if unset to the VM's containing directory
+-# if unset, and ensuring LD_LIBRARY_PATH includes the VM's containing directory.
+-BIN=@PHARO_BIN_IN_ROOT@
+-GDB=
+-if [ "${SQUEAK_PLUGINS-unset}" = unset ]; then
+- export SQUEAK_PLUGINS="$BIN"
+-fi
+-if [ "$1" = '-gdb' ]; then
+- GDB=gdb
+- shift
+- echo;echo run $@; echo
+- set --
+-fi
+-# At least on linux LD_LIBRARY_PATH's components must be absolute path names
+-case "$BIN" in
+-/*) PLUGINS="$BIN";;
+-*) PLUGINS="`pwd`/$BIN"
+-esac
+-
+-if [ $(uname -s) = "OpenBSD" ]; then
+- LD_LIBRARY_PATH="$PLUGINS:${LD_LIBRARY_PATH}" exec $GDB "$BIN/@VM_EXECUTABLE_NAME@" "$@"
+-fi
+-
+-# On some linuxes there multiple versions of the C library. If the image uses
+-# libc (e.g. through the FFI) then it must use the same version that the VM uses
+-# and so it should take precedence over /lib libc. This is done by setting
+-# LD_LIBRARY_PATH appropriately, based on ldd's idea of the libc use by the VM.
+-
+-#Try extracting Libc
+-LIBC_SO="`/usr/bin/ldd "$BIN/@VM_EXECUTABLE_NAME@" | /bin/fgrep /libc. | sed 's/^.*=> \([^ ]*\).*/\1/'`"
+-PLATFORMLIBDIR=`expr "$LIBC_SO" : '\(.*\)/libc.*'`
+-
+-#If empty try extracting Musl
+-if [ "$PLATFORMLIBDIR" = "" ]; then
+-{
+- LIBC_SO="`/usr/bin/ldd "$BIN/@VM_EXECUTABLE_NAME@" | /bin/fgrep libc. | sed 's/^.*=> \([^ ]*\).*/\1/'`"
+- PLATFORMLIBDIR=`expr "$LIBC_SO" : '\(.*\)/ld-musl.*'`
+-}
+-fi
+-
+-if [ "$PLATFORMLIBDIR" = "" ]; then
+-{
+- echo "Error. Could not determine platform's libc path for VM. "
+- echo "Try forcing \$PLATFORMLIBDIR in $0, based on LIBC_SO."
+- echo "Please report what works to @VM_EXECUTABLE_NAME@ [vm-dev] mail list."
+- echo " LIBC_SO="$LIBC_SO
+- cat /etc/*-release* | grep -v // | sed 's/^/ /'
+- echo -n " UNAME=" ; uname -a
+- MACHINE=`uname -m`
+- case "$MACHINE" in
+- *64*)
+- echo " System seems to be 64 bit. You may need to (re)install the 32-bit libraries."
+- ;;
+- esac
+- exit 1
+-} 1>&2
+-fi
+-# prepending is less flexible but safer because it ensures we find the plugins
+-# in the same directory as the VM. We must include at least /lib and /usr/lib
+-# if libraries there-in are to be found. These directories are not implicit.
+-case $PLATFORMLIBDIR in
+-/lib|/usr/lib) SVMLLP=/lib:/usr/lib;;
+-*) SVMLLP="$PLATFORMLIBDIR:/lib:/usr$PLATFORMLIBDIR:/usr/lib"
+-esac
+-LD_LIBRARY_PATH="$PLUGINS:$SVMLLP:${LD_LIBRARY_PATH}" exec $GDB "$BIN/@VM_EXECUTABLE_NAME@" "$@"
+diff --git a/plugins.cmake b/plugins.cmake
+index 5be40233c..809c55631 100644
+--- a/plugins.cmake
++++ b/plugins.cmake
+@@ -47,6 +47,7 @@ endif()
+ addLibraryWithRPATH(FilePlugin
+ ${FilePlugin_SOURCES}
+ ${PHARO_CURRENT_GENERATED}/plugins/src/FilePlugin/FilePlugin.c)
++list(APPEND VM_PLUGIN_TARGETS FilePlugin)
+
+ if(OSX)
+ target_link_libraries(FilePlugin PRIVATE "-framework CoreFoundation")
+@@ -75,6 +76,7 @@ if(NOT OPENBSD)
+ )
+
+ addLibraryWithRPATH(UUIDPlugin ${UUIDPlugin_SOURCES})
++ list(APPEND VM_PLUGIN_TARGETS UUIDPlugin)
+ if(WIN)
+ target_link_libraries(UUIDPlugin PRIVATE "-lole32")
+ elseif(UNIX AND NOT OSX)
+@@ -147,6 +149,7 @@ set(BitBltPlugin_SOURCES
+ )
+
+ addLibraryWithRPATH(BitBltPlugin ${BitBltPlugin_SOURCES})
++list(APPEND VM_PLUGIN_TARGETS BitBltPlugin)
+
+ #
+ # B2DPlugin
+@@ -193,6 +196,7 @@ else()
+ endif()
+
+ addLibraryWithRPATH(LocalePlugin ${LocalePlugin_SOURCES})
++list(APPEND VM_PLUGIN_TARGETS LocalePlugin)
+
+ if(OSX)
+ target_link_libraries(LocalePlugin PRIVATE "-framework CoreFoundation")
+@@ -239,6 +243,7 @@ else()
+ endif()
+
+ addLibraryWithRPATH(SqueakSSL ${SqueakSSL_SOURCES})
++list(APPEND VM_PLUGIN_TARGETS SqueakSSL)
+
+ if(OSX)
+ target_link_libraries(SqueakSSL PRIVATE "-framework CoreFoundation")
+diff --git a/plugins.macros.cmake b/plugins.macros.cmake
+index 8e7ff93c0..e68780cc3 100644
+--- a/plugins.macros.cmake
++++ b/plugins.macros.cmake
+@@ -1,3 +1,6 @@
++# The list of VM_PLUGINS targets define.
++set(VM_PLUGIN_TARGETS)
++
+ macro(add_vm_plugin NAME)
+
+ set(${NAME}_SOURCES_EXTRA ${ARGN})
+@@ -36,4 +39,5 @@ macro(add_vm_plugin NAME)
+ message(STATUS "Adding plugin: ${NAME}")
+
+ addLibraryWithRPATH(${NAME} ${${NAME}_SOURCES} ${${NAME}_SOURCES_EXTRA})
+-endmacro()
+\ No newline at end of file
++ list(APPEND VM_PLUGIN_TARGETS ${NAME})
++endmacro()
diff --git a/gnu/packages/patches/ploticus-pointer-types.patch b/gnu/packages/patches/ploticus-pointer-types.patch
new file mode 100644
index 0000000000..f84a63cfbb
--- /dev/null
+++ b/gnu/packages/patches/ploticus-pointer-types.patch
@@ -0,0 +1,31 @@
+From <https://sources.debian.org/data/main/p/ploticus/2.42-8/debian/patches/fix-ftbfs-gcc14.patch>.
+
+Fixes a build error with GCC 14:
+
+ svg.c: In function ‘PLGS_trailer’:
+ svg.c:743:46: error: passing argument 1 of ‘gzprintf’ from incompatible pointer type [-Wincompatible-pointer-types]
+ 743 | if( svg_compress ) gzprintf( outfp, "%s", buf );
+ | ^~~~~
+ | |
+ | FILE *
+
+--- a/src/svg.c
++++ b/src/svg.c
+@@ -740,7 +740,7 @@
+ buf = svg_style; /* reuse */
+ while( fgets( buf, 999, svg_fp ) != NULL ) {
+ #ifdef WZ
+- if( svg_compress ) gzprintf( outfp, "%s", buf );
++ if( svg_compress ) gzprintf( (gzFile) outfp, "%s", buf );
+ else
+ #endif
+ printf( "%s", buf );
+@@ -749,7 +749,7 @@
+ unlink( svg_tmpfilename );
+ #ifdef WZ
+ if( svg_compress && !svg_stdout ) {
+- gzclose( outfp );
++ gzclose( (gzFile) outfp );
+ chmod( svg_filename, 00644 );
+ }
+ #endif
diff --git a/gnu/packages/patches/python-colour-remove-d2to1.patch b/gnu/packages/patches/python-colour-remove-d2to1.patch
new file mode 100644
index 0000000000..d887be9124
--- /dev/null
+++ b/gnu/packages/patches/python-colour-remove-d2to1.patch
@@ -0,0 +1,80 @@
+From bc2013b76df8ebf404565a831f77f325cb95df1a Mon Sep 17 00:00:00 2001
+From: Theodore Ni <3806110+tjni@users.noreply.github.com>
+Date: Sun, 30 Jul 2023 10:05:54 -0700
+Subject: [PATCH] Remove unmaintained d2to1 during setup.
+
+---
+ setup.cfg | 27 +++++++--------------------
+ setup.py | 10 +---------
+ 2 files changed, 8 insertions(+), 29 deletions(-)
+
+diff --git a/setup.cfg b/setup.cfg
+index a6616d0..0bf46f4 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -1,20 +1,16 @@
+ [metadata]
+ name = %%name%%
+ version = %%version%%
+-summary = %%description%%
+-description-file =
+- README.rst
+- CHANGELOG.rst
+- TODO.rst
+-license_file = LICENSE
+-requires-dist =
++description = %%description%%
++long_description = file: README.rst, CHANGELOG.rst, TODO.rst
++license_files = LICENSE
+
+ ## sdist info
+ author = %%author%%
+ author_email = %%email%%
+-home_page = http://github.com/vaab/%%name%%
++url = http://github.com/vaab/%%name%%
+ license = BSD 3-Clause License
+-classifier =
++classifiers =
+ Programming Language :: Python
+ Topic :: Software Development :: Libraries :: Python Modules
+ Development Status :: 3 - Alpha
+@@ -29,19 +25,10 @@ classifier =
+ Programming Language :: Python :: 3.6
+
+
+-[files]
+-modules = %%name%%
+-extra_files =
+- README.rst
+- CHANGELOG.rst
+- TODO.rst
+- setup.py
+-
+-
+-[backwards_compat]
++[options]
+ ## without this ``pip uninstall`` fails on recent version of setuptools
+ ## (tested failing with setuptools 34.3.3, working with setuptools 9.1)
+-zip-safe = False
++zip_safe = False
+
+
+ [bdist_wheel]
+diff --git a/setup.py b/setup.py
+index 47038f9..11a8d3a 100644
+--- a/setup.py
++++ b/setup.py
+@@ -54,12 +54,4 @@
+ sys.exit(errlvl)
+
+
+-##
+-## Normal d2to1 setup
+-##
+-
+-setup(
+- setup_requires=['d2to1'],
+- extras_require={'test': ['nose', ]},
+- d2to1=True
+-)
++setup(extras_require={'test': ['nose', ]})
diff --git a/gnu/packages/patches/python-dateutil-pytest-compat.patch b/gnu/packages/patches/python-dateutil-pytest-compat.patch
deleted file mode 100644
index 5cff57e94c..0000000000
--- a/gnu/packages/patches/python-dateutil-pytest-compat.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-Add compatibility with newer versions of pytest.
-
-Taken from upstream:
-
- https://github.com/dateutil/dateutil/commit/2bdd63158b7f981fc6d70a869680451bdfd8d848
-
-diff --git a/dateutil/test/test_internals.py b/dateutil/test/test_internals.py
-index 53081314..b32e6723 100644
---- a/dateutil/test/test_internals.py
-+++ b/dateutil/test/test_internals.py
-@@ -9,6 +9,7 @@
-
- import sys
- import pytest
-+import warnings
-
- from dateutil.parser._parser import _ymd
- from dateutil import tz
-@@ -65,18 +66,17 @@ def test_parser_parser_private_not_warns():
- from dateutil.parser._parser import _timelex, _tzparser
- from dateutil.parser._parser import _parsetz
-
-- with pytest.warns(None) as recorder:
-+ with warnings.catch_warnings():
-+ warnings.simplefilter("error")
- _tzparser()
-- assert len(recorder) == 0
-
-- with pytest.warns(None) as recorder:
-+ with warnings.catch_warnings():
-+ warnings.simplefilter("error")
- _timelex('2014-03-03')
-
-- assert len(recorder) == 0
--
-- with pytest.warns(None) as recorder:
-+ with warnings.catch_warnings():
-+ warnings.simplefilter("error")
- _parsetz('+05:00')
-- assert len(recorder) == 0
-
-
- @pytest.mark.tzstr
diff --git a/gnu/packages/patches/python-hdmedians-replace-nose.patch b/gnu/packages/patches/python-hdmedians-replace-nose.patch
new file mode 100644
index 0000000000..2341fee2cd
--- /dev/null
+++ b/gnu/packages/patches/python-hdmedians-replace-nose.patch
@@ -0,0 +1,95 @@
+This patch is from the upstream pull request.
+https://github.com/daleroberts/hdmedians/pull/10.
+It adds compatibility with Pytest and drops Nose.
+
+diff --git a/hdmedians/tests/test_geomedian.py b/hdmedians/tests/test_geomedian.py
+index 0bc37e9..ff5f938 100644
+--- a/hdmedians/tests/test_geomedian.py
++++ b/hdmedians/tests/test_geomedian.py
+@@ -4,9 +4,9 @@ Tests.
+
+ import numpy as np
+ import hdmedians as hd
++import pytest
+
+ from numpy.testing import assert_equal, assert_array_almost_equal
+-from nose.tools import assert_true, assert_raises
+
+ # shape (6, 25)
+ DATA1 = np.array([[693, 990, 1281, 2101, 3524, 2577],
+@@ -124,10 +124,12 @@ def test_nangeomedian_axis_one_two_good():
+ def test_nangeomedian_axis_bad():
+ data = np.array([[1.0, np.nan, 1.0],
+ [2.0, 1.0, 1.0]])
+- assert_raises(IndexError, hd.nangeomedian, data, axis=2)
++ with pytest.raises(IndexError):
++ hd.nangeomedian(data, axis=2)
+
+
+ def test_nangeomedian_all_nan():
+ data = np.array([[np.nan, np.nan, np.nan],
+ [np.nan, np.nan, np.nan]])
+- assert_raises(ValueError, hd.nangeomedian, data)
++ with pytest.raises(ValueError):
++ hd.nangeomedian(data)
+diff --git a/hdmedians/tests/test_medoid.py b/hdmedians/tests/test_medoid.py
+index c5e0a7f..4fbdf80 100644
+--- a/hdmedians/tests/test_medoid.py
++++ b/hdmedians/tests/test_medoid.py
+@@ -4,9 +4,9 @@ Tests.
+
+ import numpy as np
+ import hdmedians as hd
++import pytest
+
+ from numpy.testing import assert_equal, assert_array_almost_equal
+-from nose.tools import assert_true, assert_raises
+
+ # shape (6, 25)
+ DATA1 = np.array([[693, 990, 1281, 2101, 3524, 2577],
+@@ -59,7 +59,7 @@ def test_medoid_in_set_random():
+ s = [list(x) for x in a.T]
+ m = hd.medoid(a)
+ idx = s.index(list(m))
+- assert_true(idx > -1)
++ assert(idx > -1)
+
+
+ def test_medoid_noaxis():
+@@ -85,7 +85,8 @@ def test_medoid_axis_one():
+
+
+ def test_medoid_axis_bad():
+- assert_raises(IndexError, hd.medoid, DATA1, axis=2)
++ with pytest.raises(IndexError):
++ hd.medoid(DATA1, axis=2)
+
+
+ def test_medoid_noaxis_indexonly():
+@@ -136,7 +137,8 @@ def test_nanmedoid_two_obs():
+ def test_nanmedoid_all_nan():
+ data = np.array([[np.nan, np.nan, np.nan],
+ [np.nan, np.nan, np.nan]])
+- assert_raises(ValueError, hd.nanmedoid, data)
++ with pytest.raises(ValueError):
++ hd.nanmedoid(data)
+
+
+ def test_nanmedoid_axis_zero():
+@@ -170,7 +172,8 @@ def test_nanmedoid_axis_one_indexonly():
+
+
+ def test_nanmedoid_axis_bad():
+- assert_raises(IndexError, hd.nanmedoid, DATA1, axis=2)
++ with pytest.raises(IndexError):
++ hd.nanmedoid(DATA1, axis=2)
+
+
+ def test_nanmedoid_two_obs():
+@@ -184,4 +187,5 @@ def test_nanmedoid_two_obs():
+ def test_nanmedoid_all_nan():
+ data = np.array([[np.nan, np.nan, np.nan],
+ [np.nan, np.nan, np.nan]])
+- assert_raises(ValueError, hd.nanmedoid, data)
++ with pytest.raises(ValueError):
++ hd.nanmedoid(data)
diff --git a/gnu/packages/patches/python-libxml2-utf8.patch b/gnu/packages/patches/python-libxml2-utf8.patch
index e39672faa1..9c4ca4fdb2 100644
--- a/gnu/packages/patches/python-libxml2-utf8.patch
+++ b/gnu/packages/patches/python-libxml2-utf8.patch
@@ -6,18 +6,18 @@ that 'itstool' stumbles upon when processing UTF-8 data:
Patch by Jan Matejek
from <https://bugzilla.opensuse.org/show_bug.cgi?id=1065270>.
---- libxml2-2.9.5.orig/python/libxml.c
-+++ libxml2-2.9.5/python/libxml.c
-@@ -1620,6 +1620,7 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU
+--- a/python/libxml.c
++++ b/python/libxml.c
+@@ -1499,6 +1499,7 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNUSED void *ctx, const char *msg,
PyObject *message;
PyObject *result;
char str[1000];
+ unsigned char *ptr = (unsigned char *)str;
- #ifdef DEBUG_ERROR
- printf("libxml_xmlErrorFuncHandler(%p, %s, ...) called\n", ctx, msg);
-@@ -1636,12 +1637,20 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU
- str[999] = 0;
+ if (libxml_xmlPythonErrorFuncHandler == NULL) {
+ va_start(ap, msg);
+@@ -1510,12 +1511,20 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNUSED void *ctx, const char *msg,
+ str[999] = 0;
va_end(ap);
+#if PY_MAJOR_VERSION >= 3
@@ -32,7 +32,7 @@ from <https://bugzilla.opensuse.org/show_bug.cgi?id=1065270>.
- message = libxml_charPtrConstWrap(str);
+ message = libxml_charPtrConstWrap(ptr);
PyTuple_SetItem(list, 1, message);
- result = PyEval_CallObject(libxml_xmlPythonErrorFuncHandler, list);
+ result = PyObject_CallObject(libxml_xmlPythonErrorFuncHandler, list);
+ /* Forget any errors caused in the error handler. */
+ PyErr_Clear();
Py_XDECREF(list);
diff --git a/gnu/packages/patches/python-mohawk-pytest.patch b/gnu/packages/patches/python-mohawk-pytest.patch
new file mode 100644
index 0000000000..cc1c56f58d
--- /dev/null
+++ b/gnu/packages/patches/python-mohawk-pytest.patch
@@ -0,0 +1,1018 @@
+From ed2ec6f0243249d3673a23d99aefc919e24cdeca Mon Sep 17 00:00:00 2001
+From: Pyrox <pyrox@pyrox.dev>
+Date: Fri, 2 Aug 2024 14:40:37 -0400
+Subject: [PATCH 1/4] autoconvert nose assertions with nose2pytest
+
+---
+ mohawk/tests.py | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/mohawk/tests.py b/mohawk/tests.py
+index e680cf8..505c7d8 100644
+--- a/mohawk/tests.py
++++ b/mohawk/tests.py
+@@ -288,8 +288,8 @@ def test_expired_exception_reports_localtime(self):
+ except:
+ etype, exc, tb = sys.exc_info()
+
+- eq_(type(exc), TokenExpired)
+- eq_(exc.localtime_in_seconds, now)
++ assert type(exc) == TokenExpired
++ assert exc.localtime_in_seconds == now
+
+ def test_localtime_offset(self):
+ now = utc_now() - 120
+@@ -371,7 +371,7 @@ def test_ext_with_equality_sign(self):
+ sn = self.Sender(ext="foo=bar&foo2=bar2;foo3=bar3")
+ self.receive(sn.request_header)
+ parsed = parse_authorization_header(sn.request_header)
+- eq_(parsed['ext'], "foo=bar&foo2=bar2;foo3=bar3")
++ assert parsed['ext'] == "foo=bar&foo2=bar2;foo3=bar3"
+
+ @raises(HawkFail)
+ def test_non_hawk_scheme(self):
+@@ -385,7 +385,7 @@ def test_ext_with_all_valid_characters(self):
+ valid_characters = "!#$%&'()*+,-./:;<=>?@[]^_`{|}~ azAZ09_"
+ sender = self.Sender(ext=valid_characters)
+ parsed = parse_authorization_header(sender.request_header)
+- eq_(parsed['ext'], valid_characters)
++ assert parsed['ext'] == valid_characters
+
+ @raises(BadHeaderValue)
+ def test_ext_with_illegal_chars(self):
+@@ -421,7 +421,7 @@ def test_app_ok(self):
+ sn = self.Sender(app=app)
+ self.receive(sn.request_header)
+ parsed = parse_authorization_header(sn.request_header)
+- eq_(parsed['app'], app)
++ assert parsed['app'] == app
+
+ @raises(MacMismatch)
+ def test_tampered_app(self):
+@@ -435,7 +435,7 @@ def test_dlg_ok(self):
+ sn = self.Sender(dlg=dlg)
+ self.receive(sn.request_header)
+ parsed = parse_authorization_header(sn.request_header)
+- eq_(parsed['dlg'], dlg)
++ assert parsed['dlg'] == dlg
+
+ @raises(MacMismatch)
+ def test_tampered_dlg(self):
+@@ -589,7 +589,7 @@ def test_respond_with_expired_ts(self):
+ calculated = calculate_ts_mac(fn(), self.credentials)
+ if isinstance(calculated, six.binary_type):
+ calculated = calculated.decode('ascii')
+- eq_(hdr['tsm'], calculated)
++ assert hdr['tsm'] == calculated
+ raise
+
+ def test_respond_with_bad_ts_skew_ok(self):
+@@ -611,7 +611,7 @@ def test_respond_with_ext(self):
+ ext = 'custom-ext'
+ self.respond(ext=ext)
+ header = parse_authorization_header(self.receiver.response_header)
+- eq_(header['ext'], ext)
++ assert header['ext'] == ext
+
+ @raises(MacMismatch)
+ def test_respond_with_wrong_app(self):
+@@ -854,7 +854,7 @@ def test_bewit(self):
+ bewit = get_bewit(res)
+
+ expected = '123456\\1356420707\\IGYmLgIqLrCe8CxvKPs4JlWIA+UjWJJouwgARiVhCAg=\\'
+- eq_(b64decode(bewit).decode('ascii'), expected)
++ assert b64decode(bewit).decode('ascii') == expected
+
+ def test_bewit_with_binary_id(self):
+ # Check for exceptions in get_bewit call with binary id
+@@ -877,7 +877,7 @@ def test_bewit_with_ext(self):
+ bewit = get_bewit(res)
+
+ expected = '123456\\1356420707\\kscxwNR2tJpP1T1zDLNPbB5UiKIU9tOSJXTUdG7X9h8=\\xandyandz'
+- eq_(b64decode(bewit).decode('ascii'), expected)
++ assert b64decode(bewit).decode('ascii') == expected
+
+ @raises(BadHeaderValue)
+ def test_bewit_with_invalid_ext(self):
+@@ -905,7 +905,7 @@ def test_bewit_with_port(self):
+ bewit = get_bewit(res)
+
+ expected = '123456\\1356420707\\hZbJ3P2cKEo4ky0C8jkZAkRyCZueg4WSNbxV7vq3xHU=\\xandyandz'
+- eq_(b64decode(bewit).decode('ascii'), expected)
++ assert b64decode(bewit).decode('ascii') == expected
+
+ @raises(ValueError)
+ def test_bewit_with_nonce(self):
+
+From 66157c7efbf6b0d18c30a9ffe5dfd84bef27bd3a Mon Sep 17 00:00:00 2001
+From: Pyrox <pyrox@pyrox.dev>
+Date: Fri, 2 Aug 2024 15:20:34 -0400
+Subject: [PATCH 2/4] nose.raises -> unittest.assertRaises
+
+---
+ mohawk/tests.py | 385 ++++++++++++++++++++++++------------------------
+ 1 file changed, 191 insertions(+), 194 deletions(-)
+
+diff --git a/mohawk/tests.py b/mohawk/tests.py
+index 505c7d8..801c1dd 100644
+--- a/mohawk/tests.py
++++ b/mohawk/tests.py
+@@ -1,10 +1,8 @@
+ import sys
+ import warnings
+-from unittest import TestCase
++from unittest import TestCase, mock
+ from base64 import b64decode, urlsafe_b64encode
+
+-import mock
+-from nose.tools import eq_, raises
+ import six
+
+ from . import Receiver, Sender
+@@ -60,27 +58,27 @@ def credentials_map(self, id):
+
+ class TestConfig(Base):
+
+- @raises(InvalidCredentials)
+ def test_no_id(self):
+ c = self.credentials.copy()
+ del c['id']
+- validate_credentials(c)
++ with self.assertRaises(InvalidCredentials):
++ validate_credentials(c)
+
+- @raises(InvalidCredentials)
+ def test_no_key(self):
+ c = self.credentials.copy()
+ del c['key']
+- validate_credentials(c)
++ with self.assertRaises(InvalidCredentials):
++ validate_credentials(c)
+
+- @raises(InvalidCredentials)
+ def test_no_algo(self):
+ c = self.credentials.copy()
+ del c['algorithm']
+- validate_credentials(c)
++ with self.assertRaises(InvalidCredentials):
++ validate_credentials(c)
+
+- @raises(InvalidCredentials)
+ def test_no_credentials(self):
+- validate_credentials(None)
++ with self.assertRaises(InvalidCredentials):
++ validate_credentials(None)
+
+ def test_non_dict_credentials(self):
+ class WeirdThing(object):
+@@ -144,10 +142,10 @@ def test_post_content_type_with_trailing_charset(self):
+ self.receive(sn.request_header, method=method, content=content,
+ content_type='application/json; charset=other')
+
+- @raises(MissingContent)
+ def test_missing_payload_details(self):
+- self.Sender(method='POST', content=EmptyValue,
+- content_type=EmptyValue)
++ with self.assertRaises(MissingContent):
++ self.Sender(method='POST', content=EmptyValue,
++ content_type=EmptyValue)
+
+ def test_skip_payload_hashing(self):
+ method = 'POST'
+@@ -193,73 +191,72 @@ def test_empty_payload_hashing_accept_untrusted(self):
+ content_type=content_type,
+ accept_untrusted_content=True)
+
+- @raises(MissingContent)
+ def test_cannot_skip_content_only(self):
+- self.Sender(method='POST', content=EmptyValue,
+- content_type='application/json')
++ with self.assertRaises(MissingContent):
++ self.Sender(method='POST', content=EmptyValue,
++ content_type='application/json')
+
+- @raises(MissingContent)
+ def test_cannot_skip_content_type_only(self):
+- self.Sender(method='POST', content='{"foo": "bar"}',
+- content_type=EmptyValue)
++ with self.assertRaises(MissingContent):
++ self.Sender(method='POST', content='{"foo": "bar"}',
++ content_type=EmptyValue)
+
+- @raises(MacMismatch)
+ def test_tamper_with_host(self):
+ sn = self.Sender()
+- self.receive(sn.request_header, url='http://TAMPERED-WITH.com')
++ with self.assertRaises(MacMismatch):
++ self.receive(sn.request_header, url='http://TAMPERED-WITH.com')
+
+- @raises(MacMismatch)
+ def test_tamper_with_method(self):
+ sn = self.Sender(method='GET')
+- self.receive(sn.request_header, method='POST')
++ with self.assertRaises(MacMismatch):
++ self.receive(sn.request_header, method='POST')
+
+- @raises(MacMismatch)
+ def test_tamper_with_path(self):
+ sn = self.Sender()
+- self.receive(sn.request_header,
+- url='http://site.com/TAMPERED?bar=1')
++ with self.assertRaises(MacMismatch):
++ self.receive(sn.request_header,
++ url='http://site.com/TAMPERED?bar=1')
+
+- @raises(MacMismatch)
+ def test_tamper_with_query(self):
+ sn = self.Sender()
+- self.receive(sn.request_header,
+- url='http://site.com/foo?bar=TAMPERED')
++ with self.assertRaises(MacMismatch):
++ self.receive(sn.request_header,
++ url='http://site.com/foo?bar=TAMPERED')
+
+- @raises(MacMismatch)
+ def test_tamper_with_scheme(self):
+ sn = self.Sender()
+- self.receive(sn.request_header, url='https://site.com/foo?bar=1')
++ with self.assertRaises(MacMismatch):
++ self.receive(sn.request_header, url='https://site.com/foo?bar=1')
+
+- @raises(MacMismatch)
+ def test_tamper_with_port(self):
+ sn = self.Sender()
+- self.receive(sn.request_header,
+- url='http://site.com:8000/foo?bar=1')
++ with self.assertRaises(MacMismatch):
++ self.receive(sn.request_header,
++ url='http://site.com:8000/foo?bar=1')
+
+- @raises(MisComputedContentHash)
+ def test_tamper_with_content(self):
+ sn = self.Sender()
+- self.receive(sn.request_header, content='stuff=nope')
++ with self.assertRaises(MisComputedContentHash):
++ self.receive(sn.request_header, content='stuff=nope')
+
+ def test_non_ascii_content(self):
+ content = u'Ivan Kristi\u0107'
+ sn = self.Sender(content=content)
+ self.receive(sn.request_header, content=content)
+
+- @raises(MacMismatch)
+ def test_tamper_with_content_type(self):
+ sn = self.Sender(method='POST')
+- self.receive(sn.request_header, content_type='application/json')
++ with self.assertRaises(MacMismatch):
++ self.receive(sn.request_header, content_type='application/json')
+
+- @raises(AlreadyProcessed)
+ def test_nonce_fail(self):
+
+ def seen_nonce(id, nonce, ts):
+ return True
+
+ sn = self.Sender()
+-
+- self.receive(sn.request_header, seen_nonce=seen_nonce)
++ with self.assertRaises(AlreadyProcessed):
++ self.receive(sn.request_header, seen_nonce=seen_nonce)
+
+ def test_nonce_ok(self):
+
+@@ -269,11 +266,11 @@ def seen_nonce(id, nonce, ts):
+ sn = self.Sender(seen_nonce=seen_nonce)
+ self.receive(sn.request_header)
+
+- @raises(TokenExpired)
+ def test_expired_ts(self):
+ now = utc_now() - 120
+ sn = self.Sender(_timestamp=now)
+- self.receive(sn.request_header)
++ with self.assertRaises(TokenExpired):
++ self.receive(sn.request_header)
+
+ def test_expired_exception_reports_localtime(self):
+ now = utc_now()
+@@ -303,13 +300,12 @@ def test_localtime_skew(self):
+ # Without an offset this will raise an expired exception.
+ self.receive(sn.request_header, timestamp_skew_in_seconds=120)
+
+- @raises(MacMismatch)
+ def test_hash_tampering(self):
+ sn = self.Sender()
+ header = sn.request_header.replace('hash="', 'hash="nope')
+- self.receive(header)
++ with self.assertRaises(MacMismatch):
++ self.receive(header)
+
+- @raises(MacMismatch)
+ def test_bad_secret(self):
+ cfg = {
+ 'id': 'my-hawk-id',
+@@ -317,55 +313,56 @@ def test_bad_secret(self):
+ 'algorithm': 'sha256',
+ }
+ sn = self.Sender(credentials=cfg)
+- self.receive(sn.request_header)
++ with self.assertRaises(MacMismatch):
++ self.receive(sn.request_header)
+
+- @raises(MacMismatch)
+ def test_unexpected_algorithm(self):
+ cr = self.credentials.copy()
+ cr['algorithm'] = 'sha512'
+ sn = self.Sender(credentials=cr)
+
+ # Validate with mismatched credentials (sha256).
+- self.receive(sn.request_header)
++ with self.assertRaises(MacMismatch):
++ self.receive(sn.request_header)
+
+- @raises(InvalidCredentials)
+ def test_invalid_credentials(self):
+ cfg = self.credentials.copy()
+ # Create an invalid credentials.
+ del cfg['algorithm']
+
+- self.Sender(credentials=cfg)
++ with self.assertRaises(InvalidCredentials):
++ self.Sender(credentials=cfg)
+
+- @raises(CredentialsLookupError)
+ def test_unknown_id(self):
+ cr = self.credentials.copy()
+ cr['id'] = 'someone-else'
+ sn = self.Sender(credentials=cr)
+
+- self.receive(sn.request_header)
++ with self.assertRaises(CredentialsLookupError):
++ self.receive(sn.request_header)
+
+- @raises(MacMismatch)
+ def test_bad_ext(self):
+ sn = self.Sender(ext='my external data')
+
+ header = sn.request_header.replace('my external data', 'TAMPERED')
+- self.receive(header)
++ with self.assertRaises(MacMismatch):
++ self.receive(header)
+
+- @raises(BadHeaderValue)
+ def test_duplicate_keys(self):
+ sn = self.Sender(ext='someext')
+ header = sn.request_header + ', ext="otherext"'
+- self.receive(header)
++ with self.assertRaises(BadHeaderValue):
++ self.receive(header)
+
+- @raises(BadHeaderValue)
+ def test_ext_with_quotes(self):
+- sn = self.Sender(ext='quotes=""')
+- self.receive(sn.request_header)
++ with self.assertRaises(BadHeaderValue):
++ sn = self.Sender(ext='quotes=""')
++ self.receive(sn.request_header)
+
+- @raises(BadHeaderValue)
+ def test_ext_with_new_line(self):
+- sn = self.Sender(ext="new line \n in the middle")
+- self.receive(sn.request_header)
++ with self.assertRaises(BadHeaderValue):
++ sn = self.Sender(ext="new line \n in the middle")
++ self.receive(sn.request_header)
+
+ def test_ext_with_equality_sign(self):
+ sn = self.Sender(ext="foo=bar&foo2=bar2;foo3=bar3")
+@@ -373,13 +370,13 @@ def test_ext_with_equality_sign(self):
+ parsed = parse_authorization_header(sn.request_header)
+ assert parsed['ext'] == "foo=bar&foo2=bar2;foo3=bar3"
+
+- @raises(HawkFail)
+ def test_non_hawk_scheme(self):
+- parse_authorization_header('Basic user:base64pw')
++ with self.assertRaises(HawkFail):
++ parse_authorization_header('Basic user:base64pw')
+
+- @raises(HawkFail)
+ def test_invalid_key(self):
+- parse_authorization_header('Hawk mac="validmac" unknownkey="value"')
++ with self.assertRaises(HawkFail):
++ parse_authorization_header('Hawk mac="validmac" unknownkey="value"')
+
+ def test_ext_with_all_valid_characters(self):
+ valid_characters = "!#$%&'()*+,-./:;<=>?@[]^_`{|}~ azAZ09_"
+@@ -387,9 +384,9 @@ def test_ext_with_all_valid_characters(self):
+ parsed = parse_authorization_header(sender.request_header)
+ assert parsed['ext'] == valid_characters
+
+- @raises(BadHeaderValue)
+ def test_ext_with_illegal_chars(self):
+- self.Sender(ext="something like \t is illegal")
++ with self.assertRaises(BadHeaderValue):
++ self.Sender(ext="something like \t is illegal")
+
+ def test_unparseable_header(self):
+ try:
+@@ -401,20 +398,20 @@ def test_unparseable_header(self):
+ else:
+ self.fail('should raise')
+
+- @raises(BadHeaderValue)
+ def test_ext_with_illegal_unicode(self):
+- self.Sender(ext=u'Ivan Kristi\u0107')
++ with self.assertRaises(BadHeaderValue):
++ self.Sender(ext=u'Ivan Kristi\u0107')
+
+- @raises(BadHeaderValue)
+ def test_too_long_header(self):
+ sn = self.Sender(ext='a'*5000)
+- self.receive(sn.request_header)
++ with self.assertRaises(BadHeaderValue):
++ self.receive(sn.request_header)
+
+- @raises(BadHeaderValue)
+ def test_ext_with_illegal_utf8(self):
+ # This isn't allowed because the escaped byte chars are out of
+ # range.
+- self.Sender(ext=u'Ivan Kristi\u0107'.encode('utf8'))
++ with self.assertRaises(BadHeaderValue):
++ self.Sender(ext=u'Ivan Kristi\u0107'.encode('utf8'))
+
+ def test_app_ok(self):
+ app = 'custom-app'
+@@ -423,12 +420,12 @@ def test_app_ok(self):
+ parsed = parse_authorization_header(sn.request_header)
+ assert parsed['app'] == app
+
+- @raises(MacMismatch)
+ def test_tampered_app(self):
+ app = 'custom-app'
+ sn = self.Sender(app=app)
+ header = sn.request_header.replace(app, 'TAMPERED-WITH')
+- self.receive(header)
++ with self.assertRaises(MacMismatch):
++ self.receive(header)
+
+ def test_dlg_ok(self):
+ dlg = 'custom-dlg'
+@@ -437,12 +434,12 @@ def test_dlg_ok(self):
+ parsed = parse_authorization_header(sn.request_header)
+ assert parsed['dlg'] == dlg
+
+- @raises(MacMismatch)
+ def test_tampered_dlg(self):
+ dlg = 'custom-dlg'
+ sn = self.Sender(dlg=dlg, app='some-app')
+ header = sn.request_header.replace(dlg, 'TAMPERED-WITH')
+- self.receive(header)
++ with self.assertRaises(MacMismatch):
++ self.receive(header)
+
+ def test_file_content(self):
+ method = "POST"
+@@ -456,12 +453,12 @@ def test_binary_file_content(self):
+ sn = self.Sender(method, content=content)
+ self.receive(sn.request_header, method=method, content=content.getvalue())
+
+- @raises(MisComputedContentHash)
+ def test_bad_file_content(self):
+ method = "POST"
+ content = six.BytesIO(b"FILE CONTENT")
+ sn = self.Sender(method, content=content)
+- self.receive(sn.request_header, method=method, content="BAD FILE CONTENT")
++ with self.assertRaises(MisComputedContentHash):
++ self.receive(sn.request_header, method=method, content="BAD FILE CONTENT")
+
+
+ class TestReceiver(Base):
+@@ -508,10 +505,10 @@ def respond(self, **kw):
+
+ return receiver.response_header
+
+- @raises(InvalidCredentials)
+ def test_invalid_credentials_lookup(self):
+ # Return invalid credentials.
+- self.receive(credentials_map=lambda *a: {})
++ with self.assertRaises(InvalidCredentials):
++ self.receive(credentials_map=lambda *a: {})
+
+ def test_get_ok(self):
+ method = 'GET'
+@@ -523,49 +520,49 @@ def test_post_ok(self):
+ self.receive(method=method)
+ self.respond()
+
+- @raises(MisComputedContentHash)
+ def test_respond_with_wrong_content(self):
+ self.receive()
+- self.respond(content='real content',
+- accept_kw=dict(content='TAMPERED WITH'))
++ with self.assertRaises(MisComputedContentHash):
++ self.respond(content='real content',
++ accept_kw=dict(content='TAMPERED WITH'))
+
+- @raises(MisComputedContentHash)
+ def test_respond_with_wrong_content_type(self):
+ self.receive()
+- self.respond(content_type='text/html',
+- accept_kw=dict(content_type='application/json'))
++ with self.assertRaises(MisComputedContentHash):
++ self.respond(content_type='text/html',
++ accept_kw=dict(content_type='application/json'))
+
+- @raises(MissingAuthorization)
+ def test_missing_authorization(self):
+- Receiver(lambda id: self.credentials, None, '/', 'GET')
++ with self.assertRaises(MissingAuthorization):
++ Receiver(lambda id: self.credentials, None, '/', 'GET')
+
+- @raises(MacMismatch)
+ def test_respond_with_wrong_url(self):
+- self.receive(url='http://fakesite.com')
+- wrong_receiver = self.receiver
++ with self.assertRaises(MacMismatch):
++ self.receive(url='http://fakesite.com')
++ wrong_receiver = self.receiver
+
+- self.receive(url='http://realsite.com')
++ self.receive(url='http://realsite.com')
+
+- self.respond(receiver=wrong_receiver)
++ self.respond(receiver=wrong_receiver)
+
+- @raises(MacMismatch)
+ def test_respond_with_wrong_method(self):
+- self.receive(method='GET')
+- wrong_receiver = self.receiver
++ with self.assertRaises(MacMismatch):
++ self.receive(method='GET')
++ wrong_receiver = self.receiver
+
+- self.receive(method='POST')
++ self.receive(method='POST')
+
+- self.respond(receiver=wrong_receiver)
++ self.respond(receiver=wrong_receiver)
+
+- @raises(MacMismatch)
+ def test_respond_with_wrong_nonce(self):
+- self.receive(sender_kw=dict(nonce='another-nonce'))
+- wrong_receiver = self.receiver
++ with self.assertRaises(MacMismatch):
++ self.receive(sender_kw=dict(nonce='another-nonce'))
++ wrong_receiver = self.receiver
+
+- self.receive()
++ self.receive()
+
+- # The nonce must match the one sent in the original request.
+- self.respond(receiver=wrong_receiver)
++ # The nonce must match the one sent in the original request.
++ self.respond(receiver=wrong_receiver)
+
+ def test_respond_with_unhashed_content(self):
+ self.receive()
+@@ -574,23 +571,23 @@ def test_respond_with_unhashed_content(self):
+ content_type=None,
+ accept_kw=dict(accept_untrusted_content=True))
+
+- @raises(TokenExpired)
+ def test_respond_with_expired_ts(self):
+ self.receive()
+ hdr = self.receiver.respond(content='', content_type='')
+
+- with mock.patch('mohawk.base.utc_now') as fn:
+- fn.return_value = 0 # force an expiry
+- try:
+- self.sender.accept_response(hdr, content='', content_type='')
+- except TokenExpired:
+- etype, exc, tb = sys.exc_info()
+- hdr = parse_authorization_header(exc.www_authenticate)
+- calculated = calculate_ts_mac(fn(), self.credentials)
+- if isinstance(calculated, six.binary_type):
+- calculated = calculated.decode('ascii')
+- assert hdr['tsm'] == calculated
+- raise
++ with self.assertRaises(TokenExpired):
++ with mock.patch('mohawk.base.utc_now') as fn:
++ fn.return_value = 0 # force an expiry
++ try:
++ self.sender.accept_response(hdr, content='', content_type='')
++ except TokenExpired:
++ etype, exc, tb = sys.exc_info()
++ hdr = parse_authorization_header(exc.www_authenticate)
++ calculated = calculate_ts_mac(fn(), self.credentials)
++ if isinstance(calculated, six.binary_type):
++ calculated = calculated.decode('ascii')
++ assert hdr['tsm'] == calculated
++ raise
+
+ def test_respond_with_bad_ts_skew_ok(self):
+ now = utc_now() - 120
+@@ -613,7 +610,6 @@ def test_respond_with_ext(self):
+ header = parse_authorization_header(self.receiver.response_header)
+ assert header['ext'] == ext
+
+- @raises(MacMismatch)
+ def test_respond_with_wrong_app(self):
+ self.receive(sender_kw=dict(app='TAMPERED-WITH', dlg='delegation'))
+ self.receiver.respond(content='', content_type='')
+@@ -621,10 +617,10 @@ def test_respond_with_wrong_app(self):
+
+ self.receive(sender_kw=dict(app='real-app', dlg='delegation'))
+
+- self.sender.accept_response(wrong_receiver.response_header,
+- content='', content_type='')
++ with self.assertRaises(MacMismatch):
++ self.sender.accept_response(wrong_receiver.response_header,
++ content='', content_type='')
+
+- @raises(MacMismatch)
+ def test_respond_with_wrong_dlg(self):
+ self.receive(sender_kw=dict(app='app', dlg='TAMPERED-WITH'))
+ self.receiver.respond(content='', content_type='')
+@@ -632,27 +628,28 @@ def test_respond_with_wrong_dlg(self):
+
+ self.receive(sender_kw=dict(app='app', dlg='real-dlg'))
+
+- self.sender.accept_response(wrong_receiver.response_header,
+- content='', content_type='')
++ with self.assertRaises(MacMismatch):
++ self.sender.accept_response(wrong_receiver.response_header,
++ content='', content_type='')
+
+- @raises(MacMismatch)
+ def test_receive_wrong_method(self):
+ self.receive(method='GET')
+ wrong_sender = self.sender
+- self.receive(method='POST', sender=wrong_sender)
++ with self.assertRaises(MacMismatch):
++ self.receive(method='POST', sender=wrong_sender)
+
+- @raises(MacMismatch)
+ def test_receive_wrong_url(self):
+ self.receive(url='http://fakesite.com/')
+ wrong_sender = self.sender
+- self.receive(url='http://realsite.com/', sender=wrong_sender)
++ with self.assertRaises(MacMismatch):
++ self.receive(url='http://realsite.com/', sender=wrong_sender)
+
+- @raises(MisComputedContentHash)
+ def test_receive_wrong_content(self):
+ self.receive(sender_kw=dict(content='real request'),
+ content='real request')
+ wrong_sender = self.sender
+- self.receive(content='TAMPERED WITH', sender=wrong_sender)
++ with self.assertRaises(MisComputedContentHash):
++ self.receive(content='TAMPERED WITH', sender=wrong_sender)
+
+ def test_expected_unhashed_empty_content(self):
+ # This test sets up a scenario where the receiver will receive empty
+@@ -669,7 +666,6 @@ def test_expected_unhashed_empty_content(self):
+ content_type=EmptyValue,
+ always_hash_content=False))
+
+- @raises(MisComputedContentHash)
+ def test_expected_unhashed_empty_content_with_content_type(self):
+ # This test sets up a scenario where the receiver will receive an
+ # empty content string and no content hash in the auth header, but
+@@ -677,13 +673,13 @@ def test_expected_unhashed_empty_content_with_content_type(self):
+ # This is to confirm that the hash is calculated and compared (to the
+ # hash of mock empty payload, which should fail) when it appears that
+ # the sender has sent a 0-length payload body.
+- self.receive(content='',
+- content_type='text/plain',
+- sender_kw=dict(content=EmptyValue,
+- content_type=EmptyValue,
+- always_hash_content=False))
++ with self.assertRaises(MisComputedContentHash):
++ self.receive(content='',
++ content_type='text/plain',
++ sender_kw=dict(content=EmptyValue,
++ content_type=EmptyValue,
++ always_hash_content=False))
+
+- @raises(MisComputedContentHash)
+ def test_expected_unhashed_content_with_empty_content_type(self):
+ # This test sets up a scenario where the receiver will receive some
+ # content but the empty string for the content_type and no content hash
+@@ -691,11 +687,12 @@ def test_expected_unhashed_content_with_empty_content_type(self):
+ # This is to confirm that the hash is calculated and compared (to the
+ # hash of mock empty payload, which should fail) when the sender has
+ # sent unhashed content.
+- self.receive(content='some content',
+- content_type='',
+- sender_kw=dict(content=EmptyValue,
+- content_type=EmptyValue,
+- always_hash_content=False))
++ with self.assertRaises(MisComputedContentHash):
++ self.receive(content='some content',
++ content_type='',
++ sender_kw=dict(content=EmptyValue,
++ content_type=EmptyValue,
++ always_hash_content=False))
+
+ def test_empty_content_with_content_type(self):
+ # This test sets up a scenario where the receiver will receive an
+@@ -719,7 +716,6 @@ def test_expected_unhashed_no_content(self):
+ content_type=EmptyValue,
+ always_hash_content=False))
+
+- @raises(MisComputedContentHash)
+ def test_expected_unhashed_no_content_with_content_type(self):
+ # This test sets up a scenario where the receiver will receive None for
+ # content and no content hash in the auth header, but some value for
+@@ -729,13 +725,13 @@ def test_expected_unhashed_no_content_with_content_type(self):
+ # hash in the request to compare against. While this may not be in
+ # accordance with the js reference spec, it's the safest (ie. most
+ # secure) way of handling this bizarre set of circumstances.
+- self.receive(content=None,
+- content_type='text/plain',
+- sender_kw=dict(content=EmptyValue,
+- content_type=EmptyValue,
+- always_hash_content=False))
++ with self.assertRaises(MisComputedContentHash):
++ self.receive(content=None,
++ content_type='text/plain',
++ sender_kw=dict(content=EmptyValue,
++ content_type=EmptyValue,
++ always_hash_content=False))
+
+- @raises(MisComputedContentHash)
+ def test_expected_unhashed_content_with_no_content_type(self):
+ # This test sets up a scenario where the receiver will receive some
+ # content but no value for the content_type and no content hash in
+@@ -743,11 +739,12 @@ def test_expected_unhashed_content_with_no_content_type(self):
+ # This is to confirm that the hash is calculated and compared (to the
+ # hash of mock empty payload, which should fail) when the sender has
+ # sent unhashed content.
+- self.receive(content='some content',
+- content_type=None,
+- sender_kw=dict(content=EmptyValue,
+- content_type=EmptyValue,
+- always_hash_content=False))
++ with self.assertRaises(MisComputedContentHash):
++ self.receive(content='some content',
++ content_type=None,
++ sender_kw=dict(content=EmptyValue,
++ content_type=EmptyValue,
++ always_hash_content=False))
+
+ def test_no_content_with_content_type(self):
+ # This test sets up a scenario where the receiver will receive None for
+@@ -760,28 +757,28 @@ def test_no_content_with_content_type(self):
+ sender_kw=dict(content='',
+ content_type='text/plain'))
+
+- @raises(MissingContent)
+ def test_cannot_receive_empty_content_only(self):
+ content_type = 'text/plain'
+- self.receive(sender_kw=dict(content='<content>',
+- content_type=content_type),
+- content=EmptyValue, content_type=content_type)
++ with self.assertRaises(MissingContent):
++ self.receive(sender_kw=dict(content='<content>',
++ content_type=content_type),
++ content=EmptyValue, content_type=content_type)
+
+- @raises(MissingContent)
+ def test_cannot_receive_empty_content_type_only(self):
+ content = '<content>'
+- self.receive(sender_kw=dict(content=content,
+- content_type='text/plain'),
+- content=content, content_type=EmptyValue)
++ with self.assertRaises(MissingContent):
++ self.receive(sender_kw=dict(content=content,
++ content_type='text/plain'),
++ content=content, content_type=EmptyValue)
+
+- @raises(MisComputedContentHash)
+ def test_receive_wrong_content_type(self):
+ self.receive(sender_kw=dict(content_type='text/html'),
+ content_type='text/html')
+ wrong_sender = self.sender
+
+- self.receive(content_type='application/json',
+- sender=wrong_sender)
++ with self.assertRaises(MisComputedContentHash):
++ self.receive(content_type='application/json',
++ sender=wrong_sender)
+
+
+ class TestSendAndReceive(Base):
+@@ -879,24 +876,24 @@ def test_bewit_with_ext(self):
+ expected = '123456\\1356420707\\kscxwNR2tJpP1T1zDLNPbB5UiKIU9tOSJXTUdG7X9h8=\\xandyandz'
+ assert b64decode(bewit).decode('ascii') == expected
+
+- @raises(BadHeaderValue)
+ def test_bewit_with_invalid_ext(self):
+ res = Resource(url='https://example.com/somewhere/over/the/rainbow',
+ method='GET', credentials=self.credentials,
+ timestamp=1356420407 + 300,
+ nonce='',
+ ext='xand\\yandz')
+- get_bewit(res)
++ with self.assertRaises(BadHeaderValue):
++ get_bewit(res)
+
+- @raises(BadHeaderValue)
+ def test_bewit_with_backslashes_in_id(self):
+ credentials = self.credentials
+ credentials['id'] = '123\\456'
+- res = Resource(url='https://example.com/somewhere/over/the/rainbow',
+- method='GET', credentials=self.credentials,
+- timestamp=1356420407 + 300,
+- nonce='')
+- get_bewit(res)
++ with self.assertRaises(BadHeaderValue):
++ res = Resource(url='https://example.com/somewhere/over/the/rainbow',
++ method='GET', credentials=self.credentials,
++ timestamp=1356420407 + 300,
++ nonce='')
++ get_bewit(res)
+
+ def test_bewit_with_port(self):
+ res = Resource(url='https://example.com:8080/somewhere/over/the/rainbow',
+@@ -907,20 +904,20 @@ def test_bewit_with_port(self):
+ expected = '123456\\1356420707\\hZbJ3P2cKEo4ky0C8jkZAkRyCZueg4WSNbxV7vq3xHU=\\xandyandz'
+ assert b64decode(bewit).decode('ascii') == expected
+
+- @raises(ValueError)
+ def test_bewit_with_nonce(self):
+ res = Resource(url='https://example.com/somewhere/over/the/rainbow',
+ method='GET', credentials=self.credentials,
+ timestamp=1356420407 + 300,
+ nonce='n1')
+- get_bewit(res)
++ with self.assertRaises(ValueError):
++ get_bewit(res)
+
+- @raises(ValueError)
+ def test_bewit_invalid_method(self):
+ res = Resource(url='https://example.com:8080/somewhere/over/the/rainbow',
+ method='POST', credentials=self.credentials,
+ timestamp=1356420407 + 300, nonce='')
+- get_bewit(res)
++ with self.assertRaises(ValueError):
++ get_bewit(res)
+
+ def test_strip_bewit(self):
+ bewit = b'123456\\1356420707\\IGYmLgIqLrCe8CxvKPs4JlWIA+UjWJJouwgARiVhCAg=\\'
+@@ -931,10 +928,10 @@ def test_strip_bewit(self):
+ self.assertEqual(raw_bewit, bewit)
+ self.assertEqual(stripped_url, "https://example.com/somewhere/over/the/rainbow")
+
+- @raises(InvalidBewit)
+ def test_strip_url_without_bewit(self):
+ url = "https://example.com/somewhere/over/the/rainbow"
+- strip_bewit(url)
++ with self.assertRaises(InvalidBewit):
++ strip_bewit(url)
+
+ def test_parse_bewit(self):
+ bewit = b'123456\\1356420707\\IGYmLgIqLrCe8CxvKPs4JlWIA+UjWJJouwgARiVhCAg=\\'
+@@ -954,23 +951,23 @@ def test_parse_bewit_with_ext(self):
+ self.assertEqual(bewit.mac, 'IGYmLgIqLrCe8CxvKPs4JlWIA+UjWJJouwgARiVhCAg=')
+ self.assertEqual(bewit.ext, 'xandyandz')
+
+- @raises(InvalidBewit)
+ def test_parse_bewit_with_ext_and_backslashes(self):
+ bewit = b'123456\\1356420707\\IGYmLgIqLrCe8CxvKPs4JlWIA+UjWJJouwgARiVhCAg=\\xand\\yandz'
+ bewit = urlsafe_b64encode(bewit).decode('ascii')
+- parse_bewit(bewit)
++ with self.assertRaises(InvalidBewit):
++ parse_bewit(bewit)
+
+- @raises(InvalidBewit)
+ def test_parse_invalid_bewit_with_only_one_part(self):
+ bewit = b'12345'
+ bewit = urlsafe_b64encode(bewit).decode('ascii')
+- bewit = parse_bewit(bewit)
++ with self.assertRaises(InvalidBewit):
++ bewit = parse_bewit(bewit)
+
+- @raises(InvalidBewit)
+ def test_parse_invalid_bewit_with_only_two_parts(self):
+ bewit = b'1\\2'
+ bewit = urlsafe_b64encode(bewit).decode('ascii')
+- bewit = parse_bewit(bewit)
++ with self.assertRaises(InvalidBewit):
++ bewit = parse_bewit(bewit)
+
+ def test_validate_bewit(self):
+ bewit = b'123456\\1356420707\\IGYmLgIqLrCe8CxvKPs4JlWIA+UjWJJouwgARiVhCAg=\\'
+@@ -990,7 +987,6 @@ def test_validate_bewit_with_ext(self):
+ })
+ self.assertTrue(check_bewit(url, credential_lookup=credential_lookup, now=1356420407 + 10))
+
+- @raises(InvalidBewit)
+ def test_validate_bewit_with_ext_and_backslashes(self):
+ bewit = b'123456\\1356420707\\b82LLIxG5UDkaChLU953mC+SMrbniV1sb8KiZi9cSsc=\\xand\\yandz'
+ bewit = urlsafe_b64encode(bewit).decode('ascii')
+@@ -998,9 +994,9 @@ def test_validate_bewit_with_ext_and_backslashes(self):
+ credential_lookup = self.make_credential_lookup({
+ self.credentials['id']: self.credentials,
+ })
+- check_bewit(url, credential_lookup=credential_lookup, now=1356420407 + 10)
++ with self.assertRaises(InvalidBewit):
++ check_bewit(url, credential_lookup=credential_lookup, now=1356420407 + 10)
+
+- @raises(TokenExpired)
+ def test_validate_expired_bewit(self):
+ bewit = b'123456\\1356420707\\IGYmLgIqLrCe8CxvKPs4JlWIA+UjWJJouwgARiVhCAg=\\'
+ bewit = urlsafe_b64encode(bewit).decode('ascii')
+@@ -1008,9 +1004,9 @@ def test_validate_expired_bewit(self):
+ credential_lookup = self.make_credential_lookup({
+ self.credentials['id']: self.credentials,
+ })
+- check_bewit(url, credential_lookup=credential_lookup, now=1356420407 + 1000)
++ with self.assertRaises(TokenExpired):
++ check_bewit(url, credential_lookup=credential_lookup, now=1356420407 + 1000)
+
+- @raises(CredentialsLookupError)
+ def test_validate_bewit_with_unknown_credentials(self):
+ bewit = b'123456\\1356420707\\IGYmLgIqLrCe8CxvKPs4JlWIA+UjWJJouwgARiVhCAg=\\'
+ bewit = urlsafe_b64encode(bewit).decode('ascii')
+@@ -1018,7 +1014,8 @@ def test_validate_bewit_with_unknown_credentials(self):
+ credential_lookup = self.make_credential_lookup({
+ 'other_id': self.credentials,
+ })
+- check_bewit(url, credential_lookup=credential_lookup, now=1356420407 + 10)
++ with self.assertRaises(CredentialsLookupError):
++ check_bewit(url, credential_lookup=credential_lookup, now=1356420407 + 10)
+
+
+ class TestPayloadHash(Base):
+
+From e5ea6c8b0fad6a4b2e575c4f4ff669b9ac775fad Mon Sep 17 00:00:00 2001
+From: Pyrox <pyrox@pyrox.dev>
+Date: Fri, 2 Aug 2024 15:20:41 -0400
+Subject: [PATCH 3/4] update dependencies
+
+---
+ requirements/dev.txt | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/requirements/dev.txt b/requirements/dev.txt
+index 5636a39..4fa2e67 100644
+--- a/requirements/dev.txt
++++ b/requirements/dev.txt
+@@ -1,6 +1,6 @@
+ # For testing.
+-mock >= 3.0.5
+-nose >= 1.3.7
++mock >= 3.0.5; python_version < '3'
++pytest >=8.0.0
+
+ # For documentation.
+ docutils >= 0.15.2
+
+From 1788cdfc47273d18c0624bca9bb543f9a88a22e2 Mon Sep 17 00:00:00 2001
+From: Pyrox <pyrox@pyrox.dev>
+Date: Fri, 2 Aug 2024 15:20:47 -0400
+Subject: [PATCH 4/4] update supported python versions
+
+---
+ setup.py | 5 +++++
+ tox.ini | 4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 122bb36..53617b1 100644
+--- a/setup.py
++++ b/setup.py
+@@ -33,6 +33,11 @@
+ 'Programming Language :: Python :: 3.5',
+ 'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
++ 'Programming Language :: Python :: 3.8',
++ 'Programming Language :: Python :: 3.9',
++ 'Programming Language :: Python :: 3.10',
++ 'Programming Language :: Python :: 3.11',
++ 'Programming Language :: Python :: 3.12',
+ 'Topic :: Internet :: WWW/HTTP',
+ ],
+ packages=find_packages(exclude=['tests']),
+diff --git a/tox.ini b/tox.ini
+index 7357100..3fdeacf 100644
+--- a/tox.ini
++++ b/tox.ini
+@@ -2,7 +2,7 @@
+
+ [tox]
+ # Also see .travis.yml where this is maintained separately.
+-envlist=py27,py34,py35,py36,py37,py38,docs
++envlist=py27,py34,py35,py36,py37,py38,py39,py310,py311,py312,docs
+
+ [base]
+ deps=
+@@ -11,7 +11,7 @@ deps=
+ [testenv]
+ deps={[base]deps}
+ commands=
+- nosetests []
++ pytest mohawk/tests.py
+
+ [testenv:docs]
+ basepython=python3.7
diff --git a/gnu/packages/patches/python-mox3-python3.6-compat.patch b/gnu/packages/patches/python-mox3-python3.6-compat.patch
deleted file mode 100644
index 0426d07cf9..0000000000
--- a/gnu/packages/patches/python-mox3-python3.6-compat.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-Fix regex so that it works with Python 3.6.
-
-See <https://docs.python.org/3/library/re.html#re.LOCALE>.
-
-Copied from upstream bug report:
-https://bugs.launchpad.net/python-mox3/+bug/1665266
-
-From 05064cdb6ea7a16450c6beae2b6f7c6074212a69 Mon Sep 17 00:00:00 2001
-From: Zac Medico <zmedico@gentoo.org>
-Date: Thu, 16 Feb 2017 00:24:10 -0800
-Subject: [PATCH] RegexTest: python3.6 compatibility
-
-These fixes are backward-compatible with older python versions:
-
-* raw strings fix invalid escape sequences
-* flags=8 fixes ValueError: cannot use LOCALE flag with a str pattern
----
- mox3/tests/test_mox.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/mox3/tests/test_mox.py b/mox3/tests/test_mox.py
-index 15ac565..3a1af17 100644
---- a/mox3/tests/test_mox.py
-+++ b/mox3/tests/test_mox.py
-@@ -312,12 +312,12 @@ class RegexTest(testtools.TestCase):
- def testReprWithoutFlags(self):
- """repr should return the regular expression pattern."""
- self.assertTrue(
-- repr(mox.Regex(r"a\s+b")) == "<regular expression 'a\s+b'>")
-+ repr(mox.Regex(r"a\s+b")) == r"<regular expression 'a\s+b'>")
-
- def testReprWithFlags(self):
- """repr should return the regular expression pattern and flags."""
-- self.assertTrue(repr(mox.Regex(r"a\s+b", flags=4)) ==
-- "<regular expression 'a\s+b', flags=4>")
-+ self.assertTrue(repr(mox.Regex(r"a\s+b", flags=8)) ==
-+ r"<regular expression 'a\s+b', flags=8>")
-
-
- class IsTest(testtools.TestCase):
---
-2.10.2
-
diff --git a/gnu/packages/patches/python-norns-nose.patch b/gnu/packages/patches/python-norns-nose.patch
new file mode 100644
index 0000000000..f541c83953
--- /dev/null
+++ b/gnu/packages/patches/python-norns-nose.patch
@@ -0,0 +1,86 @@
+From acefbee3c0cefea291c4dfc8c2d4751c7bd9190c Mon Sep 17 00:00:00 2001
+From: Andrew Robbins <andrew@robbinsa.me>
+Date: Fri, 14 Mar 2025 12:58:30 -0400
+Subject: [PATCH 1/3] use modern importlib.resources
+
+---
+ norns/cfg.py | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/norns/cfg.py b/norns/cfg.py
+index 5868f56..c2170d9 100644
+--- a/norns/cfg.py
++++ b/norns/cfg.py
+@@ -5,7 +5,7 @@
+ from UserDict import DictMixin
+ except ImportError:
+ from collections.abc import MutableMapping as DictMixin
+-import pkg_resources
++import importlib.resources
+
+ from norns.exceptions import ConfigError
+
+@@ -49,8 +49,9 @@ def __init__(self, name=None, config_file=None, default=None):
+
+ if default and (not self.config_file or
+ not os.path.exists(self.config_file)):
+- self.config_file = pkg_resources.resource_filename(name, default)
+-
++ self.config_file = importlib.resources.files(name) / default
++ #self.config_file = importlib.resources.as_file(config_traversable)
++
+ if not self.config_file or not os.path.exists(self.config_file):
+ raise ConfigError("please provide name or config_file")
+
+
+From 332464e266536144d33e02ccb7c65d1078fd68db Mon Sep 17 00:00:00 2001
+From: Andrew Robbins <andrew@robbinsa.me>
+Date: Fri, 14 Mar 2025 12:58:43 -0400
+Subject: [PATCH 2/3] bump version
+
+---
+ norns/__about__.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/norns/__about__.py b/norns/__about__.py
+index 06ea00e..7de2db7 100644
+--- a/norns/__about__.py
++++ b/norns/__about__.py
+@@ -1,3 +1,3 @@
+ """Metadata"""
+-__version__ = '0.1.4'
++__version__ = '0.1.6'
+ __author__ = "Simon van Heeringen"
+
+From 0caea8432132fc002761b53b05652514e5359e3f Mon Sep 17 00:00:00 2001
+From: Andrew Robbins <andrew@robbinsa.me>
+Date: Fri, 14 Mar 2025 14:58:50 -0400
+Subject: [PATCH 3/3] use pynose as nose is not maintained
+
+---
+ requirements.txt | 2 +-
+ setup.py | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/requirements.txt b/requirements.txt
+index 992ab2a..d3920be 100644
+--- a/requirements.txt
++++ b/requirements.txt
+@@ -1,3 +1,3 @@
+-nose
++pynose
+ appdirs
+ pyyaml>=5.1
+diff --git a/setup.py b/setup.py
+index d9f5aec..0c68475 100644
+--- a/setup.py
++++ b/setup.py
+@@ -28,7 +28,7 @@
+ }
+
+ requires = [
+- 'nose',
++ 'pynose',
+ 'appdirs',
+ 'pyyaml',
+ ]
diff --git a/gnu/packages/patches/python-pyfakefs-remove-bad-test.patch b/gnu/packages/patches/python-pyfakefs-remove-bad-test.patch
deleted file mode 100644
index a9488bbe43..0000000000
--- a/gnu/packages/patches/python-pyfakefs-remove-bad-test.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-This test incorrectly assumes that the root user is always available.
-However, in the build environment, the root user is not available.
-Note that because the original file distributed in the release on PyPi
-has lines ending in CRLF, those are retained in the diff below.
-
---- a/pyfakefs/tests/fake_filesystem_test.py 1969-12-31 16:00:00.000000000 -0800
-+++ b/pyfakefs/tests/fake_filesystem_test.py 1969-12-31 16:00:00.000000000 -0800
-@@ -1021,15 +1021,6 @@
- self.assertEqual(self.path.expanduser('~'),
- self.os.environ['HOME'].replace('/', '!'))
-
-- @unittest.skipIf(TestCase.is_windows or TestCase.is_cygwin,
-- 'only tested on unix systems')
-- def test_expand_root(self):
-- if sys.platform == 'darwin':
-- roothome = '!var!root'
-- else:
-- roothome = '!root'
-- self.assertEqual(self.path.expanduser('~root'), roothome)
--
- def test_getsize_path_nonexistent(self):
- file_path = 'foo!bar!baz'
- self.assertRaises(os.error, self.path.getsize, file_path)
diff --git a/gnu/packages/patches/python-pytorch-fix-codegen.patch b/gnu/packages/patches/python-pytorch-fix-codegen.patch
index 3862339b14..90fefcb82e 100644
--- a/gnu/packages/patches/python-pytorch-fix-codegen.patch
+++ b/gnu/packages/patches/python-pytorch-fix-codegen.patch
@@ -107,7 +107,7 @@ index 845034cb7..a1c5767c2 100644
from torchgen.code_template import CodeTemplate
from torchgen.operator_versions.gen_mobile_upgraders_constant import (
MOBILE_UPGRADERS_HEADER_DESCRIPTION,
-@@ -263,7 +266,10 @@ def construct_register_size(register_size_from_yaml: int) -> str:
+@@ -260,7 +263,10 @@ def construct_register_size(register_size_from_yaml: int) -> str:
def construct_version_maps(
upgrader_bytecode_function_to_index_map: dict[str, Any],
) -> str:
@@ -119,7 +119,7 @@ index 845034cb7..a1c5767c2 100644
sorted_version_map_ = sorted(version_map.items(), key=itemgetter(0)) # type: ignore[no-any-return]
sorted_version_map = dict(sorted_version_map_)
-@@ -375,7 +381,10 @@ def sort_upgrader(upgrader_list: list[dict[str, Any]]) -> list[dict[str, Any]]:
+@@ -372,7 +378,10 @@ def sort_upgrader(upgrader_list: list[dict[str, Any]]) -> list[dict[str, Any]]:
def main() -> None:
diff --git a/gnu/packages/patches/python-pytorch-system-libraries.patch b/gnu/packages/patches/python-pytorch-system-libraries.patch
index 6d8da60e41..eb264e8b2a 100644
--- a/gnu/packages/patches/python-pytorch-system-libraries.patch
+++ b/gnu/packages/patches/python-pytorch-system-libraries.patch
@@ -3,12 +3,11 @@ libraries not supported or working only by specifying USE_SYSTEM_LIBS. This
includes using the clog, cpuinfo, fbgemm, foxi, fp16, fxdiv, googletest,
httlib, ideep, miniz, nnpack, oneapi-dnnl, pocketfft, pthreadpool,
qnnpack-pytorch, tensorpipe, valgrind and xnnpack packages.
-
-diff --git a/aten/src/ATen/CMakeLists.txt b/aten/src/ATen/CMakeLists.txt
-index 085af373e..3287429b4 100644
---- a/aten/src/ATen/CMakeLists.txt
-+++ b/aten/src/ATen/CMakeLists.txt
-@@ -468,9 +468,9 @@ if(AT_NNPACK_ENABLED)
+diff --git i/aten/src/ATen/CMakeLists.txt w/aten/src/ATen/CMakeLists.txt
+index c9cfd74b501..590c5d61d17 100644
+--- i/aten/src/ATen/CMakeLists.txt
++++ w/aten/src/ATen/CMakeLists.txt
+@@ -506,9 +506,9 @@ if(AT_NNPACK_ENABLED)
list(APPEND ATen_CPU_DEPENDENCY_LIBS nnpack) # cpuinfo is added below
endif()
@@ -21,10 +20,10 @@ index 085af373e..3287429b4 100644
if(USE_MKLDNN_ACL)
list(APPEND ATen_CPU_INCLUDE ${ACL_INCLUDE_DIRS})
-diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
-index d2d23b7ab..1a7e5a042 100644
---- a/caffe2/CMakeLists.txt
-+++ b/caffe2/CMakeLists.txt
+diff --git i/caffe2/CMakeLists.txt w/caffe2/CMakeLists.txt
+index d1ce24e37fe..43e60deba86 100644
+--- i/caffe2/CMakeLists.txt
++++ w/caffe2/CMakeLists.txt
@@ -91,9 +91,6 @@ if(NOT MSVC AND USE_XNNPACK)
if(NOT TARGET fxdiv)
set(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
@@ -35,7 +34,7 @@ index d2d23b7ab..1a7e5a042 100644
endif()
endif()
-@@ -1135,7 +1132,6 @@ if(USE_XPU)
+@@ -1195,7 +1192,6 @@ if(USE_XPU)
endif()
if(NOT MSVC AND USE_XNNPACK)
@@ -43,7 +42,7 @@ index d2d23b7ab..1a7e5a042 100644
endif()
# ==========================================================
-@@ -1254,8 +1250,8 @@ endif()
+@@ -1315,8 +1311,8 @@ endif()
target_include_directories(torch_cpu PRIVATE
${TORCH_ROOT}/third_party/cpp-httplib)
@@ -52,9 +51,9 @@ index d2d23b7ab..1a7e5a042 100644
+find_package(httplib REQUIRED)
+target_link_libraries(torch_cpu PUBLIC httplib::httplib)
- install(DIRECTORY "${TORCH_SRC_DIR}/csrc"
- DESTINATION ${TORCH_INSTALL_INCLUDE_DIR}/torch
-@@ -1494,6 +1490,7 @@ target_link_libraries(torch_cpu PUBLIC c10)
+ install(DIRECTORY
+ "${TORCH_SRC_DIR}/csrc"
+@@ -1542,6 +1538,7 @@ target_link_libraries(torch_cpu PUBLIC c10)
target_link_libraries(torch_cpu PUBLIC ${Caffe2_PUBLIC_DEPENDENCY_LIBS})
target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_LIBS})
target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_WHOLE_LINK_LIBS})
@@ -62,16 +61,7 @@ index d2d23b7ab..1a7e5a042 100644
if(USE_MPI)
target_link_libraries(torch_cpu PRIVATE MPI::MPI_CXX)
endif()
-@@ -1728,7 +1725,7 @@ if(BUILD_STATIC_RUNTIME_BENCHMARK)
- add_executable(static_runtime_bench "${STATIC_RUNTIME_BENCHMARK_SRCS}")
- add_executable(static_runtime_test "${STATIC_RUNTIME_TEST_SRCS}")
- target_link_libraries(static_runtime_bench torch_library benchmark)
-- target_link_libraries(static_runtime_test torch_library gtest_main)
-+ target_link_libraries(static_runtime_test torch_library gtest_main gtest)
- endif()
-
- if(BUILD_MOBILE_BENCHMARK)
-@@ -1747,7 +1744,7 @@ if(BUILD_MOBILE_TEST)
+@@ -1793,7 +1790,7 @@ if(BUILD_MOBILE_TEST)
foreach(test_src ${ATen_MOBILE_TEST_SRCS})
get_filename_component(test_name ${test_src} NAME_WE)
add_executable(${test_name} "${test_src}")
@@ -80,7 +70,7 @@ index d2d23b7ab..1a7e5a042 100644
target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
target_include_directories(${test_name} PRIVATE ${ATen_CPU_INCLUDE})
-@@ -1768,7 +1765,7 @@ if(BUILD_TEST)
+@@ -1814,7 +1811,7 @@ if(BUILD_TEST)
if(NOT MSVC)
add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/AffineQuantizerBase.cpp)
# TODO: Get rid of c10 dependency (which is only needed for the implementation of AT_ERROR)
@@ -89,7 +79,7 @@ index d2d23b7ab..1a7e5a042 100644
if(USE_FBGEMM)
target_link_libraries(${test_name}_${CPU_CAPABILITY} fbgemm)
endif()
-@@ -1782,7 +1779,7 @@ if(BUILD_TEST)
+@@ -1828,7 +1825,7 @@ if(BUILD_TEST)
endif()
else()
add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}")
@@ -98,16 +88,7 @@ index d2d23b7ab..1a7e5a042 100644
endif()
target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<INSTALL_INTERFACE:include>)
target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-@@ -1799,7 +1796,7 @@ if(BUILD_TEST)
- foreach(test_src ${Caffe2_CPU_TEST_SRCS})
- get_filename_component(test_name ${test_src} NAME_WE)
- add_executable(${test_name} "${test_src}")
-- target_link_libraries(${test_name} torch_library gtest_main)
-+ target_link_libraries(${test_name} torch_library gtest_main gtest)
- if(NOT MSVC)
- target_link_libraries(${test_name} stdc++)
- endif()
-@@ -1823,7 +1820,7 @@ if(BUILD_TEST)
+@@ -1869,7 +1866,7 @@ if(BUILD_TEST)
add_executable(${test_name} "${test_src}")
find_library(metal NAMES Metal)
find_library(foundation NAMES Foundation)
@@ -116,7 +97,7 @@ index d2d23b7ab..1a7e5a042 100644
target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-@@ -1843,7 +1840,7 @@ if(BUILD_TEST)
+@@ -1889,7 +1886,7 @@ if(BUILD_TEST)
foreach(test_src ${Caffe2_GPU_TEST_SRCS})
get_filename_component(test_name ${test_src} NAME_WE)
add_executable(${test_name} "${test_src}")
@@ -125,7 +106,7 @@ index d2d23b7ab..1a7e5a042 100644
if(USE_CUDNN AND ${test_name} MATCHES "cudnn")
target_link_libraries(${test_name} torch::cudnn)
endif()
-@@ -1865,7 +1862,7 @@ if(BUILD_TEST)
+@@ -1911,7 +1908,7 @@ if(BUILD_TEST)
foreach(test_src ${Caffe2_XPU_TEST_SRCS})
get_filename_component(test_name ${test_src} NAME_WE)
add_executable(${test_name} "${test_src}")
@@ -134,7 +115,7 @@ index d2d23b7ab..1a7e5a042 100644
target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1880,7 +1877,7 @@ if(BUILD_TEST)
+@@ -1926,7 +1923,7 @@ if(BUILD_TEST)
foreach(test_src ${Caffe2_VULKAN_TEST_SRCS})
get_filename_component(test_name ${test_src} NAME_WE)
add_executable(${test_name} "${test_src}")
@@ -143,19 +124,19 @@ index d2d23b7ab..1a7e5a042 100644
target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1899,7 +1896,7 @@ if(BUILD_TEST)
- foreach(test_src ${Caffe2_HIP_TEST_SRCS})
- get_filename_component(test_name ${test_src} NAME_WE)
- add_executable(${test_name} "${test_src}")
+@@ -1958,7 +1955,7 @@ if(BUILD_TEST)
+ if(test_src MATCHES "^.*\.hip$")
+ set_target_properties(${test_name} PROPERTIES LINKER_LANGUAGE CXX)
+ endif()
- target_link_libraries(${test_name} torch_library gtest_main)
+ target_link_libraries(${test_name} torch_library gtest_main gtest)
target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE} ${Caffe2_HIP_INCLUDE})
target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS})
-diff --git a/caffe2/serialize/CMakeLists.txt b/caffe2/serialize/CMakeLists.txt
-index ebbff0f29..dcded2590 100644
---- a/caffe2/serialize/CMakeLists.txt
-+++ b/caffe2/serialize/CMakeLists.txt
+diff --git i/caffe2/serialize/CMakeLists.txt w/caffe2/serialize/CMakeLists.txt
+index ebbff0f292a..dcded25908e 100644
+--- i/caffe2/serialize/CMakeLists.txt
++++ w/caffe2/serialize/CMakeLists.txt
@@ -2,7 +2,6 @@ file(GLOB tmp *_test.cc)
set(Caffe2_CPU_TEST_SRCS ${Caffe2_CPU_TEST_SRCS} ${tmp})
@@ -164,10 +145,10 @@ index ebbff0f29..dcded2590 100644
${CMAKE_CURRENT_SOURCE_DIR}/inline_container.cc
${CMAKE_CURRENT_SOURCE_DIR}/istream_adapter.cc
${CMAKE_CURRENT_SOURCE_DIR}/file_adapter.cc
-diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index be45936a8..bb1aa1cc1 100644
---- a/cmake/Dependencies.cmake
-+++ b/cmake/Dependencies.cmake
+diff --git i/cmake/Dependencies.cmake w/cmake/Dependencies.cmake
+index a93386c27f8..43a058b23f9 100644
+--- i/cmake/Dependencies.cmake
++++ w/cmake/Dependencies.cmake
@@ -276,7 +276,7 @@ endif()
# --- [ PocketFFT
set(AT_POCKETFFT_ENABLED 0)
@@ -176,7 +157,7 @@ index be45936a8..bb1aa1cc1 100644
+ set(POCKETFFT_INCLUDE_DIR "#POCKETFFT_INCLUDE_DIR")
if(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}")
message(FATAL_ERROR "pocketfft directory not found, expected ${POCKETFFT_INCLUDE_DIR}")
- elif(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}/pocketfft_hdronly.h")
+ elseif(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}/pocketfft_hdronly.h")
@@ -460,15 +460,6 @@ if(USE_PYTORCH_QNNPACK)
set(PYTORCH_QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
set(PYTORCH_QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
@@ -214,19 +195,17 @@ index be45936a8..bb1aa1cc1 100644
endif()
# ---[ Vulkan deps
-@@ -650,11 +640,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
- # this shouldn't be necessary anymore.
- get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
- set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
+@@ -621,9 +611,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
+ set(INSTALL_GTEST OFF CACHE BOOL "Install gtest." FORCE)
+ set(BUILD_GMOCK ON CACHE BOOL "Build gmock." FORCE)
+
- add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest)
-- set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES ${INC_DIR_temp})
--
- include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googletest/include)
- include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googlemock/include)
# We will not need to test benchmark lib itself.
set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
-@@ -732,16 +717,6 @@ if(USE_FBGEMM)
+@@ -676,30 +663,14 @@ if(USE_FBGEMM)
if(USE_ASAN)
set(USE_SANITIZER "address,undefined" CACHE STRING "-fsanitize options for FBGEMM")
endif()
@@ -235,6 +214,13 @@ index be45936a8..bb1aa1cc1 100644
- set_property(TARGET fbgemm_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON)
- set_property(TARGET fbgemm_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON)
- set_property(TARGET fbgemm PROPERTY POSITION_INDEPENDENT_CODE ON)
+-
+- # Disabling autovec in fbgemm due to large library size causing symbol relocation issues, which is only allowed in static builds.
+- # Long-term solution involves modularizing fbgemm targets.
+- target_compile_definitions(fbgemm_generic PUBLIC DISABLE_FBGEMM_AUTOVEC)
+- target_compile_definitions(fbgemm_avx2 PUBLIC DISABLE_FBGEMM_AUTOVEC)
+- target_compile_definitions(fbgemm_avx512 PUBLIC DISABLE_FBGEMM_AUTOVEC)
+-
- if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0.0)
- # See https://github.com/pytorch/pytorch/issues/74352
- target_compile_options_if_supported(asmjit -Wno-deprecated-copy)
@@ -243,7 +229,16 @@ index be45936a8..bb1aa1cc1 100644
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
target_compile_options_if_supported(asmjit -Wno-extra-semi)
target_compile_options_if_supported(fbgemm -Wno-extra-semi)
-@@ -829,7 +804,7 @@ if(NOT TARGET fp16 AND NOT USE_SYSTEM_FP16)
+ endif()
+ endif()
+ if(USE_FBGEMM)
+- target_compile_definitions(fbgemm PUBLIC DISABLE_FBGEMM_AUTOVEC)
++ # Don't set compile definitions on system fbgemm
++ # target_compile_definitions(fbgemm PUBLIC DISABLE_FBGEMM_AUTOVEC)
+ list(APPEND Caffe2_DEPENDENCY_LIBS fbgemm)
+ endif()
+ endif()
+@@ -773,7 +744,7 @@ if(NOT TARGET fp16 AND NOT USE_SYSTEM_FP16)
"${CONFU_DEPENDENCIES_BINARY_DIR}/FP16")
endif()
elseif(NOT TARGET fp16 AND USE_SYSTEM_FP16)
@@ -252,15 +247,15 @@ index be45936a8..bb1aa1cc1 100644
set_target_properties(fp16 PROPERTIES LINKER_LANGUAGE C)
endif()
list(APPEND Caffe2_DEPENDENCY_LIBS fp16)
-@@ -1170,7 +1145,6 @@ if(USE_DISTRIBUTED AND USE_TENSORPIPE)
+@@ -1156,7 +1127,6 @@ if(USE_DISTRIBUTED AND USE_TENSORPIPE)
message(WARNING "Archived TensorPipe forces CMake compatibility mode")
set(CMAKE_POLICY_VERSION_MINIMUM 3.5)
endif()
- add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/tensorpipe)
- if(CMAKE_VERSION VERSION_GREATER_EQUAL "4.0.0")
- unset(CMAKE_POLICY_VERSION_MINIMUM)
- endif()
-@@ -1340,7 +1314,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+ # Suppress warning to unblock libnop compilation by clang-17
+ # See https://github.com/pytorch/pytorch/issues/151316
+ target_compile_options_if_supported(tensorpipe -Wno-missing-template-arg-list-after-template-kw)
+@@ -1331,7 +1301,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
endif()
set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
@@ -269,7 +264,7 @@ index be45936a8..bb1aa1cc1 100644
endif()
# Recover the build shared libs option.
set(BUILD_SHARED_LIBS ${TEMP_BUILD_SHARED_LIBS})
-@@ -1500,9 +1474,8 @@ if(NOT INTERN_BUILD_MOBILE)
+@@ -1491,9 +1461,8 @@ if(NOT INTERN_BUILD_MOBILE)
endif()
if(USE_MKLDNN)
include(${CMAKE_CURRENT_LIST_DIR}/public/mkldnn.cmake)
@@ -280,7 +275,7 @@ index be45936a8..bb1aa1cc1 100644
else()
message(WARNING "MKLDNN could not be found.")
caffe2_update_option(USE_MKLDNN OFF)
-@@ -1583,7 +1556,7 @@ endif()
+@@ -1557,7 +1526,7 @@ endif()
#
set(TEMP_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libs" FORCE)
@@ -289,7 +284,7 @@ index be45936a8..bb1aa1cc1 100644
# Disable compiler feature checks for `fmt`.
#
-@@ -1592,7 +1565,6 @@ add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
+@@ -1566,7 +1535,6 @@ add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
# CMAKE_CXX_FLAGS in ways that break feature checks. Since we already know
# `fmt` is compatible with a superset of the compilers that PyTorch is, it
# shouldn't be too bad to just disable the checks.
@@ -297,10 +292,17 @@ index be45936a8..bb1aa1cc1 100644
list(APPEND Caffe2_DEPENDENCY_LIBS fmt::fmt-header-only)
set(BUILD_SHARED_LIBS ${TEMP_BUILD_SHARED_LIBS} CACHE BOOL "Build shared libs" FORCE)
-diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
-index 8a4a310d6..f413d2e61 100644
---- a/cmake/External/nnpack.cmake
-+++ b/cmake/External/nnpack.cmake
+@@ -1732,4 +1700,5 @@ include_directories(nlohmann SYSTEM INTERFACE ${PROJECT_SOURCE_DIR}/third_party/
+
+ # Include moodycamel
+ add_library(moodycamel INTERFACE IMPORTED)
+-include_directories(moodycamel SYSTEM INTERFACE ${PROJECT_SOURCE_DIR}/third_party/concurrentqueue)
++# Use system concurrentqueue - it's a header-only library
++include_directories(SYSTEM #CONCURRENTQUEUE_INCLUDE_DIR)
+diff --git i/cmake/External/nnpack.cmake w/cmake/External/nnpack.cmake
+index 8a4a310d629..f413d2e6181 100644
+--- i/cmake/External/nnpack.cmake
++++ w/cmake/External/nnpack.cmake
@@ -40,7 +40,7 @@ endif()
# (3) Android, iOS, Linux, macOS - supported
##############################################################################
@@ -319,10 +321,10 @@ index 8a4a310d6..f413d2e61 100644
-set(USE_NNPACK OFF)
+set(NNPACK_FOUND TRUE)
+set(USE_NNPACK ON)
-diff --git a/cmake/public/mkldnn.cmake b/cmake/public/mkldnn.cmake
-index 87935625f..9f8fa3df8 100644
---- a/cmake/public/mkldnn.cmake
-+++ b/cmake/public/mkldnn.cmake
+diff --git i/cmake/public/mkldnn.cmake w/cmake/public/mkldnn.cmake
+index 87935625f9b..9f8fa3df81f 100644
+--- i/cmake/public/mkldnn.cmake
++++ w/cmake/public/mkldnn.cmake
@@ -4,7 +4,7 @@ if(CPU_AARCH64)
include(${CMAKE_CURRENT_LIST_DIR}/ComputeLibrary.cmake)
endif()
@@ -338,11 +340,11 @@ index 87935625f..9f8fa3df8 100644
TARGET caffe2::mkldnn PROPERTY INTERFACE_LINK_LIBRARIES
- ${MKLDNN_LIBRARIES})
+ DNNL::dnnl)
-diff --git a/setup.py b/setup.py
-index 61ee9363f..3691cc35c 100644
---- a/setup.py
-+++ b/setup.py
-@@ -508,13 +508,9 @@ def build_deps():
+diff --git i/setup.py w/setup.py
+index b4ebc92f592..c3a9c4ab441 100644
+--- i/setup.py
++++ w/setup.py
+@@ -556,13 +556,9 @@ def build_deps():
# Windows has very poor support for them.
sym_files = [
"tools/shared/_utils_internal.py",
@@ -356,11 +358,50 @@ index 61ee9363f..3691cc35c 100644
]
for sym_file, orig_file in zip(sym_files, orig_files):
same = False
-diff --git a/test/cpp/c10d/CMakeLists.txt b/test/cpp/c10d/CMakeLists.txt
-index 5b423241d..e069accd6 100644
---- a/test/cpp/c10d/CMakeLists.txt
-+++ b/test/cpp/c10d/CMakeLists.txt
-@@ -26,17 +26,17 @@ function(c10d_add_test test_src)
+diff --git i/test/cpp/aoti_abi_check/CMakeLists.txt w/test/cpp/aoti_abi_check/CMakeLists.txt
+index b317e040015..a42fd79da5a 100644
+--- i/test/cpp/aoti_abi_check/CMakeLists.txt
++++ w/test/cpp/aoti_abi_check/CMakeLists.txt
+@@ -20,7 +20,7 @@ target_compile_definitions(test_aoti_abi_check PRIVATE USE_GTEST)
+
+ # WARNING: DO NOT LINK torch!!!
+ # The purpose is to check if the used aten/c10 headers are writtern in a header-only way
+-target_link_libraries(test_aoti_abi_check PRIVATE gtest_main)
++target_link_libraries(test_aoti_abi_check PRIVATE gtest_main gtest)
+ target_include_directories(test_aoti_abi_check PRIVATE ${ATen_CPU_INCLUDE})
+
+ if(INSTALL_TEST)
+diff --git i/test/cpp/aoti_inference/CMakeLists.txt w/test/cpp/aoti_inference/CMakeLists.txt
+index 5ac32ef3b91..a5dc1547899 100644
+--- i/test/cpp/aoti_inference/CMakeLists.txt
++++ w/test/cpp/aoti_inference/CMakeLists.txt
+@@ -55,7 +55,7 @@ add_custom_command(
+
+ target_link_libraries(test_aoti_inference PRIVATE
+ torch
+- gtest_main
++ gtest_main gtest
+ -Wl,--no-as-needed aoti_custom_class
+ )
+
+diff --git i/test/cpp/api/CMakeLists.txt w/test/cpp/api/CMakeLists.txt
+index 8261aae3b56..b8ec6782301 100644
+--- i/test/cpp/api/CMakeLists.txt
++++ w/test/cpp/api/CMakeLists.txt
+@@ -50,7 +50,7 @@ endif()
+
+ add_executable(test_api ${TORCH_API_TEST_SOURCES})
+ target_include_directories(test_api PRIVATE ${ATen_CPU_INCLUDE})
+-target_link_libraries(test_api PRIVATE torch gtest_main gmock)
++target_link_libraries(test_api PRIVATE torch gtest_main gtest gmock)
+
+ if(USE_CUDA)
+ target_compile_definitions(test_api PRIVATE "USE_CUDA")
+diff --git i/test/cpp/c10d/CMakeLists.txt w/test/cpp/c10d/CMakeLists.txt
+index 285a5dd2a73..51e76302265 100644
+--- i/test/cpp/c10d/CMakeLists.txt
++++ w/test/cpp/c10d/CMakeLists.txt
+@@ -32,17 +32,17 @@ function(c10d_add_test test_src)
endif()
endfunction()
@@ -384,7 +425,7 @@ index 5b423241d..e069accd6 100644
endif()
if(USE_NCCL AND USE_C10D_NCCL)
# NCCL is a private dependency of libtorch, but the tests include some
-@@ -45,10 +45,10 @@ if(USE_CUDA)
+@@ -51,10 +51,10 @@ if(USE_CUDA)
# a private dependency of the tests as well.
c10d_add_test(
ProcessGroupNCCLTest.cpp
@@ -397,7 +438,7 @@ index 5b423241d..e069accd6 100644
if(INSTALL_TEST)
install(TARGETS c10d_cuda_test DESTINATION lib)
endif()
-@@ -60,14 +60,14 @@ if(USE_CUDA)
+@@ -66,14 +66,14 @@ if(USE_CUDA)
# a private dependency of the tests as well.
c10d_add_test(
ProcessGroupUCCTest.cpp
@@ -414,10 +455,97 @@ index 5b423241d..e069accd6 100644
endif()
endif()
-diff --git a/test/cpp/tensorexpr/CMakeLists.txt b/test/cpp/tensorexpr/CMakeLists.txt
-index 9c409e078..6cddd8de4 100644
---- a/test/cpp/tensorexpr/CMakeLists.txt
-+++ b/test/cpp/tensorexpr/CMakeLists.txt
+diff --git i/test/cpp/dist_autograd/CMakeLists.txt w/test/cpp/dist_autograd/CMakeLists.txt
+index 14fd7f7ae9a..9564d1270cb 100644
+--- i/test/cpp/dist_autograd/CMakeLists.txt
++++ w/test/cpp/dist_autograd/CMakeLists.txt
+@@ -7,7 +7,7 @@ if(USE_DISTRIBUTED AND NOT WIN32)
+
+ add_executable(test_dist_autograd ${DIST_AUTOGRAD_TEST_SOURCES})
+ target_include_directories(test_dist_autograd PRIVATE ${ATen_CPU_INCLUDE})
+- target_link_libraries(test_dist_autograd PRIVATE torch gtest_main)
++ target_link_libraries(test_dist_autograd PRIVATE torch gtest_main gtest)
+
+ if(USE_CUDA)
+ target_compile_definitions(test_dist_autograd PRIVATE "USE_CUDA")
+diff --git i/test/cpp/jit/CMakeLists.txt w/test/cpp/jit/CMakeLists.txt
+index d192d8a6c5d..2cdb54b9966 100644
+--- i/test/cpp/jit/CMakeLists.txt
++++ w/test/cpp/jit/CMakeLists.txt
+@@ -125,7 +125,7 @@ if(USE_MKLDNN)
+ target_link_libraries(test_jit PRIVATE caffe2::mkldnn)
+ endif()
+
+-set(JIT_TEST_DEPENDENCIES torch gtest_main jitbackend_test backend_with_compiler gmock)
++set(JIT_TEST_DEPENDENCIES torch gtest_main gtest jitbackend_test backend_with_compiler gmock)
+
+ if(MSVC)
+ list(APPEND JIT_TEST_DEPENDENCIES onnx_library)
+diff --git i/test/cpp/lazy/CMakeLists.txt w/test/cpp/lazy/CMakeLists.txt
+index 8bcd7ade611..131d0ae464c 100644
+--- i/test/cpp/lazy/CMakeLists.txt
++++ w/test/cpp/lazy/CMakeLists.txt
+@@ -28,7 +28,7 @@ add_executable(test_lazy
+ # TODO temporary until we can delete the old gtest polyfills.
+ target_compile_definitions(test_lazy PRIVATE USE_GTEST)
+
+-set(LAZY_TEST_DEPENDENCIES torch gtest_main)
++set(LAZY_TEST_DEPENDENCIES torch gtest_main gtest)
+
+ target_link_libraries(test_lazy PRIVATE ${LAZY_TEST_DEPENDENCIES})
+ target_include_directories(test_lazy PRIVATE ${ATen_CPU_INCLUDE})
+diff --git i/test/cpp/lite_interpreter_runtime/CMakeLists.txt w/test/cpp/lite_interpreter_runtime/CMakeLists.txt
+index 5c27dd84f7c..27f7afdaeb4 100644
+--- i/test/cpp/lite_interpreter_runtime/CMakeLists.txt
++++ w/test/cpp/lite_interpreter_runtime/CMakeLists.txt
+@@ -21,7 +21,7 @@ target_include_directories(
+ ${ATen_CPU_INCLUDE}
+ )
+
+-target_link_libraries(test_lite_interpreter_runtime PRIVATE torch gtest_main backend_with_compiler_runtime)
++target_link_libraries(test_lite_interpreter_runtime PRIVATE torch gtest_main gtest backend_with_compiler_runtime)
+
+ if(LINUX)
+ target_link_libraries(test_lite_interpreter_runtime PRIVATE "-Wl,--no-as-needed,$<TARGET_FILE:backend_with_compiler_runtime>,--as-needed")
+diff --git i/test/cpp/nativert/CMakeLists.txt w/test/cpp/nativert/CMakeLists.txt
+index 9f2ad858dfd..d264ed69216 100644
+--- i/test/cpp/nativert/CMakeLists.txt
++++ w/test/cpp/nativert/CMakeLists.txt
+@@ -30,7 +30,7 @@ add_executable(test_nativert
+ # TODO temporary until we can delete the old gtest polyfills.
+ target_compile_definitions(test_nativert PRIVATE USE_GTEST)
+
+-set(NATIVERT_TEST_DEPENDENCIES torch gtest_main)
++set(NATIVERT_TEST_DEPENDENCIES torch gtest_main gtest)
+
+ target_link_libraries(test_nativert PRIVATE ${NATIVERT_TEST_DEPENDENCIES})
+ target_link_libraries(test_nativert PRIVATE fmt::fmt-header-only)
+diff --git i/test/cpp/rpc/CMakeLists.txt w/test/cpp/rpc/CMakeLists.txt
+index 454c54a0187..301319bbe71 100644
+--- i/test/cpp/rpc/CMakeLists.txt
++++ w/test/cpp/rpc/CMakeLists.txt
+@@ -5,7 +5,7 @@ set(TORCH_RPC_TEST_SOURCES
+ ${TORCH_RPC_TEST_DIR}/test_wire_serialization.cpp
+ )
+ set(TORCH_RPC_TEST_DEPENDENCY_LIBS
+- torch gtest_main
++ torch gtest_main gtest
+ )
+
+ if(USE_GLOO)
+diff --git i/test/cpp/tensorexpr/CMakeLists.txt w/test/cpp/tensorexpr/CMakeLists.txt
+index 8fe6ffd525e..9650eee29e6 100644
+--- i/test/cpp/tensorexpr/CMakeLists.txt
++++ w/test/cpp/tensorexpr/CMakeLists.txt
+@@ -39,7 +39,7 @@ add_executable(test_tensorexpr
+ ${TENSOREXPR_TEST_ROOT}/padded_buffer.cpp
+ ${TENSOREXPR_TEST_SRCS})
+
+-target_link_libraries(test_tensorexpr PRIVATE torch gtest_main)
++target_link_libraries(test_tensorexpr PRIVATE torch gtest_main gtest)
+ target_include_directories(test_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
+ target_compile_definitions(test_tensorexpr PRIVATE USE_GTEST)
+
@@ -51,7 +51,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
# pthreadpool header. For some build environment we need add the dependency
# explicitly.
@@ -427,16 +555,54 @@ index 9c409e078..6cddd8de4 100644
endif()
if(USE_CUDA)
target_compile_definitions(test_tensorexpr PRIVATE USE_CUDA)
-diff --git a/torch/CMakeLists.txt b/torch/CMakeLists.txt
-index 8b8ebdc6e..034b5e56c 100644
---- a/torch/CMakeLists.txt
-+++ b/torch/CMakeLists.txt
-@@ -82,8 +82,6 @@ set(TORCH_PYTHON_LINK_LIBRARIES
+diff --git i/test/inductor/cpp/CMakeLists.txt w/test/inductor/cpp/CMakeLists.txt
+index 78a1ad8c2fd..e350270bf40 100644
+--- i/test/inductor/cpp/CMakeLists.txt
++++ w/test/inductor/cpp/CMakeLists.txt
+@@ -43,5 +43,5 @@ FetchContent_MakeAvailable(googletest)
+ # TODO(voz): This is a little assumptive of just this one test, rewrite with real dir includes
+ include_directories(${ATEN_INCLUDE})
+ add_executable(test_cpp_prefix test_cpp_prefix.cpp ../../torchinductor/codegen/cpp_prefix.h)
+-target_link_libraries(test_cpp_prefix gtest_main)
++target_link_libraries(test_cpp_prefix gtest_main gtest)
+ add_test(NAME test_cpp_prefix COMMAND test_cpp_prefix)
+diff --git i/test/mobile/lightweight_dispatch/CMakeLists.txt w/test/mobile/lightweight_dispatch/CMakeLists.txt
+index 2064cea0d58..4090578fd6c 100644
+--- i/test/mobile/lightweight_dispatch/CMakeLists.txt
++++ w/test/mobile/lightweight_dispatch/CMakeLists.txt
+@@ -12,7 +12,7 @@ target_include_directories(test_codegen_unboxing PRIVATE ${ATen_CPU_INCLUDE})
+
+ target_compile_definitions(test_codegen_unboxing PRIVATE USE_GTEST)
+
+-set(TEST_UNBOXING_DEPENDENCIES torch gtest_main)
++set(TEST_UNBOXING_DEPENDENCIES torch gtest_main gtest)
+
+ target_link_libraries(test_codegen_unboxing PRIVATE
+ ${TEST_UNBOXING_DEPENDENCIES}
+diff --git i/test/mobile/nnc/CMakeLists.txt w/test/mobile/nnc/CMakeLists.txt
+index d38f0a41e22..136526b9dcd 100644
+--- i/test/mobile/nnc/CMakeLists.txt
++++ w/test/mobile/nnc/CMakeLists.txt
+@@ -11,7 +11,7 @@ add_executable(test_mobile_nnc
+ ${MOBILE_NNC_TEST_SRCS}
+ )
+
+-target_link_libraries(test_mobile_nnc PRIVATE torch gtest_main)
++target_link_libraries(test_mobile_nnc PRIVATE torch gtest_main gtest)
+ target_include_directories(test_mobile_nnc PRIVATE ${ATen_CPU_INCLUDE})
+ target_compile_definitions(test_mobile_nnc PRIVATE USE_GTEST)
+
+diff --git i/torch/CMakeLists.txt w/torch/CMakeLists.txt
+index 3985cf50c14..51054202e95 100644
+--- i/torch/CMakeLists.txt
++++ w/torch/CMakeLists.txt
+@@ -83,9 +83,6 @@ set(TORCH_PYTHON_LINK_LIBRARIES
Python::Module
pybind::pybind11
opentelemetry::api
- httplib
- nlohmann
+- moodycamel
shm
fmt::fmt-header-only
ATEN_CPU_FILES_GEN_LIB)
diff --git a/gnu/packages/patches/python-pytorch-without-kineto.patch b/gnu/packages/patches/python-pytorch-without-kineto.patch
index 896e11dcc2..8d3641231e 100644
--- a/gnu/packages/patches/python-pytorch-without-kineto.patch
+++ b/gnu/packages/patches/python-pytorch-without-kineto.patch
@@ -2,11 +2,11 @@ Even when building without Kineto, the <ActivityType.h> header is still
imported and the ActivityType type is used. This patch was copied from
https://github.com/pytorch/pytorch/pull/111048 and adapted.
-diff --git a/torch/csrc/profiler/kineto_shim.h b/torch/csrc/profiler/kineto_shim.h
-index 7a3b788..7f49d18 100644
---- a/torch/csrc/profiler/kineto_shim.h
-+++ b/torch/csrc/profiler/kineto_shim.h
-@@ -12,7 +12,55 @@
+diff --git i/torch/csrc/profiler/kineto_shim.h w/torch/csrc/profiler/kineto_shim.h
+index c4efd7785b7..20cc657961c 100644
+--- i/torch/csrc/profiler/kineto_shim.h
++++ w/torch/csrc/profiler/kineto_shim.h
+@@ -12,7 +12,56 @@
#undef USE_KINETO
#endif
@@ -49,6 +49,7 @@ index 7a3b788..7f49d18 100644
+ HPU_OP, // HPU host side runtime event
+ XPU_RUNTIME, // host side xpu runtime events
+ MTIA_WORKLOADD,
++ MTIA_INSIGHT, // MTIA insight events (new in 2.8.0)
+
+ PRIVATEUSE1_RUNTIME,
+ PRIVATEUSE1_DRIVER,
diff --git a/gnu/packages/patches/python-scikit-build-setuptools-compat.patch b/gnu/packages/patches/python-scikit-build-setuptools-compat.patch
new file mode 100644
index 0000000000..54b881a16b
--- /dev/null
+++ b/gnu/packages/patches/python-scikit-build-setuptools-compat.patch
@@ -0,0 +1,54 @@
+from https://github.com/scikit-build/scikit-build/commit/3992485c67331097553ec8f54233c4c295943f70.patch
+
+Description: fix(types): Update for newer setuptools
+
+Author: Henry Schreiner <henryschreineriii@gmail.com>
+---
+ skbuild/platform_specifics/windows.py | 2 +-
+ skbuild/setuptools_wrap.py | 2 +-
+ tests/__init__.py | 6 +++++-
+ 3 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/skbuild/platform_specifics/windows.py b/skbuild/platform_specifics/windows.py
+index 01085a3c..144dec81 100644
+--- a/skbuild/platform_specifics/windows.py
++++ b/skbuild/platform_specifics/windows.py
+@@ -215,7 +215,7 @@ def _get_msvc_compiler_env(vs_version: int, vs_toolset: str | None = None) -> Ca
+ return __get_msvc_compiler_env_cache[cache_key]
+
+ if hasattr(monkey, "patch_for_msvc_specialized_compiler"):
+- monkey.patch_for_msvc_specialized_compiler() # type: ignore[no-untyped-call]
++ monkey.patch_for_msvc_specialized_compiler()
+
+ vc_dir = find_visual_studio(vs_version)
+ vcvarsall = os.path.join(vc_dir, "vcvarsall.bat")
+diff --git a/skbuild/setuptools_wrap.py b/skbuild/setuptools_wrap.py
+index 8e59631b..f6c60cd5 100644
+--- a/skbuild/setuptools_wrap.py
++++ b/skbuild/setuptools_wrap.py
+@@ -250,7 +250,7 @@ def _parse_setuptools_arguments(
+
+ return (
+ display_only,
+- dist.help_commands, # type: ignore[attr-defined]
++ bool(dist.help_commands),
+ dist.commands,
+ dist.hide_listing, # type: ignore[attr-defined]
+ dist.force_cmake, # type: ignore[attr-defined]
+diff --git a/tests/__init__.py b/tests/__init__.py
+index 4f3c9543..e3942246 100644
+--- a/tests/__init__.py
++++ b/tests/__init__.py
+@@ -215,7 +215,11 @@ def execute_setup_py(project_dir, setup_args, disable_languages_test=False):
+ """
+
+ # See https://stackoverflow.com/questions/9160227/dir-util-copy-tree-fails-after-shutil-rmtree
+- distutils.dir_util._path_created.clear() # type: ignore[attr-defined]
++ to_clear = getattr(
++ distutils.dir_util, "SkipRepeatAbsolutePaths", getattr(distutils.dir_util, "_path_created", None)
++ )
++ assert to_clear, "Must have one of the two supported clearing mechanisms"
++ to_clear.clear()
+
+ # Clear _PYTHON_HOST_PLATFORM to ensure value sets in skbuild.setuptools_wrap.setup() does not
+ # influence other tests.
diff --git a/gnu/packages/patches/python-scipy-i686.patch b/gnu/packages/patches/python-scipy-i686.patch
new file mode 100644
index 0000000000..66b5898c17
--- /dev/null
+++ b/gnu/packages/patches/python-scipy-i686.patch
@@ -0,0 +1,49 @@
+From https://github.com/scipy/scipy/pull/20135
+
+From 53796772ed735c1564863fc7ca8d902acb628167 Mon Sep 17 00:00:00 2001
+From: Ralf Gommers <ralf.gommers@gmail.com>
+Date: Thu, 22 Feb 2024 09:10:46 +0100
+Subject: [PATCH] MAINT: interpolate: define `F_INT` as `int` rather than
+ `npy_int32`
+
+This fixes an incompatible pointer issue that shows up as a warning in
+Windows CI jobs, and is reported to break the build with GCC 14 on
+Fedora 40 in gh-19993.
+
+Using `#define F_INT int` is done in several other submodules; this
+was the only instance of using `npy_int32`.
+
+Closes gh-19993
+---
+ scipy/interpolate/src/_fitpackmodule.c | 4 ++--
+ scipy/interpolate/src/fitpack.pyf | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/scipy/interpolate/src/_fitpackmodule.c b/scipy/interpolate/src/_fitpackmodule.c
+index 0e913d1c7e43..dc79b2b28833 100644
+--- a/scipy/interpolate/src/_fitpackmodule.c
++++ b/scipy/interpolate/src/_fitpackmodule.c
+@@ -28,8 +28,8 @@ static PyObject *fitpack_error;
+
+ #else
+
+-#define F_INT npy_int32
+-#define F_INT_NPY NPY_INT32
++#define F_INT int
++#define F_INT_NPY NPY_INT
+ #define F_INT_MAX NPY_MAX_INT32
+ #if NPY_BITSOF_SHORT == 32
+ #define F_INT_PYFMT "h"
+diff --git a/scipy/interpolate/src/fitpack.pyf b/scipy/interpolate/src/fitpack.pyf
+index 08cb0c141c98..a9535a83f479 100644
+--- a/scipy/interpolate/src/fitpack.pyf
++++ b/scipy/interpolate/src/fitpack.pyf
+@@ -16,7 +16,7 @@ python module dfitpack ! in
+ #ifdef HAVE_ILP64
+ typedef npy_int64 F_INT;
+ #else
+-typedef npy_int32 F_INT;
++typedef int F_INT;
+ #endif
+
+ static double dmax(double* seq, F_INT len) {
diff --git a/gnu/packages/patches/python-sshtunnel-pep518.patch b/gnu/packages/patches/python-sshtunnel-pep518.patch
new file mode 100644
index 0000000000..b8b9b384d8
--- /dev/null
+++ b/gnu/packages/patches/python-sshtunnel-pep518.patch
@@ -0,0 +1,77 @@
+https://github.com/pahaz/sshtunnel/pull/304
+---
+
+diff --git a/pyproject.toml b/pyproject.toml
+index b0471b7..fbc473a 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -1,3 +1,67 @@
+ [build-system]
+ requires = ["setuptools", "wheel"]
+-build-backend = "setuptools.build_meta:__legacy__"
+\ No newline at end of file
++build-backend = "setuptools.build_meta"
++
++[project]
++name = "sshtunnel"
++dynamic = ["version", "readme"]
++description = "Pure python SSH tunnels"
++license = {text = "MIT"}
++authors = [
++ {name = "Pahaz White", email = "pahaz.white@gmail.com"}
++]
++keywords = ["ssh", "tunnel", "paramiko", "proxy", "tcp-forward"]
++classifiers = [
++ "Development Status :: 3 - Alpha",
++ "Intended Audience :: Developers",
++ "Topic :: Software Development :: Build Tools",
++ "License :: OSI Approved :: MIT License",
++ "Programming Language :: Python :: 2",
++ "Programming Language :: Python :: 2.7",
++ "Programming Language :: Python :: 3",
++ "Programming Language :: Python :: 3.4",
++ "Programming Language :: Python :: 3.5",
++ "Programming Language :: Python :: 3.6",
++ "Programming Language :: Python :: 3.7",
++ "Programming Language :: Python :: 3.8",
++]
++requires-python = ">=2.7"
++dependencies = [
++ "paramiko>=2.7.2",
++]
++
++[project.urls]
++Homepage = "https://github.com/pahaz/sshtunnel"
++Download = "https://pypi.python.org/packages/source/s/sshtunnel/"
++
++[project.optional-dependencies]
++dev = ["check-manifest"]
++test = ["tox>=1.8.1"]
++build_sphinx = ["sphinx", "sphinxcontrib-napoleon"]
++
++[project.scripts]
++sshtunnel = "sshtunnel:_cli_main"
++
++[tool.setuptools]
++py-modules = ["sshtunnel"]
++
++[tool.setuptools.dynamic]
++version = {attr = "sshtunnel.__version__"}
++readme = {file = ["README.rst", "docs.rst", "changelog.rst"], content-type = "text/x-rst"}
++
++[tool.setuptools.package-data]
++tests = ["testrsa.key"]
++
++[tool.bdist_wheel]
++universal = true
++
++[tool.check-manifest]
++ignore = [
++ ".travis.yml",
++ "circle.yml",
++ "tox.ini"
++]
++
++[tool.build_sphinx]
++source-dir = "docs/"
++build-dir = "docs/_build"
diff --git a/gnu/packages/patches/python-treelib-remove-python2-compat.patch b/gnu/packages/patches/python-treelib-remove-python2-compat.patch
new file mode 100644
index 0000000000..50659c21e9
--- /dev/null
+++ b/gnu/packages/patches/python-treelib-remove-python2-compat.patch
@@ -0,0 +1,129 @@
+From: Alexandre Detiste <alexandre.detiste@gmail.com>, ngraves@ngraves.fr
+
+diff --git a/pyproject.toml b/pyproject.toml
+index 98b5603..7b192a8 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -35,7 +35,6 @@ include = [
+
+ [tool.poetry.dependencies]
+ python = "^3.7"
+-six = ">=1.13.0"
+
+ [tool.poetry.group.dev.dependencies]
+ # Testing dependencies - pytest for all Python versions
+diff --git a/treelib/__init__.py b/treelib/__init__.py
+index bed89cc..f164208 100644
+--- a/treelib/__init__.py
++++ b/treelib/__init__.py
+@@ -57,15 +57,6 @@ Common Use Cases:
+ - Abstract syntax trees
+ - Family trees and genealogy
+
+-Compatibility Note:
+- To ensure string compatibility between Python 2.x and 3.x, treelib follows
+- Python 3.x string handling conventions. All strings are handled as unicode.
+-
+- For Python 2.x users with non-ASCII characters, enable unicode literals:
+-
+- .. code-block:: python
+-
+- from __future__ import unicode_literals
+ """
+
+ from .node import Node # noqa: F401
+diff --git a/treelib/node.py b/treelib/node.py
+index cb79a01..64547f7 100644
+--- a/treelib/node.py
++++ b/treelib/node.py
+@@ -22,8 +22,6 @@ Note:
+ directly instantiated, as the Tree class manages the parent-child
+ relationships automatically.
+ """
+-from __future__ import unicode_literals
+-
+ import copy
+ import sys
+ import uuid
+@@ -40,7 +38,7 @@ else:
+ StrList = List[str] # Python 3.8 and earlier
+
+
+-class Node(object):
++class Node:
+ """
+ Elementary node object stored in Tree structures.
+
+diff --git a/treelib/tree.py b/treelib/tree.py
+index 39bbdb5..8042175 100644
+--- a/treelib/tree.py
++++ b/treelib/tree.py
+@@ -26,26 +26,13 @@ Key Features:
+ - Subtree operations and filtering
+ - Tree metrics and analysis tools
+ """
+-from __future__ import print_function, unicode_literals
+-
+-try:
+- from builtins import str as text
+-except ImportError:
+- from __builtin__ import str as text # type: ignore
+-
+ import codecs
+ import json
+ import sys
+ import uuid
+ from copy import deepcopy
+ from typing import Any, Callable, List, Optional, Union, cast
+-
+-from six import iteritems, python_2_unicode_compatible
+-
+-try:
+- from StringIO import StringIO # type: ignore
+-except ImportError:
+- from io import StringIO
++from io import StringIO
+
+ from .exceptions import (
+ DuplicatedNodeIdError,
+@@ -70,8 +57,7 @@ else:
+ __author__ = "chenxm"
+
+
+-@python_2_unicode_compatible
+-class Tree(object):
++class Tree():
+ """
+ Hierarchical tree data structure.
+
+@@ -220,7 +206,7 @@ class Tree(object):
+
+ if tree is not None:
+ self.root = tree.root
+- for nid, node in iteritems(tree.nodes):
++ for nid, node in tree.nodes.items():
+ new_node = deepcopy(node) if deep else node
+ self._nodes[nid] = new_node
+ if tree.identifier != self._identifier:
+@@ -1540,9 +1526,9 @@ class Tree(object):
+
+ set_joint = set(new_tree._nodes) & set(self._nodes) # joint keys
+ if set_joint:
+- raise ValueError("Duplicated nodes %s exists." % list(map(text, set_joint)))
++ raise ValueError("Duplicated nodes %s exists." % list(map(str, set_joint)))
+
+- for cid, node in iteritems(new_tree.nodes):
++ for cid, node in new_tree.nodes.items():
+ if deep:
+ node = deepcopy(new_tree[node])
+ self._nodes.update({cid: node})
+@@ -1909,7 +1895,7 @@ class Tree(object):
+ :return: None
+ """
+ cn = self[nid]
+- for attr, val in iteritems(attrs):
++ for attr, val in attrs.items():
+ if attr == "identifier":
+ # Updating node id meets following contraints:
+ # * Update node identifier property
+
diff --git a/gnu/packages/patches/python-unittest2-python3-compat.patch b/gnu/packages/patches/python-unittest2-python3-compat.patch
deleted file mode 100644
index 68fbccacd0..0000000000
--- a/gnu/packages/patches/python-unittest2-python3-compat.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-Skip tests that fail with newer versions of Python.
-
-Patch copied from Gentoo:
-
-https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-python/unittest2/files/unittest2-1.1.0-python3.5-test.patch
-
-diff --git a/unittest2/test/test_loader.py b/unittest2/test/test_loader.py
-index 683f662..347eea5 100644
---- a/unittest2/test/test_loader.py
-+++ b/unittest2/test/test_loader.py
-@@ -509,6 +509,7 @@ class Test_TestLoader(unittest2.TestCase):
- #
- # What happens when an impossible name is given, relative to the provided
- # `module`?
-+ @unittest.skipIf(sys.version_info[:2] >= (3, 5), "python 3.5 has problems here")
- def test_loadTestsFromName__relative_malformed_name(self):
- loader = unittest.TestLoader()
-
-@@ -811,6 +812,7 @@ class Test_TestLoader(unittest2.TestCase):
- # TestCase or TestSuite instance."
- #
- # What happens when presented with an impossible module name?
-+ @unittest.skipIf(sys.version_info[:2] >= (3, 5), "python 3.5 has problems here")
- def test_loadTestsFromNames__malformed_name(self):
- loader = unittest2.TestLoader()
-
-@@ -918,6 +920,7 @@ class Test_TestLoader(unittest2.TestCase):
- # "The method optionally resolves name relative to the given module"
- #
- # What happens when presented with an impossible attribute name?
-+ @unittest.skipIf(sys.version_info[:2] >= (3, 5), "python 3.5 has problems here")
- def test_loadTestsFromNames__relative_malformed_name(self):
- loader = unittest.TestLoader()
-
-diff --git a/unittest2/compatibility.py b/unittest2/compatibility.py
-index 9e5f1a5..2d20c19 100644
---- a/unittest2/compatibility.py
-+++ b/unittest2/compatibility.py
-@@ -140,6 +140,6 @@ except ImportError:
- ### ChainMap (helper for configparser and string.Template)
- ########################################################################
-
--class ChainMap(collections.MutableMapping):
-+class ChainMap(collections.abc.MutableMapping):
- ''' A ChainMap groups multiple dicts (or other mappings) together
- to create a single, updateable view.
diff --git a/gnu/packages/patches/python-unittest2-remove-argparse.patch b/gnu/packages/patches/python-unittest2-remove-argparse.patch
deleted file mode 100644
index c96738757e..0000000000
--- a/gnu/packages/patches/python-unittest2-remove-argparse.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/setup.py 2017-09-12 01:22:06.273997788 +0200
-+++ b/setup.py 2017-09-12 01:22:14.297918757 +0200
-@@ -57,7 +57,7 @@
- # Both install and setup requires - because we read VERSION from within the
- # package, and the package also exports all the APIs.
- # six for compat helpers
--REQUIRES = ['argparse', 'six>=1.4', 'traceback2'],
-+REQUIRES = ['six>=1.4', 'traceback2'],
-
- params = dict(
- name=NAME,
diff --git a/gnu/packages/patches/qdigidoc-bundle-config-files.patch b/gnu/packages/patches/qdigidoc-bundle-config-files.patch
new file mode 100644
index 0000000000..e10e6e95d2
--- /dev/null
+++ b/gnu/packages/patches/qdigidoc-bundle-config-files.patch
@@ -0,0 +1,175 @@
+Upstream-status: https://github.com/open-eid/qt-common/pull/144
+
+Adjusted by prepending "common/" to the file names, to account for the submodule prefix.
+
+diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
+index c992651..5784a11 100644
+--- a/common/CMakeLists.txt
++++ b/common/CMakeLists.txt
+@@ -14,6 +14,12 @@ target_include_directories(qdigidoccommon PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+ target_compile_definitions(qdigidoccommon PUBLIC QT_WARN_DEPRECATED_UP_TO=060200)
+ target_link_libraries(qdigidoccommon PUBLIC Qt6::Network Qt6::Widgets OpenSSL::SSL)
+
++add_custom_target(update_config_files
++ curl https://id.eesti.ee/config.json > ${CMAKE_SOURCE_DIR}/config.json
++ COMMAND curl https://id.eesti.ee/config.pub > ${CMAKE_SOURCE_DIR}/config.pub
++ COMMAND curl https://id.eesti.ee/config.rsa > ${CMAKE_SOURCE_DIR}/config.rsa
++)
++
+ if(WIN32)
+ target_compile_definitions(qdigidoccommon PUBLIC UNICODE WIN32_LEAN_AND_MEAN)
+ target_link_libraries(qdigidoccommon PRIVATE Version SetupApi)
+diff --git a/common/config.json b/common/config.json
+new file mode 100644
+index 0000000..97b4c2b
+--- /dev/null
++++ b/common/config.json
+@@ -0,0 +1,122 @@
++{
++ "META-INF": {
++ "VER": 1,
++ "SERIAL": 190,
++ "URL": "https://id.eesti.ee/config.json",
++ "DATE": "20250812064515Z"
++ },
++ "TSL-URL": "https://ec.europa.eu/tools/lotl/eu-lotl.xml",
++ "TSL-CERTS": [
++ "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"
++ ],
++ "TSA-URL": "https://eid-dd.ria.ee/ts",
++ "OCSP-URL-ISSUER": {
++ "ESTEID-SK 2015": "http://aia.sk.ee/esteid2015",
++ "KLASS3-SK 2016": "http://aia.sk.ee/klass3-2016"
++ },
++ "LDAP-PERSON-URL": "ldaps://esteid.ldap.sk.ee",
++ "LDAP-CORP-URL": "ldaps://k3.ldap.sk.ee",
++ "MID-PROXY-URL": "https://eid-dd.ria.ee/mid",
++ "MID-SK-URL": "https://mid.sk.ee/mid-api",
++ "SID-PROXY-URL": "https://eid-dd.ria.ee/sid/v1",
++ "SID-SK-URL": "https://rp-api.smart-id.com/v1",
++ "SIDV2-PROXY-URL": "https://eid-dd.ria.ee/sid/v2",
++ "SIDV2-SK-URL": "https://rp-api.smart-id.com/v2",
++ "PICTURE-URL": "https://sisene.www.eesti.ee/idportaal/portaal.idpilt",
++ "EMAIL-REDIRECT-URL": "https://sisene.www.eesti.ee/idportaal/postisysteem.naita_suunamised",
++ "EMAIL-ACTIVATE-URL": "https://sisene.www.eesti.ee/idportaal/postisysteem.lisa_suunamine?=%1",
++ "SIVA-URL": "https://siva.eesti.ee/V3/validate",
++ "SIVA-CERT": "",
++ "LDAP-PERSON-URLS": [
++ "ldaps://esteid.ldap.sk.ee"
++ ],
++ "CDOC2-CONF": {
++ "00000000-0000-0000-0000-000000000000": {
++ "NAME": "RIA",
++ "POST": "https://cdoc2.id.ee:8443",
++ "FETCH": "https://cdoc2.id.ee:8444"
++ }
++ },
++ "CDOC2-USE-KEYSERVER": false,
++ "CDOC2-DEFAULT-KEYSERVER": "00000000-0000-0000-0000-000000000000",
++ "QDIGIDOC-SUPPORTED": "4.0.0.23",
++ "QDIGIDOC-LATEST": "3.13.6.1525",
++ "QDIGIDOC4-SUPPORTED": "4.5.0.0",
++ "QDIGIDOC4-LATEST": "4.8.0.0",
++ "QESTEIDUTIL-SUPPORTED": "4.0.0.23",
++ "QESTEIDUTIL-LATEST": "3.12.10.1265",
++ "WIN-LATEST": "25.6.9.8395",
++ "WIN-DOWNLOAD": "https://installer.id.ee/media/win/Open-EID-25.6.9.8395.exe",
++ "WIN-UPGRADECODE": "{f1c4d351-269d-4bee-8cdb-6ea70c968875}",
++ "OSX-LATEST": "25.5.0.1954",
++ "OSX-DOWNLOAD": "https://installer.id.ee/media/osx/Open-EID_25.5.0.1954.dmg",
++ "CERT-BUNDLE": [
++ "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"
++ ],
++ "LDAP-CERTS": [
++ "MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTflMrY="
++ ],
++ "ALLOWED-EXTENSIONS": [
++ "ddoc",
++ "bdoc",
++ "edoc",
++ "adoc",
++ "asice",
++ "cdoc",
++ "asics",
++ "txt",
++ "doc",
++ "docx",
++ "odt",
++ "ods",
++ "tex",
++ "wks",
++ "wps",
++ "wpd",
++ "rtf",
++ "xlr",
++ "xls",
++ "xlsx",
++ "pdf",
++ "key",
++ "odp",
++ "pps",
++ "ppt",
++ "pptx",
++ "png",
++ "jpg",
++ "jpeg",
++ "bmp",
++ "ai",
++ "gif",
++ "ico",
++ "ps",
++ "psd",
++ "tif",
++ "tiff",
++ "csv",
++ "cdoc2"
++ ]
++}
+\ No newline at end of file
+diff --git a/common/config.pub b/common/config.pub
+new file mode 100644
+index 0000000..fffc6ec
+--- /dev/null
++++ b/common/config.pub
+@@ -0,0 +1,8 @@
++-----BEGIN RSA PUBLIC KEY-----
++MIIBCgKCAQEAu7GeS3jgvLjKL8ZgA4DlT3n3+/IQpoSlO0ErRIVT5upbY7yDf0mj
++Cc8Xaqr91aBHjYnrEAz+nkmb12BuJCp/C3xQXnXEQchF2J+HfMbIClJ7TCl2951k
++kuKdZpNeZ/iim0uRTs1UA0ews0+CPLAAklEpC1h5+fK8Uwl9+5h+v5jj/9P06ey0
++8H3VpxX4Nu0XTU2QcXocv5BTYJKxLKQicEL+nstpBrRI2Cqgwcd2Fz2qp8M9KJvI
++TKW0TD2EKgq6nYELXPRNl/KOsVt7RGyUutd809GARfcOotvhHy2qzHoWlr3pY2ZO
++zMSpZbisPvbOJ4fIyPhkbWBr7a3ytquOmQIDAQAB
++-----END RSA PUBLIC KEY-----
+diff --git a/common/config.rsa b/common/config.rsa
+new file mode 100644
+index 0000000..28164ca
+--- /dev/null
++++ b/common/config.rsa
+@@ -0,0 +1,5 @@
++tHpG9yw35+GZk8uEeHSpefZG+L20qrGJRP8oUUi9bxbsXzE4Dvpvlaw8qckotA3ABBpz3n2ZS/ig
++x9CUS+P+0217COYG7Wz0Q8aVqixBNrAw5komoul+mGJs5dBCacF5bSokYo+Qc23BE9ZpgLypjPN0
++drh/gO/YpCQH6ykMjG+LaZaj3sLetpmQQDqZKBEVWX4GdXAtFNP50ECtxD57qN9Igr8VYge696Wo
++/q3fVzYEJg1wU6b0VdNyiJ7avptpliRCNgg3Rj+Y7Y3Axh8J16r2kdWHLqaQ58mLstinovkeGZqC
++8fP8BoHvwyKlGT5lsksImf23q2kbL0ZpmQnjbg==
diff --git a/gnu/packages/patches/qdigidoc-bundle-tsl-files.patch b/gnu/packages/patches/qdigidoc-bundle-tsl-files.patch
new file mode 100644
index 0000000000..61585e8e0d
--- /dev/null
+++ b/gnu/packages/patches/qdigidoc-bundle-tsl-files.patch
@@ -0,0 +1,7124 @@
+Upstream-status: https://github.com/open-eid/DigiDoc4-Client/pull/1349
+
+From 860028808c8f2dac18cb1b48e7716772c20fa481 Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim@guixotic.coop>
+Date: Tue, 12 Aug 2025 19:23:31 +0900
+Subject: [PATCH] cmake: Add custom target to fetch files required at build
+ time.
+
+This is to facilitate fully-working offline builds. The target is
+intended to be run before every release tag or when needed to have
+recent enough versions.
+
+* CMakeLists.txt (update_tsl_files): New target.
+* client/EE.xml: New file.
+* client/eu-lotl.xml: Likewise.
+
+Fixes: #1348
+Signed-off-by: Maxim Cournoyer <maxim@guixotic.coop>
+---
+ CMakeLists.txt | 5 +
+ client/EE.xml | 4904 ++++++++++++++++++++++++++++++++++++++++++++
+ client/eu-lotl.xml | 2164 +++++++++++++++++++
+ 3 files changed, 7073 insertions(+)
+ create mode 100644 client/EE.xml
+ create mode 100644 client/eu-lotl.xml
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index d4d619d2..ce89e529 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -12,6 +12,11 @@ macro(SET_ENV NAME DEF)
+ endif()
+ endmacro()
+
++add_custom_target(update_tsl_files
++ curl https://ec.europa.eu/tools/lotl/eu-lotl.xml > ${CMAKE_SOURCE_DIR}/client/eu-lotl.xml
++ COMMAND curl https://sr.riik.ee/tsl/estonian-tsl.xml > ${CMAKE_SOURCE_DIR}/client/EE.xml
++)
++
+ set_env(BUILD_NUMBER 0)
+ set_env( TSL_URL "https://ec.europa.eu/tools/lotl/eu-lotl.xml" CACHE STRING "TSL trust list primary URL" )
+ set_env( TSL_INCLUDE "EE" CACHE STRING "TSL list include in binary" )
+diff --git a/client/EE.xml b/client/EE.xml
+new file mode 100644
+index 00000000..bc1ff903
+--- /dev/null
++++ b/client/EE.xml
+@@ -0,0 +1,4904 @@
++<?xml version="1.0" encoding="UTF-8" standalone="no"?><TrustServiceStatusList xmlns="http://uri.etsi.org/02231/v2#" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" xmlns:ns3="http://uri.etsi.org/02231/v2/additionaltypes#" xmlns:ns4="http://uri.etsi.org/01903/v1.3.2#" xmlns:ns5="http://uri.etsi.org/TrstSvc/SvcInfoExt/eSigDir-1999-93-EC-TrustedList/#" xmlns:ns6="http://uri.etsi.org/01903/v1.4.1#" Id="EE0001" TSLTag="http://uri.etsi.org/19612/TSLTag">
++ <SchemeInformation>
++ <TSLVersionIdentifier>5</TSLVersionIdentifier>
++ <TSLSequenceNumber>68</TSLSequenceNumber>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Estonian Information System Authority</Name>
++ <Name xml:lang="et">Riigi Infosüsteemi Amet</Name>
++ </SchemeOperatorName>
++ <SchemeOperatorAddress>
++ <PostalAddresses>
++ <PostalAddress xml:lang="en">
++ <StreetAddress>139A Pärnu mnt</StreetAddress>
++ <Locality>Tallinn</Locality>
++ <PostalCode>15169</PostalCode>
++ <CountryName>EE</CountryName>
++ </PostalAddress>
++ </PostalAddresses>
++ <ElectronicAddress>
++ <URI xml:lang="en">mailto:ria@ria.ee</URI>
++ <URI xml:lang="en">https://sr.riik.ee/en.html</URI>
++ </ElectronicAddress>
++ </SchemeOperatorAddress>
++ <SchemeName>
++ <Name xml:lang="en">EE:Trusted list including information related to the qualified trust service providers which are supervised by the issuing Member State, together with information related to the qualified trust services provided by them, in accordance with the relevant provisions laid down in Regulation (EU) No 910/2014 of the European Parliament and of the Council of 23 July 2014 on electronic identification and trust services for electronic transactions in the internal market and repealing Directive 1999/93/EC.</Name>
++ </SchemeName>
++ <SchemeInformationURI>
++ <URI xml:lang="en">https://sr.riik.ee/en/tl.html</URI>
++ <URI xml:lang="en">http://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32014R0910&amp;from=EN</URI>
++ <URI xml:lang="et">https://sr.riik.ee/et/tl.html</URI>
++ <URI xml:lang="et">http://eur-lex.europa.eu/legal-content/ET/TXT/PDF/?uri=CELEX:32014R0910&amp;from=EN</URI>
++ </SchemeInformationURI>
++ <StatusDeterminationApproach>http://uri.etsi.org/TrstSvc/TrustedList/StatusDetn/EUappropriate</StatusDeterminationApproach>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EE</URI>
++ </SchemeTypeCommunityRules>
++ <SchemeTerritory>EE</SchemeTerritory>
++ <PolicyOrLegalNotice>
++ <TSLLegalNotice xml:lang="en">The applicable legal framework for the present trusted list is Regulation (EU) No 910/2014 of the European Parliament and of the Council of 23 July 2014 on electronic identification and trust services for electronic transactions in the internal market and repealing Directive 1999/93/EC.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="et">Käesoleva usaldusnimekirja suhtes kohaldatav õigusraamistik on Euroopa Parlamendi ja nõukogu 23. juuli 2014. aasta määrus (EL) nr 910/2014 e-identimise ja e-tehingute jaoks vajalike usaldusteenuste kohta siseturul ja millega tunnistatakse kehtetuks direktiiv 1999/93/EÜ.</TSLLegalNotice>
++ </PolicyOrLegalNotice>
++ <HistoricalInformationPeriod>65535</HistoricalInformationPeriod>
++ <PointersToOtherTSL>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://ec.europa.eu/tools/lotl/eu-lotl.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUlistofthelists</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>EU</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">European Commission</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUlistofthelists</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ </PointersToOtherTSL>
++ <ListIssueDateTime>2025-06-12T11:57:48Z</ListIssueDateTime>
++ <NextUpdate>
++ <dateTime>2025-12-12T12:57:48Z</dateTime>
++ </NextUpdate>
++ <DistributionPoints>
++ <URI>https://sr.riik.ee/tsl/estonian-tsl.xml</URI>
++ </DistributionPoints>
++ </SchemeInformation>
++ <TrustServiceProviderList>
++ <TrustServiceProvider>
++ <TSPInformation>
++ <TSPName>
++ <Name xml:lang="en">SK ID Solutions AS</Name>
++ </TSPName>
++ <TSPTradeName>
++ <Name xml:lang="en">VATEE-100687640</Name>
++ <Name xml:lang="en">SK ID Solutions AS</Name>
++ <Name xml:lang="en">AS Sertifitseerimiskeskus</Name>
++ <Name xml:lang="en">ESTEID</Name>
++ <Name xml:lang="en">SK</Name>
++ </TSPTradeName>
++ <TSPAddress>
++ <PostalAddresses>
++ <PostalAddress xml:lang="en">
++ <StreetAddress>Pärnu mnt 141</StreetAddress>
++ <Locality>Tallinn</Locality>
++ <PostalCode>11314</PostalCode>
++ <CountryName>EE</CountryName>
++ </PostalAddress>
++ </PostalAddresses>
++ <ElectronicAddress>
++ <URI xml:lang="en">mailto:info@sk.ee</URI>
++ <URI xml:lang="en">https://www.sk.ee/en</URI>
++ </ElectronicAddress>
++ </TSPAddress>
++ <TSPInformationURI>
++ <URI xml:lang="en">https://www.sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://www.sk.ee/repositoorium/</URI>
++ </TSPInformationURI>
++ </TSPInformation>
++ <TSPServices>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">ESTEID-SK</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIFAjCCA+qgAwIBAgIEPERcgjANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAwDgYDVQQDEwdKdXVyLVNLMB4XDTAyMDExNTE2NDQ1MFoXDTEyMDExMzE2NDQ1MFowfDEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEPMA0GA1UECxMGRVNURUlEMQowCAYDVQQEEwExMRIwEAYDVQQDEwlFU1RFSUQtU0swggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCLeZO5NVo3zbwA8eFVCrrbeZQKvPDB7LUDPvzCqw7U2sC+IwEOdjjpJRF4lxFs+f8yC1bP+rqtWzrKhhJ2owfSAlIZMbly/OFjfLqOcyyi7qdfA/66u+69u/DY9tW5fqW93D73v5WNcNoIemCTydh9IFkQvMihWKH7LblBzCHa4W6qUcBZ7QsBgYpQS9n9fGJt5D2wCDeq0pF1Zy72G3CQFrpuR/aPG28tv9r+C7oqncapbiJ7xIOa77Fm3o07M/9aarq/m1oHEp9CxYiH9nmD3kyMe8yxw5v02MTMmAcxOm83z5O4oXSDTALG5gDfZNPjJaNPno7J8FuGrI3vV8z3AgMBAAGjggGpMIIBpTAMBgNVHRMEBTADAQH/MA4GA1UdDwEB/wQEAwIB5jCCARYGA1UdIASCAQ0wggEJMIIBBQYKKwYBBAHOHwEBATCB9jCB0AYIKwYBBQUHAgIwgcMegcAAUwBlAGUAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAIABvAG4AIAB2AOQAbABqAGEAcwB0AGEAdAB1AGQAIABBAFMALQBpAHMAIABTAGUAcgB0AGkAZgBpAHQAcwBlAGUAcgBpAG0AaQBzAGsAZQBzAGsAdQBzACAAYQBsAGEAbQAtAFMASwAgAHMAZQByAHQAaQBmAGkAawBhAGEAdABpAGQAZQAgAGsAaQBuAG4AaQB0AGEAbQBpAHMAZQBrAHMwIQYIKwYBBQUHAgEWFWh0dHA6Ly93d3cuc2suZWUvY3BzLzArBgNVHR8EJDAiMCCgHqAchhpodHRwOi8vd3d3LnNrLmVlL2p1dXIvY3JsLzAfBgNVHSMEGDAWgBQEqnpHo+SJrxrPCkCnGD9v7+l9vjAdBgNVHQ4EFgQUeBe1BfmzWM1ZjN5nXkQGTHWGaV0wDQYJKoZIhvcNAQEFBQADggEBAFIsMHaq4Ffkrxmzw38rHYh5Ia5JGxjtWfPpag9pBtQNZHzY8j97xfPI15haE9Ah3u1WC+bsU2SndVSUGaZ0gKafMxDOy2DUw3B84ymbNRiAFSWty+aKrMCjtdlPktbSQmxNSJAX9vVtM4Y2ory+dtAQ7g11GKHJ+l8BDUpOJA+l8hvS2l4K5whWDHCSqlplMiHPIKgBVArFRNzAq6dquMY+kS3e2PL+PM4GdDW5lRHR/6KUy0BHP2gX/BO4mYQ3BH2BHImUclNras0HISnV/pt6hIkgd1PsFt3rtEolAWP4DWBmc4zAYQJ5t0cEwFM329zCXSGIQIm3a1cMugF5Q/k=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>CN=ESTEID-SK, SURNAME=1, OU=ESTEID, O=AS Sertifitseerimiskeskus, C=EE, EMAILADDRESS=pki@sk.ee</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2017-06-30T22:00:00Z</StatusStartingTime>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an QSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">ESTEID-SK</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=ESTEID-SK, SURNAME=1, OU=ESTEID, O=AS Sertifitseerimiskeskus, C=EE, EMAILADDRESS=pki@sk.ee</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>eBe1BfmzWM1ZjN5nXkQGTHWGaV0=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an QSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">ESTEID-SK: Qualified certificates for Estonian ID-card</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=ESTEID-SK, SURNAME=1, OU=ESTEID, O=AS Sertifitseerimiskeskus, C=EE, EMAILADDRESS=pki@sk.ee</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>eBe1BfmzWM1ZjN5nXkQGTHWGaV0=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2002-01-15T17:44:50Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithSSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description> This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an SSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">ESTEID-SK 2007</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIID0zCCArugAwIBAgIERZugDTANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAwDgYDVQQDEwdKdXVyLVNLMB4XDTA3MDEwMzEyMjIzN1oXDTE2MDgyNjE0MjMwMVowWzELMAkGA1UEBhMCRUUxIjAgBgNVBAoTGUFTIFNlcnRpZml0c2VlcmltaXNrZXNrdXMxDzANBgNVBAsTBkVTVEVJRDEXMBUGA1UEAxMORVNURUlELVNLIDIwMDcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtWp2jLCsA7K9AxoPDOL0geM1GoR0Q6wSUICCJYyFkUMboEMxpSzFB6tlb0ySlHEU6Fs+tjA4QrSqwaw0uNk4BXv1lkoOr6DUc+20+AQd5jB6A0atrltZ1XG5IvDEep3DJPykkk2MPxUz7dZx7XUEr/kdUWI9cDIkFWic7y9oTBY9JaV6lxm08kweZ/qTw5PU8/bTvZCE0ygvBXU4TDS2FpUJ/+jTzM2ocWa3QjFQv2Sir6LBvgNY3du/m+WLABq0dgN18R4nhFtmaVepqAeUuEi8eRBl6yLTSmMwYCY46LsK5CdjTCZSZv934FtNuyY6Ph9nCXJAgNAY+GfNJfdMXAgMBAAGjgZwwgZkwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAf4wMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL3d3dy5zay5lZS9jcmxzL2p1dXIvY3JsLmNybDAfBgNVHSMEGDAWgBQEqnpHo+SJrxrPCkCnGD9v7+l9vjAdBgNVHQ4EFgQUSAbevoyHV5WAeGP6nCMrK6A6GHUwDQYJKoZIhvcNAQEFBQADggEBACO6SJrjN5WZuiLSMy/tSmT/w3dd/KPErSAdUIJYkC7hOIauW7jZ3VNgNUMHSIkUoP8AviEMjGA4lkT61YScpJAdmgl8Y80HFdZV5CsThhddoIdZ3cZjSI4NZmTVkSduTjoySALxKL3ZEIPrepQDvNEeV1WSpI5+u/vMekUWJSPc8BK9O2av1e9ResKyPJidqrIksHFjNS+Yt8Ouw7F10MHaPPzMiwoa0DYTVsIKJncPTQmvdJG8M0DDToiiNPQuUy5d1CA75Wtjs+yILGZXpOfbdoQhE7G4pbZaF1s69jKp+zc0ZT4g2OoKfI2TiIX9qeGJMxkOENcd1DDqYVfePmo=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>CN=ESTEID-SK 2007, OU=ESTEID, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2017-06-30T22:00:00Z</StatusStartingTime>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an QSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">ESTEID-SK 2007</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=ESTEID-SK 2007, OU=ESTEID, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>SAbevoyHV5WAeGP6nCMrK6A6GHU=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an QSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">ESTEID-SK 2007: Qualified certificates for Estonian ID-card, the residence permit card, the digital identity card, the digital identity card in form of the Mobile-ID</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=ESTEID-SK 2007, OU=ESTEID, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>SAbevoyHV5WAeGP6nCMrK6A6GHU=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2007-01-03T13:22:37Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithSSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description> This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an SSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">ESTEID qualified certificates for electronic signatures (ESTEID-SK 2011)</Name>
++ <Name xml:lang="et">ESTEID kvalifitseeritud e-allkirjastamise sertifikaatide väljastamise teenus (ESTEID-SK 2011)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIFBTCCA+2gAwIBAgIQKVKTqv2MxtRNgzCjwmRRDTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMB4XDTExMDMxODEwMTQ1OVoXDTI0MDMxODEwMTQ1OVowZDELMAkGA1UEBhMCRUUxIjAgBgNVBAoMGUFTIFNlcnRpZml0c2VlcmltaXNrZXNrdXMxFzAVBgNVBAMMDkVTVEVJRC1TSyAyMDExMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz6XxsZh6r/aXcNe3kSpNMOqmQoAXUpzzcr4ZSaGZh/7JHIiplvNi6tbW/lK7sAiRsb65KzMWROEauld66ggbDPga6kU97C+AXGu7+DROXstjUOv6VlrHZVAnLmIOkycpWaxjM+EfQPZuDxEbkw96B3/fG69Zbp3s9y6WEhwU5Y9IiQl8YTkGnNUxidQbON1BGQm+HVEsgTf22J6r6G3FsE07rnMNskNC3DjuLSCUKF4kH0rVGVK9BdiCdFaZjHEykjwjIGzqnyxyRKe4YbJ6B9ABm95eSFgMBHtZEYU+q0VUIQGhAGAurOTXjWi1TssA42mnLGQZEI5GXMXtabp51AgMBAAGjggGgMIIBnDASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjCB9gYDVR0gBIHuMIHrMIHoBgsrBgEEAc4fZAEBATCB2DCBsgYIKwYBBQUHAgIwgaUegaIASwBhAHMAdQB0AGEAdABhAGsAcwBlACAAaQBzAGkAawB1AHQAdAD1AGUAbgBkAGEAdgBhAGwAZQAgAGQAbwBrAHUAbQBlAG4AZABpAGwAZQAgAGsAYQBuAHQAYQB2AGEAdABlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0AGkAZABlACAAdgDkAGwAagBhAHMAdABhAG0AaQBzAGUAawBzAC4wIQYIKwYBBQUHAgEWFWh0dHBzOi8vd3d3LnNrLmVlL0NQUzAdBgNVHQ4EFgQUe2ryVVBcuNl6CIdBrvqiKz1bV3YwHwYDVR0jBBgwFoAUEvJaPupWHL/NBqzx8SXJqUvUFJkwPQYDVR0fBDYwNDAyoDCgLoYsaHR0cDovL3d3dy5zay5lZS9yZXBvc2l0b3J5L2NybHMvZWVjY3JjYS5jcmwwDQYJKoZIhvcNAQEFBQADggEBAKC4IN3FC2gVDIH05TNMgFrQOCGSnXhzoJclRLoQ81BCOXTZI4qn7N74FHEnrAy6uNG7SS5qANqSaPIL8dp63jg/L4qn4iWaB5q5GGJOV07SnTHS7gUrqChGClnUeHxiZbL13PkP37Lnc+TKl1SKfgtn5FbH5cqrhvbA/VF3Yzlimu+L7EVohW9HKxZ//z8kDn6ieiPFfZdTOov/0eXVLlxqklybUuS6LYRRDiqQupgBKQBTwNbC8x0UHX00HokW+dCVcQvsUbv4xLhRq/MvyTthE+RdbkrV0JuzbfZvADfj75nA3+ZAzFYS5ZpMOjZ9p4rQVKpzQTklrF0m6mkdcEo=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=ESTEID-SK 2011, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2021-05-21T10:00:00Z</StatusStartingTime>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>1.3.6.1.4.1.10015.1.1</ns4:Identifier>
++ <ns4:Description>Certificate Policy for ID card and Digi-ID</ns4:Description>
++ <ns4:DocumentationReferences>
++ <ns4:DocumentationReference>https://sk.ee/en/repository/CP/</ns4:DocumentationReference>
++ </ns4:DocumentationReferences>
++ </ns5:PolicyIdentifier>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>1.3.6.1.4.1.10015.1.3</ns4:Identifier>
++ <ns4:Description>Certificate Policy for the digital identity card in form of the Mobile-ID</ns4:Description>
++ <ns4:DocumentationReferences>
++ <ns4:DocumentationReference>https://sk.ee/en/repository/CP/</ns4:DocumentationReference>
++ </ns4:DocumentationReferences>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an QSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>1.3.6.1.4.1.10015.1.1</ns4:Identifier>
++ <ns4:Description>Certificate Policy for ID card and Digi-ID</ns4:Description>
++ <ns4:DocumentationReferences>
++ <ns4:DocumentationReference>https://sk.ee/en/repository/CP/</ns4:DocumentationReference>
++ </ns4:DocumentationReferences>
++ </ns5:PolicyIdentifier>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>1.3.6.1.4.1.10015.1.3</ns4:Identifier>
++ <ns4:Description>Certificate Policy for the digital identity card in form of the Mobile-ID</ns4:Description>
++ <ns4:DocumentationReferences>
++ <ns4:DocumentationReference>https://sk.ee/en/repository/CP/</ns4:DocumentationReference>
++ </ns4:DocumentationReferences>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">ESTEID qualified certificates for electronic signatures (ESTEID-SK 2011)</Name>
++<Name xml:lang="et">ESTEID kvalifitseeritud e-allkirjastamise sertifikaatide väljastamise teenus (ESTEID-SK 2011)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=ESTEID-SK 2011, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>e2ryVVBcuNl6CIdBrvqiKz1bV3Y=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2018-11-02T14:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>1.3.6.1.4.1.10015.1.1</ns4:Identifier>
++ <ns4:Description>Certificate Policy for ID card and Digi-ID</ns4:Description>
++ <ns4:DocumentationReferences>
++ <ns4:DocumentationReference>https://sk.ee/en/repository/CP/</ns4:DocumentationReference>
++ </ns4:DocumentationReferences>
++ </ns5:PolicyIdentifier>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>1.3.6.1.4.1.10015.1.3</ns4:Identifier>
++ <ns4:Description>Certificate Policy for the digital identity card in form of the Mobile-ID</ns4:Description>
++ <ns4:DocumentationReferences>
++ <ns4:DocumentationReference>https://sk.ee/en/repository/CP/</ns4:DocumentationReference>
++ </ns4:DocumentationReferences>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an QSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>1.3.6.1.4.1.10015.1.1</ns4:Identifier>
++ <ns4:Description>Certificate Policy for ID card and Digi-ID</ns4:Description>
++ <ns4:DocumentationReferences>
++ <ns4:DocumentationReference>https://sk.ee/en/repository/CP/</ns4:DocumentationReference>
++ </ns4:DocumentationReferences>
++ </ns5:PolicyIdentifier>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>1.3.6.1.4.1.10015.1.3</ns4:Identifier>
++ <ns4:Description>Certificate Policy for the digital identity card in form of the Mobile-ID</ns4:Description>
++ <ns4:DocumentationReferences>
++ <ns4:DocumentationReference>https://sk.ee/en/repository/CP/</ns4:DocumentationReference>
++ </ns4:DocumentationReferences>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">ESTEID-SK 2011 qualified certificates for electronic signatures</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=ESTEID-SK 2011, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>e2ryVVBcuNl6CIdBrvqiKz1bV3Y=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an QSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">ESTEID-SK 2011: Qualified certificates for Estonian ID-card, the residence permit card, the digital identity card, the digital identity card in form of the Mobile-ID</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=ESTEID-SK 2011, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>e2ryVVBcuNl6CIdBrvqiKz1bV3Y=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2011-03-18T11:14:59Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithSSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description> This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an SSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">ESTEID qualified certificates for electronic signatures (ESTEID-SK 2015)</Name>
++ <Name xml:lang="et">ESTEID kvalifitseeritud e-allkirjastamise sertifikaatide väljastamise teenus (ESTEID-SK 2015)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>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</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>CN=ESTEID-SK 2015, OID.2.5.4.97=NTREE-10747013, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2018-11-02T14:00:00Z</StatusStartingTime>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>1.3.6.1.4.1.10015.1.1</ns4:Identifier>
++ <ns4:Description>Certificate Policy for ID card and Digi-ID</ns4:Description>
++ <ns4:DocumentationReferences>
++ <ns4:DocumentationReference>https://sk.ee/en/repository/CP/</ns4:DocumentationReference>
++ </ns4:DocumentationReferences>
++ </ns5:PolicyIdentifier>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>1.3.6.1.4.1.10015.1.3</ns4:Identifier>
++ <ns4:Description>Certificate Policy for the digital identity card in form of the Mobile-ID</ns4:Description>
++ <ns4:DocumentationReferences>
++ <ns4:DocumentationReference>https://sk.ee/en/repository/CP/</ns4:DocumentationReference>
++ </ns4:DocumentationReferences>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an QSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>1.3.6.1.4.1.10015.1.1</ns4:Identifier>
++ <ns4:Description>Certificate Policy for ID card and Digi-ID</ns4:Description>
++ <ns4:DocumentationReferences>
++ <ns4:DocumentationReference>https://sk.ee/en/repository/CP/</ns4:DocumentationReference>
++ </ns4:DocumentationReferences>
++ </ns5:PolicyIdentifier>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>1.3.6.1.4.1.10015.1.3</ns4:Identifier>
++ <ns4:Description>Certificate Policy for the digital identity card in form of the Mobile-ID</ns4:Description>
++ <ns4:DocumentationReferences>
++ <ns4:DocumentationReference>https://sk.ee/en/repository/CP/</ns4:DocumentationReference>
++ </ns4:DocumentationReferences>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">ESTEID-SK 2015 qualified certificates for electronic signatures</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=ESTEID-SK 2015, OID.2.5.4.97=NTREE-10747013, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>s6uIvJnVYqSFKgjNtB1yO4NyR1E=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an QSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">ESTEID-SK 2015: Qualified certificates for Estonian ID-card, the residence permit card, the digital identity card, the digital identity card in form of the Mobile-ID</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=ESTEID-SK 2015, OID.2.5.4.97=NTREE-10747013, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>s6uIvJnVYqSFKgjNtB1yO4NyR1E=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2015-12-17T12:38:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithSSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description> This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an SSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">ESTEID qualified certificates for electronic signatures (ESTEID2018)</Name>
++ <Name xml:lang="et">ESTEID kvalifitseeritud e-allkirjastamise sertifikaatide väljastamise teenus (ESTEID2018)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIFVzCCBLigAwIBAgIQdUf6rBR0S4tbo2bU/mZV7TAKBggqhkjOPQQDBDBaMQswCQYDVQQGEwJFRTEbMBkGA1UECgwSU0sgSUQgU29sdXRpb25zIEFTMRcwFQYDVQRhDA5OVFJFRS0xMDc0NzAxMzEVMBMGA1UEAwwMRUUtR292Q0EyMDE4MB4XDTE4MDkyMDA5MjIyOFoXDTMzMDkwNTA5MTEwM1owWDELMAkGA1UEBhMCRUUxGzAZBgNVBAoMElNLIElEIFNvbHV0aW9ucyBBUzEXMBUGA1UEYQwOTlRSRUUtMTA3NDcwMTMxEzARBgNVBAMMCkVTVEVJRDIwMTgwgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABAHHOBlv7UrRPYP1yHhOb7RA/YBDbtgynSVMqYdxnFrKHUXh6tFkghvHuA1k2DSom1hE5kqhB5VspDembwWDJBOQWQGOI/0t3EtccLYjeM7F9xOPdzUbZaIbpNRHpQgVBpFX0xpLTgW27MpIMhU8DHBWFpeAaNX3eUpD4gC5cvhsK0RFEqOCAx0wggMZMB8GA1UdIwQYMBaAFH4pVuc0knhOd+FvLjMqmHHB/TSfMB0GA1UdDgQWBBTZrHDbX36+lPig5L5HotA0rZoqEjAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADCCAc0GA1UdIASCAcQwggHAMAgGBgQAj3oBAjAJBgcEAIvsQAECMDIGCysGAQQBg5EhAQEBMCMwIQYIKwYBBQUHAgEWFWh0dHBzOi8vd3d3LnNrLmVlL0NQUzANBgsrBgEEAYORIQEBAjANBgsrBgEEAYORfwEBATANBgsrBgEEAYORIQEBBTANBgsrBgEEAYORIQEBBjANBgsrBgEEAYORIQEBBzANBgsrBgEEAYORIQEBAzANBgsrBgEEAYORIQEBBDANBgsrBgEEAYORIQEBCDANBgsrBgEEAYORIQEBCTANBgsrBgEEAYORIQEBCjANBgsrBgEEAYORIQEBCzANBgsrBgEEAYORIQEBDDANBgsrBgEEAYORIQEBDTANBgsrBgEEAYORIQEBDjANBgsrBgEEAYORIQEBDzANBgsrBgEEAYORIQEBEDANBgsrBgEEAYORIQEBETANBgsrBgEEAYORIQEBEjANBgsrBgEEAYORIQEBEzANBgsrBgEEAYORIQEBFDANBgsrBgEEAYORfwEBAjANBgsrBgEEAYORfwEBAzANBgsrBgEEAYORfwEBBDANBgsrBgEEAYORfwEBBTANBgsrBgEEAYORfwEBBjAqBgNVHSUBAf8EIDAeBggrBgEFBQcDCQYIKwYBBQUHAwIGCCsGAQUFBwMEMGoGCCsGAQUFBwEBBF4wXDApBggrBgEFBQcwAYYdaHR0cDovL2FpYS5zay5lZS9lZS1nb3ZjYTIwMTgwLwYIKwYBBQUHMAKGI2h0dHA6Ly9jLnNrLmVlL0VFLUdvdkNBMjAxOC5kZXIuY3J0MBgGCCsGAQUFBwEDBAwwCjAIBgYEAI5GAQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2Muc2suZWUvRUUtR292Q0EyMDE4LmNybDAKBggqhkjOPQQDBAOBjAAwgYgCQgDeuUY4HczUbFKS002HZ88gclgYdztHqglENyTMtXE6dMBRnCbgUmhBCAA0mJSHbyFJ8W9ikLiSyurmkJM0hDE9KgJCASOqA405Ia5nKjTJPNsHQlMi7KZsIcTHOoBccx+54N8ZX1MgBozJmT59rZY/2/OeE163BAwD0UdUQAnMPP6+W3Vd</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>CN=ESTEID2018, OID.2.5.4.97=NTREE-10747013, O=SK ID Solutions AS, C=EE</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>2axw219+vpT4oOS+R6LQNK2aKhI=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2018-11-02T14:00:00Z</StatusStartingTime>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>1.3.6.1.4.1.51361.1</ns4:Identifier>
++ <ns4:Description>Certificate Policy for ID-card, Digi-ID, RP-card and Diplomatic-ID</ns4:Description>
++ <ns4:DocumentationReferences>
++ <ns4:DocumentationReference>https://www.id.ee/?id=30500</ns4:DocumentationReference>
++ </ns4:DocumentationReferences>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an QSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>1.3.6.1.4.1.51361.1</ns4:Identifier>
++ <ns4:Description>Certificate Policy for ID-card, Digi-ID, RP-card and Diplomatic-ID</ns4:Description>
++ <ns4:DocumentationReferences>
++ <ns4:DocumentationReference>https://www.id.ee/?id=30500</ns4:DocumentationReference>
++ </ns4:DocumentationReferences>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">EID-SK 2007</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIID4jCCAsqgAwIBAgIERZ4nqjANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAwDgYDVQQDEwdKdXVyLVNLMB4XDTA3MDEwNTEwMjU0NloXDTE2MDgyNjE0MjMwMVowajELMAkGA1UEBhMCRUUxIjAgBgNVBAoTGUFTIFNlcnRpZml0c2VlcmltaXNrZXNrdXMxITAfBgNVBAsTGFNlcnRpZml0c2VlcmltaXN0ZWVudXNlZDEUMBIGA1UEAxMLRUlELVNLIDIwMDcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDifhEdyvuhk/3TJEGMJ1tEZOskE81yMqPGGXaPHXACJ7fncn1D1uQFt+RG8/ckh7zDquHV1m4HQk7dchaP00rvgsvRlYC9GPcFt6TW8w3t+BkxY1RNbmONgH3qzikljk7m6Nb8UGtL9hOmZdw5k5t9Ht8fgHTnoBkFrxYgsv9d4CCkBTSprNUK+vy/NTak4iAYinWtK6tRHHb1fxRsLUXiDLSO42Kz+rehhslANX+9Y5/h0wlh3pcmxLB1JWAP0O9fV6N1LUQ3Ym7wMp/lBXuPvl52yJuSZDWUF7GkIp+vUifOSefF6CeGh8K9BXDvuOqg+5c/6gkfEQxpRgdu+q5FAgMBAAGjgZwwgZkwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAf4wMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL3d3dy5zay5lZS9jcmxzL2p1dXIvY3JsLmNybDAfBgNVHSMEGDAWgBQEqnpHo+SJrxrPCkCnGD9v7+l9vjAdBgNVHQ4EFgQUHAf0nL+kJWyztJ4iHx+USBtYeo0wDQYJKoZIhvcNAQEFBQADggEBABaiEXv415Oh7AgHODwKRyNFqPcSSOgpLCy1XJB3hl3fi21fslccWuBhfzqHQCiQi0fewh109IJiHq8n1PeKoHBCUVq6NFpxkVsUlUPBr0Qsya1O3SQjuOsBLzUWBvY25dtBuAkBMCo0V1Erf7iTeOzuL4LLbCoeOfeQT3HPmEfSqP5f8V10ST8erbiTVPJwzr66vXaT9YKxy8NyAQc2iaOHuYmGKxs8dgDQRkG6b2a/f5q21YEQKDhvz7VvM6tH+F+rohA2wAvVz4tcPtyw5WEYcavr1KHgz4eZVWsqh2OsHUK9qMas5m/44O1/hXrjpMy5IQsiB4ASXDuXvdOTVbU=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>CN=EID-SK 2007, OU=Sertifitseerimisteenused, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2017-06-30T22:00:00Z</StatusStartingTime>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an QSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">EID-SK 2007</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=EID-SK 2007, OU=Sertifitseerimisteenused, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>HAf0nL+kJWyztJ4iHx+USBtYeo0=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an QSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">EID-SK 2007: Qualified certificates for Mobile-ID</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=EID-SK 2007, OU=Sertifitseerimisteenused, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>HAf0nL+kJWyztJ4iHx+USBtYeo0=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2007-01-05T11:25:46Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithSSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description> This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an SSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">EID-SK 2011 qualified certificates for electronic signatures</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIFADCCA+igAwIBAgIQQyvUTmJDa0ZNgy+/fS0vWjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMB4XDTExMDMxODEwMTExMVoXDTI0MDMxODEwMTExMVowYTELMAkGA1UEBhMCRUUxIjAgBgNVBAoMGUFTIFNlcnRpZml0c2VlcmltaXNrZXNrdXMxFDASBgNVBAMMC0VJRC1TSyAyMDExMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2Q1zKMt7DytbntSLoYAAVkEwV+5djSr0vSIG/Zm9seKyx+2PY8sVzXRoUD1CMIYnstDhBSKMjn2/+HpA7pOipAIAMrk6uKnpSTTdFbQ+0fzJVPokBgsdsQ6R5TZFPB1nu5zgRRlQmWIFxOpDiNHTt0LObUhWLXzUb31vc1Wmao2IYcDx1TCs/1E9+camiCl2B5lXrPEU3wBq4waD54izS20DK05+6+hHRg+TqoIg5YSmwbjStEyd/8AQeokwVloyyH49bnpeluADcZJgxxE9ZUvVWHoxYfmg1IeRU72jHTcIjNf1cQN2+9/FtHQMnGzDBgmAPpghwWr3JtW0JWvMXAgMBAAGjggGeMIIBmjASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjCB9AYDVR0gBIHsMIHpMIHmBgsrBgEEAc4fZAEBATCB1jCBsAYIKwYBBQUHAgIwgaMegaAASwBhAHMAdQB0AGEAdABhAGsAcwBlACAAZgD8APwAcwBpAGwAaQBzAHQAZQBsAGUAIABpAHMAaQBrAHUAdABlAGwAZQAgAHMAZQByAHQAaQBmAGkAawBhAGEAdABpAGQAZQAgAHYA5ABsAGoAYQBzAHQAYQBtAGkAcwBlAGsAcwAgAGsAbwBtAG0AZQByAHQAcwBhAGwAdQBzAGUAbAAuMCEGCCsGAQUFBwIBFhVodHRwczovL3d3dy5zay5lZS9DUFMwHQYDVR0OBBYEFLEQlwL63YbGeEGkwzKI+/4f58AFMB8GA1UdIwQYMBaAFBLyWj7qVhy/zQas8fElyalL1BSZMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly93d3cuc2suZWUvcmVwb3NpdG9yeS9jcmxzL2VlY2NyY2EuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQAxau3ohdFkpvaiVUR7arNovQUZRCG9Ge3udqHYemovyU7N60Hgomc/ZG+uunScATTUhBcv9a5zkQxb1dQ1LYDRfNr9CqI0QvSEE4t9Sfu3fOhyLrlmb3s8xhhYLJBJ325uDvtO/qFeXLlcRXMF5nU8FE2IyaZP1CHYKVh5QNPPQiGZGSox5oOkCvmt4lUl4lZUwVie75us/WtrD6DJeREBTEDHORIfg8E9RA1y/7t2gT9vrU8tabeSZlD03qwXe0nJ9RscI/P0HT8vuo1PGzCfbH9xFqfoZ2jdJ0HzxrFM8VsL/AtCw0dmrxRHLlZzqSw0G7b0W40mwOQauO2gbMfn</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=EID-SK 2011, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2020-12-05T09:14:31Z</StatusStartingTime>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an QSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">EID-SK 2011 qualified certificates for electronic signatures</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=EID-SK 2011, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>sRCXAvrdhsZ4QaTDMoj7/h/nwAU=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an QSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">EID-SK 2011: Qualified certificates for Mobile-ID, organisation cards for natural persons</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=EID-SK 2011, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>sRCXAvrdhsZ4QaTDMoj7/h/nwAU=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2011-03-18T11:11:11Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithSSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="digitalSignature">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description> This service issues qualified certificates for e-signing and e-authentication within the same process. The Relying Party shall make distinction by inspection of keyUsage field contents - e-signature certificates have nonRepudation bit set exclusively. Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) and that has either its nR or its dS bit set is to be considered as supported by an SSCD</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">EID-SK 2016 qualified certificates for electronic signatures</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>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</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>CN=EID-SK 2016, OID.2.5.4.97=NTREE-10747013, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>nAmoB4cMPawuh/ygrtL7ZUmIKPs=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-12-21T10:00:00Z</StatusStartingTime>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>1.3.6.1.4.1.10015.17.2</ns4:Identifier>
++ <ns4:Description>Certificate Policy for Qualified Smart-ID</ns4:Description>
++ <ns4:DocumentationReferences>
++ <ns4:DocumentationReference>https://sk.ee/en/repository/CP/</ns4:DocumentationReference>
++ </ns4:DocumentationReferences>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">KLASS3-SK</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIEBDCCAuygAwIBAgIEPNkU9TANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAwDgYDVQQDEwdKdXVyLVNLMB4XDTAyMDUwODEyMDcxN1oXDTEyMDUwNTExMDcxN1owgY4xGDAWBgkqhkiG9w0BCQEWCXBraUBzay5lZTELMAkGA1UEBhMCRUUxIjAgBgNVBAoTGUFTIFNlcnRpZml0c2VlcmltaXNrZXNrdXMxITAfBgNVBAsTGFNlcnRpZml0c2VlcmltaXN0ZWVudXNlZDEKMAgGA1UEBRMBMTESMBAGA1UEAxMJS0xBU1MzLVNLMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvIIeK3GJxoPCXVwan+HjJwYGaH3nb/rTPEqg5v9e1c7dnTDBdD2Yteg+lUdHBZDHLj1Tz+J/W9Foc0dzEr96S8+6nMXoonK2x0854JNH2UVbS/+YOGUM6iWSxkHw525tvn5tFaIQoaeh46aQFp9Dngcnv4Gatd0/7NCkLggjFrKmnNTPINpLAG9VoCpVyIMvcVCyTNvSQ+n33ToPO5vtULNYOtCF9MDVND+uNRE2o0tWIG0l84owYPA47tJOLgCpAxLNFR5Ys0nB/ofBYcO+YiCri0yc6t7ZPs/vcfbR6czIwW0GMjyHmVPLB+/WHS3P1sk29DdgIC42RTMthJS6ZQIDAQABo4GZMIGWMA8GA1UdEwQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgHmMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly93d3cuc2suZWUvY3Jscy9qdXVyL2NybC5jcmwwHwYDVR0jBBgwFoAUBKp6R6Pkia8azwpApxg/b+/pfb4wHQYDVR0OBBYEFOU/DJ1xPW+8Gb+a9G6/Cf5A652WMA0GCSqGSIb3DQEBBQUAA4IBAQASvWB+YrgN23EMLW7C5/XUwQLNN1RMDhr6UzOo5XHZ3pxUXq2Erk5ggiS+UJIxkQaSg4OHRru8KTchoJDvS2neeYHOz05zJcAIwoy2GGkHq1iVN+QZaprDaDNYR5GGKgJb3FZrMtyX4dNwnrZzMFzd6t5YibCW+BDPAmqGJvNHzJ5YYdA7I3WT9Baan1ncKd4FtUVb54fppd19NkbCKKSUd7qRYDduNYqVs1C/C0qqLq4TrxoxoxSo+WNLiD01896sIRiPIy8qDOAXJU67382J5XXETe9wZO6o7+NaG0CrpzVY1OaaD2O6Wv/vSpxE2ugqaf0WsP35+coFCWdM2uHZ</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>CN=KLASS3-SK, SERIALNUMBER=1, OU=Sertifitseerimisteenused, O=AS Sertifitseerimiskeskus, C=EE, EMAILADDRESS=pki@sk.ee</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:01Z</StatusStartingTime>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate that is issued under the CA/QC Sdi certificate and that is issued as a QC (i.e. containing a QcCompliance statement) and having its non-repudation bit set exclusively, is to be considered as supported by an SSCD. They are issued for digital stamping according to Estonian Digital Signature Act</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/NotQualified"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">false</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) is to be considered as issued to a Legal Person</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">KLASS3-SK</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=KLASS3-SK, SERIALNUMBER=1, OU=Sertifitseerimisteenused, O=AS Sertifitseerimiskeskus, C=EE, EMAILADDRESS=pki@sk.ee</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>5T8MnXE9b7wZv5r0br8J/kDrnZY=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate that is issued under the CA/QC Sdi certificate and that is issued as a QC (i.e. containing a QcCompliance statement) and having its non-repudation bit set exclusively, is to be considered as supported by an SSCD. They are issued for digital stamping according to Estonian Digital Signature Act</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/NotQualified"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">false</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) is to be considered as issued to a Legal Person</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">KLASS3-SK: Qualified electronic seals</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=KLASS3-SK, SERIALNUMBER=1, OU=Sertifitseerimisteenused, O=AS Sertifitseerimiskeskus, C=EE, EMAILADDRESS=pki@sk.ee</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>5T8MnXE9b7wZv5r0br8J/kDrnZY=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2002-05-08T12:07:17Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForLegalPerson"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">false</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) is to be considered as issued to a Legal Person</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithSSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate that is issued under the CA/QC Sdi certificate and that is issued as a QC (i.e. containing a QcCompliance statement) and having its non-repudation bit set exclusively, is to be considered as supported by an SSCD. They are issued for digital stamping according to Estonian Digital Signature Act</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">Klass3-SK 2010 qualified certificate for electronic seal</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIID5TCCAs2gAwIBAgIES7MTKDANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAwDgYDVQQDEwdKdXVyLVNLMB4XDTEwMDMzMTA5MTcyOFoXDTE2MDgyNjE0MjMwMVowbTELMAkGA1UEBhMCRUUxIjAgBgNVBAoTGUFTIFNlcnRpZml0c2VlcmltaXNrZXNrdXMxITAfBgNVBAsTGFNlcnRpZml0c2VlcmltaXN0ZWVudXNlZDEXMBUGA1UEAxMOS0xBU1MzLVNLIDIwMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrlaYRX2v89k8Hd0ADaOfnUcIn7iM6aOXkAR+jp5827ZhDqDyNddF9ZUoBgPghGNIrkHbH7qwex39YnI0ka24lCjcwEMvQMPbyPnX/a4RyJ+wEZttmjBl++FfrZK54L+vD7Dyy4YYB0Og9ktB4qptsDBj+giiv/MGPeGeNs3TacJdNb7+3splTPtPKlDfrufvq4H6jNOv9S9bC+j2VVY9uCFXUro8AA3hoOEKJdSjlpYCa51N8KGLVJYRuc/K81xqi054Jz+Cy/HY/AcXkk2JkxlpJoEXmcuTkxjO/QE/Xbd+mRJHnq6+HurOiKcxKwZCPAa+d+dvRPkbyq9ohMXH9AgMBAAGjgZwwgZkwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAcYwMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL3d3dy5zay5lZS9jcmxzL2p1dXIvY3JsLmNybDAfBgNVHSMEGDAWgBQEqnpHo+SJrxrPCkCnGD9v7+l9vjAdBgNVHQ4EFgQUXXUUEYz0pY5Cj3uyQESj7tZ6O3IwDQYJKoZIhvcNAQEFBQADggEBADFuAGtSoO8PsWRw/QxFzc5EZtbq2KXC9yZ8YQPWBLY4Mh3OVLFJqWyKC+8JHy9D5tJTG49F5UHyDJPufD/XvC2rjRlkqvS/W7sy3MqGh7e+6bg+aD4mo+98Oalnqi12UD+ki+N8JKPXjHNJ31AvH6E/xDsCsvtzubylxI+FU8R0XODIUFbBqRtatRI1/zVaKRhD6LNGPt3rz/3IJKmuEv6b29mzL+p4oNULqpPr6aTmheZme8ZHuEIh3Zp5kdoX3i2D4hsmgClpevZifo196zeKRLk0Qs6nmRjoMxyk6jYIric3/VnV81oyhXSBY1GZnbM4qP1w2S5kSA2bb1pkwFo=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509Certificate>MIIErDCCA5SgAwIBAgIQAznVp1LayatNgy6bN8f9QjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMB4XDTExMDMxODEwMDYxOFoXDTI0MDMxODEwMDYxOFowbTELMAkGA1UEBhMCRUUxIjAgBgNVBAoTGUFTIFNlcnRpZml0c2VlcmltaXNrZXNrdXMxITAfBgNVBAsTGFNlcnRpZml0c2VlcmltaXN0ZWVudXNlZDEXMBUGA1UEAxMOS0xBU1MzLVNLIDIwMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrlaYRX2v89k8Hd0ADaOfnUcIn7iM6aOXkAR+jp5827ZhDqDyNddF9ZUoBgPghGNIrkHbH7qwex39YnI0ka24lCjcwEMvQMPbyPnX/a4RyJ+wEZttmjBl++FfrZK54L+vD7Dyy4YYB0Og9ktB4qptsDBj+giiv/MGPeGeNs3TacJdNb7+3splTPtPKlDfrufvq4H6jNOv9S9bC+j2VVY9uCFXUro8AA3hoOEKJdSjlpYCa51N8KGLVJYRuc/K81xqi054Jz+Cy/HY/AcXkk2JkxlpJoEXmcuTkxjO/QE/Xbd+mRJHnq6+HurOiKcxKwZCPAa+d+dvRPkbyq9ohMXH9AgMBAAGjggE+MIIBOjASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBxjCBlAYDVR0gBIGMMIGJMIGGBgsrBgEEAc4fZAEBATB3MCEGCCsGAQUFBwIBFhVodHRwczovL3d3dy5zay5lZS9jcHMwUgYIKwYBBQUHAgIwRh5EAEEAcwB1AHQAdQBzAGUAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQALgAgAEMAbwByAHAAbwByAGEAdABlACAASQBEAC4wHQYDVR0OBBYEFF11FBGM9KWOQo97skBEo+7WejtyMB8GA1UdIwQYMBaAFBLyWj7qVhy/zQas8fElyalL1BSZMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly93d3cuc2suZWUvcmVwb3NpdG9yeS9jcmxzL2VlY2NyY2EuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC3qNBgY2I9Wqm4LZYKAjCYkc2Nltm1RS9frMvQJ4aEE4Y4TtW2LPcQp2lenOf9aYdEB8G/E9CytZSPlFuvDdsdknj6fg1XCeu6ITR2wIkxJeAeLQvrFEfb1mcAa5tU9RNalZhYc7MFMFQTjQP+GBNxz+KIjNDVASFdv7TCe7GBjsW8Dfes9lQGHaWsBRkHCyuPGIHfH+cmMuhLtWqa4Qlg4f54kcsGO7s4buKtk6XqEj8Cj2ITdfk/aUs9QoxxkYWGwSUlCueTamzufXEJo9yz5Jp6IFdGjotmjb/EBUCf2sFfI83a4Cm1D3L3/KYb5g3cYlDEpPWNqbNuA1XosIqK</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509Certificate>MIIFKjCCBBKgAwIBAgIQChm34x8ah3BVcFedls2c2jANBgkqhkiG9w0BAQwFADB1MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMB4XDTE1MDYwNDEzNTAyMVoXDTI0MDMxNzIyMDAwMFowbTELMAkGA1UEBhMCRUUxIjAgBgNVBAoTGUFTIFNlcnRpZml0c2VlcmltaXNrZXNrdXMxITAfBgNVBAsTGFNlcnRpZml0c2VlcmltaXN0ZWVudXNlZDEXMBUGA1UEAxMOS0xBU1MzLVNLIDIwMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrlaYRX2v89k8Hd0ADaOfnUcIn7iM6aOXkAR+jp5827ZhDqDyNddF9ZUoBgPghGNIrkHbH7qwex39YnI0ka24lCjcwEMvQMPbyPnX/a4RyJ+wEZttmjBl++FfrZK54L+vD7Dyy4YYB0Og9ktB4qptsDBj+giiv/MGPeGeNs3TacJdNb7+3splTPtPKlDfrufvq4H6jNOv9S9bC+j2VVY9uCFXUro8AA3hoOEKJdSjlpYCa51N8KGLVJYRuc/K81xqi054Jz+Cy/HY/AcXkk2JkxlpJoEXmcuTkxjO/QE/Xbd+mRJHnq6+HurOiKcxKwZCPAa+d+dvRPkbyq9ohMXH9AgMBAAGjggG8MIIBuDASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBxjCBlAYDVR0gBIGMMIGJMIGGBgsrBgEEAc4fZAEBATB3MCEGCCsGAQUFBwIBFhVodHRwczovL3d3dy5zay5lZS9jcHMwUgYIKwYBBQUHAgIwRh5EAEEAcwB1AHQAdQBzAGUAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQALgAgAEMAbwByAHAAbwByAGEAdABlACAASQBEAC4wHQYDVR0OBBYEFF11FBGM9KWOQo97skBEo+7WejtyMB8GA1UdIwQYMBaAFBLyWj7qVhy/zQas8fElyalL1BSZMHwGCCsGAQUFBwEBBHAwbjAgBggrBgEFBQcwAYYUaHR0cDovL29jc3Auc2suZWUvQ0EwSgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cuc2suZWUvY2VydHMvRUVfQ2VydGlmaWNhdGlvbl9DZW50cmVfUm9vdF9DQS5kZXIuY3J0MD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly93d3cuc2suZWUvcmVwb3NpdG9yeS9jcmxzL2VlY2NyY2EuY3JsMA0GCSqGSIb3DQEBDAUAA4IBAQB4/0TLXdtMTnzl8Z810lR3pESCq6ueQRvGPPl2isGe3ldA9PhKZ7j6323ifI2ldOdMeU12gd4pzuHXieFC1YhswqXCR1huLNu1KA8PRhgxdOBQ1etRSkZTIftMhBgpxot2Tu4G2xKQ7wfetdqnrUQ/u++BuAhuHA2xsma236eQ7z3izoxCOSc+FMpQT/SY9NvKtZlmFEPycxZxu0uWCQtBbx+b/MAYKgq2/vMvLO4lyRqkeSRuLMZT4AA42HgggUwL7hWiwedyEqvwq0Sg3e92F2wBff+Xah/WeZBioxul1TRtzFcge6BTfF2S0RdbaaOWeXsbNaA/azZ4WrNj1CTv</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>CN=KLASS3-SK 2010, OU=Sertifitseerimisteenused, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2023-05-09T21:00:00Z</StatusStartingTime>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCQSCDStatusAsInCert"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>0.4.0.194112.1.3</ns4:Identifier>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>Any certificate that is issued under the CA/QC Sdi certificate and that is issued as a QC (i.e. containing a QcCompliance statement) and having its Certificate Policy PolicyIdentifier OID set as 0.4.0.194112.1.3, is to be considered as supported by a QSCD. They are issued for digital stamping according to eIDAS regulation</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForLegalPerson"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">false</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) is to be considered as issued to a Legal Person</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESeal"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description/>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">Klass3-SK 2010 qualified certificate for electronic seal</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=KLASS3-SK 2010, OU=Sertifitseerimisteenused, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>XXUUEYz0pY5Cj3uyQESj7tZ6O3I=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCQSCDStatusAsInCert"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>0.4.0.194112.1.3</ns4:Identifier>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>Any certificate that is issued under the CA/QC Sdi certificate and that is issued as a QC (i.e. containing a QcCompliance statement) and having its Certificate Policy PolicyIdentifier OID set as 0.4.0.194112.1.3, is to be considered as supported by a QSCD. They are issued for digital stamping according to eIDAS regulation</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForLegalPerson"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">false</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) is to be considered as issued to a Legal Person</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESeal"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description/>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">KLASS3-SK 2010</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=KLASS3-SK 2010, OU=Sertifitseerimisteenused, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>XXUUEYz0pY5Cj3uyQESj7tZ6O3I=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithQSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate that is issued under the CA/QC Sdi certificate and that is issued as a QC (i.e. containing a QcCompliance statement) and having its Certificate Policy PolicyIdentifier OID set as 0.4.0.194112.1.3, is to be considered as supported by a QSCD. They are issued for digital stamping according to eIDAS regulation</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/NotQualified"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">false</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) is to be considered as issued to a Legal Person</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">KLASS3-SK 2010: Qualified electronic seals</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=KLASS3-SK 2010, OU=Sertifitseerimisteenused, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>XXUUEYz0pY5Cj3uyQESj7tZ6O3I=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2010-03-31T09:17:28Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForLegalPerson"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">false</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) is to be considered as issued to a Legal Person</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCWithSSCD"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate that is issued under the CA/QC Sdi certificate and that is issued as a QC (i.e. containing a QcCompliance statement) and having its non-repudation bit set exclusively, is to be considered as supported by an SSCD. They are issued for digital stamping according to Estonian Digital Signature Act</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">Klass3-SK 2016 qualified certificate for electronic seal</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>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</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>CN=KLASS3-SK 2016, OID.2.5.4.97=NTREE-10747013, OU=Sertifitseerimisteenused, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>rl5Y9fLy2cGO2e9OB9t1ylDihwA=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2017-06-03T06:00:00Z</StatusStartingTime>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCQSCDStatusAsInCert"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier>0.4.0.194112.1.3</ns4:Identifier>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>Any certificate that is issued under the CA/QC Sdi certificate and that is issued as a QC (i.e. containing a QcCompliance statement) and having its Certificate Policy PolicyIdentifier OID set as 0.4.0.194112.1.3, is to be considered as supported by a QSCD. They are issued for digital stamping according to eIDAS regulation</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForLegalPerson"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">false</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) is to be considered as issued to a Legal Person</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESeal"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description/>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">ESTEID-SK OCSP RESPONDER 2005</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIDPDCCAiSgAwIBAgIEQi2iwTANBgkqhkiG9w0BAQUFADB8MRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMQ8wDQYDVQQLEwZFU1RFSUQxCjAIBgNVBAQTATExEjAQBgNVBAMTCUVTVEVJRC1TSzAeFw0wNTAzMDgxMzA0MDFaFw0xMjAxMTIxMzA0MDFaMG8xCzAJBgNVBAYTAkVFMQ8wDQYDVQQKEwZFU1RFSUQxDTALBgNVBAsTBE9DU1AxJjAkBgNVBAMTHUVTVEVJRC1TSyBPQ1NQIFJFU1BPTkRFUiAyMDA1MRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAI8mLeLkRHLxMNCB5Pz8R5DnvPdVxBS91PoHboLnbhjlp1ecByVosjwGpXCGu8tUPuv81Azgqq97AsSugM1J7Pu0gj4bg0Mf6O/9XyoT7RI7H0BuEn4KJQlFcw7tXizI5KUWFFZ4Qg8kfg0xwrDrLIjusBtRbeRARG3DhH8dgZBpAgMBAAGjVzBVMBMGA1UdJQQMMAoGCCsGAQUFBwMJMB8GA1UdIwQYMBaAFHgXtQX5s1jNWYzeZ15EBkx1hmldMB0GA1UdDgQWBBRM+GJhloJeOPpJDgvA0clxQXdnVTANBgkqhkiG9w0BAQUFAAOCAQEAfD8dP+swtSeigLxL3uUXV/tmQkjre7Ww39Uey71LdtxQ6zC7MDjcsLW13JaU0pRuu/p/eGe6h4/w46tSMsBx/U+D1WnHeCj1ED9SFWwfNQFVz9FkM5JEkPDm7lw5hHoxIghRHAC3NMbR3sCrVQA2YELf2WypslROoz8XlRT1LN4pwVehpBeWO7xbQPUtoaxKrSCGumtxtxA3KRJ7POHPTAH4cvipxaZhS1ZcXbKtxsesGW+7KLZirpTBT17ICXEA1CFXDWmJ8MHRhbeNWK3G1PERgTiGtBQV7Z00CzmJPHmb1yfcT27+WZ1W9tRQsjhGEWyMVkNnZooWHIjLpNucQA==</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=ESTEID-SK OCSP RESPONDER 2005, OU=OCSP, O=ESTEID, C=EE</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2018-03-20T07:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://ocsp.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">ESTEID-SK OCSP RESPONDER 2005</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=ESTEID-SK OCSP RESPONDER 2005, OU=OCSP, O=ESTEID, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>TPhiYZaCXjj6SQ4LwNHJcUF3Z1U=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">OCSP, ESTEID-SK OCSP RESPONDER 2005</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=ESTEID-SK OCSP RESPONDER 2005, OU=OCSP, O=ESTEID, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>TPhiYZaCXjj6SQ4LwNHJcUF3Z1U=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2005-03-08T14:04:01Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">ESTEID-SK 2007 OCSP RESPONDER</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIDnDCCAoSgAwIBAgIERZ0acjANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEPMA0GA1UECxMGRVNURUlEMRcwFQYDVQQDEw5FU1RFSUQtU0sgMjAwNzAeFw0wNzAxMDQxNTE3MDZaFw0xMDAxMDgxNTE3MDZaMG8xCzAJBgNVBAYTAkVFMQ8wDQYDVQQKEwZFU1RFSUQxDTALBgNVBAsTBE9DU1AxJjAkBgNVBAMTHUVTVEVJRC1TSyAyMDA3IE9DU1AgUkVTUE9OREVSMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJmoB3SJCpPzcoHNqK1J0tRNQjgr5iuB27uE1VacIbITjD/Nc1AefKz5ydNPIaBNehm4yKxBYGxEeWOSJHVXyhJMg53EAUOw/45c46gvznXupHuJ6TEiGjh1pxaXTeLSnTqzNDZDAGQsOTgIbwGLa5U5ad8rXYu2YkJKsAfo6jT5AgMBAAGjgdcwgdQwEwYDVR0lBAwwCgYIKwYBBQUHAwkwEgYJKwYEBQUHMAEFBAUwAwQBMDCBiQYDVR0jBIGBMH+AFEgG3r6Mh1eVgHhj+pwjKyugOhh1oWGkXzBdMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAwDgYDVQQDEwdKdXVyLVNLggRFm6ANMB0GA1UdDgQWBBRJ/snw1GDL3fUH9n9Cpn8yhXiC7DANBgkqhkiG9w0BAQUFAAOCAQEAYzGkZD/uaXlWPeye1z5IiI83nmAjiJyvoj/r3BB9ZFWMX+ZY4Fz6/V/fzD0xXoeDpWbBKxcuctPXzXYxEH17n0/3yGOz8jhdJNBUCwRmd+96oHsU9aWSf+D2tiq1jPw6HVCiUYOhC/OWjg/+JpFlWsBV4gTW8/2PSGig85XlEsWLK7i7tIe60nnw/rWnfbCckMRcbrAF1L/JIlnUYUdkGOGQ9KPVqwR/MyWrwFIcSy2QIbcIaWMuiUc1nt8bmIXKoFZxbLzXYC00zba9cY7lSC4WPuhBtrQJ9JWb4OeoXd5j6O45UaH6XbarfrhER1GHL06cTyksT18p2L2GrMuEJg==</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=ESTEID-SK 2007 OCSP RESPONDER, OU=OCSP, O=ESTEID, C=EE</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2018-03-20T07:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://ocsp.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">ESTEID-SK 2007 OCSP RESPONDER</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=ESTEID-SK 2007 OCSP RESPONDER, OU=OCSP, O=ESTEID, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>Sf7J8NRgy931B/Z/QqZ/MoV4guw=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">OCSP, ESTEID-SK 2007 OCSP RESPONDER</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=ESTEID-SK 2007 OCSP RESPONDER, OU=OCSP, O=ESTEID, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>Sf7J8NRgy931B/Z/QqZ/MoV4guw=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2007-01-04T16:17:06Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">ESTEID-SK 2007 OCSP RESPONDER 2010</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIEkjCCA3qgAwIBAgIESxUPmTANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEPMA0GA1UECxMGRVNURUlEMRcwFQYDVQQDEw5FU1RFSUQtU0sgMjAwNzAeFw0wOTEyMDExMjQ1MDBaFw0xNjA4MjYxMzIzMDBaMIGHMQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czENMAsGA1UECwwET0NTUDErMCkGA1UEAwwiRVNURUlELVNLIDIwMDcgT0NTUCBSRVNQT05ERVIgMjAxMDEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA48pyM/QfeiU1Kbu4AdcAUKXBiwbYbBl4gCltZHC5fZ77fKj2mqfPX2/XW1EqzbVvG0PYIkapkQzBr3R1S6Uaxh1DLC2Cc8BRnqmhXoE03o8En7N9xpN9dGGDBHp2aElBcVVZnAvF4jgbPDCNFAeo3cvpjIx18n0URiVOZFEdxDvF8PFo/exKXtjRM+jk3K6+9doHYvSXn9klFbT8Wge87Qdll3gQzZE3L8QMXF0z4xbBH1lyTmVLt5yZ0fxoE0jNlZFvn2w2EDnU4CKfId8w6Zjd5kdxomcwDzGuuLzdiJllPt05USJcY4FHn9YAVKWmofYY/o6xOUzU8fAz6yA1tQIDAQABo4IBLzCCASswEwYDVR0lBAwwCgYIKwYBBQUHAwkwaQYDVR0gBGIwYDBeBgorBgEEAc4fBAECMFAwJQYIKwYBBQUHAgIwGRoXU0sgdGltZSBzdGFtcGluZyBwb2xpY3kwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuc2suZWUvYWphdGVtcGVsLzCBiQYDVR0jBIGBMH+AFEgG3r6Mh1eVgHhj+pwjKyugOhh1oWGkXzBdMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAwDgYDVQQDEwdKdXVyLVNLggRFm6ANMB0GA1UdDgQWBBQ4AhAwumZ6EXROIl5wZQXedXpOFDANBgkqhkiG9w0BAQUFAAOCAQEAJ/LvPUevNRcBp+J78fZRofhk/ifKNLxCUoh8T3MjtU9u5R0KojRlye+1NU8MqH/zrKhr6TPxuXD0cRrFQ9Hy60II7IzzaegrQVNgq7UgQINvCuNxWZcGtEa3ba9M7tBpQeFxqp3CpBytGeVuXn65hqOBKdp/zYEiMUUkYNAT5A6SSPYLAOgARCI/ydBx+cw0l0fwYvw72FKZa2Mlt5DmXBccCtrQ4l/sb95xfANCNe5n5sBvBhY4F+sIWZUVJ8fTVh7iGaVPSayQfeAAei0m/4/ksiXBwfx6qhzyB3yqcnSk489oBrrCegua/t+3LizfHpNZvDphKMPuAZ4uheLfQA==</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=ESTEID-SK 2007 OCSP RESPONDER 2010, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2018-03-20T07:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://ocsp.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">ESTEID-SK 2007 OCSP RESPONDER 2010</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=ESTEID-SK 2007 OCSP RESPONDER 2010, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>OAIQMLpmehF0TiJecGUF3nV6ThQ=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">OCSP, ESTEID-SK 2007 OCSP RESPONDER 2010</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=ESTEID-SK 2007 OCSP RESPONDER 2010, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>OAIQMLpmehF0TiJecGUF3nV6ThQ=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2009-12-01T13:45:00Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">EID-SK 2007 OCSP RESPONDER</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIDOjCCAiKgAwIBAgIERh9YjTANBgkqhkiG9w0BAQUFADBqMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEhMB8GA1UECxMYU2VydGlmaXRzZWVyaW1pc3RlZW51c2VkMRQwEgYDVQQDEwtFSUQtU0sgMjAwNzAeFw0wNzA0MTMxMDE2NDVaFw0xMDA0MTcwOTE2NDVaMH8xCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMQ0wCwYDVQQLEwRPQ1NQMSMwIQYDVQQDExpFSUQtU0sgMjAwNyBPQ1NQIFJFU1BPTkRFUjEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD+Z0LZ6TjBzx4x+UshExea1nIMsS86xAN6u/amLV8XQE+vodEld8iqtRsrvFiQ74isYOys1JKqiq+1ryic6j2FnMDZueLiXZl51QWyuhWu+aT4BwEaA8rUxMgKJ94zWksrqSf9cjoaap+9DlDhEsrDa+/89CPl2rlZIB5lqeHLQQIDAQABo1cwVTATBgNVHSUEDDAKBggrBgEFBQcDCTAfBgNVHSMEGDAWgBQcB/Scv6QlbLO0niIfH5RIG1h6jTAdBgNVHQ4EFgQUMsMzikmZqG6CcdgnD5VAXfQeCrgwDQYJKoZIhvcNAQEFBQADggEBAH0eUFQ7LznD4R8XWj/6rsNhe0fme3Os7cyZGNkx1EWenkgdMHCV/gN3SyIfrjW7sEJM62sS1X+8Ke2J+6b5YH0TcSmSDqYICn6zVbsq5MLtHW5wmwKucBJ5xFgoC3NNCEp8wVrzuQmm6xCvFWQVQ6uNhjuxCQxcDKgLwpL7iEcBEMmTTKkvqEtqrvu/LZ/a2OHytkEoXGheN8KlEcIv7AJBPVL8OCv4UpgyUOrVnmIeX2F/KG3wmo4U3kVupuF9kaPrOeOGYG3ZzK2HNwfRNkZ/Ej7AuPazkumAHdsJBbpTdBYq8d8er8XZKai24Ra/e5eEmcMye+O8IpxAA4ExY+I=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=EID-SK 2007 OCSP RESPONDER, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2018-03-20T07:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://ocsp.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">EID-SK 2007 OCSP RESPONDER</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=EID-SK 2007 OCSP RESPONDER, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>MsMzikmZqG6CcdgnD5VAXfQeCrg=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">OCSP, EID-SK 2007 OCSP RESPONDER</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=EID-SK 2007 OCSP RESPONDER, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>MsMzikmZqG6CcdgnD5VAXfQeCrg=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2007-04-13T10:16:45Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">EID-SK 2007 OCSP RESPONDER 2010</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIEMTCCAxmgAwIBAgIESxUA8TANBgkqhkiG9w0BAQUFADBqMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEhMB8GA1UECxMYU2VydGlmaXRzZWVyaW1pc3RlZW51c2VkMRQwEgYDVQQDEwtFSUQtU0sgMjAwNzAeFw0wOTEyMDExMTQxMzBaFw0xNjA4MjYxMzIzMDBaMIGEMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czENMAsGA1UECxMET0NTUDEoMCYGA1UEAxMfRUlELVNLIDIwMDcgT0NTUCBSRVNQT05ERVIgMjAxMDEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAso91KG7EHsjAxMairaCKUHSOyXp5rzxRq5Y9LfDyplVbHfh34fbB7M5G+wnu5CZgJsfJ7DF3MjpA7nlAHd5alAynIUl/CNXejf+XnJ/vyF1eQvAoWvnjBPVIS0mbaABgF54ybAGE2E7UKeZVOAj7RoQVAMHQcYVjxZW5OWz3yJX9KdaDZPOzqlGtRYKUASHiwAFwExKcqfaHOj0qO8+KdSvEBaVlpe5kunEVEvn+kgNKBtzdH2XFMjVFa4im31KW+iq7mNQwUiZDSe9ho6T6UrWu7g8yTQowx3SYLTqVxR0YVgcYNCx7nn1AVGNxK3oeonrHHqcBp6qSAIYXeQNfiQIDAQABo4HDMIHAMBMGA1UdJQQMMAoGCCsGAQUFBwMJMGkGA1UdIARiMGAwXgYKKwYBBAHOHwQBAjBQMCUGCCsGAQUFBwICMBkaF1NLIHRpbWUgc3RhbXBpbmcgcG9saWN5MCcGCCsGAQUFBwIBFhtodHRwOi8vd3d3LnNrLmVlL2FqYXRlbXBlbC8wHwYDVR0jBBgwFoAUHAf0nL+kJWyztJ4iHx+USBtYeo0wHQYDVR0OBBYEFPBOCDPMR+kfp7Ozk5U68E68/AseMA0GCSqGSIb3DQEBBQUAA4IBAQCRaqmxZgJiJ+MLamb/P4vyS6azr6/tj8dZCK++V/3GnecRm7CiZpR47EnW0NyDzCecGyTWSkVlnZPnNvXRx700Nn0M4Inia5pNhSuVmWS3p5eV70vCbsfRD26+6CZhkHWnL/J2xpqeacULtgPPz9gBTyC2ybQr17dv7W5Qc+3UFywmE5N8ozQuEJroGz7P+yCbBEssWcmIUNDNdO0xs6aQZ1f+DV4FUB0lajuILYFz4xM+81akYFVqaGPCVwbQgFSWRKmamj8FxfWjA4DCrgkHVR1rA3tZyirfCBK9cfWpTCLr8zq9Ur0jTAeGrHRzHlUrB9mYZwyr0kNOyl9293xh</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=EID-SK 2007 OCSP RESPONDER 2010, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2018-03-20T07:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://ocsp.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">EID-SK 2007 OCSP RESPONDER 2010</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=EID-SK 2007 OCSP RESPONDER 2010, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>8E4IM8xH6R+ns7OTlTrwTrz8Cx4=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">OCSP, EID-SK 2007 OCSP RESPONDER 2010</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=EID-SK 2007 OCSP RESPONDER 2010, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>8E4IM8xH6R+ns7OTlTrwTrz8Cx4=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2009-12-01T12:41:30Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">KLASS3-SK OCSP RESPONDER 2009</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIDzzCCAregAwIBAgIEScskSjANBgkqhkiG9w0BAQUFADCBjjEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEhMB8GA1UECxMYU2VydGlmaXRzZWVyaW1pc3RlZW51c2VkMQowCAYDVQQFEwExMRIwEAYDVQQDEwlLTEFTUzMtU0swHhcNMDkwMzI2MDY0NDI2WhcNMTIwNTA0MDU0NDI2WjCBgjELMAkGA1UEBhMCRUUxIjAgBgNVBAoTGUFTIFNlcnRpZml0c2VlcmltaXNrZXNrdXMxDTALBgNVBAsTBE9DU1AxJjAkBgNVBAMTHUtMQVNTMy1TSyBPQ1NQIFJFU1BPTkRFUiAyMDA5MRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKi6weNl7Wj7sL6JD4YUNt/JXQ79KL53x5m4QGRsijGJaV5YggE5rJyVZGlsX4FSd9JFIV597ypAUGDbLPf0nDdlSIGteP7zamyETI3GI6bKfkeUuIE707r7uC+8FFe9iHOOL20+pi7WFzwnyXT9yuWs0eCoKdjQvLpMiq0MBIm9AgMBAAGjgcIwgb8wEwYDVR0lBAwwCgYIKwYBBQUHAwkwaAYDVR0gBGEwXzBdBgorBgEEAc4fBAECME8wJQYIKwYBBQUHAgIwGRoXU0sgdGltZSBzdGFtcGluZyBwb2xpY3kwJgYIKwYBBQUHAgEWGmh0dHA6Ly93d3cuc2suZWUvYWphdGVtcGVsMB8GA1UdIwQYMBaAFOU/DJ1xPW+8Gb+a9G6/Cf5A652WMB0GA1UdDgQWBBT59PTkSIzYXNBxQQnAhqH3BtED0TANBgkqhkiG9w0BAQUFAAOCAQEAhyl3H6fo1bz3mD0JcD4eY1slcwec92Qgkn6i9TsO5TlDQCJxiC/80zlh+H5dgIMcNQ6gNbr1cWsUw7xAanv2hGlg20IWq7uCyy5LDghFpO2BWDzTJjmiVTXzyVEvqST0W6efDiwi1tA8H7b+aAzc9ItWm7pYlucGvneKJq07t/UvU9ONSDUfVLPNMr8slwCMOexVDZ+eiBlvrLL3N7NouPs7UpFh/+m5JsERmeLbbrNYimHUUn2PJ/trJ3kBEVFToO+nFdBElfzC3bjSlbPXFxSOL+AqSgvRIaB4CEWUxa33wzoZNaVpCh5AupxQOGdr4u7ajw5hkV8Y9VZ7OFej6A==</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=KLASS3-SK OCSP RESPONDER 2009, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2018-03-20T07:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://ocsp.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">KLASS3-SK OCSP RESPONDER 2009</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=KLASS3-SK OCSP RESPONDER 2009, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>+fT05EiM2FzQcUEJwIah9wbRA9E=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">KLASS3-SK OCSP RESPONDER 2009</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=KLASS3-SK OCSP RESPONDER 2009, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>+fT05EiM2FzQcUEJwIah9wbRA9E=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">OCSP, KLASS3-SK OCSP RESPONDER 2009</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=KLASS3-SK OCSP RESPONDER 2009, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>+fT05EiM2FzQcUEJwIah9wbRA9E=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2009-03-26T07:44:26Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">KLASS3-SK 2010 OCSP RESPONDER</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIELzCCAxegAwIBAgICAMswDQYJKoZIhvcNAQEFBQAwbTELMAkGA1UEBhMCRUUxIjAgBgNVBAoTGUFTIFNlcnRpZml0c2VlcmltaXNrZXNrdXMxITAfBgNVBAsTGFNlcnRpZml0c2VlcmltaXN0ZWVudXNlZDEXMBUGA1UEAxMOS0xBU1MzLVNLIDIwMTAwHhcNMTAwNDA4MDgwMTMxWhcNMTYwODI1MjIwMDAwWjCBgjEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czENMAsGA1UECxMET0NTUDEmMCQGA1UEAxMdS0xBU1MzLVNLIDIwMTAgT0NTUCBSRVNQT05ERVIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDhWwGpngF0sdGCgOgiyT12A/Vdm9sMPr/cUwZhU7DA5C8rU1yJhbrh28fMpv0eas6/+IC1oDxI24zjfWIKfHwpBmhUTFsmvmKRIu4a1F6VwNwYEdoAZrQDpzZSve6H6R/+0Uy0BAolebdhPUK22pKd8V1CBY3de886Ray8uUJu09MAU8j+xsoUNOzyxiWdAVp1YTXRhhUt+EQVYJ22RBZ6+b9fPQvgb9aWgE/WwqUh7OrgTnrGZVzgO46prfE7zkALG0FYZCzQTCMH8aIqqte0E3HwSVlKh9qwbRPB9WTDCtCqajh4qgGRTXvWT4vATlHvx8GpJ3roZkp5AlQno3hTAgMBAAGjgcIwgb8waAYDVR0gBGEwXzBdBgorBgEEAc4fBAECME8wJQYIKwYBBQUHAgIwGRoXU0sgdGltZSBzdGFtcGluZyBwb2xpY3kwJgYIKwYBBQUHAgEWGmh0dHA6Ly93d3cuc2suZWUvYWphdGVtcGVsMBMGA1UdJQQMMAoGCCsGAQUFBwMJMB8GA1UdIwQYMBaAFF11FBGM9KWOQo97skBEo+7WejtyMB0GA1UdDgQWBBQ3MJkXG2Go/6j4bem465aue3P5qjANBgkqhkiG9w0BAQUFAAOCAQEAKhoVTII1ECecFkyt9Ogr0XW3WEFprrqTDE4IycMlx+LNjWk30aknMldEtzIC5nCDX27NCWkpbN1o/3ddBv0cKMa05ZK8sHQxU6A5Oev8DCp72/LFEChq5IDqgqW2BiHhyfPfr93JIuV03b/Wgq3fpRyBd21VE9254W4A90xeNxDvdpqxlrD2Lonzm/V/oomzEHsp4kKxXkPmRU4vGtTnxxAnxYp9OuLkvpUCLNoAWMbYqb4cbYzaZ9tQIkBy3nJ352Rs5obYDb3R/ZVWuYLLSocWL7b2QwlDP7LA8VNDqmQvioHt8GcyKXQ5/eWMvj2ePt58waVhwfSdd4nANKtq1g==</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>CN=KLASS3-SK 2010 OCSP RESPONDER, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE, EMAILADDRESS=pki@sk.ee</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2018-03-20T07:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://ocsp.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">KLASS3-SK 2010 OCSP RESPONDER</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=KLASS3-SK 2010 OCSP RESPONDER, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE, EMAILADDRESS=pki@sk.ee</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>NzCZFxthqP+o+G3puOuWrntz+ao=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">KLASS3-SK 2010 OCSP RESPONDER</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=KLASS3-SK 2010 OCSP RESPONDER, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE, EMAILADDRESS=pki@sk.ee</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>NzCZFxthqP+o+G3puOuWrntz+ao=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">OCSP, KLASS3-SK 2010 OCSP RESPONDER</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=KLASS3-SK 2010 OCSP RESPONDER, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE, EMAILADDRESS=pki@sk.ee</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>NzCZFxthqP+o+G3puOuWrntz+ao=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2010-04-08T08:01:31Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">SK OCSP RESPONDER 2011</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIEvDCCA6SgAwIBAgIQcpyVmdruRVxNgzI3N/NZQTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMB4XDTExMDMxODEwMjE0M1oXDTI0MDMxODEwMjE0M1owgZ0xCzAJBgNVBAYTAkVFMQ4wDAYDVQQIEwVIYXJqdTEQMA4GA1UEBxMHVGFsbGlubjEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czENMAsGA1UECxMET0NTUDEfMB0GA1UEAxMWU0sgT0NTUCBSRVNQT05ERVIgMjAxMTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAihvGyhMVrgReHluKln1za6gvCE/mlSREmWjJFpL9llvuEUZoPFIypYA8g5u1VfgkeW5gDq25jAOq4FyXeDGIa+pJn2h0o2Wc2aeppVG/emfGm/jA8jjeyMrwH8fAJrqVQ7c9X2xSwJEch/P2d8CfMZt5YF6gqLtPvG1b+n6otBZA5wjIFfJ/inJBMUvqHSz3+PLfxO2/T3Wyk/c8M9HIMqTelqyiMGRgWehiU1OsL9armv3dQrHs1wm6vHaxfpfWB9YAFpeo9aYqhPCxVt/zo2NQB6vxyZS0hsOrXL7SxRToOJaqsnvlbf0erPPFtRHUvbojYYgl+fzlz0Jt6QJoNwIDAQABo4IBHTCCARkwEwYDVR0lBAwwCgYIKwYBBQUHAwkwHQYDVR0OBBYEFKWhSGFt537NmJ50nCm7vYrecgxZMIGCBgNVHSAEezB5MHcGCisGAQQBzh8EAQIwaTA+BggrBgEFBQcCAjAyHjAAUwBLACAAdABpAG0AZQAgAHMAdABhAG0AcABpAG4AZwAgAHAAbwBsAGkAYwB5AC4wJwYIKwYBBQUHAgEWG2h0dHBzOi8vd3d3LnNrLmVlL2FqYXRlbXBlbDAfBgNVHSMEGDAWgBQS8lo+6lYcv80GrPHxJcmpS9QUmTA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vd3d3LnNrLmVlL3JlcG9zaXRvcnkvY3Jscy9lZWNjcmNhLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAw2sKwvTHtYGtD8Jw9mNUuj/mWiBSBEBeY2LhW8V6tjBPAPp3s6iWOh0FbVR2LUyrqRwgT3fyWiGsiDm/6cIqM+IblLp/8ztfRQjquhW6XCD9SK02OQ9ZSdBwcmoAApZLGXQC34wdgmV/hLTTNxONnDACBKz9U+Dy9a4ZT4tpNkbH8jq/BMne8FzbvRt1bjpXBP7gjLX+zdx8/hp0Wq4tD+f9NVX0+vm9ahEKuzx4QzPnSB7hhWM9OnLZT7noRQa+KWk5c+e5VoR5R2t7MjVl8Cd+2llxiSxqMSbU5/23BzAKgN+NQdrBZAzpZ7lfaAuLFaICP+bAm6uW2JUrM6abOw==</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=SK OCSP RESPONDER 2011, OU=OCSP, O=AS Sertifitseerimiskeskus, L=Tallinn, ST=Harju, C=EE</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://ocsp.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">OCSP, SK OCSP RESPONDER 2011</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=SK OCSP RESPONDER 2011, OU=OCSP, O=AS Sertifitseerimiskeskus, L=Tallinn, ST=Harju, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>paFIYW3nfs2YnnScKbu9it5yDFk=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2011-03-18T11:21:43Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">SK Proxy OCSP Responder 2009</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIEUjCCAzqgAwIBAgIESg1N9TANBgkqhkiG9w0BAQUFADCBjjEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEhMB8GA1UECxMYU2VydGlmaXRzZWVyaW1pc3RlZW51c2VkMQowCAYDVQQFEwExMRIwEAYDVQQDEwlLTEFTUzMtU0swHhcNMDkwNTE1MTExMTQ5WhcNMTIwNTA1MTEwNzE3WjCBgTELMAkGA1UEBhMCRUUxIjAgBgNVBAoTGUFTIFNlcnRpZml0c2VlcmltaXNrZXNrdXMxDTALBgNVBAsTBE9DU1AxJTAjBgNVBAMTHFNLIFByb3h5IE9DU1AgUmVzcG9uZGVyIDIwMDkxGDAWBgkqhkiG9w0BCQEWCXBraUBzay5lZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ6rr1AZFPunWKMJAse70wx9Utc57qgbrJdk8iiOrcUN2FApNal2wFnRIw9rsF8u9KPu3g47ZSuKKYkpdVVupTwt6gK+brQczfQShO3xOCj7cubcl5+6jDPXSh47zma10hh4tJ5VECOiCDBhIRfA/UJfMYj6BYgEhFuRQxEBgAF5yyEJX1X8Sco/GQcha4Er5SyEhHvXu/vvg0OVfLRqH/7gGBBRLPMOsDImmXf+C0UYKs7ywFBf+M0VnWH9u0p7E8XzA8s3m2ivTdU/JYIU5Zy7NFeV9NJgZw3iaLCO1dbV2gBIWpgGvqlwQ3coKHMs3tMBT25+WWmKVMsHFi254ysCAwEAAaOBwjCBvzATBgNVHSUEDDAKBggrBgEFBQcDCTBoBgNVHSAEYTBfMF0GCisGAQQBzh8EAQIwTzAlBggrBgEFBQcCAjAZGhdTSyB0aW1lIHN0YW1waW5nIHBvbGljeTAmBggrBgEFBQcCARYaaHR0cDovL3d3dy5zay5lZS9hamF0ZW1wZWwwHwYDVR0jBBgwFoAU5T8MnXE9b7wZv5r0br8J/kDrnZYwHQYDVR0OBBYEFCRXW4FmpJ/GGw3/AXu5czpgogbJMA0GCSqGSIb3DQEBBQUAA4IBAQB9U7sG/M/w7eXBQh5tDOZ7XLCRmhrmGk9+1RdAP54SmMzc1nnglmfgl13ncaizPleu0p8541a51XCYqQMJbry47YkEnq48ImiAjEpkbaCZsZhX06uUpA9DlstEW/wBZzSCUoGsklbBolwTWAP97B7trizPe102hNvD5IMaXrMqaH9hQcoYmKyJHBQnxW2bXxYjeXvIDcAQvevLP8IIOLqdib029GFcM7U889FaBcO4cPxx4kITXC2hAvdiZwGuDVAz15Byl8RAfNWrlmv+IBRSQpAecnLYozJYyRNcFPrYLd9aXbej6p6sRCHgC452czoM0VbMmisrK8pm6yZ0J1r+</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=SK Proxy OCSP Responder 2009, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2018-03-20T07:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://ocsp.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">SK Proxy OCSP Responder 2009</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=SK Proxy OCSP Responder 2009, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>JFdbgWakn8YbDf8Be7lzOmCiBsk=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">OCSP, SK Proxy OCSP Responder 2009</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=SK Proxy OCSP Responder 2009, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>JFdbgWakn8YbDf8Be7lzOmCiBsk=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2009-05-15T11:11:49Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">ESTEID-SK OCSP RESPONDER</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIDuDCCAqCgAwIBAgIEPJilyDANBgkqhkiG9w0BAQUFADB8MRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMQ8wDQYDVQQLEwZFU1RFSUQxCjAIBgNVBAQTATExEjAQBgNVBAMTCUVTVEVJRC1TSzAeFw0wMjAzMjAxNTA3NTJaFw0wNTAzMjQxNTA3NTJaMGoxCzAJBgNVBAYTAkVFMQ8wDQYDVQQKEwZFU1RFSUQxDTALBgNVBAsTBE9DU1AxITAfBgNVBAMTGEVTVEVJRC1TSyBPQ1NQIFJFU1BPTkRFUjEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC10BeCObXZZWcDX298Wqfd16hpi9tuSbT4L+kowTj+aWz7PDsFpKQWqhxCdlicu67xCT0zAAjaK6x9cwasiIdre++IkscRi00w20G5nTPocxpwGTHqwHx4ED7cceK4t4pbj/zB8FluVNVii8ouG9ZEhH76j/Icx0X27Sq5AS0CwwIDAQABo4HXMIHUMBMGA1UdJQQMMAoGCCsGAQUFBwMJMBIGCSsGBAUFBzABBQQFMAMEATAwgYkGA1UdIwSBgTB/gBR4F7UF+bNYzVmM3mdeRAZMdYZpXaFhpF8wXTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TS4IEPERcgjAdBgNVHQ4EFgQUzpYj2gwlDYK9ahyGyKa0AkK5ys0wDQYJKoZIhvcNAQEFBQADggEBADrq0tGkwsrddEqUbsOpXi75Xs4GVkOyseysNqZZCvLqCF7qTSMiC+fzRxQbXQDhuOT7QQvi3JAoA5zTIm2RvIO1fmrVnJ6CsObjxxvXtcSLI+bICG4uQYgEA+duDRgICpmtCCjtmxb+2/cSJLGioaKiwn0YwgeEowOgjDMh2o4otm6FjtyT1GZsZm56U7WkFa7tSwkHKw427iZUWVrED6W9AfATY14rNnAk8Jqz06w4rPnGE4kYjO+UqMLmFU2KImdrTp1O7h4YLCVlxH/e/He8r7FSgzXSG4EqlD/TMEdCLu7DSWR3SEgJPvKWCpNWzv2DRldHp+kQO3k+R/f2c80=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>EMAILADDRESS=pki@sk.ee, C=EE, O=ESTEID, OU=OCSP, CN=ESTEID-SK OCSP RESPONDER</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2018-03-20T07:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://ocsp.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">ESTEID-SK OCSP RESPONDER</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=ESTEID-SK OCSP RESPONDER, OU=OCSP, O=ESTEID, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>zpYj2gwlDYK9ahyGyKa0AkK5ys0=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">OCSP, ESTEID-SK OCSP RESPONDER</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=ESTEID-SK OCSP RESPONDER, OU=OCSP, O=ESTEID, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>zpYj2gwlDYK9ahyGyKa0AkK5ys0=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2002-03-20T16:07:52Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">KLASS3-SK OCSP RESPONDER (2003)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIDXTCCAkWgAwIBAgIEPolzuzANBgkqhkiG9w0BAQUFADCBjjEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEhMB8GA1UECxMYU2VydGlmaXRzZWVyaW1pc3RlZW51c2VkMQowCAYDVQQFEwExMRIwEAYDVQQDEwlLTEFTUzMtU0swHhcNMDMwNDAxMTExMDUxWhcNMDYwNDA1MTAxMDUxWjB9MQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czENMAsGA1UECxMET0NTUDEhMB8GA1UEAxMYS0xBU1MzLVNLIE9DU1AgUkVTUE9OREVSMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALXQF4I5tdllZwNfb3xap93XqGmL225JtPgv6SjBOP5pbPs8OwWkpBaqHEJ2WJy7rvEJPTMACNorrH1zBqyIh2t774iSxxGLTTDbQbmdM+hzGnAZMerAfHgQPtxx4ri3iluP/MHwWW5U1WKLyi4b1kSEfvqP8hzHRfbtKrkBLQLDAgMBAAGjVzBVMBMGA1UdJQQMMAoGCCsGAQUFBwMJMB8GA1UdIwQYMBaAFOU/DJ1xPW+8Gb+a9G6/Cf5A652WMB0GA1UdDgQWBBTOliPaDCUNgr1qHIbIprQCQrnKzTANBgkqhkiG9w0BAQUFAAOCAQEAd/8FCyPC9zXxcAZN67KCNU4+XNJ8e+LmG602lBe+lS7Pw4pOgMKebgULKh1fEBHQ2K7FSUWMZdPWkDHaKVRh646yVbFZbfEmKNq4LhRf13/hoUdrG5uRVmCsV03WSfgfUVfb1cZf8tDMIwCmsNXu22k9wykeHallpUmGUfbVZygqfKE2NVQpm2FULiKWBFKXqbMtW5R3xmDS3bjrAIAdUdYhxhfdCHCphsQf/FJlxb8UFOUa8SeRNr5eL7s8znLnrC5pKPpWGbUNSlrhLJZHIeXfwbOamae6UVvjto6bMqRe2sxCsMA0dGz+tMiglfmTVInxpEKBkyvF/on/2qwtVw==</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>EMAILADDRESS=pki@sk.ee, C=EE, O=AS Sertifitseerimiskeskus, OU=OCSP, CN=KLASS3-SK OCSP RESPONDER</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/deprecatedatnationallevel</ServiceStatus>
++ <StatusStartingTime>2018-03-20T07:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://ocsp.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">KLASS3-SK OCSP RESPONDER (2003)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=KLASS3-SK OCSP RESPONDER, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>zpYj2gwlDYK9ahyGyKa0AkK5ys0=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">KLASS3-SK OCSP RESPONDER (2003)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=KLASS3-SK OCSP RESPONDER, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>zpYj2gwlDYK9ahyGyKa0AkK5ys0=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">OCSP, KLASS3-SK OCSP RESPONDER (2003)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=KLASS3-SK OCSP RESPONDER, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>zpYj2gwlDYK9ahyGyKa0AkK5ys0=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2003-04-01T11:10:51Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">KLASS3-SK OCSP RESPONDER (2006)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIDXTCCAkWgAwIBAgIERCKLGDANBgkqhkiG9w0BAQUFADCBjjEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEhMB8GA1UECxMYU2VydGlmaXRzZWVyaW1pc3RlZW51c2VkMQowCAYDVQQFEwExMRIwEAYDVQQDEwlLTEFTUzMtU0swHhcNMDYwMzIzMTE0ODQwWhcNMDkwMzI3MTE0ODQwWjB9MQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czENMAsGA1UECxMET0NTUDEhMB8GA1UEAxMYS0xBU1MzLVNLIE9DU1AgUkVTUE9OREVSMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKKTI8Aex0Gva9eeeBkM3fGTiNOEvjj2McN3tOJBMAEvG/G7Npu0/2fAEKFFUv4NnPyH3MiC7s6R8PtPMhV5GBG6kWVztL/gQnlIjAbo1l654+jApIQjT3vdVZDIYyS6lKlYoAdG40CgLlVtRihargQ77azlfORkyRfhKZcSQe8tAgMBAAGjVzBVMBMGA1UdJQQMMAoGCCsGAQUFBwMJMB8GA1UdIwQYMBaAFOU/DJ1xPW+8Gb+a9G6/Cf5A652WMB0GA1UdDgQWBBQUQsudE6pYaIJSuWurylGItfy52DANBgkqhkiG9w0BAQUFAAOCAQEAV+Vu+qzrHe7HDjMHq9DdOQTz833QcMRY0huSgphMOgqNjqjPqTNpHPgNvE6HKGdQ0+VWr8IyRWcxnPMZNihmaCGMpFMpYuH0fx9nsjXDbjat8MfGuX2m1EADGOwjtjMuoYTEGEUe3MBeFkmPFDIYpeuS+I4Qv34tOsGvFOpsDkobSATq4EFw/5hI9WfWaEMYkmBXdeokoVjbNpt+gtdGKNBU42AlxLrcc+YzAE1hj5qH99/hl0X6r63pTjUb1ZMRjGQg7ELwmddms7wB5LKKi5kbfmag5hBtDKGs2s0xW1be4ylNOrT9lqUYuPn9lwcHNg1IS42mYVChV97Tlt/5vw==</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>EMAILADDRESS=pki@sk.ee, C=EE, O=AS Sertifitseerimiskeskus, OU=OCSP,CN=KLASS3-SK OCSP RESPONDER</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2018-03-20T07:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://ocsp.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">KLASS3-SK OCSP RESPONDER (2006)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=KLASS3-SK OCSP RESPONDER, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>FELLnROqWGiCUrlrq8pRiLX8udg=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">KLASS3-SK OCSP RESPONDER (2006)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=KLASS3-SK OCSP RESPONDER, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>FELLnROqWGiCUrlrq8pRiLX8udg=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">OCSP, KLASS3-SK OCSP RESPONDER (2006)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=KLASS3-SK OCSP RESPONDER, OU=OCSP, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>FELLnROqWGiCUrlrq8pRiLX8udg=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2006-03-23T12:48:40Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">SK Proxy OCSP Responder 2008</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIEgTCCA2mgAwIBAgIESQbcTzANBgkqhkiG9w0BAQUFADCBjjEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEhMB8GA1UECxMYU2VydGlmaXRzZWVyaW1pc3RlZW51c2VkMQowCAYDVQQFEwExMRIwEAYDVQQDEwlLTEFTUzMtU0swHhcNMDgxMDI4MDkzMzAzWhcNMTExMTAyMDgzMzAzWjCBlTELMAkGA1UEBhMCRUUxIjAgBgNVBAoTGUFTIFNlcnRpZml0c2VlcmltaXNrZXNrdXMxITAfBgNVBAsTGFNlcnRpZml0c2VlcmltaXN0ZWVudXNlZDElMCMGA1UEAxMcU0sgUHJveHkgT0NTUCBSZXNwb25kZXIgMjAwODEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnquvUBkU+6dYowkCx7vTDH1S1znuqBusl2TyKI6txQ3YUCk1qXbAWdEjD2uwXy70o+7eDjtlK4opiSl1VW6lPC3qAr5utBzN9BKE7fE4KPty5tyXn7qMM9dKHjvOZrXSGHi0nlUQI6IIMGEhF8D9Ql8xiPoFiASEW5FDEQGAAXnLIQlfVfxJyj8ZByFrgSvlLISEe9e7+++DQ5V8tGof/uAYEFEs8w6wMiaZd/4LRRgqzvLAUF/4zRWdYf27SnsTxfMDyzebaK9N1T8lghTlnLs0V5X00mBnDeJosI7V1tXaAEhamAa+qXBDdygocyze0wFPbn5ZaYpUywcWLbnjKwIDAQABo4HdMIHaMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDCTBoBgNVHSAEYTBfMF0GCisGAQQBzh8EAQIwTzAlBggrBgEFBQcCAjAZGhdTSyB0aW1lIHN0YW1waW5nIHBvbGljeTAmBggrBgEFBQcCARYaaHR0cDovL3d3dy5zay5lZS9hamF0ZW1wZWwwHwYDVR0jBBgwFoAU5T8MnXE9b7wZv5r0br8J/kDrnZYwHQYDVR0OBBYEFCRXW4FmpJ/GGw3/AXu5czpgogbJMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQEFBQADggEBALnuqrbcM13+ISq6lzIbwaHr6Om2zAialZcAAU0i++lqs1lLTSA/cXoRuUIcjJ54Csh9pVPt3tJ76193H57ICkeKE+YhpHKFTdD3tPtgAU0prOlwiVq7Gh5MR+sMNX2TKaWTj0qd8Vgeui4MB5uWSUWYCNlKnmgoZbV+Zt0AyBHQVG9oRbqcEfK1iPUJw/sjkDUdghUHNUTcXpXfIPWCEvhQz+BX3TRNkR4NREvAwT/tHVtweJi+mr7RPrbtvdYBjdTppFwZVZDpGC34AM6KtL+mpVeGkK73h5V/pDvQ1rmLQn2L2GJe6n9ztghE/BB5zYJ1hWACaoJh5lEm+6xNPyU=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>EMAILADDRESS=pki@sk.ee, C=EE, O=AS Sertifitseerimiskeskus, OU=Sertifitseerimisteenused, CN=SK Proxy OCSP Responder 2008</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/deprecatedatnationallevel</ServiceStatus>
++ <StatusStartingTime>2018-03-20T07:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://ocsp.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">SK Proxy OCSP Responder 2008</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=SK Proxy OCSP Responder 2008, OU=Sertifitseerimisteenused, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>JFdbgWakn8YbDf8Be7lzOmCiBsk=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/Certstatus/OCSP</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">OCSP, SK Proxy OCSP Responder 2008</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>EMAILADDRESS=pki@sk.ee, CN=SK Proxy OCSP Responder 2008, OU=Sertifitseerimisteenused, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>JFdbgWakn8YbDf8Be7lzOmCiBsk=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2008-10-28T10:33:03Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">SK Time-Stamping Authority for qualified electronic time stamps</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIEDTCCAvWgAwIBAgIQJK/s6xJo0AJUF/eG7W8BWTANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMB4XDTE0MDkxNjA4NDAzOFoXDTE5MDkxNjA4NDAzOFowYzELMAkGA1UEBhMCRUUxIjAgBgNVBAoMGUFTIFNlcnRpZml0c2VlcmltaXNrZXNrdXMxDDAKBgNVBAsMA1RTQTEiMCAGA1UEAwwZU0sgVElNRVNUQU1QSU5HIEFVVEhPUklUWTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJPa/dQKemSKCNSwlMUp9YKQY6zQOfs9vgUnbzTRHCRBRdsabZYknxTI4DqQ5+JPqw8MTkDvb6nfDZGd15t4oY4tHXXoCfRrbMjJ9+DV+M7bd+vrBI8vi7DBCM59/VAjxBAuZ9P7Tsg8o8BrVqqB9c0ezlSCtFg8X0x2ET3ZBtZ49UARh/XP07I7eRk/DtSLYauxJDPzXVEZmSJCIybclox93u8F5/o8GySbD5GYMhffOJgXmul/Vz7eR0d5SxCMvJIRrP7WfiJYaUjLYqL2wjFQe/nUltcGCn2KtqGCyH7vl+Xzefea6Xjc8ebTgan2FJ0UH0mHv98lWADKuTI2fXcCAwEAAaOBqjCBpzAOBgNVHQ8BAf8EBAMCBsAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwHQYDVR0OBBYEFLGwvffmoGkWbCDlUftc9DBic1cnMB8GA1UdIwQYMBaAFBLyWj7qVhy/zQas8fElyalL1BSZMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly93d3cuc2suZWUvcmVwb3NpdG9yeS9jcmxzL2VlY2NyY2EuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQCopcU932wVPD6eed+sDBht4zt+kMPPFXv1pIX0RgbizaKvHWU4oHpRH8zcgo/gpotRLlLhZbHtu94pLFN6enpiyHNwevkmUyvrBWylONR1Yhwb4dLS8pBGGFR6eRdhGzoKAUF4B4dIoXOj4p26q1yYULF5ZkZHxhQFNi5uxak9tgCFlGtzXumjL5jBmtWeDTGE4YSa34pzDXjz8VAjPJ9sVuOmK2E0gyWxUTLXF9YevrWzRLzVFqw+qewBV2I4of/6miZOOT2wlA/meL7zr3hnfo7KSJQmMNUjZ6lh6RBIVvYI0t+A/fpTKiZfviz/Xn2e4PC6i57wmH5EgOOav0UK</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>C=EE, O=AS Sertifitseerimiskeskus, OU=TSA, CN=SK TIMESTAMPING AUTHORITY</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2020-09-28T22:01:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://tsa.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">SK Time-Stamping Authority for qualified electronic time stamps</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=SK TIMESTAMPING AUTHORITY, OU=TSA, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>sbC99+agaRZsIOVR+1z0MGJzVyc=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:01:00Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">SK TIMESTAMPING AUTHORITY</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=SK TIMESTAMPING AUTHORITY, OU=TSA, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>sbC99+agaRZsIOVR+1z0MGJzVyc=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">SK TIMESTAMPING AUTHORITY</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=SK TIMESTAMPING AUTHORITY, OU=TSA, O=AS Sertifitseerimiskeskus, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>sbC99+agaRZsIOVR+1z0MGJzVyc=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2014-09-16T08:40:38Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">SK Time-Stamping Authority for qualified electronic time stamps (SK-TSA 2019)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIEFjCCAv6gAwIBAgIQftdGTujTD01cG10EjrASbDANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMB4XDTE5MDEwMTIxMDAwMFoXDTI0MDEwMTIxMDAwMFowejEnMCUGA1UEAwweU0sgVElNRVNUQU1QSU5HIEFVVEhPUklUWSAyMDE5MRcwFQYDVQRhDA5OVFJFRS0xMDc0NzAxMzEMMAoGA1UECwwDVFNBMRswGQYDVQQKDBJTSyBJRCBTb2x1dGlvbnMgQVMxCzAJBgNVBAYTAkVFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqfl9D1lK8LveyTb3tlOJZfc0J+W3uG7czOZuQKigwkxq2JXrqndigVtSZWzNnoO+somaNgXqw0lpu+8P0NdUw+y1a4znJntvf7HK4WNrHO94DcrcxIJRdRkxRH/e3/0SE1FpX8B96IgyjeQj9Y3tgHYAfSMo0Sj2ANYc/NpF59NWf0nBzJ5QvXD80N1ybiVVu4NALKFxTOEHPRmdFdptNNEaipwHyLwaSDpXCtnXxBz6zV/jIsMYCxNl0cXlx+mkD97scmLhGB27rmI8qEPM6Tue0iGp1Tb6hIFdEQF2gZ8VPOsyJl3cpQd5GRkT63bOtHUm54TYCfw/P7NhO7pFLwIDAQABo4GcMIGZMA4GA1UdDwEB/wQEAwIGwDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAdBgNVHQ4EFgQUnUvt/uXDNtWuqmMvTSBvDyrTJxYwHwYDVR0jBBgwFoAUEvJaPupWHL/NBqzx8SXJqUvUFJkwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUFBzABhhNodHRwOi8vYWlhLnNrLmVlL0NBMA0GCSqGSIb3DQEBCwUAA4IBAQApC2BNnwqlgm3KsBMbp0lWw2uGVzUXiu4Cfsol6290Jzn6UftA3HjOG33vg5Dl3SV9Z97AfqgbE4A9Czms8veHwtNRLIaAHuRVm6C/GWa4+nuzNFoAK1pjjBGoPWvfYhud/bAlbYY1qF6nHA50/tFT0GGixrnmI9YsZ0tuXM9pQaoO0YnoCvw8cvMIt68WqIEST+OoCZipgdQRZ5IEJTmvE+LLBDuE87orGfxxswsy+jnOfHX8MLBOhWglrJ7RrXLNdKXOlbvhcU3vXl89gKtWWfr+OdVGdJc+/A3wdtTFhNdy7Ce0VIiZvmEx/UtUmfF41g/y+3lXOb3h6ipk037x</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>C=EE, O=SK ID Solutions AS, OU=TSA, OID.2.5.4.97=NTREE-10747013, CN=SK TIMESTAMPING AUTHORITY 2019</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>nUvt/uXDNtWuqmMvTSBvDyrTJxY=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2024-02-08T05:00:01Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://tsa.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">SK Time-Stamping Authority for qualified electronic time stamps (SK-TSA 2019)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>C=EE, O=SK ID Solutions AS, OU=TSA, OID.2.5.4.97=NTREE-10747013, CN=SK TIMESTAMPING AUTHORITY 2019</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>nUvt/uXDNtWuqmMvTSBvDyrTJxY=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2019-03-10T22:00:00Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">SK Time-Stamping Authority for qualified electronic time stamps (SK-TSA 2020)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIEFjCCAv6gAwIBAgIQYjZ9dFrZQ6tdpFC5Xj/6bjANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMB4XDTE5MTIzMTIyMDAwMFoXDTI0MTIzMTIyMDAwMFowejEnMCUGA1UEAwweU0sgVElNRVNUQU1QSU5HIEFVVEhPUklUWSAyMDIwMRcwFQYDVQRhDA5OVFJFRS0xMDc0NzAxMzEMMAoGA1UECwwDVFNBMRswGQYDVQQKDBJTSyBJRCBTb2x1dGlvbnMgQVMxCzAJBgNVBAYTAkVFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxdOHoO/xEAXVYd6m64QhKHoNZhT5L+wEkO59DH4K8lW1r//kEJusfY60zDY8o9s96HYACcQOR9Yltg3T3neqRZJ5GEPt5uFzCWzuSdyxIWMacxu/sSYaln4bqbCd97ML4qVdvwPGLNGRu8Utuy0JyhyuoBICHUcgyw1O2ATlc+95zdhGvKq15gazGXTpVUYgLpInkChp1ojZCv/WFdKN3dNGB5tqn3xsdfUfGDWxe4gLFFLeXjxo0pT2Y+5hJF1+r+PllZRnu1LKXEcrHxeyyZ+KL6wSLUyvfxZ++5hd0wR1pCnVgZ+hfYaGZ+YGRJXtiIA8DFqeKZ6qAhA8a6v99QIDAQABo4GcMIGZMA4GA1UdDwEB/wQEAwIGwDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAdBgNVHQ4EFgQUqD4KKP6RKqGdYfXNlT35pc1GkjEwHwYDVR0jBBgwFoAUEvJaPupWHL/NBqzx8SXJqUvUFJkwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUFBzABhhNodHRwOi8vYWlhLnNrLmVlL0NBMA0GCSqGSIb3DQEBCwUAA4IBAQAJ06Qp/kiOhcNbEsDUVGfLuVycKjEbrGGMWnAj18S08aWx7ijXtDD9mY5CxtRUl9IbjB/eyl/Rt8RDVURtIioiNckkxC/bOHxiCj2WNCvRxo8GT/qn4M1vV/Sy8vwx/ZlYsZrlRnuo7/dqPsQyxIgRGbUp12bVKO4KQb4DNOcA6KDwcPd2zv4nBT/4XW7qD07spW9LPVKEvsOU1MV1tznjD0lC5ZL67FdB8kKEJCbbNfqVLVBOYjBopct5qzTLLPB5LTmV8I281XzTEqeFxbFy+wo7VOT6K36OYSd+9CnPn2M/l6VfrSCi3OvaWcq+lggGR1kQzDsS4lN1JoyZqd39</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>C=EE, O=SK ID Solutions AS, OU=TSA, OID.2.5.4.97=NTREE-10747013, CN=SK TIMESTAMPING AUTHORITY 2020</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>qD4KKP6RKqGdYfXNlT35pc1GkjE=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2025-02-14T03:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://tsa.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">SK Time-Stamping Authority for qualified electronic time stamps (SK-TSA 2020)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>C=EE, O=SK ID Solutions AS, OU=TSA, OID.2.5.4.97=NTREE-10747013, CN=SK TIMESTAMPING AUTHORITY 2020</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>qD4KKP6RKqGdYfXNlT35pc1GkjE=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2019-12-03T22:00:00Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">SK Time-Stamping Authority for qualified electronic time stamps (SK-TSA 2021)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIEWjCCA0KgAwIBAgIQCrITQgwdM4hfdZRtSgVwszANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMB4XDTIwMTIzMTIyMDAwMVoXDTI1MTIzMTIyMDAwMVowejEnMCUGA1UEAwweU0sgVElNRVNUQU1QSU5HIEFVVEhPUklUWSAyMDIxMRcwFQYDVQRhDA5OVFJFRS0xMDc0NzAxMzEMMAoGA1UECwwDVFNBMRswGQYDVQQKDBJTSyBJRCBTb2x1dGlvbnMgQVMxCzAJBgNVBAYTAkVFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwmZuFcXZ3UGPjIEX0mldGSTiUxMcfG8Fh0f4VlAg6aN/buuRVaEpwrS7UfTD/HF7JojcJidFf7wTBd+B52oqYhya7rT/d11exeDtwIZpymksqC+F8bWoleJ3HkSByyGfuGcGGSnowaCjcZqTT2YCT40PdfJfPIaUqobjNC9idFP/FOzgHWu8hUiOAixZ+X22r0CVgTnNW0/xiaRPq/PgpgDAsxlYDABonFKiCEfHyK5T1rjV585lfwWBcPo5jnI9tIyT3fSB06QZ0i4rmFcPli/0XvyHrGNNpJNPJ9lb9d0VhcPwktoDr2nBFgBzpjRufwVPjQCBuDVidkuMEjLOTwIDAQABo4HgMIHdMA4GA1UdDwEB/wQEAwIGwDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAdBgNVHQ4EFgQUEDIBfAAH5r+iCV+irQKE3Tk2/h8wHwYDVR0jBBgwFoAUEvJaPupWHL/NBqzx8SXJqUvUFJkwcwYIKwYBBQUHAQEEZzBlMB8GCCsGAQUFBzABhhNodHRwOi8vYWlhLnNrLmVlL0NBMEIGCCsGAQUFBzAChjZodHRwOi8vYy5zay5lZS9FRV9DZXJ0aWZpY2F0aW9uX0NlbnRyZV9Sb290X0NBLmRlci5jcnQwDQYJKoZIhvcNAQELBQADggEBACnGDxtyt0EmeLyGhwW01/rg6q9KStXW65qwNnTdW7QpY+3Q8Oc64zJAAOAkfcaSa1BqlJmO7QMkSnpeEa5AH//48bdfZ0RYRGnEpoqq6L5Qi6iCHBduRDxrea0bR7s/UaIB9PMR6jNU7Y4hSlAZCTxZvsuOwgbYzU1kJipc5mh4nSDU3qyL7vPefgQAgLMOhMI78ZFSHGxGJf+BNOaHzD4IYBRd81Facnr5+hfD2gNFPcuf9DPFVinKUG9c4XuKj6V30fGBBZoSfju53Jk6/aGfKwKWLpN13Sh4RMb+KL2S/mDIMKRVCst901nPorgq58Bjd/zm6CptMqABrIpGRl8=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>C=EE, O=SK ID Solutions AS, OU=TSA, OID.2.5.4.97=NTREE-10747013, CN=SK TIMESTAMPING AUTHORITY 2021</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>EDIBfAAH5r+iCV+irQKE3Tk2/h8=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2020-11-13T22:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://tsa.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ </ServiceInformation>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">SK Time-Stamping Authority for qualified electronic time stamps (SK-TSA 2022)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIEWjCCA0KgAwIBAgIQBwcMlj8ecuJheR6JfOMRZjANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMB4XDTIxMTIzMTIyMDAwMVoXDTI3MTIzMTIyMDAwMVowejEnMCUGA1UEAwweU0sgVElNRVNUQU1QSU5HIEFVVEhPUklUWSAyMDIyMRcwFQYDVQRhDA5OVFJFRS0xMDc0NzAxMzEMMAoGA1UECwwDVFNBMRswGQYDVQQKDBJTSyBJRCBTb2x1dGlvbnMgQVMxCzAJBgNVBAYTAkVFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlgz0fx7rjs9QC/aFmkHHIuLWTxxJCBGzK/SB9tEYpSfK0++TnOOby6de2cDfnmin3Yk3F840xLM4gms8M4Fu/MOVG17Alv0vua4ygRmhH7O2dWM8lTyi+8sRuyeQC4o9+LS9aCzESZUKyYlf/KsM4DYqIE254mzU8YodMqoHPwsp4gAev+1zP2hdzQfQBbO9+cviCpzBjcEtHJquQH6W7waIBOMhrXMQBIOuj6qVkKUbvDN1spQcmLWGY1NooF2lJQyCPyzLSxa1tIivhHNb3edLCRuklZwo1yco6T/yJHxIwH36hX6AJ/s1btXYg+GRL602Rk7VBzTc30dhPLZIPwIDAQABo4HgMIHdMA4GA1UdDwEB/wQEAwIGwDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAdBgNVHQ4EFgQUsnUQr3QDIUM34ksgHzFY59QFNQcwHwYDVR0jBBgwFoAUEvJaPupWHL/NBqzx8SXJqUvUFJkwcwYIKwYBBQUHAQEEZzBlMB8GCCsGAQUFBzABhhNodHRwOi8vYWlhLnNrLmVlL0NBMEIGCCsGAQUFBzAChjZodHRwOi8vYy5zay5lZS9FRV9DZXJ0aWZpY2F0aW9uX0NlbnRyZV9Sb290X0NBLmRlci5jcnQwDQYJKoZIhvcNAQELBQADggEBABInW9utp6qGo1QB57aGQ3tKST+f9aFmceDMZ+w0XGuQ+W/m4YKnVDmb0O8a+TykHaQnwD7obf6hA8zV3NXFAW6JmLiy4wycnJwKPS3qmZ42dPANtlq3upvgPzMhbCzGaXxRZZrfb4ikZGSPJreer6Sgymv4wZku21Com1xFY52sQQdB2C43/cQwur9Xqx/XWoiS+ZSrNrU0RUu0h4YN5pM6WcGxgcNOquI7vtkWS060QgmWss0l2n9rgfd+RVzjiKAr/364DCR++VCWcUj0uiCgmpo5o/NHUcy0BTX6dTgOOcFAxLwQR4uOmAPEFPpKhXoPRfZLSo1yBW8cO3EemxU=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>C=EE, O=SK ID Solutions AS, OU=TSA, OID.2.5.4.97=NTREE-10747013, CN=SK TIMESTAMPING AUTHORITY 2022</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>snUQr3QDIUM34ksgHzFY59QFNQc=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2021-12-27T22:00:24Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://tsa.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ </ServiceInformation>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">SK Time-Stamping Authority for qualified electronic time stamps (SK-TSA 2023)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIEWjCCA0KgAwIBAgIQMo9kZ98qZ1djdKF45mVRATANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMB4XDTIyMTIzMTIyMDAwMVoXDTI4MTIzMTIyMDAwMVowejEnMCUGA1UEAwweU0sgVElNRVNUQU1QSU5HIEFVVEhPUklUWSAyMDIzMRcwFQYDVQRhDA5OVFJFRS0xMDc0NzAxMzEMMAoGA1UECwwDVFNBMRswGQYDVQQKDBJTSyBJRCBTb2x1dGlvbnMgQVMxCzAJBgNVBAYTAkVFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnefs1HxAHAVoc7IabGuHXp4IrX1cC9hDa/lidDrodPiFF6y+8EAQEzP22LkrrxPVybrep3kodxFj4aVw4i6Q3c8EYyLE1gbbtrB4vTxeQIB2f2HGZ56Hr3uNj8JD+/iFvCe/5iAEso8dRVSX48kRRe8viAw6fnifXb+8iyff8y0VIcfSveNLiQXkYNB+TxQ0f/5+PCTIFez4pIzw8p0ZSIddUzldx2beyspNhAiju1cgy/bMULscv8j7YbFKZ4TmsUZHZuQc59MjaljderlwtV/tLBrg3OqR5nDq1Oi+aukjMNQX3FS76yXlPnwte2l3+0GrEGYst9yfpQk8c0xdcwIDAQABo4HgMIHdMA4GA1UdDwEB/wQEAwIGwDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAdBgNVHQ4EFgQUuTR73sWfYH5L+mH3/RD0UAlC7egwHwYDVR0jBBgwFoAUEvJaPupWHL/NBqzx8SXJqUvUFJkwcwYIKwYBBQUHAQEEZzBlMB8GCCsGAQUFBzABhhNodHRwOi8vYWlhLnNrLmVlL0NBMEIGCCsGAQUFBzAChjZodHRwOi8vYy5zay5lZS9FRV9DZXJ0aWZpY2F0aW9uX0NlbnRyZV9Sb290X0NBLmRlci5jcnQwDQYJKoZIhvcNAQELBQADggEBACQXxeUVbmleiJ5NIN3f7Iv426xyTHXIxaxTh3T6MrLnVOBtCxa99jqKTG6Ljz1N6m/wE3GSnLVDL5Q77FqhJRasiyl3lJUjz82n0GL4L+C1JiW+n5dy6nUJUnSDHZhhD3LfnHxWLLfyRyWmDltXVHhU6Sgn2syAUrZ/aIzufY++iX0yoWYaMKhgfyz848r+nh+sK2pVp5rVT57D7x5+xFWDeyLQjhe9tHmXyGCyyjISChg+3cV+oQUY6VeMWS40+8E+rAHtxgvhN3YiSDGvOdNct6whea+daYyuJqu4emGCDHKa63iPSXhuD2c/AhiqSesCuRsRCEVNr/iLC5Il37Q=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>C=EE, O=SK ID Solutions AS, OU=TSA, OID.2.5.4.97=NTREE-10747013, CN=SK TIMESTAMPING AUTHORITY 2023</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>uTR73sWfYH5L+mH3/RD0UAlC7eg=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2022-12-31T22:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://tsa.sk.ee</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ </TSPServiceDefinitionURI>
++ </ServiceInformation>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">SK Time-Stamping Authority for qualified electronic time stamps (SK-TSA 2024E)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIDjzCCAxWgAwIBAgIQfwlWDTXOBgXEqiABoa6ncTAKBggqhkjOPQQDAjBdMRgwFgYDVQQDDA9TSyBUU0EgQ0EgMjAyM0UxFzAVBgNVBGEMDk5UUkVFLTEwNzQ3MDEzMRswGQYDVQQKDBJTSyBJRCBTb2x1dGlvbnMgQVMxCzAJBgNVBAYTAkVFMB4XDTIzMTAwMTExMzE1OFoXDTMwMDQwMTExMzE1N1owaDEjMCEGA1UEAwwaU0sgVElNRVNUQU1QSU5HIFVOSVQgMjAyNEUxFzAVBgNVBGEMDk5UUkVFLTEwNzQ3MDEzMRswGQYDVQQKDBJTSyBJRCBTb2x1dGlvbnMgQVMxCzAJBgNVBAYTAkVFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6ie8TjQ1MsNdMX7X2fCAkHYLZZH24Jt4pSa4rxsKEvobnpZ1r6kkZ8idEAS2+06sr6eRvDKAFbCEs0ZStuBf6KOCAaowggGmMB8GA1UdIwQYMBaAFFoYwDTO17eZ3wiQwAR9GPNzlr3PMGYGCCsGAQUFBwEBBFowWDAzBggrBgEFBQcwAoYnaHR0cHM6Ly9jLnNrLmVlL1NLX1RTQV9DQV8yMDIzRS5kZXIuY3J0MCEGCCsGAQUFBzABhhVodHRwOi8vb2NzcC5zay5lZS90c2EwgZ4GA1UdIASBljCBkzCBkAYGBACPegECMIGFMDsGCCsGAQUFBwIBFi9odHRwczovL3d3dy5za2lkc29sdXRpb25zLmV1L2VuL3JlcG9zaXRvcnkvdHNhLzBGBggrBgEFBQcCAjA6DDhUU1UgY2VydGlmaWNhdGUgaGFzIGJlZW4gaXNzdWVkIGFjY29yZGluZyB0byBOQ1ArIHBvbGljeTAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vYy5zay5lZS9za190c2FfY2FfMjAyM2UuY3JsMB0GA1UdDgQWBBT05pTRiTTkkODyNnyZ/56xX8UKUzAOBgNVHQ8BAf8EBAMCBsAwCgYIKoZIzj0EAwIDaAAwZQIwGOjwcHIvgTdwZcargDFJnao48XZJ6QpoTrPOzFhpOXuB4TFweq0/knkExnTAPUE/AjEA+5Rae12eOciDTXgkq95JRyTMoKx7Gvg8OievvYOJLVpFHGKlnEC2aIiFtC8OfldS</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>C=EE, O=SK ID Solutions AS, OID.2.5.4.97=NTREE-10747013, CN=SK TIMESTAMPING UNIT 2024E</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>9OaU0Yk05JDg8jZ8mf+esV/FClM=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2023-11-07T22:00:18Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://tsa.sk.ee/ecc</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ </ServiceInformation>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">SK Time-Stamping Authority for qualified electronic time stamps (SK-TSA 2024R)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>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</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>C=EE, O=SK ID Solutions AS, OID.2.5.4.97=NTREE-10747013, CN=SK TIMESTAMPING UNIT 2024R</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>rkeDrnDnLIaZ/4S9aS7Uu0/PjjU=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2023-11-07T22:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://tsa.sk.ee/rsa</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ <URI xml:lang="et">https://sk.ee/repositoorium/</URI>
++ </TSPServiceDefinitionURI>
++ </ServiceInformation>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">KLASS3-SK ORG 2021E qualified certificate for electronic seal</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIDiDCCAuqgAwIBAgIQH5sBIc4ZTj1hWvEFaRQX9DAKBggqhkjOPQQDAzBmMQswCQYDVQQGEwJFRTEbMBkGA1UECgwSU0sgSUQgU29sdXRpb25zIEFTMRcwFQYDVQRhDA5OVFJFRS0xMDc0NzAxMzEhMB8GA1UEAwwYU0sgSUQgU29sdXRpb25zIFJPT1QgRzFFMB4XDTIxMTAwNDEyMTgxMloXDTM2MTAwNDEyMTgxMlowZzELMAkGA1UEBhMCRUUxGzAZBgNVBAoMElNLIElEIFNvbHV0aW9ucyBBUzEXMBUGA1UEYQwOTlRSRUUtMTA3NDcwMTMxIjAgBgNVBAMMGVNLIElEIFNvbHV0aW9ucyBPUkcgMjAyMUUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAT5UvJTY26GyX5dkIOsjGOvy4W1MFXjWgXW3q9aqT1yuEOUyuPnHtm/fTUiIXY5PCVviBhdqubUdP/U9bxOs6M6oTptGU9SJgQ7JY9tK4HbpJPk+J3Iz1JHMqq3JCktyUWjggFaMIIBVjAfBgNVHSMEGDAWgBSGdE866zjysKfu7bmFm52DCUUxazAdBgNVHQ4EFgQU/Inn/EN4/+wsw4Soo4DjI0ga1CgwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwbQYIKwYBBQUHAQEEYTBfMCAGCCsGAQUFBzABhhRodHRwOi8vb2NzcC5zay5lZS9DQTA7BggrBgEFBQcwAoYvaHR0cDovL2Muc2suZWUvU0tfSURfU29sdXRpb25zX1JPT1RfRzFFLmRlci5jcnQwLwYDVR0fBCgwJjAkoCKgIIYeaHR0cDovL2Muc2suZWUvU0tfUk9PVF9HMUUuY3JsMFAGA1UdIARJMEcwRQYEVR0gADA9MDsGCCsGAQUFBwIBFi9odHRwczovL3d3dy5za2lkc29sdXRpb25zLmV1L2VuL3JlcG9zaXRvcnkvQ1BTLzAKBggqhkjOPQQDAwOBiwAwgYcCQXQIw72bQj2lOzbDp3xy5TlFqBPQBIN0YbWV+TSenzGfqT6aQjHTZ9migRQeEXw97kXLSD3wN/g9LQ9Ok1dZvDQ3AkIAt+bOVtVzJr+43e8IFl4Cot5wPywcmI042EtuAT1SJ7lOkIUoaQZ6ZPj3pnI+5wX+z6s753MznY97AdwpGvEADkE=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>CN=SK ID Solutions ORG 2021E, OID.2.5.4.97=NTREE-10747013, O=SK ID Solutions AS, C=EE</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>/Inn/EN4/+wsw4Soo4DjI0ga1Cg=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2024-10-17T01:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++ <Extension Critical="true">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ <Extension Critical="true">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCQSCDStatusAsInCert"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:0.4.0.194112.1.3</ns4:Identifier>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>Any certificate that is issued under the CA/QC Sdi certificate and that is issued as a QC (i.e. containing a QcCompliance statement) and having its Certificate Policy PolicyIdentifier OID set as 0.4.0.194112.1.3, is to be considered as supported by a QSCD. They are issued for digital stamping according to eIDAS regulation</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="true">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForLegalPerson"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">false</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) is to be considered as issued to a Legal Person</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="true">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="true">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESeal"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description/>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">KLASS3-SK ORG 2021E</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=SK ID Solutions ORG 2021E, OID.2.5.4.97=NTREE-10747013, O=SK ID Solutions AS, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>/Inn/EN4/+wsw4Soo4DjI0ga1Cg=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2024-02-08T05:00:41Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="true">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++ </AdditionalServiceInformation>
++</Extension>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCQSCDStatusAsInCert"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:0.4.0.194112.1.3</ns4:Identifier>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>Any certificate that is issued under the CA/QC Sdi certificate and that is issued as a QC (i.e. containing a QcCompliance statement) and having its Certificate Policy PolicyIdentifier OID set as 0.4.0.194112.1.3, is to be considered as supported by a QSCD. They are issued for digital stamping according to eIDAS regulation</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForLegalPerson"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">false</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) is to be considered as issued to a Legal Person</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="true">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESeal"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description/>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">KLASS3-SK ORG 2021R qualified certificate for electronic seal</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>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</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>CN=SK ID Solutions ORG 2021R, OID.2.5.4.97=NTREE-10747013, O=SK ID Solutions AS, C=EE</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>4samGOCgsknyhaCx7UTxvYfIpjY=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2024-10-17T01:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++ <Extension Critical="false">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ <Extension Critical="false">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCQSCDStatusAsInCert"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:0.4.0.194112.1.3</ns4:Identifier>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>Any certificate that is issued under the CA/QC Sdi certificate and that is issued as a QC (i.e. containing a QcCompliance statement) and having its Certificate Policy PolicyIdentifier OID set as 0.4.0.194112.1.3, is to be considered as supported by a QSCD. They are issued for digital stamping according to eIDAS regulation</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="false">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForLegalPerson"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">false</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) is to be considered as issued to a Legal Person</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="false">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ <Extension Critical="false">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESeal"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">KLASS3-SK ORG 2021R</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=SK ID Solutions ORG 2021R, OID.2.5.4.97=NTREE-10747013, O=SK ID Solutions AS, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>4samGOCgsknyhaCx7UTxvYfIpjY=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2024-02-08T05:00:37Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="false">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals</URI>
++ </AdditionalServiceInformation>
++</Extension>
++<Extension Critical="false">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCQSCDStatusAsInCert"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:0.4.0.194112.1.3</ns4:Identifier>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>Any certificate that is issued under the CA/QC Sdi certificate and that is issued as a QC (i.e. containing a QcCompliance statement) and having its Certificate Policy PolicyIdentifier OID set as 0.4.0.194112.1.3, is to be considered as supported by a QSCD. They are issued for digital stamping according to eIDAS regulation</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="false">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForLegalPerson"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="atLeastOne">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">false</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>Any certificate issued under the CA/QC Sdi certificate and is issued as a QC (i.e. containing a QcCompliance statement) is to be considered as issued to a Legal Person</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="false">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++<Extension Critical="false">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESeal"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">EID-SK-Q 2021E qualified certificates for electronic signatures </Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIDizCCAuygAwIBAgIQecuY8QtISqphWu7gI1Bg4zAKBggqhkjOPQQDAzBmMQswCQYDVQQGEwJFRTEbMBkGA1UECgwSU0sgSUQgU29sdXRpb25zIEFTMRcwFQYDVQRhDA5OVFJFRS0xMDc0NzAxMzEhMB8GA1UEAwwYU0sgSUQgU29sdXRpb25zIFJPT1QgRzFFMB4XDTIxMTAwNDEyMDkwNFoXDTM2MTAwNDEyMDkwNFowaTELMAkGA1UEBhMCRUUxGzAZBgNVBAoMElNLIElEIFNvbHV0aW9ucyBBUzEXMBUGA1UEYQwOTlRSRUUtMTA3NDcwMTMxJDAiBgNVBAMMG1NLIElEIFNvbHV0aW9ucyBFSUQtUSAyMDIxRTB2MBAGByqGSM49AgEGBSuBBAAiA2IABARd6setRXHlBuFzkZJwxhF6JYTAU79CeQhtlCvctME5AaGKUGblox+ssIrWmh5mCkbpyWJmsiqYhn3qyKmfmCdmjB09rOdKwz522D1m+UWFDQnwKVD/LBFifq2WMJQOj6OCAVowggFWMB8GA1UdIwQYMBaAFIZ0TzrrOPKwp+7tuYWbnYMJRTFrMB0GA1UdDgQWBBTolOaPYRI99x/BLk/8FI8tC4LYHDAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADBtBggrBgEFBQcBAQRhMF8wIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLnNrLmVlL0NBMDsGCCsGAQUFBzAChi9odHRwOi8vYy5zay5lZS9TS19JRF9Tb2x1dGlvbnNfUk9PVF9HMUUuZGVyLmNydDAvBgNVHR8EKDAmMCSgIqAghh5odHRwOi8vYy5zay5lZS9TS19ST09UX0cxRS5jcmwwUAYDVR0gBEkwRzBFBgRVHSAAMD0wOwYIKwYBBQUHAgEWL2h0dHBzOi8vd3d3LnNraWRzb2x1dGlvbnMuZXUvZW4vcmVwb3NpdG9yeS9DUFMvMAoGCCqGSM49BAMDA4GMADCBiAJCANcDgGx2tAky5vu1LoyXKPqe7DlWo/kDv6GR30OSYxB4FOm9xslclKUSObuyTsSvNY8yqk8souAMMShaJbW8G49BAkIA6+WMbJjw3Wly7ezIxciQkKV4ODVK+fUxlP6a3CJ3SbhsGOnUQ/DandSsyDuxAYzXJQD3XqzO+QpYFu9fDuXej6k=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>CN=SK ID Solutions EID-Q 2021E, OID.2.5.4.97=NTREE-10747013, O=SK ID Solutions AS, C=EE</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>6JTmj2ESPfcfwS5P/BSPLQuC2Bw=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2024-10-17T01:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++ <Extension Critical="false">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ <Extension Critical="false">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:1.3.6.1.4.1.10015.18.1</ns4:Identifier>
++ <ns4:Description>Certificate Policy for Qualified Mobile-ID</ns4:Description>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">EID-SK-Q 2021E qualified certificates for electronic signatures </Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=SK ID Solutions EID-Q 2021E, OID.2.5.4.97=NTREE-10747013, O=SK ID Solutions AS, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>6JTmj2ESPfcfwS5P/BSPLQuC2Bw=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2024-10-17T01:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="false">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++<Extension Critical="false">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:1.3.6.1.4.1.10015.17.2</ns4:Identifier>
++ <ns4:Description>Certificate Policy for Qualified Smart-ID</ns4:Description>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:1.3.6.1.4.1.10015.18.1</ns4:Identifier>
++ <ns4:Description>Certificate Policy for Qualified Mobile-ID</ns4:Description>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">EID-SK-Q 2021E</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=SK ID Solutions EID-Q 2021E, OID.2.5.4.97=NTREE-10747013, O=SK ID Solutions AS, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>6JTmj2ESPfcfwS5P/BSPLQuC2Bw=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2024-02-08T05:00:01Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="false">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++<Extension Critical="false">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:1.3.6.1.4.1.10015.17.2</ns4:Identifier>
++ <ns4:Description>Certificate Policy for Qualified Smart-ID</ns4:Description>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:1.3.6.1.4.1.10015.18.1</ns4:Identifier>
++ <ns4:Description>Certificate Policy for Qualified Mobile-ID</ns4:Description>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">EID-SK-Q 2021R qualified certificates for electronic signatures</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>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</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>CN=SK ID Solutions EID-Q 2021R, OID.2.5.4.97=NTREE-10747013, O=SK ID Solutions AS, C=EE</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>pW/ifkyViDntwvVH12J+c6YD1YY=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2024-10-17T01:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++ <Extension Critical="false">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ <Extension Critical="false">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:1.3.6.1.4.1.10015.18.1</ns4:Identifier>
++ <ns4:Description>Certificate Policy for Qualified Mobile-ID</ns4:Description>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">EID-SK-Q 2021R qualified certificates for electronic signatures</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=SK ID Solutions EID-Q 2021R, OID.2.5.4.97=NTREE-10747013, O=SK ID Solutions AS, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>pW/ifkyViDntwvVH12J+c6YD1YY=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2024-10-17T01:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="false">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++<Extension Critical="false">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:1.3.6.1.4.1.10015.17.2</ns4:Identifier>
++ <ns4:Description>Certificate Policy for Qualified Smart-ID</ns4:Description>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:1.3.6.1.4.1.10015.18.1</ns4:Identifier>
++ <ns4:Description>Certificate Policy for Qualified Mobile-ID</ns4:Description>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">EID-SK-Q 2021R</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>CN=SK ID Solutions EID-Q 2021R, OID.2.5.4.97=NTREE-10747013, O=SK ID Solutions AS, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>pW/ifkyViDntwvVH12J+c6YD1YY=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2024-02-08T05:00:20Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++<Extension Critical="false">
++ <AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++ </AdditionalServiceInformation>
++</Extension>
++<Extension Critical="false">
++ <ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:1.3.6.1.4.1.10015.17.2</ns4:Identifier>
++ <ns4:Description>Certificate Policy for Qualified Smart-ID</ns4:Description>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:1.3.6.1.4.1.10015.18.1</ns4:Identifier>
++ <ns4:Description>Certificate Policy for Qualified Mobile-ID</ns4:Description>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++ </ns5:Qualifications>
++</Extension>
++ </ServiceInformationExtensions>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">EID-SK-Q 2024E qualified certificates for electronic signatures</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIDrzCCAxCgAwIBAgIUJFmkBcQvQ0QOhvceUs8st3JaFI4wCgYIKoZIzj0EAwMwZjELMAkGA1UEBhMCRUUxGzAZBgNVBAoMElNLIElEIFNvbHV0aW9ucyBBUzEXMBUGA1UEYQwOTlRSRUUtMTA3NDcwMTMxITAfBgNVBAMMGFNLIElEIFNvbHV0aW9ucyBST09UIEcxRTAeFw0yNDA3MDIwODM0NThaFw0zOTA2MjkwODM0NTdaMGkxJDAiBgNVBAMMG1NLIElEIFNvbHV0aW9ucyBFSUQtUSAyMDI0RTEXMBUGA1UEYQwOTlRSRUUtMTA3NDcwMTMxGzAZBgNVBAoMElNLIElEIFNvbHV0aW9ucyBBUzELMAkGA1UEBhMCRUUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASS0qdCTcqwsTWm/TSe1ZTHV8+92muF2Lr8s8og8kF8lVAk/b9BEIch0SlB99gWbjZcXEGVY5pn3TnxbOIB4gAfbcrkToAGHZ6CnQHy0Cu1yGx26SgxGiIT7G6aWKgVjRyjggF6MIIBdjASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFIZ0TzrrOPKwp+7tuYWbnYMJRTFrMG0GCCsGAQUFBwEBBGEwXzA7BggrBgEFBQcwAoYvaHR0cDovL2Muc2suZWUvU0tfSURfU29sdXRpb25zX1JPT1RfRzFFLmRlci5jcnQwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLnNrLmVlL0NBMHAGA1UdIARpMGcwBgYEVR0gADBdBgNVHSAwVjBUBggrBgEFBQcCARZIaHR0cHM6Ly93d3cuc2tpZHNvbHV0aW9ucy5ldS9yZXNvdXJjZXMvY2VydGlmaWNhdGlvbi1wcmFjdGljZS1zdGF0ZW1lbnQvMC8GA1UdHwQoMCYwJKAioCCGHmh0dHA6Ly9jLnNrLmVlL1NLX1JPT1RfRzFFLmNybDAdBgNVHQ4EFgQUdkUHZ+4lf+4gTZwsqVexnp+H1TkwDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA4GMADCBiAJCAIBxMfYdVnp1WBtpFerhlPritsebecWtmgE59KIirv/bsIPBIFecs6TyvLY00l0XVD0KoEuPQ+OxjPbNX5e2GmWoAkIBjZTfQqK4XPWV0QIBMr2GIFCTWOVs4MY/jMMBmGnZ283eQ+PTJhyz2kA+rEdlhlMGwz1RGIuh2gbUwvB11yoHhnc=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>C=EE, O=SK ID Solutions AS, OID.2.5.4.97=NTREE-10747013, CN=SK ID Solutions EID-Q 2024E</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>dkUHZ+4lf+4gTZwsqVexnp+H1Tk=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2024-10-17T01:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++ <Extension Critical="false">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ <Extension Critical="false">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCQSCDManagedOnBehalf"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:1.3.6.1.4.1.10015.17.2</ns4:Identifier>
++ <ns4:Description>Certificate Policy for Qualified Smart-ID</ns4:Description>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/CA/QC</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">EID-SK-Q 2024R qualified certificates for electronic signatures</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>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</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>C=EE, O=SK ID Solutions AS, OID.2.5.4.97=NTREE-10747013, CN=SK ID Solutions EID-Q 2024R</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>U/DnNLlgAkLLml/Vz0mTHxwNn1c=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2024-10-17T01:00:00Z</StatusStartingTime>
++ <ServiceInformationExtensions>
++ <Extension Critical="false">
++<AdditionalServiceInformation>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures</URI>
++</AdditionalServiceInformation>
++ </Extension>
++ <Extension Critical="false">
++<ns5:Qualifications>
++ <ns5:QualificationElement>
++ <ns5:Qualifiers>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCStatement"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCForESig"/>
++ <ns5:Qualifier uri="http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/QCQSCDManagedOnBehalf"/>
++ </ns5:Qualifiers>
++ <ns5:CriteriaList assert="all">
++ <ns5:KeyUsage>
++ <ns5:KeyUsageBit name="nonRepudiation">true</ns5:KeyUsageBit>
++ </ns5:KeyUsage>
++ <ns5:PolicySet>
++ <ns5:PolicyIdentifier>
++ <ns4:Identifier Qualifier="OIDAsURN">urn:oid:1.3.6.1.4.1.10015.17.2</ns4:Identifier>
++ <ns4:Description>Certificate Policy for Qualified Smart-ID</ns4:Description>
++ </ns5:PolicyIdentifier>
++ </ns5:PolicySet>
++ <ns5:Description>All certificates issued under this CA/QC service that have nonRepudiation bit set exclusively are issued as qualified certificates</ns5:Description>
++ </ns5:CriteriaList>
++ </ns5:QualificationElement>
++</ns5:Qualifications>
++ </Extension>
++ </ServiceInformationExtensions>
++ </ServiceInformation>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">SK Time-Stamping Authority for qualified electronic time stamps (SK-TSA 2025E)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIDjDCCAxOgAwIBAgIQAM2krlZn0f8oqXSmRMfyPjAKBggqhkjOPQQDAjBdMRgwFgYDVQQDDA9TSyBUU0EgQ0EgMjAyM0UxFzAVBgNVBGEMDk5UUkVFLTEwNzQ3MDEzMRswGQYDVQQKDBJTSyBJRCBTb2x1dGlvbnMgQVMxCzAJBgNVBAYTAkVFMB4XDTI1MDIyODIyMDAwMFoXDTMxMDMyOTIxNTk1OVowaDEjMCEGA1UEAwwaU0sgVElNRVNUQU1QSU5HIFVOSVQgMjAyNUUxFzAVBgNVBGEMDk5UUkVFLTEwNzQ3MDEzMRswGQYDVQQKDBJTSyBJRCBTb2x1dGlvbnMgQVMxCzAJBgNVBAYTAkVFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEziAk0sCAdrr2jwUEtFKSXDPu8BWi1ITk89PvvPGOhOt9tYkwyS8XSd2l2BiLK2tq/8eE30PYAt32Injdy8FC/KOCAagwggGkMB8GA1UdIwQYMBaAFFoYwDTO17eZ3wiQwAR9GPNzlr3PMGQGCCsGAQUFBwEBBFgwVjAyBggrBgEFBQcwAoYmaHR0cDovL2Muc2suZWUvU0tfVFNBX0NBXzIwMjNFLmRlci5jcnQwIAYIKwYBBQUHMAGGFGh0dHA6Ly9haWEuc2suZWUvdHNhMIGeBgNVHSAEgZYwgZMwgZAGBgQAj3oBAjCBhTA7BggrBgEFBQcCARYvaHR0cHM6Ly93d3cuc2tpZHNvbHV0aW9ucy5ldS9lbi9yZXBvc2l0b3J5L3RzYS8wRgYIKwYBBQUHAgIwOgw4VFNVIGNlcnRpZmljYXRlIGhhcyBiZWVuIGlzc3VlZCBhY2NvcmRpbmcgdG8gTkNQKyBwb2xpY3kwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2Muc2suZWUvc2tfdHNhX2NhXzIwMjNlLmNybDAdBgNVHQ4EFgQUean8iWa8bFRphkphpMAC/QDT6p4wDgYDVR0PAQH/BAQDAgbAMAoGCCqGSM49BAMCA2cAMGQCMDKqkQ5/KTNJn8ygXrvnfW83T4GKf/NhIEQaI7NiLnYz+Z1nV58NnEWPf9QHFODq7AIwIZXcVbx1IxcKm1LH+DyF1Te3NfhcpkWuPC8hymZej2WXGL2FWzChUkwma5z1C2JG</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>C=EE, O=SK ID Solutions AS, OID.2.5.4.97=NTREE-10747013, CN=SK TIMESTAMPING UNIT 2025E</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>ean8iWa8bFRphkphpMAC/QDT6p4=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2025-02-14T03:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://tsa.sk.ee/ecc</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ </TSPServiceDefinitionURI>
++ </ServiceInformation>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">SK Time-Stamping Authority for qualified electronic time stamps (SK-TSA 2025R)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>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</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>C=EE, O=SK ID Solutions AS, OID.2.5.4.97=NTREE-10747013, CN=SK TIMESTAMPING UNIT 2025R</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>zYZVoIgDU5EOivFLS4RCMIzCwaI=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2025-02-14T03:00:00Z</StatusStartingTime>
++ <ServiceSupplyPoints>
++ <ServiceSupplyPoint>http://tsa.sk.ee/rsa</ServiceSupplyPoint>
++ </ServiceSupplyPoints>
++ <TSPServiceDefinitionURI>
++ <URI xml:lang="en">https://sk.ee/en/repository/</URI>
++ </TSPServiceDefinitionURI>
++ </ServiceInformation>
++ </TSPService>
++ </TSPServices>
++ </TrustServiceProvider>
++ <TrustServiceProvider>
++ <TSPInformation>
++ <TSPName>
++ <Name xml:lang="en">GuardTime OÜ</Name>
++ </TSPName>
++ <TSPTradeName>
++ <Name xml:lang="en">VATEE-101114112</Name>
++ <Name xml:lang="en">GuardTime AS</Name>
++ <Name xml:lang="en">Guardtime</Name>
++ <Name xml:lang="en">Guardtime OÜ</Name>
++ <Name xml:lang="en">VATEE-11313216</Name>
++ </TSPTradeName>
++ <TSPAddress>
++ <PostalAddresses>
++ <PostalAddress xml:lang="en">
++ <StreetAddress>Tammsaare tee 60</StreetAddress>
++ <Locality>Tallinn</Locality>
++ <PostalCode>11316</PostalCode>
++ <CountryName>EE</CountryName>
++ </PostalAddress>
++ </PostalAddresses>
++ <ElectronicAddress>
++ <URI xml:lang="en">mailto:info@guardtime.com</URI>
++ <URI xml:lang="en">https://www.guardtime.com</URI>
++ </ElectronicAddress>
++ </TSPAddress>
++ <TSPInformationURI>
++ <URI xml:lang="en">https://guardtime.com/library/tsp</URI>
++ </TSPInformationURI>
++ </TSPInformation>
++ <TSPServices>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">TSA0</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICwDCCAagCAQEwDQYJKoZIhvcNAQELBQAwJjENMAsGA1UEAxMEVFNBMDEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMB4XDTExMDQyOTA5MTUxNVoXDTEyMDUyOTA5MTUxNVowJjENMAsGA1UEAxMEVFNBMDEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2WKqpwAceqQ1DNnsIvmj7AsSFgFR4g0U3ot8aLmIVT3cJ0rVN8PaQ4zuCIGf0xTM6mp1nQRqvtEScYkijZ9lSW44KDs4P71rC/8MYuX0NL/AwDlevmjCEkvHvqCQw7SAJ5gFkObc6FGjMcOzzVDTLc/0g9txSaFy6A2kTQYWY2a7DhqRDVBJphGhW8ir28DmH+AGRxj5I3vs6V8W/x1xy90yWunh8b/DNbS+29YKQ04phwPl0Ks59qvsgm1wPppix0xf/mp9HGC574q0zq2Ee7v4PAhu2FwY2t6Hj887KTWeVDUaRsVtwKqqDWJdmJBG/Pa96H/k9v1t5Lln8NlxHQIDAMm9MA0GCSqGSIb3DQEBCwUAA4IBAQBit30I5IzoldRcKYbWRLPrii5nNcmdLFfOVbjjfh/BcQV4G9cIaNtimuaw75Kq0eVuMaD1GBzn3gNSA7UFpCURt5xtEt/TNdO4ht+SLkVuFeW7AgRSlsJ/M1LiNrQei7qkPRTYrJwT4TGFbycy6oQVkHsFx0WSntG1TECDxNfutS4oKJQVp9pCwt99CVpt2M1sniIRFIsCgeYgwP6EqB0fwHpAZGZeX42VMmvLUFdkuijBgW8phGP5yxDWGWHkY/l+XDTZB2SlBbYcgDpQuS1k0lhGRZScIDSUr4g2ig1LBrbPlMakNXg/EWh74KkDeDDE8NSZFnh/cr2azvcXqt1G</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=GuardTime AS, CN=TSA0</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">TSA0</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=GuardTime AS, CN=TSA0</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>FYIbyUnpkQO13KX4X2hiUVTAjj8=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2011-04-29T12:15:15Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">TSA1</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICwDCCAagCAQEwDQYJKoZIhvcNAQELBQAwJjENMAsGA1UEAxMEVFNBMTEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMB4XDTExMDQyOTExMDMzOFoXDTEyMDUyOTExMDMzOFowJjENMAsGA1UEAxMEVFNBMTEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3IeYUjkf9LPKTkMUrjeOofT57NjJd+5WUmrsTRDGJsW6CWN/rM405B4EbXdrxeKR5TXqvTc8uKB8vb7QdQTBYAEiy8y49jL0wApQ40B2wnAj7kpyeWHwvMLwqeVyAxFxcR+gytsUxdRXl601g7GvwlXpCqi8Alj4vKykx99SBgsrya0CnR63v+Rgwv+0tc3A24b5SiE395Dzh1R9N1pgXWYNOPqn98A1cYWGA0bwayHzpcqw+e4YcR6qQ1gykULsPNlnIGCkakiOshblezzB1WrSziT6lNAjNSev+M7Uo4j6bCB3sFRrv1NXJWM7AqLxn+zC1xVqihB+N9m0YmNkjQIDAPHnMA0GCSqGSIb3DQEBCwUAA4IBAQDUXshmA1Kx+fPyMrbQkOim5FrSoTuLw4Jaxhhcw5wQLTnI0H25IwciqGisi7ou4fYffaQISbLfbXEpGG2aaZ9DPGGeG//5NPvtLoxLYw3igmaCYi4QEQ+O8Q5bH/YgxJWIZha8qtDXYjBVq7giX+1Kkb4O87BcBm9yGWXnDbu/Cbjvv+lnbhLff3N9AGlhEVZW4y/WNgd4RjRANYuKHLsNdBBT2jnxTirGzHRbcQ3QwxJUcTO+z8f/WUJfq6b/VayReUnWrrmYG6btzU2iwUUusb+eZ2uvNNAjuIJS+ngc8g9FLlty5ZcTR+SadzU1H36mdCE1uGHVDl3L07SlHNja</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=GuardTime AS, CN=TSA1</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">TSA1</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=GuardTime AS, CN=TSA1</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>45sv4BLKD1el+RtP/81SVdyGgmc=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2011-04-29T14:03:38Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">TSA1</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICwDCCAagCAQEwDQYJKoZIhvcNAQELBQAwJjENMAsGA1UEAxMEVFNBMTEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMB4XDTEwMDQwOTA5MzMzNFoXDTExMDUwOTA5MzMzNFowJjENMAsGA1UEAxMEVFNBMTEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx77CtLsrKHF3SswUv5uBEilPF3hJS6J+W54dKIFj4fE0xkxl7J7yMlDMf3Gk2tunTpZolsOKDPCbsl/9SsV8dY7y+yCT7bRT467yfi2zqTrFybHjXduYGSlvagNpYVw260he6gVH27D/IdpQv2eWOOScGAWcBOZTr6pZxEuX7b24luq7sSci8hv4ARpJamWBTLQX6sdxfiPhjnyMIacEGOQuEQgUjPKxAxo45ApwSHWESD7lAm2PQNacSZJg8+pkxrOq0s/7FrsgfJzQxlDhyF9BA7u28ilsCL60WdVbxqshmQBp91yyuX3ZHAkJ8Wp0kT8EwVfVnLutFWxzXp/4gwIDAOHjMA0GCSqGSIb3DQEBCwUAA4IBAQAAYwPUlEPIzB88xdz9WTaC8/QNF/DbfYOYKOD5439rGPhWjJ0YBe6SliohQf3lK0tfBrnaCj+Nw8EwzJ7fUD6+9xJ4FLSSQPSsH3pxZliAdiLXKWXUNou6jiPTh9gSDBkkjHvWCMhHj7GNDdIEABbwfqsSlejzNsQZGUVu9Z7vP0+flTGvqC3qIJqschhpQWZqaD4YR73K06H+JEFn6vnGQ6UVsWM/KDaktvLStQui/OwIqK8kyEm2cpCQOdkVPJZ7vTcGDgonWvbwaxf78xPJUqHSNkuWIHveV6dFlS949v1eJYEwvcsv6DyVD6UI8A2efjnQmjA4KbXucmWzm0KY</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=GuardTime AS, CN=TSA1</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">TSA1</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=GuardTime AS, CN=TSA1</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>nsIInN9NggJuait7/oodYeuYG8E=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2010-04-09T12:33:34Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">TSA2</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICwDCCAagCAQEwDQYJKoZIhvcNAQELBQAwJjENMAsGA1UEAxMEVFNBMjEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMB4XDTEwMDQxMjA3NTIyOVoXDTExMDUxMjA3NTIyOVowJjENMAsGA1UEAxMEVFNBMjEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp430lCKJvdyzzdK95iX4IlSE3MyVDkiPcQWKdvM/O0K/skXMKxK9308G01VVPz4Q0Fe/zm9Hd/b0tF6lNehGpi+CUfS13eq32JZvfyI7UsGNZCiU0nnkuGUUfLCXqlEMVsqfxXu9RAhwaJE3Zw0GZLc4jSF9xJy1HRSSryUkgp09pOl/PP5l0IgBeUESM0U3ALPvS5xjgMpYJAOshZCIS+rsyO1Cp83ymVNyGAw2jUCgjHGHu/l+wbTw8b6C2pUnqcUacaemjctKhtf6hNs+5+uTPBW2q9oA8k2c0SQii7+V04H8L8rvSdLaeVuNDgjEjzqPIJV7oS62APrWlWOf3wIDAKlzMA0GCSqGSIb3DQEBCwUAA4IBAQCCHTCmS6YOLlnhSEMpOq6F6ZUPq7B4BIEVJPlZOkrPuGRnwXY3CP1CM01mM2FcNc7OMYwEVyJNt11Aj12kB2yoCGCqABdYij78P2n4MzQykakymH/IQhTiP6rZ1glB1stye5yboAvezm5Cor9IbdGSf9QEv7DPGYqqyEwDAqCIhIgyKWBDTixcKkRFlP7hvDWCzYaDaCzaxcxN0Cjv0KTMoTDzK97IZJ2+qrBcgP/9AEsZIfPOlvzObbrRpnmwowwgNvYT3p3il7irrIwHryQh8H1kU4AwxmHtuMDcVKvQQrxpCQuEITPlBlelY2MdXKRoCcu4q//X5lq9YYP1XIjH</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=GuardTime AS, CN=TSA2</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">TSA2</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=GuardTime AS, CN=TSA2</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>aj+TWPM7OpTB+vFnEQk4DETK8Hk=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2010-04-12T10:52:29Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">TSA1</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICwDCCAagCAQEwDQYJKoZIhvcNAQELBQAwJjENMAsGA1UEAxMEVFNBMTEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMB4XDTEyMDUwMzA4NDEwM1oXDTEzMDYwMzA4NDEwM1owJjENMAsGA1UEAxMEVFNBMTEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0AjnC81sjs87Vv9e8XDGWcKaj7kJTxuaeWpC+WULglfyU2YSawqwb1PZbM9AT0Oi4Dz44tCG1o0Kcaeik+vWFe7AU3GSSC9K4Y3+jrhKZEOhySn1yI1DMdnl+Iv844R/IqS+XEKvP0c2LLnT0Bnmz6l8GIUh2c9MJWXIXfNyfgymldyT3ssw/RabL/IksTdqMsa9B7ar81vtmEG2rzsUjCl6I8U6N7Etv3hseALX/mcdWplpWn8uxAGUl8KqskF1itQ04BOU3P6Qk0WsLFBNCeQ2Rj+HcHPEdxtkT1eM0IbmOT71FuS7YZjC5fqza+CoiSPKBMJioU+28KG1qOFC1QIDAOwjMA0GCSqGSIb3DQEBCwUAA4IBAQBftgbUf5jzWS5EwcLmi7OgQ4ejPme6ZO5M+SX4OJh8cTViXOpqrF6JmIaFl7auqTKa4KNtgWmeGzjaqD3U9WamJ2aU3xmtf+t9rHWns9dBE+JRVdwNIjvOyEt+foSCENaFxtPRDqpaphx/fYC+jdCdNh+JHuKxqf1tW9ktBFNxG7qxmSeBa4eC+RosAXtt0gbmHBVMOQJOApGKIlQzruJ3c5YrCRzza/+D9jSkyp196VO+aYmt2epLMTK5CvJlgIjvF/vyuJuEXAnqd1Si6qUbfLxchWHgJ/dxUf7DxeqpPzJ8s+V0CD0fXYTIHa3p9Kz7/gLqpZMcuY8OH0nVnYOn</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=GuardTime AS, CN=TSA1</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">TSA1</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=GuardTime AS, CN=TSA1</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>QdnoWaDRXvOdBJZ4GSjbfUW5bjs=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2012-05-28T07:45:00Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">TSA2</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICwDCCAagCAQEwDQYJKoZIhvcNAQELBQAwJjENMAsGA1UEAxMEVFNBMjEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMB4XDTEyMDUwMjEyMTM1M1oXDTEzMDYwMjEyMTM1M1owJjENMAsGA1UEAxMEVFNBMjEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuWgbOYOThEhCRi61lnP3GSdD+V4sjuQCehCt9MJ+yyFvrEcJewvGhMaCBq7mUJul0yV5pCNoSH7gLDaO8XByJ4acmV8DxKAH1KlLSH/tashAjxQLMbReolA9c/qKiwO1oK12z5OCN7rA9C7PBO8gk/sCLFacOwgYtDCz7faY5l94AEaniIA62hT3PZ7Sd0IkcL5Gp9goJ2tZdQ+G58GBZawF+pfS2dzWSkKxWiV/lMzZahRdaXUF7vCGsXDsVHqS3AhL7ZblGCRVX0Thg+RCyRBqE12iPea8HWcVMxSJFHLhvSvKHTpj3iA6WVIOCJGUlhcz7h373WCKtgwGx7U+tQIDAMRFMA0GCSqGSIb3DQEBCwUAA4IBAQC4F/SnPubK6gaCyw5/7+sMTMILecuEGZ3W3ScAWLY4KP04pS7ViqlJxCvH3brl52dc9gUG0h602hRlEhdcXpk96tcd108er0mv666mGp97CT92vIL2E46mnz6QUG8uWyNfs+7K5SCgfkAflU7+lypM0NjOLXfDgCDRK2x3S7EAJh1mlqYSRHL9mst1sBLxjUMzi2xzOEGh5SaijIb0xelm2bp2J3JZrCvyjvGGA+95xRwHrGL9sMFdksrY6u66gG9zea8qurkSzRYBv0OGNUHwQWpw95QPZ47IITq9ipqC+J67FIEZheHTUtgPfvx1ch19IS8GiSM72M6rAeS8Kq19</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=GuardTime AS, CN=TSA2</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">TSA2</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=GuardTime AS, CN=TSA2</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>wDEee81dyoI53eLTZ4ElUd6o/QE=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2012-05-28T07:45:00Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">TSA1</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICwDCCAagCAQEwDQYJKoZIhvcNAQELBQAwJjENMAsGA1UEAxMEVFNBMTEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMB4XDTEyMTAxOTE3MzE0M1oXDTEzMTAxOTE3MzE0M1owJjENMAsGA1UEAxMEVFNBMTEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+OA6jsb8QE/mLd3RPZFW40+l9RiGhpVWtaPSNgJAu1emrld4SFmLpOWM5BPsK6tVj2waLNucmEuRtG3r6H91E7EEgjsiBDxJaaREHytXMgpatMkt26X6Cg73Eb0pvD+5eBIh6VpksIWHtRrtq6ahde2wpb9CUmF8nb9IjfJqEsd3L9+EfsF4/EppRzOs4GDzKG+NGmBz95IEMGiIf0yh9Ot05b0Wj4xdOT7sJONbF0lC5qpQiPoXMKeLzsWWj6RfctjjhJZ9s2xEyLfwM89Yb4/vdwVVaa9Rk36ZkCvuoJeP1e+FKDXAJmNRGp2knEC1lQBZvXLG027bKmDdU0+WGwIDAKKPMA0GCSqGSIb3DQEBCwUAA4IBAQCR63M7Z45TV0MW2eA1bYO1vmRSryLbBK7fC4+2T8BqCXC8PYVxRtdMrQMdLUvXolibDY8bUDIC3GI4LLMDu1ivVcAcRJOCO4ii5KHxmK+mlmInif8v7YTZIlXAqPxbxJlYmpRNaEHFcDS7fciYzvohPzpbxRCKb4Nu9rfA0YqJv2s0vZmkZPTQ7W1vwHQw/+7KeRL3v/oY6/ANP0eKcNURwdhV3es2kya3RyEXH6sJuv3iUGOIPTAp5h8T7RV0xjlDxnz6BcRMSxxpFhyaUJHaA8ELKQXqHx1jjz0Ycri/AdIM21F3wc5Uq6855rm1STGythhxYFkrgx/dgLU7JeXc</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=GuardTime AS, CN=TSA1</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">TSA1</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=GuardTime AS, CN=TSA1</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>u4+kp6DnUM0luSdwJVgTsm7g84Y=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2012-10-19T16:31:00Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">TSA2</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICwDCCAagCAQEwDQYJKoZIhvcNAQEFBQAwJjENMAsGA1UEAxMEVFNBMjEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMB4XDTEzMDUxNTEyNDA1MVoXDTE0MDUxNTEyNDA1MVowJjENMAsGA1UEAxMEVFNBMjEVMBMGA1UEChMMR3VhcmRUaW1lIEFTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmbkBqCyj5DTDvCRFqy9AubKiWtz1NczYGFG4Uu1YrtNpY7hOrutp2SxjBZGMwcXDXdzIceE28FCvuPjhTF1MsSmWA3wRqEFfdoKtwJ3hYM4N8NKB8GHgDKRYKw5nY++1anjt+KoxhpZsRbaAvPZSkbONr6trgSe9DUXE1WJ632LAvC0PGdd4LnUERxnernnhs5N/mQwv4BJmMPHcZ2lpiMfBCgJ2/v7r9UbodVRkGr/EHMzp9RdehneT3IQpMDV+7oL1niOyXi6KVdlbqaLzmL8QTpQuopfhaA6uKaAegWkkEaYOo50BK3xYKZjCUHwL+yH6Sw7ddgGNtBId7vtdpwIDALyRMA0GCSqGSIb3DQEBBQUAA4IBAQAjlFih75+4WvKgcTr7CHVgftiGLaSCa93uq57kmebap1raFqigOkCYpqg3Jx5DDhdGcx93VjdqTt6qC8IAvx2VJAywQXOisTtIrfiXK5hXUJMWlXzqT6q6Kv1q3Ac8603QySfStmVg5vehW504bg2UnjjL2oY0+X9e/D8nQRpeI8zVNAYYk2elAr3nNDrcR/kRtEfughvlK2F4fS5R4UrNO2P7xTaiNdQwRuq3CJZEkA2HjPRXE3kiJoL80p7aWU6DKOOHZr6VQjcOHJiK5T/ZUHeOT10tM3BCPHzmmHAs1ziMkFFfItOmAXooOXBsw8L3cOX5BiopaTnMzMw7Pwfo</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=GuardTime AS, CN=TSA2</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">TSA2</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=GuardTime AS, CN=TSA2</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>D3QyCl0LQEFZ0QcjGfxJDWFGZyY=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2013-05-15T11:40:51Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">H1</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICtjCCAZ4CAQEwDQYJKoZIhvcNAQELBQAwITELMAkGA1UEAxMCSDExEjAQBgNVBAoTCUd1YXJkdGltZTAeFw0xMjExMjYxMjI1MDhaFw0xNDEyMjYxMjI1MDhaMCExCzAJBgNVBAMTAkgxMRIwEAYDVQQKEwlHdWFyZHRpbWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6jdPpv5oA0BNHcFTVZpB8CEjGZvWix4KWgbAVbJiQaiLx2TgmRrimtAi7ogQ2qWPpJJbxgnKQUvpL/913tMH1blL2PXYk2fR6xU/jF3DoBvQBA7TrX39OlcTn+GO/noh9/hz3/a5ebyp452AyFow/g7IzvECf/kT8G+OcIj4aWK/M7qbmrj98eB/j6t5kuBF26llyLzExJr4iJOTSuCaR7BT3yWuLC3rAUtXJaG0XiQxkmTd6Ibt5GK8pSBtsQfKeJv9iTUS6I093rqZ8dSiP9/k2satrk9/hy464niGyXiKWfiEwWBeEe6okg7FwtZZ7ZHL42IATqLBRmbI9qvbXAgMBc7MwDQYJKoZIhvcNAQELBQADggEBAEbHvn6BZArTuTDE+opwN0NZ6FdtQ102tR1qWMcNGgKKICc1dvQpTCsUD5X4RL26pE0aNy9lB6HFa2vNlS4ZOz7LAbxKWn9DwSTHZVCBmDz7cThAop6YaVd+f2cYk6aP4FnIWr0dfSTTqxIWyFURip5TLC4vgu2FvJRuQU3LTBcpdbi5WwVSxxgS5VCzpEc5qUC7kZFGBV/aze6CAxUoE2nWrK3udj/8RUOSpUyaeF+f4oEAkR/xMKvd1xuWjl09rRyOD71h7WhfmNAJDHYZVRVthl6XBJbv+DMOkjpltfeFUHyvZm9eXEZnUh+KS8VpJ4O62VA+rNwV6e2QgaaVu7M=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=Guardtime, CN=H1</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">H1</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=Guardtime, CN=H1</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>zQ97Xa7ocnzmMZDaA9ZAuQVArp0=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2012-11-26T12:25:08Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">H2</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICtjCCAZ4CAQEwDQYJKoZIhvcNAQELBQAwITELMAkGA1UEAxMCSDIxEjAQBgNVBAoTCUd1YXJkdGltZTAeFw0xMjExMjYxMjQwNDZaFw0xNDEyMjYxMjQwNDZaMCExCzAJBgNVBAMTAkgyMRIwEAYDVQQKEwlHdWFyZHRpbWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGUFzXDI8KWQj8/UcZLf1BecHHG3+YYoA3FwfZfdNjlbRepRdwypQx8p0RNbvcZC5eP7TnOLz8tCA95jBclLXOOMEKLeIdbcEuERrVNNZ6MplCsLBfxf0rSZzPcgjUA8vnREZj+rLqYkUwt6P2qt3uwCT/Ymm6D25UG373TX/058+7+8YlftspEowUPZt1E23ZzpTrObervZSiqvy4V1+efOPQZq0B/h71hkmw0+/zuWJ9vjTUhS3sde86AqDf8s3q6G1FbVEH9ilnJ8XZipam95fZx+kRCeBQ/Yitw+lYeLcGFQKOJ0uZuqMo3HnFcJfNkd27uA1Ymi938SVOCypfAgMBbiswDQYJKoZIhvcNAQELBQADggEBAHR1TVGVIuBLeTtrflzXP4bnsczEudLu36D0dTKcwTvBeGB4YEnaBp69vKT2/boNbdeZ0Pm6ft7PQYRzQg5v8NVlqmYwq8pAxNhrywGOICOynoW7mnRbooDKVQ25Ct4vdJwdf/pcrJ0l9F1WX3MZ5rNgKTPW6sXrMReXojfFf/2YwAvdwPhATjtRvnXYhkkN0aeXvkgPiPMctEP0lEiZelwWm+DjVFHOy8l1d4+38rvh25tuChxxcl/p45/H7xpAndHO1qpKEu9DJy6q5eWBcNgvHVf7UTXSDtIuRCOcS6g0Q2yz72sdW1Z/m1W/67ToYjofQwvhc14CrhQkD05pRAA=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=Guardtime, CN=H2</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">H2</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=Guardtime, CN=H2</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>4wZ8Qgdniap0mVcJ7mqsZKvwOjA=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2012-11-26T12:40:46Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">H3</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICtjCCAZ4CAQEwDQYJKoZIhvcNAQELBQAwITELMAkGA1UEAxMCSDMxEjAQBgNVBAoTCUd1YXJkdGltZTAeFw0xMjExMjYxMzAwMTZaFw0xNDEyMjYxMzAwMTZaMCExCzAJBgNVBAMTAkgzMRIwEAYDVQQKEwlHdWFyZHRpbWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVkmSzH2Au23FOAGkCMTdCZUoHCcOHV7EPqVxFmwea01gS0nDfAjzFUcudvgYRtaw6r6r4ZPLC+pqBI0W7FjeVpRQAuKypYGhie2IEd2FAQLDB4gnJl68Z7K9B+Njc8rvwKbrqix+N3ReqFz9IENbwtGrXj90SMFBoCofkmUCe+fy5H/YYjhud7wnZUhYPw7DsYU+5eqAh9dNXNSD4gxOLDoZgID49G953fS2pkgdZKIWpZl+/hftiTDLD92NB0HYwoqEJZZGSM+RUKMxPeRiHz6goGcqoXp/WjeXyd5uiP4TQX8KsvAQQDTBrBs8DFbFlL7MOEzM+vvV2PdFdU0bRAgMBDskwDQYJKoZIhvcNAQELBQADggEBAL/Invma9hUUj7tcZAKKNlZm2bktd6jguW+eFUbf7m1zfSLw3sq85mwFkl8hSDlV/d4pasJJCd8KmGLki5T9BM/TAjvzf1g2orBGMArhZkYNnYkuJTHcxetLFqtyBxdMKGiObmhfTI1YNAckomnvsausJ8ejsKKFxFTcWQ1TOeL3v3N/sZ/c/pwVd80ZbTIo/k/dFwbRVkhuj3Q+DDi/8tlcGXSAppBVX+uFqDGudu3TZ8XQY7VX7ZSH/2rIO5SZm0CbgAOFYQitDLKLIXEBS6R4W4n559L+dXIaStAR3U8Jmx8WXWMSsa1FJVynyiVLUMMw07mVgQGUs2IK81ghXsY=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=Guardtime, CN=H3</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">H3</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=Guardtime, CN=H3</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>d8R/lqslVchhyESZTyjfFalKaYM=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2012-11-26T13:00:16Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">H4</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICtjCCAZ4CAQEwDQYJKoZIhvcNAQELBQAwITELMAkGA1UEAxMCSDQxEjAQBgNVBAoTCUd1YXJkdGltZTAeFw0xMjExMjYxMzA3NDdaFw0xNDEyMjYxMzA3NDdaMCExCzAJBgNVBAMTAkg0MRIwEAYDVQQKEwlHdWFyZHRpbWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDNVtvh71sZgFYcsv6a/zRU3/iby6KWNztiEjzuLl2oaqsUEVHq4kpAAj6/Hl+UPpIEwPEckB6rpGRgeN/+K+4bWJTrxh/7S/k3sQiHozTAYIOf6TIC4xAK5rjkfRyJNWZMbKU5ShXGC+DMh5sn5ZLtxOLshP4bVjCDrKUb+bNJCxYE/UT4N3bSPj3j45CgYnwqANWu2MFYcuuwSI6M+BiLWRA9HNLwHF3nVibCCJtyo17gN4oa236h61/+hehqICa9xePBBRh9gao35dtFNOEUgEN+qjqXGkUBrcFst6SG0nGh67AGJcQeku3QKU8Z81qocY9NhUKeXordC1C/XPsfAgMBWGEwDQYJKoZIhvcNAQELBQADggEBAGAdaaN8Zy/BWVBH+hLT+LXFJLKmFxaqRKRiyPtuerCRHmKjlHw8JqlVjB1UDUy4BN1LL04k6iwcpZX/ahuvlG0cwrdfi2/ld++ngyMQ8ecFEvjvli5u9kqiWSFxwDtA7fU5rsTm+Qni5hklPA60VMQHkuylx5oHejoyvPoBEft/tQnQ3QL+re7Cs06in8hkBtWndYK9jyot7G99wWfR5TEYzYQkze1L0oTjmySW/+EkrsT66XmRWHQuYLgo5tL5D+oO6H2tfeiKQ5PO0+zDLwQJJYjvvITCVKudR7/sH1v6/B4nXuvch82gaAzlfHK3EP6TQ7CBC3cw+uZ7qkggdIY=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=Guardtime, CN=H4</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">H4</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=Guardtime, CN=H4</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>g4Rp4hbka/wb/X12o1eSDeWB078=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2012-11-26T13:07:47Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">H5</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICtjCCAZ4CAQEwDQYJKoZIhvcNAQELBQAwITELMAkGA1UEAxMCSDUxEjAQBgNVBAoTCUd1YXJkdGltZTAeFw0xMjExMjYxMjUzMjJaFw0xNDEyMjYxMjUzMjJaMCExCzAJBgNVBAMTAkg1MRIwEAYDVQQKEwlHdWFyZHRpbWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzNmmpHjZG/rb8xYUBH5TgSkSE9tkVl+JgtkeokY0BLZvrJhM9TZ/XX3AbN5aagJWnMgxPDBCyTYcA7XzsW6lRlQK7gym+zbLi9bmLEcpQzEYdeQs4Bi39Hb4vtlHYOFQjdck5H0CCaiLoJVJxX4b5y1dczJjXN5n7pkBl/YXXuIt4h/41bdZKw25j/KxEGWU/CmlZdrrDPzYW85aYk++dbO+uKspRkkIQZV+impSUpbwjOoN0VjfrmbJ7s+iyvB94j6qvvSTl537uFY6TOK//W3O4OrtEd8ze3aiePC517yTM8IQaUOrNy/pojan7FkhvLcVi1duQILuAcDu7gaQjAgMBMMcwDQYJKoZIhvcNAQELBQADggEBADndrk/PCTqGVmbrtjFWmYIjLyFgbUihSoHHf2+kw66Mzi77LFkDc+CYSz5M1pIjsXQe+a+Kkrvpc9YKkvxnT81ttiSduRujCNw2ISrYfFVP91Hzxh6hl2mnRSF6LOLsNbZCaSJjkH4JPuFdnY7wUiozKFmt/6T/5qu4B7osH5o+sLuCJKcgk0fXgssx41JM+ZUWf5JhS/QUUaPiW18s4SOZmNmO5w1IYVVG70bUOXsoGsVmrBNuuQeikPPdE30OAf+4ODB82rudUZok/ZrSW69p+eiAbkLKqlVfd1Lx05xeLf/EBgIvlSXRUECHV2LDmTbwJq1wDjHh5NHN7Z8I22I=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=Guardtime, CN=H5</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">H5</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=Guardtime, CN=H5</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>1y2GEphAgI0iKD3RaFtEI/53Aoo=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2012-11-26T12:53:22Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">H1</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICtjCCAZ4CAQEwDQYJKoZIhvcNAQELBQAwITELMAkGA1UEAxMCSDExEjAQBgNVBAoTCUd1YXJkdGltZTAeFw0xNDEyMDkwODQ1NDNaFw0xNzAxMDkwODQ1NDNaMCExCzAJBgNVBAMTAkgxMRIwEAYDVQQKEwlHdWFyZHRpbWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDLKt3SYJHx+Y0zQypj433j9k23BtR7VxLy+FDL54GkqmAiCmaknWz/nRy19FM+kDfciM92OySnneN+nOyykfoblJ0uL2CIhN5vYITV9QvHxNNsij0urOiWu5eXui6N6T+lZPOl938EmNeorJbgzG7FeDJid5W4kRBE9apiRBPp3YFehl0crycBgLY6kHlvvoH33AgwsW9Zbp2B7jWU92GdH1D3aBw5JwhEhSI01sqjcI7Odbh7PZaygsXpoVRyW1T5PzDDR1+qoWHoak/oN9J0NXMEAVyswpytQ0rckOIbnXhfA7va2WLQ8+GuIm7wKwquS2wtqgBPbyvO7rP4L/AfAgMB4EEwDQYJKoZIhvcNAQELBQADggEBAI52GHcEe75qB8Sps07G3TVA+XXh+PGFZYSMrH5bsn1uJvaDNDb1fl1dQCK+YibtoxzVM0pdyBVlHFWsex1wTpdmstsmZYP8Xaj9ezabN6nPSCz6pdzhFUKM2XG0kuny6JLAFuNjqsh13SxsATARL6yZv7L2PI5VclXHbcpRhNaqiTeTKxLfXqfTgSX1f1RGNJI/r4SoiTBT+PFJ2TcJfc5GTuRunaTeGVIe+QGIrv0fWXAlZylGTFszgq2e2hh/1i9KFlxD7gS1IPvSRrxHVWdTEjM9BHSjMd/y6L6jQ9Ti9qW+UYz2CRo8sOYgfB7axA1mVmv/W60TQr2pkCl7GDM=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=Guardtime,CN=H1</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">H1</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=Guardtime, CN=H1</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>Eh8iaw0jrxBJx9MGEmtlnpGmxyM=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2014-12-09T09:45:43Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">H2</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICtjCCAZ4CAQEwDQYJKoZIhvcNAQELBQAwITELMAkGA1UEAxMCSDIxEjAQBgNVBAoTCUd1YXJkdGltZTAeFw0xNDEyMDMxMjIwMDZaFw0xNzAxMDMxMjIwMDZaMCExCzAJBgNVBAMTAkgyMRIwEAYDVQQKEwlHdWFyZHRpbWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8ojFnaqso7obLfS6sDn8Mj22s/ZcmY2NbwfGy12xX+1FpEjgwrwea8Uq6YS55Mvux/oRcBh2UsgFxnn0IlzSLgrmRx0t42PVuufygcXVGy+voYjxsOJUkP8uFqdv+QhLPUHTyVzMKHIYvVEa434dHKiSK2nwWkpFVqEQ2hITU/uSv3ZAX64F+7iJuIlraefdZ0QC6ucdOsxAFwC3FEH+HfPpV2rb6nhsBu8hxIGWOqDHoCcd3y0H2+7n/BE1pmOCkuT0j1tKU2NwUrEvWfRna2xyx+zNff9PmcNRrlT0yytr4ghCuQJbcGpA7+EGf5jGKfGjL1xL6GXwnb3W23SPDAgMBHWMwDQYJKoZIhvcNAQELBQADggEBALxmxs0QzRhDIlCmedBngmOGYIBd9sJ3TtWXak+4cJemPttrKPetWlDnSHyW2leuO6neIUtvKSXVETrIqbX0Y2bn37qPseBu3284qWLi2fAYhhOKfz2PEuUmck0+p3wKH6iDgsXgjmQuu6wO9m1+Y8qB/K+mSwi8gpxjBU38aPCgQrPZnIAbBPpju2NBb241ep+aOlonKQRO+KcsPMwYzLt0xEmkjopq4dRl0i+Nl/m3EVc1JCIslvSD37tUBQIbEpvv7OrXbv37xvY9Cr4JRWrrjrRO6n1d2NSxdagHjwobdBgPCQXGqroMxUNL0EprVmlbRNvWkxmj4wd6PYKfnaQ=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=Guardtime,CN=H2</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">H2</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=Guardtime, CN=H2</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>EYQKyMAHRbdf0QdxvZ2qxd7XipQ=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2014-12-03T13:20:06Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">H3</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICtjCCAZ4CAQEwDQYJKoZIhvcNAQELBQAwITELMAkGA1UEAxMCSDMxEjAQBgNVBAoTCUd1YXJkdGltZTAeFw0xNDEyMDQwOTI4MTFaFw0xNzAxMDQwOTI4MTFaMCExCzAJBgNVBAMTAkgzMRIwEAYDVQQKEwlHdWFyZHRpbWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC15sVKLBcJ6NRMFmMZxyBy/kKCcBr8zwozbZ+3cyuKeRk8s2+9IEH0xklpE9MxCmDaW65rpk24aX01A9LvYaM/Jn8bzE9H955wuRTWZbUpW22iljLxjq3x6bM2mwMB/BRkWPK/0BZ8mO1XOXFGh6eRD5OqLXDen3AXno3LgxpibK7jHekfX1aT2G35c2zDcZmif86bQiFSxPxI/xJXiJcswX3Xl1CoEdoyiOhyYIl1756QKzNL/yzXy4W7Fczk5gjax+ke9snndPg/ZnPzKLHJowNyPzobhG0R7W7eG/S7BpxMTEG3alA3BZvV2gmVDw8Bp8t6mNNtxgbWL6fqKQdrAgMBb5cwDQYJKoZIhvcNAQELBQADggEBACyCZSs4DiVR9FvRRUCeXAU4zpvlO2+nlAqL/SnK657aHNbnnQKqtBdoW4N/Gf6Pxz27B7PB1c1p1qgmKzvVewKfwh+37XoCIxqenoLzwALGN0wPne3dVB1Jf8DMEMtECB5ktZMd/BI8fgc6VlYBDnDXa+qu13hbTHYuWV0dIokseNOoNU9twcABn14E0AsEwfalZpXps9LQgjVx609pZwDFRQo3igzY4qKxpivUD0xyrjjsh5UebldLj2K7gtFubrenuQuRerVFIJ82VmNsAdFFzyVsCXdUdULO+wxcnIjCUlAY2l8CEM70z/UXmuCCqnoqPmmXk/oEIdqPLZQqR3c=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=Guardtime,CN=H3</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">H3</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=Guardtime, CN=H3</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>QirOC5zp/hiyOrBnqKibCdrnyZ4=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2014-12-04T10:28:11Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">H4</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICtjCCAZ4CAQEwDQYJKoZIhvcNAQELBQAwITELMAkGA1UEAxMCSDQxEjAQBgNVBAoTCUd1YXJkdGltZTAeFw0xNDEyMDUwOTQwMzVaFw0xNzAxMDUwOTQwMzVaMCExCzAJBgNVBAMTAkg0MRIwEAYDVQQKEwlHdWFyZHRpbWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgdoH5rbrx9r/CkW7gdHjEGtJlVYP9/sF26W0yMVvyEApwXJk9ccM5FNeJlnHO94DQ4jQIYGU8MnFu0Xs8FlrRI47vPikjsdI/HfGW8zQFvPq/CGR2JWtoTW/OS3TLlhuKsgZ4ynsIZs7VrU9H1bk/OyAgtvK3sbdyELF6JYIy0t2mN5kXHPgFYs3PCifQteLEDsYLdxKKtwnEpR8Vyptw/9iNHPsvnqwpa/U5UL0Q/0dF4fxpYNwVdgTKL5bpjaI6I2NmYBdhI8L9aTdEXsP+kSA/+pB5iqNGZ9vlrfweRLsqb8fIILjgIheJwgOKMMTdfIsxfN8nJPr6ICAjd37DAgMBmHswDQYJKoZIhvcNAQELBQADggEBAHh80N8rHNR29mMguKbYl5b6Enhls0VWx/F3oDe+gfZ3p+ASXHPqZG8+e0BwDZh0QykZ3g8etSBL4yOEUi5PEhilECuny++NqFItHheyUXFFJih5qCqP8w+qiseVignIlRH/oumNXMt0HZUeWvh0G43Nc/6OdW2g2OtjUKjQ3WtbNP9Znx+okruUAzOrWpYN0V5PqE5FXrrsslykYb6ou3xThvmkowHddyl3x/koUd1nfra5YUAY9hzfFfUC8SdRg805OSy+EwI+dE006j91dR1EyNKZhqEg1Q5Wb2BGGRXbAYDOGeuX6NE9X+V2gKqD+kauxfz+t2f6lzWEueaexo8=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=Guardtime,CN=H4</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">H4</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=Guardtime, CN=H4</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>2zNKmjgO3GbRjbtLb/2gxC95Ydg=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2014-12-05T10:40:35Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en">H5</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIICtjCCAZ4CAQEwDQYJKoZIhvcNAQELBQAwITELMAkGA1UEAxMCSDUxEjAQBgNVBAoTCUd1YXJkdGltZTAeFw0xNDEyMDgwOTAzNDdaFw0xNzAxMDgwOTAzNDdaMCExCzAJBgNVBAMTAkg1MRIwEAYDVQQKEwlHdWFyZHRpbWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC60wohNDbrmyAL/7WupGYRFg8sBizryJup1HDV/YJvhVAo7jt63nrzuxqnADeqlzeek2GuYugh5LbYRR8EeBtxE3ssIablc5TLKPZj1hzJ+Tsw39BrbYebQUwusxU+BUclQ9TpxgSAM6eXa5w2pi9o8eiHVMxzXQ5c5BE0XGSSH4IRRoej/xnealXgxNIFvEm14sFvkAg04WQQwD9ZTmWMY80WHeYDFr+v7N520r19GMyTc8YoR8DfWI0lLBYrcG1yDXu6gZlaLD+Xrb633Qn7WRgWD0ejCh9taWbEDBwoc6aM8yZDLfBsExYQSn8RMCcVXZjDZv5k7+IQaozgj0q7AgMBarkwDQYJKoZIhvcNAQELBQADggEBALnzytGvxyDEf8fDaErxIVaZpUcZrWSifiBc3jK3h3PvFTuaY98DT9keY2X1vM9mSeMBusRdMbIkFROA6+uUUNEXlp7lQEoZ9/N1H4vCGscvZWBOua668qw2PrUCQoD5pP1SDH/0JpK4wX+Xk8bdi+Q6cHu2p606r4PBtJVv2oR5y+LaghTC10pT+4+EQ8rDPmseiatvSa9dJdz3RM/bIR+Ki9OO5nBYpPBQJuvDTJ1rfWSfr7JD0ejDOVeG9OfN0j26L/sChV5uZxRMs/mvIlRibHqXU0+oeOGCCsZGb6YN27nLFh5TUdqtGRbJuu3f/8tYNLa7Gb/iI6afpO8nRXc=</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>O=Guardtime,CN=H5</X509SubjectName>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2016-06-30T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en">H5</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>O=Guardtime, CN=H5</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>i8kh3VDj6mI46TJ0BxYTItfimzM=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/undersupervision</ServiceStatus>
++ <StatusStartingTime>2014-12-08T10:03:47Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="et">Guardtime KSI ajatempliteenus</Name>
++ <Name xml:lang="en">Guardtime KSI timestamp service</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIFeDCCBGCgAwIBAgIMKvxXwd+2ViRgXqVkMA0GCSqGSIb3DQEBCwUAMEwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSIwIAYDVQQDExlHbG9iYWxTaWduIFF1YWxpZmllZCBDQSAxMB4XDTE5MTAwMjEyMDIyM1oXDTIwMTAwMjEyMDIyM1owgaIxCzAJBgNVBAYTAkVFMQ4wDAYDVQQIEwVIYXJqdTEQMA4GA1UEBxMHVGFsbGlubjEVMBMGA1UEChMMR3VhcmR0aW1lIEFTMRUwEwYDVQQDEwxHdWFyZHRpbWUgQVMxKTAnBgkqhkiG9w0BCQEWGnB1YmxpY2F0aW9uc0BndWFyZHRpbWUuY29tMRgwFgYDVQRhEw9WQVRFRS0xMDExMTQxMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCt1f0R2cimqb2iM0/zVB00PfcY/w2zkpWSKuHIcyFMyxPaDsUFAxBlHpBn4bk9QEypWB/RpK15SPV1Veb5oL7o7A+62O7SXdA4jEyajyFVvP+mK/cXsSQ/x7Bb7r9woPH2Fmm1zExAkjrpyW2H9jjBav2TSD5sLW1/ANfg0G9c1QgC0niZc2dKMCmXLvB5gVSa4PiZ1RGQ+IcHVzfQhEIrmywpoe9MFfyB22eQfsKqXedopNLF8Ix3iHE9bp75yrhmuOrFG32vDbdgQTGwJBbRc8QDidyVQiuKwiJaYPnhAryZXXgnrI7PIddFib7aE3MQDHEmW4VPqKlfTX2r4HyFAgMBAAGjggIBMIIB/TAOBgNVHQ8BAf8EBAMCBkAwgYUGCCsGAQUFBwEBBHkwdzBABggrBgEFBQcwAoY0aHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9jYWNlcnQvZ3NxY2Exc2hhMmc0LmNydDAzBggrBgEFBQcwAYYnaHR0cDovL29jc3AuZ2xvYmFsc2lnbi5jb20vZ3NxY2Exc2hhMmc0MFkGA1UdIARSMFAwQwYLKwYBBAGgMgEoIwEwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCQYHBACL7EABAzAJBgNVHRMEAjAAMDsGA1UdHwQ0MDIwMKAuoCyGKmh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5jb20vZ3NxY2Exc2hhMmc0LmNybDAlBgNVHREEHjAcgRpwdWJsaWNhdGlvbnNAZ3VhcmR0aW1lLmNvbTA3BggrBgEFBQcBAwQrMCkwCAYGBACORgEBMAgGBgQAjkYBBDATBgYEAI5GAQYwCQYHBACORgEGAjAgBgNVHSUEGTAXBgkqhkiG9y8BAQUGCisGAQQBgjcKAwwwHwYDVR0jBBgwFoAUrDfbzzLJIRaqCxwGA4bwXcdpzRowHQYDVR0OBBYEFPe+Zbcss+aHPvlOaNUGuBxgwHg1MA0GCSqGSIb3DQEBCwUAA4IBAQALCkY2JkPjPdJV8NS+2gm3MDVurit5dp6AjRLIEoo2tmgQkosYnfyPXaJH4iF9ik2EB8K4piO+9ASIjEewIfGaHABpfY9IXYM87RRbuw2Q1YScog4ev6NdvhJZjSTQzu5wJ//dJB5rE9JPtN9eAY3ihQXB/IhSuX1M2p82wCBma51+jZnyQgOVwXXgX/+RqotnAznRt63NqfAQkAOp3NPW2EPkeoFz1Lv5eBxGZapggF0I5alhYWhR/96McP3isQAtftLnakwAPgHvJ9rxWnTAhOB6N0kWRiEClgnGxOnZT1TQVVTDpXwBYsgiZ1cv82ag2sH75vCKnyFlxHHlgCo+</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>OID.2.5.4.97=VATEE-101114112, EMAILADDRESS=publications@guardtime.com, CN=Guardtime AS, O=Guardtime AS, L=Tallinn, ST=Harju, C=EE</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>975ltyyz5oc++U5o1Qa4HGDAeDU=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2021-02-13T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="et">Guardtime KSI ajatempliteenus</Name>
++<Name xml:lang="en">Guardtime KSI timestamp service</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>OID.2.5.4.97=VATEE-101114112, EMAILADDRESS=publications@guardtime.com, CN=Guardtime AS, O=Guardtime AS, L=Tallinn, ST=Harju, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>975ltyyz5oc++U5o1Qa4HGDAeDU=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2020-04-07T21:00:00Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="et">Guardtime KSI ajatempliteenus (2020)</Name>
++ <Name xml:lang="en">Guardtime KSI timestamp service (2020)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>MIIFYDCCBEigAwIBAgIMIFVdZnGni6mwPnWsMA0GCSqGSIb3DQEBCwUAMEwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSIwIAYDVQQDExlHbG9iYWxTaWduIFF1YWxpZmllZCBDQSAxMB4XDTIwMDgyMDExMDY1NFoXDTIzMDgyMTExMDY1NFowgccxCzAJBgNVBAYTAkVFMRYwFAYDVQQIEw1IYXJqdSBtYWFrb25kMRAwDgYDVQQHEwdUYWxsaW5uMRkwFwYDVQQLExBLU0kgUHVibGljYXRpb25zMRYwFAYDVQQKDA1HdWFyZFRpbWUgT8OcMRYwFAYDVQQDDA1HdWFyZFRpbWUgT8OcMSkwJwYJKoZIhvcNAQkBFhpwdWJsaWNhdGlvbnNAZ3VhcmR0aW1lLmNvbTEYMBYGA1UEYRMPVkFURUUtMTAxMTE0MTEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAntxxAxMzPwFmNY09BYpYGUZeNQlwmUrbE3Msz+VaBapglX5oapUljmWuXV0wOXcEMdlxbbhI4wArKuhjZICduZnvfe/TJSuINrOeGl+FEf9Lc0BLrCPT4sX2XIVfoV6/fyN1uUbGD0ISF3StFynI4S68VgQSFCcNtILvcIZm5rMwdw3dh/w5FQQeVmH4/bgr3mc8OCRXkoFW6+LtwRJjg1I4RYR0unME0q+IXOKXV0H6GcJtK82LlqS0bor53qLlVDNfoBnEACD27TeKiyZsL9dwMtU+TcsMC6GEc/ldEkvfSKxu8QnA/i5/JtvGmCHr2D6CxDGCDNrI7ro8+rXk8QIDAQABo4IBxDCCAcAwDgYDVR0PAQH/BAQDAgZAMIGFBggrBgEFBQcBAQR5MHcwQAYIKwYBBQUHMAKGNGh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5jb20vY2FjZXJ0L2dzcWNhMXNoYTJnNC5jcnQwMwYIKwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL2dzcWNhMXNoYTJnNDBZBgNVHSAEUjBQMEMGCysGAQQBoDIBKCMBMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMAkGBwQAi+xAAQMwCQYDVR0TBAIwADAlBgNVHREEHjAcgRpwdWJsaWNhdGlvbnNAZ3VhcmR0aW1lLmNvbTA3BggrBgEFBQcBAwQrMCkwCAYGBACORgEBMAgGBgQAjkYBBDATBgYEAI5GAQYwCQYHBACORgEGAjAgBgNVHSUEGTAXBgkqhkiG9y8BAQUGCisGAQQBgjcKAwwwHwYDVR0jBBgwFoAUrDfbzzLJIRaqCxwGA4bwXcdpzRowHQYDVR0OBBYEFOM9BPC4T+QE2tBZskLYBs5DhC03MA0GCSqGSIb3DQEBCwUAA4IBAQCYULFVSQs6zmVrmYT5RkexoTFYkBD9Kxui4RhX35yz/FLv0QaGhIQmkD9oLc5CYNzL4WgbH4uhEH4npEXGj6Q+HMRvkU4g/HyPNohgzojxZFe5QLYPvAI3EfED5RLUcI2/Co8bEqn0RYHs3yK+cnUvzd443JOXoR2WsX88sKC2HFxugOJlm9gtuQtmCX46Ws98cwsW4NnP2mp/s9y8Fh/IEcQlFQG3rpxIt3ROS7RfGJ06hP1wGCMEh4kpaz0eYf4SA0kpl5FqvF7JD/W+McQZS7o2VGaygXqo4a5g+jra99df1WOShiCb3fkDxfrCPHOZ/utG2jSKmXIORlcOy/X7</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>OID.2.5.4.97=VATEE-101114112, EMAILADDRESS=publications@guardtime.com, CN=GuardTime OÜ, O=GuardTime OÜ, OU=KSI Publications, L=Tallinn, ST=Harju maakond, C=EE</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>4z0E8LhP5ATa0FmyQtgGzkOELTc=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2022-03-22T22:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="et">Guardtime KSI ajatempliteenus (2020)</Name>
++<Name xml:lang="en">Guardtime KSI timestamp service (2020)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>OID.2.5.4.97=VATEE-101114112, EMAILADDRESS=publications@guardtime.com, CN=GuardTime OÜ, O=GuardTime OÜ, OU=KSI Publications, L=Tallinn, ST=Harju maakond, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>4z0E8LhP5ATa0FmyQtgGzkOELTc=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2020-09-28T21:00:00Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="et">Guardtime KSI ajatempliteenus (2021)</Name>
++ <Name xml:lang="en">Guardtime KSI timestamp service (2021)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>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</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>OID.2.5.4.97=VATEE-101114112, EMAILADDRESS=publications@guardtime.com, CN=GuardTime OÜ, O=GuardTime OÜ, OU=KSI Publications, L=Tallinn, ST=Harju maakond, C=EE</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>Bp6ycACWd5+pAx0R8XafiqxMdBc=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2025-06-12T09:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="et">Guardtime KSI ajatempliteenus (2021)</Name>
++<Name xml:lang="en">Guardtime KSI timestamp service (2021)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>OID.2.5.4.97=VATEE-101114112, EMAILADDRESS=publications@guardtime.com, CN=GuardTime OÜ, O=GuardTime OÜ, OU=KSI Publications, L=Tallinn, ST=Harju maakond, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>Bp6ycACWd5+pAx0R8XafiqxMdBc=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2021-02-13T22:00:00Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ <TSPService>
++ <ServiceInformation>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++ <Name xml:lang="en"> Guardtime KSI Time-stamping service (2023)</Name>
++ <Name xml:lang="et"> Guardtime KSI ajatempliteenus (2023)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++<X509Certificate>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</X509Certificate>
++ </DigitalId>
++ <DigitalId>
++<X509SubjectName>OID.2.5.4.97=VATEE-101114112, EMAILADDRESS=publications@guardtime.com, CN=GuardTime OÜ, O=GuardTime OÜ, OU=KSI Publications, L=Tallinn, ST=Harju maakond, C=EE</X509SubjectName>
++ </DigitalId>
++ <DigitalId>
++<X509SKI>jrPlzXa2x2UOTeFrqb3wjiX8vXc=</X509SKI>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn</ServiceStatus>
++ <StatusStartingTime>2025-06-12T09:00:00Z</StatusStartingTime>
++ </ServiceInformation>
++ <ServiceHistory>
++ <ServiceHistoryInstance>
++ <ServiceTypeIdentifier>http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST</ServiceTypeIdentifier>
++ <ServiceName>
++<Name xml:lang="en"> Guardtime KSI Time-stamping service (2023)</Name>
++<Name xml:lang="et"> Guardtime KSI ajatempliteenus (2023)</Name>
++ </ServiceName>
++ <ServiceDigitalIdentity>
++<DigitalId>
++ <X509SubjectName>OID.2.5.4.97=VATEE-101114112, EMAILADDRESS=publications@guardtime.com, CN=GuardTime OÜ, O=GuardTime OÜ, OU=KSI Publications, L=Tallinn, ST=Harju maakond, C=EE</X509SubjectName>
++</DigitalId>
++<DigitalId>
++ <X509SKI>jrPlzXa2x2UOTeFrqb3wjiX8vXc=</X509SKI>
++</DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceStatus>http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted</ServiceStatus>
++ <StatusStartingTime>2023-08-20T09:00:01Z</StatusStartingTime>
++ </ServiceHistoryInstance>
++ </ServiceHistory>
++ </TSPService>
++ </TSPServices>
++ </TrustServiceProvider>
++ </TrustServiceProviderList>
++<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="id-6fe6a8ce1c109d25015e2999c95b42ac"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><ds:Reference Id="tl_signing_tool" URI=""><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ds:DigestValue>DoHBasWD8UoZFb/NzCE752ap7L4hscAyRiv43CWRacw=</ds:DigestValue></ds:Reference><ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#xades-id-6fe6a8ce1c109d25015e2999c95b42ac"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ds:DigestValue>3A0bjTMYuAXzglaG8Xq37si6WAIZ/XKMH3j28/Ou4kk=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue Id="value-id-6fe6a8ce1c109d25015e2999c95b42ac">PYViklrbXOl7FRMa8Sv2sWcpN6Yf1BqlcwoS7yUKgtsmSqlL/ODm5l0ihNhWUD3/8dMSGBFxFx1RoLzjpoGRu/FWqh1b5sw9KGhXS8xvjxSj6FfQZ6fSzGm+lN1k0d68UQ4vye8i4ezf6uKzR1WzSIq2L4W/pUct2Y2cAH6rVbRZ6W0Z0ln2eCRpIiKVt2sog+5DYOnCKKLIuA9MHLc/fp8C2keUE3uMNipUhaPm7DmplJ1pD43S9SWAOsvUhidIfCJacr6x/y0Rxe1kpIRoc2ahlHFO0+JkQHDtYS0zX+vvLa1U8d3q3+PkXkZtCyJfEECCEKhNqKnsi6LtdJwbaA==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIDrDCCApSgAwIBAgIJAJp9F/NFeDmmMA0GCSqGSIb3DQEBDQUAMG0xLjAsBgNVBAMMJUVzdG9uaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IxCzAJBgNVBAYTAkVFMS4wLAYDVQQKDCVFc3RvbmlhbiBJbmZvcm1hdGlvbiBTeXN0ZW0gQXV0aG9yaXR5MB4XDTE5MDEyNTA5NDAwNloXDTI4MDcyNDA5NDAwNlowbTEuMCwGA1UEAwwlRXN0b25pYW4gVHJ1c3RlZCBMaXN0IFNjaGVtZSBPcGVyYXRvcjELMAkGA1UEBhMCRUUxLjAsBgNVBAoMJUVzdG9uaWFuIEluZm9ybWF0aW9uIFN5c3RlbSBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBMux4ivfdlZy9W75NgMWfD7ahajygYHCp8Tw9LxQ0vkmpuyaNNlXU+uj+yffWfekVgMoLaQrCpVIN0FF8ZMnnlsK600hpgnQNI+snPxU1u9BK6P87ZpoQU2wvan2oqjWflm06ybLzvvJrPJVNoVelrUDTY6SPngMbyqqpsdXo+dW8916ZoRUcEkTFWjQXVjhY1Lqsorbpaop1iv9BV2SXmsh4szRlqpu4dDSElWViBn0+A1ptiSAt7JINr0DDjfswqE+dhvjf6xq+IEaqUoMtGPKgz7SDqKKyg/KBO1ZGunUZE+91HKUASt+sPy3O3wMZM1SpZe1INEXQ0EQ4gytdAgMBAAGjTzBNMAwGA1UdEwQFMAMCAQAwCwYDVR0PBAQDAgeAMB0GA1UdDgQWBBScAndEhykw8vEHVFuQ7XPtHnqFajARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQENBQADggEBAHaLcIDZmUA9Bcv7TjuQW2Q3cFWFSmKc8aT5HaRKBxRRy10j9czqT439w/smT4De8JYyULXU+SoUX6/5sjmcpYxczFIC6imH8XLTgOca3vRAhek5iM80+h6v8CvxQHrsqNiSrLImE4LWfXWhQ/WPcyQdNrHCFrynJ9Gf6Q1DzQBRstpj5I8WjE+ME+w+vDj+VHHjI4wd5NkJhwwaF5PFB6uRrdb95e1dqLe4CTALe6+dh2QYhzSWZ+AZ2GaF+LlFreHhyV0sl+KwcNKSzSotStHL0zPTnq/yxPNaihhFmAlPdZdwq7vTN+yn5PAqEcfhTn06Gf5yDZjrmf5JO5eMpzM=</ds:X509Certificate></ds:X509Data></ds:KeyInfo><ds:Object><xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Target="#id-6fe6a8ce1c109d25015e2999c95b42ac"><xades:SignedProperties Id="xades-id-6fe6a8ce1c109d25015e2999c95b42ac"><xades:SignedSignatureProperties><xades:SigningTime>2025-06-12T12:16:26Z</xades:SigningTime><xades:SigningCertificate><xades:Cert><xades:CertDigest><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><ds:DigestValue>R14uA1QdIRBhGMN270QwubqLrkRR+Vg+UPT+uSs7gebBC1+F+qyvGFWCwonfGaYPDppY0O4KYJW6HA01hHWOvw==</ds:DigestValue></xades:CertDigest><xades:IssuerSerial><ds:X509IssuerName>O=Estonian Information System Authority,C=EE,CN=Estonian Trusted List Scheme Operator</ds:X509IssuerName><ds:X509SerialNumber>11132080187539732902</ds:X509SerialNumber></xades:IssuerSerial></xades:Cert></xades:SigningCertificate></xades:SignedSignatureProperties><xades:SignedDataObjectProperties><xades:DataObjectFormat ObjectReference="#tl_signing_tool"><xades:MimeType>text/xml</xades:MimeType></xades:DataObjectFormat></xades:SignedDataObjectProperties></xades:SignedProperties></xades:QualifyingProperties></ds:Object></ds:Signature></TrustServiceStatusList>
+\ No newline at end of file
+diff --git a/client/eu-lotl.xml b/client/eu-lotl.xml
+new file mode 100644
+index 00000000..86c77c77
+--- /dev/null
++++ b/client/eu-lotl.xml
+@@ -0,0 +1,2164 @@
++<?xml version="1.0" encoding="UTF-8" standalone="no"?><TrustServiceStatusList xmlns="http://uri.etsi.org/02231/v2#" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" xmlns:ns3="http://uri.etsi.org/02231/v2/additionaltypes#" xmlns:ns4="http://uri.etsi.org/01903/v1.3.2#" xmlns:ns5="http://uri.etsi.org/TrstSvc/SvcInfoExt/eSigDir-1999-93-EC-TrustedList/#" xmlns:ns6="http://uri.etsi.org/01903/v1.4.1#" Id="ID0001" TSLTag="http://uri.etsi.org/19612/TSLTag">
++ <SchemeInformation>
++ <TSLVersionIdentifier>5</TSLVersionIdentifier>
++ <TSLSequenceNumber>370</TSLSequenceNumber>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUlistofthelists</TSLType>
++ <SchemeOperatorName>
++ <Name xml:lang="en">European Commission</Name>
++ <Name xml:lang="bg">Европейска комисия</Name>
++ <Name xml:lang="es">Comisión Europea</Name>
++ <Name xml:lang="cs">Evropská komise</Name>
++ <Name xml:lang="da">Europa-Kommissionen</Name>
++ <Name xml:lang="de">Europäische Kommission</Name>
++ <Name xml:lang="et">Euroopa Komisjon</Name>
++ <Name xml:lang="el">Ευρωπαϊκή Επιτροπή</Name>
++ <Name xml:lang="fr">Commission européenne</Name>
++ <Name xml:lang="it">Commissione europea</Name>
++ <Name xml:lang="lv">Eiropas Komisija</Name>
++ <Name xml:lang="lt">Europos Komisija</Name>
++ <Name xml:lang="hu">Európai Bizottság</Name>
++ <Name xml:lang="mt">Il-Kummissjoni Ewropea</Name>
++ <Name xml:lang="nl">Europese Commissie</Name>
++ <Name xml:lang="pl">Komisja Europejska</Name>
++ <Name xml:lang="pt">Comissão Europeia</Name>
++ <Name xml:lang="ro">Comisia Europeană</Name>
++ <Name xml:lang="sk">Európska komisia</Name>
++ <Name xml:lang="sl">Evropska komisija</Name>
++ <Name xml:lang="fi">Euroopan komissio</Name>
++ <Name xml:lang="sv">Europeiska kommissionen</Name>
++ <Name xml:lang="hr">Europska komisija</Name>
++ </SchemeOperatorName>
++ <SchemeOperatorAddress>
++ <PostalAddresses>
++ <PostalAddress xml:lang="fr">
++ <StreetAddress>Rue de la Loi 200</StreetAddress>
++ <Locality>Bruxelles</Locality>
++ <PostalCode>1049</PostalCode>
++ <CountryName>BE</CountryName>
++ </PostalAddress>
++ <PostalAddress xml:lang="nl">
++ <StreetAddress>Wetstraat 200</StreetAddress>
++ <Locality>Brussel</Locality>
++ <PostalCode>1049</PostalCode>
++ <CountryName>BE</CountryName>
++ </PostalAddress>
++ <PostalAddress xml:lang="en">
++ <StreetAddress>Rue de la Loi/Wetstraat 200</StreetAddress>
++ <Locality>Brussels</Locality>
++ <PostalCode>1049</PostalCode>
++ <CountryName>BE</CountryName>
++ </PostalAddress>
++ </PostalAddresses>
++ <ElectronicAddress>
++ <URI xml:lang="en">mailto:EC-TL-Service@ec.europa.eu</URI>
++ <URI xml:lang="en">https://digital-strategy.ec.europa.eu/en/policies/eu-trusted-lists</URI>
++ </ElectronicAddress>
++ </SchemeOperatorAddress>
++ <SchemeName>
++ <Name xml:lang="en">EU:List containing the information notified by Member States pursuant to Article 4(1) and Article 4(2) of Commission Implementing Decision (EU) 2015/1505 of 8 September 2015 laying down technical specifications and formats relating to trusted lists pursuant to Article 22(5) of Regulation (EU) No 910/2014 of the European Parliament and of the Council on electronic identification and trust services for electronic transactions in the internal market, published by the Commission in accordance with Article 4(3) of Commission Implementing Decision (EU) 2015/1505.</Name>
++ <Name xml:lang="bg">EU:Списък, съдържащ в съответствие с член 2, параграф 4 от Решение 2009/767/ЕО на Комисията от 16 октомври 2009 г. за определяне на мерки, улесняващи прилагането на процедури с помощта на електронни средства чрез единични звена за контакт в съответствие с Директива 2006/123/ЕО на Европейския парламент и на Съвета относно услугите на вътрешния пазар, изменено с Решение 2010/425/ЕС на Комисията и Решение 2013/662/ЕС за изпълнение на Комисията, информацията, съобщена от държавите членки съгласно член 2, параграф 3 от Решение 2009/767/ЕО на Комисията.</Name>
++ <Name xml:lang="es">EU:De conformidad con el artículo 2, apartado 4, de la Decisión 2009/767/CE de la Comisión, de 16 de octubre de 2009, por la que se adoptan medidas que facilitan el uso de procedimientos por vía electrónica a través de las «ventanillas únicas» con arreglo a la Directiva 2006/123/CE del Parlamento Europeo y del Consejo relativa a los servicios en el mercado interior, modificada por la Decisión 2010/425/UE de la Comisión y por la Decisión de Ejecución 2013/662/UE de la Comisión, la presente lista contiene la información proporcionada por los Estados miembros según lo previsto en el artículo 2, apartado 3, de la Decisión 2009/767/CE de la Comisión.</Name>
++ <Name xml:lang="cs">EU:Seznam zveřejněný podle čl. 2 odst. 4 rozhodnutí Komise 2009/767/ES ze dne 16. října 2009, kterým se stanovují opatření pro usnadnění užití postupů s využitím elektronických prostředků prostřednictvím „jednotných kontaktních míst“ podle směrnice Evropského parlamentu a Rady 2006/123/ES o službách na vnitřním trhu, ve znění rozhodnutí Komise 2010/425/EU a prováděcího rozhodnutí Komise 2013/662/EU, který obsahuje informace oznámené členskými státy v souladu s čl. 2 odst. 3 rozhodnutí Komise 2009/767/ES.</Name>
++ <Name xml:lang="da">EU:Listen indeholder, jf. artikel 2, stk. 4, i Kommissionens beslutning 2009/767/EF af 16. oktober 2009 om fastlæggelse af foranstaltninger, der skal lette anvendelsen af elektroniske procedurer ved hjælp af "kvikskranker" i henhold til Europa-Parlamentets og Rådets direktiv 2006/123/EF om tjenesteydelser i det indre marked, som ændret ved Kommissionens afgørelse 2010/425/EU og Kommissionens gennemførelsesafgørelse 2013/662/EU, de oplysninger, der indgives af medlemsstaterne i henhold til artikel 2, stk. 3, i Kommissionens beslutning 2009/767/EF.</Name>
++ <Name xml:lang="de">EU:Liste, die in Übereinstimmung mit Artikel 2 Absatz 4 der Entscheidung 2009/767/EG der Kommission vom 16. Oktober 2009 über Maßnahmen zur Erleichterung der Nutzung elektronischer Verfahren über „einheitliche Ansprechpartner“ gemäß der Richtlinie 2006/123/EG des Europäischen Parlaments und des Rates über Dienstleistungen im Binnenmarkt – geändert durch den Beschluss 2010/425/EU der Kommission und den Durchführungsbeschluss 2013/662/EU der Kommission – die von den Mitgliedstaaten gemäß Artikel 2 Absatz 3 der Entscheidung 2009/767/EG der Kommission übermittelten Informationen enthält:</Name>
++ <Name xml:lang="et">EU:Nimekiri kooskõlas komisjoni 16. oktoobri 2009. aasta otsuse 2009/767/EÜ (millega kehtestatakse meetmed elektrooniliste haldustoimingute kasutamise lihtsustamiseks ühtsete kontaktpunktide kaudu, mis on sätestatud Euroopa Parlamendi ja nõukogu direktiivis 2006/123/EÜ teenuste kohta siseturul; muudetud komisjoni otsusega 2010/425/EL ja komisjoni rakendusotsusega 2013/662/EL) artikli 2 lõikega 4; nimekirjas esitatakse teave, mille liikmesriigid on edastanud komisjoni otsuse 2009/767/EÜ artikli 2 lõike 3 kohaselt.</Name>
++ <Name xml:lang="el">EU:Ο παρών κατάλογος περιέχει - σύμφωνα με το άρθρο 2 παράγραφος 4 της απόφασης 2009/767/ΕΚ της Επιτροπής, της 16ης Οκτωβρίου 2009, σχετικά με τη θέσπιση μέτρων που διευκολύνουν τη χρήση διαδικασιών με ηλεκτρονικά μέσα μέσω των ενιαίων κέντρων εξυπηρέτησης βάσει της οδηγίας 2006/123/ΕΚ του Ευρωπαϊκού Κοινοβουλίου και του Συμβουλίου σχετικά με τις υπηρεσίες στην εσωτερική αγορά, όπως τροποποιήθηκε με την απόφαση 2010/425/ΕΕ της Επιτροπής και την εκτελεστική απόφαση 2013/662/ΕΕ της Επιτροπής - τις πληροφορίες που κοινοποιούνται από τα κράτη μέλη σύμφωνα με το άρθρο 2 παράγραφος 3 της απόφασης 2009/767/ΕΚ της Επιτροπής.</Name>
++ <Name xml:lang="fr">EU:Liste contenant, par application de l’article 2, paragraphe 4, de la décision 2009/767/CE de la Commission du 16 octobre 2009 établissant des mesures destinées à faciliter l’exécution de procédures par voie électronique par l’intermédiaire des «guichets uniques» conformément à la directive 2006/123/CE du Parlement européen et du Conseil relative aux services dans le marché intérieur, telle que modifiée par la décision 2010/425/UE de la Commission et la décision d'exécution 2013/662/UE de la Commission, les informations communiquées par les États membres en application de l'article 2, paragraphe 3, de la décision 2009/767/CE de la Commission.</Name>
++ <Name xml:lang="it">EU:Conformemente all'articolo 2, paragrafo 4, della decisione 2009/767/CE della Commissione, del 16 ottobre 2009, che stabilisce misure per facilitare l'uso di procedure per via elettronica mediante gli "sportelli unici" di cui alla direttiva 2006/123/CE del Parlamento europeo e del Consiglio relativa ai servizi nel mercato interno, modificata dalla decisione 2010/425/UE della Commissione e dalla decisione di esecuzione 2013/662/UE della Commissione, il presente elenco UE contiene le informazioni comunicate dagli Stati membri a norma dell'articolo 2, paragrafo 3, della decisione 2009/767/CE.</Name>
++ <Name xml:lang="lv">EU:Saraksts, kas saskaņā ar 2. panta 4. punktu Komisijas 2009. gada 16. oktobra Lēmumā 2009/767/EK par pasākumiem, lai veicinātu procedūru veikšanu elektroniski, izmantojot vienotos kontaktpunktus atbilstoši Eiropas Parlamenta un Direktīva 2006/123/EK par pakalpojumiem iekšējā tirgū, kurā grozījumi izdarīti ar Komisijas Lēmumu 2010/425/ES un Komisijas Īstenošanas Lēmumu 2013/662/ES, ietver informāciju, ko dalībvalstis paziņojušas saskaņā ar Komisijas Lēmuma 2009/767/EK 2. panta 3. punktu.</Name>
++ <Name xml:lang="lt">EU:Sąrašas, kuriame pagal 2009 m. spalio 16 d. Komisijos sprendimo 2009/767/EB, kuriuo pagal Europos Parlamento ir Tarybos direktyvą 2006/123/EB dėl paslaugų vidaus rinkoje nustatomos priemonės procedūroms, atliekamoms naudojantis elektroninėmis priemonėmis ir kontaktinių centrų paslaugomis, palengvinti, su pakeitimais, padarytais Komisijos sprendimu 2010/425/ES ir Komisijos įgyvendinimo sprendimu 2013/662/ES, 2 straipsnio 4 dalį pateikiama informacija, kurią valstybės narės pateikė pagal Komisijos sprendimo 2009/767/EB 2 straipsnio 3 dalį.</Name>
++ <Name xml:lang="hu">EU:Jegyzék, amely az eljárásoknak a belső piaci szolgáltatásokról szóló 2006/123/EK európai parlamenti és tanácsi irányelv szerinti egyablakos ügyintézési pontokon keresztül elektronikus eszközökkel történő teljesítését lehetővé tevő rendelkezések meghatározásáról szóló, a 2010/425/EU bizottsági határozattal és a 2013/662/EU bizottsági végrehajtási határozattal módosított, 2009. október 16-i 2009/767/EK bizottsági határozat 2. cikkének (4) bekezdésével összhangban tartalmazza a tagállamok által a 2009/767/EK bizottsági határozat 2. cikke (3) bekezdésének megfelelően bejelentett információkat.</Name>
++ <Name xml:lang="mt">EU:Lista li fiha, skont l-Artikolu 2(4) tad-Deċiżjoni tal-Kummissjoni 2009/767/KE tas-16 ta’ Ottubru 2009 li tistipula miżuri li jiffaċilitaw l-użu ta’ proċeduri b’mezzi elettroniċi permezz tal-punti ta’ kuntatt waħdieni skont id-Direttiva 2006/123/KE tal-Parlament Ewropew u tal-Kunsill dwar is-servizzi fis-suq intern, kif emendata mid-Deċiżjoni tal-Kummissjoni 2010/425/UE u mid-Deċiżjoni ta' Implimentazzjoni tal-Kummissjoni 2013/662/UE, l-informazzjoni notifikata mill-Istati Membri skont l-Artikolu 2(3) tad-Deċiżjoni tal-Kummissjoni 2009/767/KE.</Name>
++ <Name xml:lang="nl">EU:Lijst waarin overeenkomstig artikel 2, lid 4, van Beschikking 2009/767/EG van de Commissie van 16 oktober 2009 inzake maatregelen voor een gemakkelijker gebruik van elektronische procedures via het „één- loket” in het kader van Richtlijn 2006/123/EG van het Europees Parlement en de Raad betreffende diensten op de interne markt, zoals gewijzigd bij Besluit 2010/425/EU van de Commissie en Uitvoeringsbesluit 2013/662/EU van de Commissie, de informatie is opgenomen die door de lidstaten overeenkomstig artikel 2, lid 3, van Beschikking 2009/767/EG van de Commissie is medegedeeld.</Name>
++ <Name xml:lang="pl">EU:Wykaz zawierający, zgodnie z art. 2 ust. 4 decyzji Komisji 2009/767/WE z dnia 16 października 2009 r. ustanawiającej środki ułatwiające korzystanie z procedur realizowanych drogą elektroniczną poprzez „pojedyncze punkty kontaktowe” zgodnie z dyrektywą 2006/123/WE Parlamentu Europejskiego i Rady dotyczącą usług na rynku wewnętrznym, zmienioną decyzją Komisji 2010/425/UE i decyzją wykonawczą Komisji 2013/662/UE, informacje przekazane przez państwa członkowskie zgodnie z art. 2 ust. 3 decyzji Komisji 2009/767/WE.</Name>
++ <Name xml:lang="pt">EU:Lista contendo, em conformidade com o artigo 2.º, n.º 4, da Decisão 2009/767/CE da Comissão, de 16 de outubro de 2009, que determina medidas destinadas a facilitar a utilização de procedimentos informatizados através de «balcões únicos», nos termos da Diretiva 2006/123/CE do Parlamento Europeu e do Conselho relativa aos serviços no mercado interno, com a redação que lhe foi dada pela Decisão 2010/425/UE da Comissão e pela Decisão de Execução 2013/662/UE da Comissão, as informações notificadas pelos Estados-Membros nos termos do artigo 2.º, n.º 3, da Decisão 2009/767/CE da Comissão.</Name>
++ <Name xml:lang="ro">EU:Listă care conține, în conformitate cu articolul 2 alineatul (4) din Decizia 2009/767/CE a Comisiei din 16 octombrie 2009 de stabilire a unor măsuri de facilitare a utilizării procedurilor prin mijloace electronice prin intermediul „ghișeelor unice” în temeiul Directivei 2006/123/CE a Parlamentului European și a Consiliului privind serviciile în cadrul pieței interne, astfel cum a fost modificată prin Decizia 2010/425/UE a Comisiei și Decizia de punere în aplicare 2013/662/UE a Comisiei, informațiile notificate de statele membre în temeiul articolului 2 alineatul (3) din Decizia 2009/767/CE a Comisiei.</Name>
++ <Name xml:lang="sk">EU:Zoznam, ktorý obsahuje v súlade s článkom 2 ods. 4 rozhodnutia Komisie 2009/767/ES zo 16. októbra 2009, ktorým sa ustanovujú opatrenia na uľahčenie postupov elektronickými spôsobmi prostredníctvom „miest jednotného kontaktu“ podľa smernice Európskeho parlamentu a Rady 2006/123/ES o službách na vnútornom trhu, zmeneného rozhodnutím Komisie 2010/425/EÚ a vykonávacím rozhodnutím Komisie 2013/662/EÚ, informácie oznámené členskými štátmi podľa článku 2 ods. 3 rozhodnutia Komisie 2009/767/ES.</Name>
++ <Name xml:lang="sl">EU:Seznam, ki v skladu s členom 2(4) Odločbe Komisije 2009/767/ES z dne 16. oktobra 2009 o vzpostavitvi ukrepov za pospeševanje uporabe postopkov po elektronski poti s pomočjo enotnih kontaktnih točk po Direktivi 2006/123/ES Evropskega parlamenta in Sveta o storitvah na notranjem trgu, kakor je bila spremenjena s Sklepom Komisije 2010/425/EU in Izvedbenim sklepom Komisije 2013/662/EU, vsebuje informacije, ki jih države članice sporočijo v skladu s členom 2(3) Odločbe Komisije 2009/767/ES.</Name>
++ <Name xml:lang="fi">EU:Luettelo, joka sisältää toimenpiteistä sähköisten menettelyjen käytön edistämiseksi keskitettyjä asiointipisteitä käyttäen palveluista sisämarkkinoilla annetun Euroopan parlamentin ja neuvoston direktiivin 2006/123/EY mukaisesti 16 päivänä lokakuuta 2009 tehdyn komission päätöksen 2009/767/EY, sellaisena kuin se on muutettuna komission päätöksellä 2010/425/EU ja komission täytäntöönpanopäätöksellä 2013/662/EU, 2 artiklan 4 kohdan mukaisesti tiedot, jotka jäsenvaltiot ovat ilmoittaneet komission päätöksen 2009/767/EY 2 artiklan 3 kohdan mukaisesti:</Name>
++ <Name xml:lang="sv">EU:Förteckning som, i enlighet med artikel 2.4 i kommissionens beslut av den 16 oktober 2009 om åtgärder som underlättar användningen av förfaranden på elektronisk väg genom gemensamma kontaktpunkter i enlighet med Europaparlamentets och rådets direktiv 2006/123/EG om tjänster på den inre marknaden, ändrat genom kommissionens beslut 2010/425/EU och kommissionens genomförandebeslut 2013/662/EU, innehåller den information som medlemsstaterna lämnat i enlighet med artikel 2.3 i kommissionens beslut 2009/767/EG.</Name>
++ <Name xml:lang="hr">EU:Popis koji, u skladu s člankom 2. stavkom 4. Odluke Komisije 2009/767/EZ od 16. listopada 2009. o utvrđivanju mjera kojima se olakšava uporaba postupaka elektroničkim putem preko „jedinstvenih kontaktnih točaka” u skladu s Direktivom 2006/123/EZ Europskog parlamenta i Vijeća o uslugama na unutarnjem tržištu, kako je izmijenjena Odlukom Komisije 2010/425/EU i Provedbenom odlukom Komisije 2013/662/EU, sadržava informacije o kojima su države članice izvijestile u skladu s člankom 2. stavkom 3. Odluke Komisije 2009/767/EZ:</Name>
++ </SchemeName>
++ <SchemeInformationURI>
++ <URI xml:lang="en">https://ec.europa.eu/tools/lotl/eu-lotl-pivot-341.xml</URI>
++ <URI xml:lang="en">https://ec.europa.eu/tools/lotl/eu-lotl-pivot-335.xml</URI>
++ <URI xml:lang="en">https://ec.europa.eu/tools/lotl/eu-lotl-pivot-300.xml</URI>
++ <URI xml:lang="en">https://ec.europa.eu/tools/lotl/eu-lotl-pivot-282.xml</URI>
++ <URI xml:lang="en">https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv:OJ.C_.2019.276.01.0001.01.ENG</URI>
++ <URI xml:lang="en">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#en</URI>
++ <URI xml:lang="bg">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#bg</URI>
++ <URI xml:lang="es">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#es</URI>
++ <URI xml:lang="cs">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#cs</URI>
++ <URI xml:lang="da">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#da</URI>
++ <URI xml:lang="de">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#de</URI>
++ <URI xml:lang="et">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#et</URI>
++ <URI xml:lang="el">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#el</URI>
++ <URI xml:lang="fr">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#fr</URI>
++ <URI xml:lang="it">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#it</URI>
++ <URI xml:lang="lv">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#lv</URI>
++ <URI xml:lang="lt">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#lt</URI>
++ <URI xml:lang="hu">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#hu</URI>
++ <URI xml:lang="mt">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#mt</URI>
++ <URI xml:lang="nl">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#nl</URI>
++ <URI xml:lang="pl">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#pl</URI>
++ <URI xml:lang="pt">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#pt</URI>
++ <URI xml:lang="ro">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#ro</URI>
++ <URI xml:lang="sk">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#sk</URI>
++ <URI xml:lang="sl">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#sl</URI>
++ <URI xml:lang="fi">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#fi</URI>
++ <URI xml:lang="sv">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#sv</URI>
++ <URI xml:lang="hr">https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#hr</URI>
++ </SchemeInformationURI>
++ <StatusDeterminationApproach>http://uri.etsi.org/TrstSvc/TrustedList/StatusDetn/EUlistofthelists</StatusDeterminationApproach>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUlistofthelists</URI>
++ </SchemeTypeCommunityRules>
++ <SchemeTerritory>EU</SchemeTerritory>
++ <PolicyOrLegalNotice>
++ <TSLLegalNotice xml:lang="en">In accordance with Art. 4(3) of Commission Implementing Decision (EU) 2015/1505 of 8 September 2015 laying down technical specifications and formats relating to trusted lists pursuant to Article 22(5) of Regulation (EU) No 910/2014 of the European Parliament and of the Council on electronic identification and trust services for electronic transactions in the internal market, the present list contains the information notified by Member States pursuant to Art. 4(1) and Art. 4(2) of Commission Implementing Decision (EU) 2015/1505.
++The European Commission maintains this website as an interoperability tool designed to facilitate the practical use of national Trusted Lists. Our goal is to keep this information timely and accurate. If errors are brought to our attention, we will try to correct them. However, the Commission accepts no responsibility or liability whatsoever with regard to the content of national Trusted Lists which lies exclusively with the Member States.
++It is our goal to minimise disruption caused by technical errors. However, some data or information on our site may have been created or structured in files or formats that are not error-free and we cannot guarantee that our service will not be interrupted or otherwise affected by such problems. The European Commission accepts no responsibility with regard to such problems incurred as a result of using this site or any linked external sites.
++This disclaimer is not intended to limit the liability of the European Commission in contravention of any requirements laid down in applicable national law nor to exclude its liability for matters which may not be excluded under that law.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="bg">съгласно член 4, параграф 3 от Решение за изпълнение (ЕС) № 2015/1505 на Комисията от 8 септември 2015 г. за определяне на техническите спецификации и форматите на доверителните списъци съгласно член 22, параграф 5 от Регламент (ЕС) № 910/2014 на Европейския парламент и на Съвета относно електронната идентификация и удостоверителните услуги при електронни трансакции на вътрешния пазар, съдържащ информацията, съобщена от държавите-членки съгласно член 4, параграфи 1 и 2 Решение за изпълнение (ЕС) № 2015/1505 на Комисията.
++Европейската комисия поддържа този уебсайт като инструмент за оперативна съвместимост, чиято цел е да улесни използването на национални доверителни списъци. Наша цел е да поддържаме актуалността и точността на тази информация. Ако ни съобщите за допуснатигрешки, ще се постараем да ги коригираме. Въпреки това Комисията не поема никаква отговорност по отношение на съдържанието на националните доверителни списъци, за което отговорност носят изцяло държавите-членки.
++Наша цел е да сведем до минимум проблемите, причинени от технически грешки. Въпреки това някои данни или информация на нашия сайт може да са създадени или структурирани във файлове или формати, податливи на грешки, и не можем да гарантираме, че нашитеуслуги няма да бъдат прекъснати или засегнати по друг начин от подобни проблеми. Европейската комисия не поема отговорност по отношение на такива проблеми, появили се в резултат от използването на този сайт или на други външни сайтове, свързани с него.
++Настоящият отказ от отговорност няма за цел да ограничава отговорността на Европейската комисия в разрез с изискванията, заложени в приложимото национално законодателство, нито да я освобождава от отговорност в области, в които това не е възможно съгласно товазаконодателство.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="es">De conformidad con el artículo 4, apartado 3, Decisión de Ejecución (UE) 2015/1505 de la Comisión, de 8 de septiembre de 2015, por la que se establecen las especificaciones técnicas y los formatos relacionados con las listas de confianza de conformidad con el artículo 22, apartado 5, del Reglamento (UE) n.° 910/2014 del Parlamento Europeo y del Consejo, relativo a la identificación electrónica y los servicios de confianza para las transacciones electrónicas en el mercado interior, la presente lista contiene la información notificada por los Estados miembros en virtud del artículo 4, apartados 1 y 2, Decisión de Ejecución (UE) 2015/1505 de la Comisión.
++Con el presente sitio Internet la Comisión Europea quiere ofrecer una herramienta de interoperabilidad que facilite el uso práctico de las listas de confianza nacionales. Nuestro objetivo es mantener esta información actualizada y precisa. Trataremos de corregir los errores que se nos señalen. No obstante, la Comisión no asume responsabilidad alguna en relación con el contenido de las listas de confianza nacionales, que son de la exclusiva incumbencia de los Estados miembros.
++Queremos reducir al mínimo los problemas ocasionados por errores de carácter técnico. No obstante, algunos datos o informaciones de nuestro sitio pueden haber sido creados u organizados en archivos o formatos no exentos de errores, y no podemos garantizar que nuestro servicio no se vea interrumpido o afectado de alguna otra manera. La Comisión no asume responsabilidad alguna por los problemas que puedan surgir al utilizar este sitio o sitios externos con enlaces al mismo.
++La presente cláusula de exención de responsabilidad no tiene por objeto limitar la responsabilidad de la Comisión de forma contraria a lo dispuesto por las normativas nacionales aplicables ni excluir su responsabilidad en los casos en los que, en virtud de dichas normativas, no pueda excluirse.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="cs">V souladu s čl. 4 odst. 3 rozhodnutí Komise (EU) 2015/1505 ze dne 8. září 2015, kterým se stanoví technické specifikace a formáty důvěryhodných seznamů podle čl. 22 odst. 5 nařízení Evropského parlamentu a Rady (EU) č. 910/2014 o elektronické identifikaci a službách vytvářejících důvěru pro elektronické transakce na vnitřním trhu, tento seznam obsahuje informace oznámené členskými státy podle čl. 4 odst. 1 a 2 rozhodnutí Komise (EU) 2015/1505.
++Tyto internetové stránky spravuje Evropská komise s cílem usnadnit praktické využívání důvěryhodných seznamů z jednotlivých členských států. Snažíme se poskytovat aktualizované a přesné informace. Snažíme se rovněž opravovat všechny chyby, na něž nás upozorníte. Komise však vylučuje jakoukoli odpovědnost za obsah důvěryhodných seznamů, neboť tuto odpovědnost nesou výhradně členské státy.
++Snažíme se vyvarovat poruch způsobených technickými chybami. Některé údaje či informace na našich internetových stránkách však mohly být vytvořeny či strukturovány do souborů či formátů, které nejsou bezchybné, a proto nemůžeme zaručit, že naše služby nebudou v důsledku takových problémů přerušeny či jinak ovlivněny. Evropská komise odmítá jakoukoli odpovědnost za problémy, které nastanou v důsledku používání těchto stránek nebo externích stránek, na něž tyto stránky odkazují.
++Záměrem tohoto prohlášení není omezit odpovědnost Evropské komise v případě porušení platných vnitrostátních právních předpisů ani vyloučit její odpovědnost v záležitostech, ve kterých ji podle těchto předpisů vyloučit nelze.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="da">I overensstemmelse med artikel 4, stk. 3, i Kommissionens gennemførelsesforordning (EU) 2015/1505 af 8. september 2015 om fastlæggelse af tekniske specifikationer og formater for positivlister i henhold til artikel 22, stk. 5, i Europa-Parlamentets og Rådets forordning (EU) nr. 910/2014 om elektronisk identifikation og tillidstjenester til brug for elektroniske transaktioner på det indre marked, indeholder denne liste de oplysninger, som medlemslandene har afgivet i henhold til artikel 4, stk. 1 og 2 i Kommissionens gennemførelsesforordning (EU) 2015/1505.
++Kommissionen har her på webstedet samlet information om de nationale positivlister, så det er lettere at anvende dem i praksis. Vi tilstræber, at oplysningerne er korrekte og ajourførte. Hvis vi bliver opmærksomme på fejl, søger vi at rette dem. Kommissionen påtager sig imidlertid intet ansvar for indholdet i de nationale positivlister. Ansvaret påhviler udelukkende medlemslandene.
++Vi tilstræber så vidt muligt at mindske forstyrrelser forårsaget af tekniske problemer. Dog kan visse data eller andre oplysninger på webstedet være blevet struktureret i filer eller formater, som ikke er fejlfrie, og vi kan ikke garantere, at vores service ikke afbrydes eller i øvrigt ikke påvirkes af den slags problemer. Kommissionen påtager sig intet ansvar for sådanne ulemper, der måtte opstå som følge af brugen af dette websted eller andre tilknyttede eksterne websteder.
++Hensigten med denne erklæring om ansvarsfraskrivelse er hverken at begrænse Kommissionens ansvar på en måde, der strider med eventuelle krav ifølge gældende national ret, eller at udelukke Europa-Kommissionens ansvar i tilfælde, hvor ansvar ikke kan udelukkes ifølge national ret.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="de">Diese Liste enthält die von den Mitgliedstaaten übermittelten Angaben und steht damit im Einklang mit Artikel 4 Absatz 3 des Durchführungsbeschlusses (EU) 2015/1505 der Kommission vom 8. September 2015 über technische Spezifikationen und Formate in Bezug auf Vertrauenslisten gemäß Artikel 22 Absatz 5 der Verordnung (EU) Nr. 910/2014 des Europäischen Parlaments und des Rates über elektronische Identifizierung und Vertrauensdienste für elektronische Transaktionen im Binnenmarkt in Übereinstimmung mit Artikel 4 Absätze 1 und 2 den Durchführungsbeschluss (EU) 2015/1505 der Kommission.
++Diese Website der Europäischen Kommission ist als Schnittstelle gedacht, die die Verwendung nationaler vertrauenswürdiger Listen in der Praxis vereinfachen soll. Wir sind bestrebt, die einschlägigen Informationen inhaltlich richtig und rechtzeitig bereitzustellen. Wir bemühen uns, Irrtümer zu berichtigen, die uns zur Kenntnis gebracht werden. Die Kommission übernimmt jedoch keine Verantwortung oder Haftung für den Inhalt der nationalen vertrauenswürdigen Listen, für die ausschließlich die Mitgliedstaaten zuständig sind.
++Wir arbeiten darauf hin, technisch bedingte Störungen auf ein Mindestmaß zu reduzieren. Dennoch kann es vorkommen, dass Daten oder Informationen auf unserer Website in fehlerhaften Dateien oder Formaten vorliegen. Wir können also nicht garantieren, dass der Arbeitsablauf durch derartige Probleme nicht gestört oder anderweitig beeinträchtigt wird. Die Europäische Kommission übernimmt für derartige Störungen beim Besuch dieser Website oder damit verbundener externer Sites keine Verantwortung.
++Mit der vorliegenden Haftungsausschlussklausel soll die Haftung der Europäischen Kommission bei Nichteinhaltung der einschlägigen nationalen Rechtsvorschriften weder eingeschränkt noch in Fällen ausgeschlossen werden, in denen ein Ausschluss nach diesen Rechtsvorschriften nicht möglich ist.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="et">Vastavalt Komisjoni 8. septembri 2015. aasta rakendusotsus (EL) 2015/1505, millega kehtestatakse usaldusnimekirjade tehnilised kirjeldused ja vormingud vastavalt Euroopa Parlamendi ja nõukogu määruse (EL) nr 910/2014 (e-identimise ja e-tehingute jaoks vajalike usaldusteenuste kohta siseturul) artikli 22 lõikele 5 artikli 4 lõikele 3, sisaldab käesolev loetelu liikmesriikide vastavalt komisjoni rakendusotsuse (EL) 2015/1505 artikli 4 lõikele 1 ja artikli 4 lõikele 2 esitatud teavet.
++Euroopa Komisjon haldab asjaomast veebisaiti koostalitlusvõime vahendina, mis hõlbustab liikmesriikide usaldusnimekirjade praktilist kasutamist. Eesmärk on pakkuda õigeaegset ja täpset teavet. Märgatud vigu püüame parandada. Samas ei võta komisjon endale vastutust ega mingeid kohustusi liikmesriikide usaldusnimekirjade sisu suhtes, mille eest vastutavad üksnes liikmesriigid ise.
++Meie eesmärk on vähendada tehniliste vigade tõttu tekkinud häireid. Osa veebisaidil olevatest andmetest või teabest võib aga olla loodud või paigutatud vigastesse failidesse või vormingutesse ning seega ei saa me tagada, et sellised probleemid meie teenust ei häiri või muul moel ei mõjuta. Euroopa Komisjon ei võta endale vastutust seoses kõnealuste probleemidega, mis tulenevad käesoleva veebisaidi või seonduvate välissaitide kasutamisest.
++Käesoleva vastutamatusesätte eesmärk ei ole Euroopa Komisjoni vastutuse piiramine, mis oleks vastuolus kohaldatavas liikmesriigi õigusaktis sätestatud nõuetega ega komisjoni vastutuse kõrvaldamine küsimustes, mida ei tohi asjaomase õigusakti alusel kõrvale jätta.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="el">Σύμφωνα με το άρθρο 4 παράγραφος 3 της εκτελεστικής απόφασης (ΕΕ) 2015/1505 της Επιτροπής, της 8ης Σεπτεμβρίου 2015, περί καθορισμού των τεχνικών προδιαγραφών και των μορφότυπων των καταλόγων εμπίστευσης σύμφωνα με το άρθρο 22 παράγραφος 5 του κανονισμού (ΕΕ) αριθ. 910/2014 του Ευρωπαϊκού Κοινοβουλίου και του Συμβουλίου σχετικά με την ηλεκτρονική ταυτοποίηση και τις υπηρεσίες εμπιστοσύνης για τις ηλεκτρονικές συναλλαγές στην εσωτερική αγορά, ο παρών κατάλογος περιέχει τις πληροφορίες που γνωστοποιούν τα κράτη μέλη σύμφωνα με το άρθρο 4 παράγραφοι 1 και 2 της απόφασης 2009/767/EΚ της Επιτροπής.
++Ο δικτυακός αυτός τόπος της Ευρωπαϊκής Επιτροπής είναι ένα διαλειτουργικό εργαλείο σχεδιασμένο για να διευκολύνει τη χρήση των εθνικών καταλόγων εμπίστευσης.. Στόχος μας είναι να παρέχουμε ακριβή και επικαιροποιημένα στοιχεία. Αν επισημανθούν σφάλματα θα καταβληθεί κάθε προσπάθεια για τη διόρθωσή τους.Ωστόσο, η Επιτροπή δεν φέρει καμία ευθύνη όσον αφορά το περιεχόμενο των εθνικών καταλόγων εμπίστευσης, για τους οποίους την αποκλειστική ευθύνη φέρουν τα κράτη μέλη.
++Καταβάλλουμε κάθε προσπάθεια ώστε να ελαχιστοποιήσουμε τις διακοπές που προκαλούνται από τεχνικά προβλήματα. Ωστόσο, ορισμένα δεδομένα ή πληροφορίες που περιέχει ο δικτυακός τόπος μπορεί να έχουν δημιουργηθεί ή οργανωθεί σε αρχεία ή μορφότυπους που περιέχουν σφάλματα και γι΄αυτό δεν μπορούμε να εγγυηθούμε ότι η υπηρεσία μας δεν θα διακοπεί, ή δεν θα επηρεαστεί με άλλο τρόπο, από τέτοια προβλήματα. Η Επιτροπή δεν φέρει καμιά ευθύνη όσον αφορά τέτοια προβλήματα που ανακύπτουν κατά τη χρήση αυτού του δικτυακού τόπου, ή οποιουδήποτε άλλου συνδεδεμένου δικτυακού τόπου.
++Η παρούσα δήλωση αποποίησης ευθύνης δεν έχει σκοπό να περιορίσει την ευθύνη της Ευρωπαϊκής Επιτροπής κατά τρόπο που αντίκειται στις απαιτήσεις της ισχύουσας εθνικής νομοθεσίας ούτε να αποκλείσει την ευθύνη της για ζητήματα για τα οποία δεν μπορεί να αποκλειστεί δυνάμει της εν λόγω νομοθεσίας.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="fr">Conformément à l'article 4, paragraphe 3 de la Décision d'exécution (UE) 2015/1505 de la Commission du 8 septembre 2015 établissant les spécifications techniques et les formats relatifs aux listes de confiance visées à l'article 22, paragraphe 5, du règlement (UE) n° 910/2014 du Parlement européen et du Conseil sur l'identification électronique et les services de confiance pour les transactions électroniques au sein du marché intérieur, la présente liste contient les informations notifiées par les États membres conformément à l'article 4, paragraphe 1 et à l'article 4 paragraphe 2, de la décision d'exécution (UE) 2015/1505 de la Commission.
++Le présent site de la Commission européenne constitue un outil d'interopérabilité destiné à faciliter l'utilisation des listes de confiance nationales. Notre objectif est de diffuser des informations exactes et à jour. Nous nous efforcerons de corriger les erreurs qui nous seront signalées. Toutefois, la Commission n'assume pas la responsabilité du contenu des listes de confiance nationales, qui incombe exclusivement aux États membres.
++Nous souhaitons limiter autant que possible les inconvénients occasionnés par des erreurs techniques. Cependant, certaines données ou informations présentes sur notre site peuvent avoir été créées ou structurées dans des fichiers ou des formats qui ne sont pas exempts d'erreurs. Il nous est donc impossible de garantir que notre service ne sera pas interrompu ou autrement affecté par de tels problèmes. La Commission décline toute responsabilité quant aux éventuels problèmes de ce type, résultant d'une utilisation du présent site ou de tout autre site extérieur auquel il renvoie.
++La présente clause de non-responsabilité n'a pas pour but de limiter la responsabilité de la Commission de manière contraire aux dispositions prévues dans les législations nationales applicables ou de dégager sa responsabilité dans des cas où elle ne peut l'être en vertu desdites législations.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="it">Conformemente all'articolo 4, paragrafo 3, della decisione di esecuzione (UE) 2015/1505 della Commissione dell’8 settembre 2015, che stabilisce le specifiche tecniche e i formati relativi agli elenchi di fiducia di cui all’articolo 22, paragrafo 5, del regolamento (UE) n. 910/2014 del Parlamento europeo e del Consiglio in materia di identificazione elettronica e servizi fiduciari per le transazioni elettroniche nel mercato interno , la presente lista contiene le informazioni notificate dagli Stati membri a norma dell'articolo 4, paragrafi 1 e 2, della decisione di esecuzione (UE) 2015/1505 della Commissione.
++Il presente sito della Commissione europea assicura l'interoperabilità necessaria per facilitare l'uso pratico degli elenchi di fiducia nazionali. L'obiettivo perseguito è quello di fornire un'informazione aggiornata e precisa. Qualora dovessero essere segnalati degli errori, si provvederà a correggerli. La Commissione non si assume alcuna responsabilità per quanto riguarda il contenuto degli elenchi di fiducia nazionali, che è di competenza esclusiva degli Stati membri.
++È nostra cura ridurre al minimo le disfunzioni imputabili a problemi tecnici. Parte dei dati o delle informazioni presenti nel sito potrebbero tuttavia essere stati inseriti o strutturati in archivi o formati non esenti da errori. Non possiamo pertanto garantire che il servizio non subisca interruzioni o che non sia in altro modo influenzato da tali problemi. La Commissione non si assume alcuna responsabilità per gli eventuali problemi derivanti dall'utilizzazione del presente sito o di eventuali siti esterni ad esso collegati.
++La presente clausola di esclusione della responsabilità non ha lo scopo di limitare la responsabilità della Commissione in violazione di disposizioni della legge nazionale applicabile, né di escluderla nei casi in cui non può essere esclusa in forza di detta legge.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="lv">Šajā sarakstā ir iekļauta informācija, kuru dalībvalstis Komisijai ir paziņojušas saskaņā ar 4. panta 3. punktu Komisijas 2015. gada 8. septembra Īstenošanas lēmums (ES) 2015/1505, kurā saskaņā ar Eiropas Parlamenta un Padomes Regulas (ES) Nr. 910/2014 par elektronisko identifikāciju un uzticamības pakalpojumiem elektronisko darījumu veikšanai iekšējā tirgū 22. panta 5. punktu izklāstītas tehniskās specifikācijas un formāti, kas attiecas uz uzticamības sarakstiem. Šis saraksts publicēts atbilstīgi Komisijas Īstenošanas lēmuma (ES) 2015/1505 4. panta 1. un 2. punktu.
++Eiropas Komisija uztur šo tīmekļa vietni, lai sekmētu dalībvalstu uzticamo sarakstu praktisku un savstarpēju izmantošanu. Mēs darām visu, lai nodrošinātu, ka šī informācija ir sniegta laicīgi un ir pareiza. Centīsimies labot norādītās kļūdas. Tomēr Komisija neuzņemas nekādu atbildību vai saistības attiecībā uz dalībvalstu uzticamajos sarakstos sniegto informāciju, jo par tiem atbild vienīgi dalībvalstis.
++Mēs darām visu, lai līdz minimumam samazinātu traucējumus, ko rada tehniskas kļūmes. Tomēr atsevišķos gadījumos dati vai informācija, kas iekļauta mūsu vietnē, ir sagatavota vai organizēta datnēs vai formātos, kas nefunkcionē nevainojami, un mēs nevaram garantēt, ka šādas problēmas nepārtrauks vai citādi neietekmēs mūsu pakalpojumus. Eiropas Komisija neuzņemas nekādu atbildību par problēmām, kas rodas, izmantojot šo vietni vai kādu citu ārēju vietni, uz kuru esam snieguši hipersaiti.
++Šī atruna neierobežo Eiropas Komisijas atbildību tad, ja nav ievērotas spēkā esošo valsts tiesību aktu prasības, un neierobežo tās atbildību gadījumos, kad saskaņā ar tiesību aktiem tai atbildība ir jāuzņemas.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="lt">Remiantis 2015 m. rugsėjo 8 d. Komisijos įgyvendinimo sprendimas (ES) 2015/1505, kuriuo pagal Europos Parlamento ir Tarybos reglamento (ES) Nr. 910/2014 dėl elektroninės atpažinties ir elektroninių operacijų patikimumo užtikrinimo paslaugų vidaus rinkoje 22 straipsnio 5 dalį nustatomos patikimų sąrašų techninės specifikacijos ir formatai, 4 straipsnio 3 dalimi, šiame sąraše pateikiama informacija, kurią valstybės narės perdavė pagal Komisijos įgyvendinimo sprendimo (ES) 2015/1505 4 straipsnio 1 ir 2.
++Ši Europos Komisijos administruojama interneto svetainė – sąveiki priemonė, skirta praktiniam naudojimuisi valstybių narių patikimais sąrašais palengvinti. Siekiame laiku teikti tikslią informaciją ir ištaisyti visas pastebėtas klaidas. Tačiau Komisija neprisiima atsakomybės ar teisinių įsipareigojimų dėl valstybių narių patikimų sąrašų turinio. Už jį atsakingos tik valstybės narės.
++Siekiame, kad būtų kuo mažiau nesklandumų dėl techninių klaidų. Tačiau tam tikri mūsų interneto svetainėje skelbiami duomenys gali būti sukurti ar susisteminti tokiose rinkmenose arba tokiais formatais, kuriuose pasitaiko klaidų, todėl negalime užtikrinti, kad tokios problemos nesutrikdys mūsų darbo ar jo kaip nors kitaip nepaveiks. Europos Komisija neprisiima atsakomybės už tokio pobūdžio problemas, kylančias naudojantis šia interneto svetaine arba kitomis su ja susietomis išorės svetainėmis.
++Šiuo atsakomybės apribojimu nesiekiama sumažinti Europos Komisijos teisinių įsipareigojimų nepažeisti jokių taikytinų nacionalinės teisės reikalavimų ar neprisiimti teisinių įsipareigojimų už tai, už ką pagal tą teisę nuo atsakomybės neatleidžiama.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="hu">A Bizottság 2015. szeptember 8-i (EU) 2015/1505 végrehajtási határozata a belső piacon történő elektronikus tranzakciókhoz kapcsolódó elektronikus azonosításról és bizalmi szolgáltatásokról szóló 910/2014/EU európai parlamenti és tanácsi rendelet 22. cikkének (5) bekezdése szerinti bizalmi listákhoz kapcsolódó technikai specifikációk és formátumok meghatározásáról bizottsági határozat 4. cikkének (3) bekezdése értelmében a jelen lista azokat az információkat tartalmazza, amelyeket a tagállamok a (EU) 2015/1505 bizottsági végrehajtási határozat 4. cikkének (1) és (2) bekezdésben értelmében jelentettek be.
++Az Európai Bizottság e weblapot a kölcsönös átjárhatóság elősegítésére tartja fönn, abból a célból, hogy megkönnyítse a megbízható szolgáltatók listájának használatát. Célunk az, hogy ezek az információk naprakészek és pontosak legyenek. Amennyiben arról értesülünk, hogy a webhelyen hibás információk szerepelnek, azokat igyekszünk kijavítani. A Bizottság semmilyen felelősséget sem vállal a nemzeti megbízható szolgáltatók listájának tartalmáért, mert azért kizárólag a tagállamok felelősek.
++Arra törekszünk, hogy az esetleges technikai hibák a lehető legkisebb mértékben okozzanak fennakadásokat a portál működésében. Előfordulhat ugyanakkor, hogy a portál oldalain található adatok vagy információk olyan fájlokban vagy formátumokban állnak rendelkezésre, amelyek nem mentesek a hibáktól; ilyen esetekben nem tudjuk garantálni, hogy ezek a problémák nem okoznak fennakadásokat a webhely használata során. Az Európai Bizottság nem vállal felelősséget a honlap (vagy a belinkelt külső honlapok) használatából fakadó problémákért.
++E jogi nyilatkozat nem korlátozza az Európai Bizottságnak az alkalmazandó közösségi jogban lefektetett követelményekből fakadó felelősségét, és nem zárja ki a Bizottság felelősségét olyan ügyekben, amelyekért az említett jog értelmében felelősségre vonható.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="mt">F'konformità mal-Art. 4(3) tad-Deċiżjoni ta' Implimentazzjoni tal-Kummissjoni (UE) 2015/1505 (4) tat-8 ta’ Settembru 2015 li tistabbilixxi l-ispeċifikazzjonijiet u l-formati tekniċi marbutin mal-listi ta’ fiduċja skont l-Artikolu 22(5) tar-Regolament (UE) Nru 910/2014 tal-Parlament Ewropew u tal-Kunsill dwar l-identifikazzjoni elettronika u s-servizzi fiduċjarji għal tranżazzjonijiet elettroniċi fis-suq intern, dan l-elenku fih l-informazzjoni notifikata mill-Istati Membri skont l-Artikoli 4.1 u 4.2 tad-Deċiżjoni ta’ Implimentazzjoni tal-Kummissjoni (UE) 2015/1505.
++Il-Kummissjoni Ewropea żżomm dan is-sit bħala strument ta' interoperabilità ddisinnjat biex jiffaċilita l-użu prattiku tal-Listi ta' Fiduċja nazzjonali. L-għan tagħna hu li nżommu din l-informazzjoni aġġornata u eżatta. Jekk tiġbdulna l-attenzjoni li hemm żbalji, aħna nippruvaw nikkoreġuhom. Madanakollu l-Kummissjoni ma taċċetta l-ebda responsabbiltà fir-rigward tal-kontenut tal-Listi ta' Fiduċja nazzjonali li taqa' esklussivament fuq l-Istati Membri.
++Huwa l-għan tagħna li nnaqqsu t-tfixkil ikkawżat mill-iżbalji tekniċi. Madanakollu, xi dejta jew informazzjoni fuq is-sit tagħna setgħet inħolqot jew ġiet strutturata f’fajls jew formati li mhumiex ħielsa mill-iżbalji u ma nistgħux niggarantixxu li s-servizz tagħna ma jiġix interrott jew b’xi mod effettwat minn problemi bħal dawn. Il-Kummissjoni ma tieħu l-ebda responsabbiltà għal dawn il-problemi mġarrba bħala riżultat tal-użu ta' dan is-sit jew kwalunkwe siti esterni relatati.
++Din ir-rinunzja mhijiex maħsuba biex tillimita r-responsabbiltà tal-Kummissjoni fil-kontravenzjoni ta' kwalunkwe rekwiżit stipulat fil-liġi applikabbli tal-Komunità, l-anqas biex tneħħi r-responsabbiltà għal kwistjonijiet li jistgħu ma jkunux esklużi taħt dik il-liġi.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="nl">Overeenkomstig artikel 4, lid 3, van Uitvoeringsbesluit (EU) 2015/1505 van de Commissie van 8 september 2015 tot vaststelling van de technische specificaties en formaten van vertrouwenslijsten overeenkomstig artikel 22, lid 5, van Verordening (EU) nr. 910/2014 van het Europees Parlement en de Raad betreffende elektronische identificatie en vertrouwensdiensten voor elektronische transacties in de interne markt, bevat deze lijst de door de lidstaten meegedeelde gegevens op grond van artikel 4, leden 1 en 2, van Uitvoeringsbesluit (EU) 2015/1505 van de Commissie.
++De Europese Commissie wil met deze website het gebruik van de vertrouwenslijsten vergemakkelijken. Ons doel is up-to-date en nauwkeurige informatie aan te bieden. Gesignaleerde fouten worden zo snel mogelijk gecorrigeerd. De Commissie aanvaardt echter geen enkele verantwoordelijkheid of aansprakelijkheid met betrekking tot de informatie op de vertrouwenslijsten. De verantwoordelijkheid hiervoor ligt uitsluitend bij de EU-landen.
++Wij proberen onderbrekingen door technische storingen zoveel mogelijk te beperken. Sommige gegevens of informatie op onze site kan zijn aangemaakt of omgezet in bestanden of formaten die niet foutloos zijn. Wij kunnen niet uitsluiten dat onze dienstverlening door dergelijke problemen wordt verstoord. De Commissie aanvaardt geen aansprakelijkheid voor die problemen die zich als gevolg van het gebruik van deze site of van andere daarmee verbonden externe sites mochten voordoen.
++Met deze disclaimer wordt niet beoogd de aansprakelijkheid van de Commissie te beperken in strijd met de in de toepasselijke EU-wetgeving vervatte vereisten, noch haar aansprakelijkheid uit te sluiten voor aangelegenheden die uit hoofde van die wetgeving niet mogen worden uitgesloten.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="pl">Zgodnie z art. 4 ust. 3 decyzji wykonawczej Komisji (UE) 2015/1505 z dnia 8 września 2015 r. ustanawiająca specyfikacje techniczne i formaty dotyczące zaufanych list zgodnie z art. 22 ust. 5 rozporządzenia Parlamentu Europejskiego i Rady (UE) nr 910/2014 w sprawie identyfikacji elektronicznej i usług zaufania w odniesieniu do transakcji elektronicznych na rynku wewnętrznym, wykaz ten zawiera informacje przekazane przez państwa członkowskie zgodnie z artykułami 4.1 i 4.2 decyzji wykonawczej Komisji (UE) 2015/1505.
++Ta strona internetowa Komisji Europejskiej ma ułatwić korzystanie z krajowych zaufanych list. Naszym celem jest dostarczanie aktualnych i ścisłych informacji. Jeśli zostaniemy powiadomieni o błędach, dołożymy wszelkich starań, aby je skorygować. Komisja nie ponosi jednak żadnej odpowiedzialności za treść krajowych zaufanych list, za którą odpowiadają wyłącznie państwa członkowskie.
++Naszym celem jest ograniczenie do minimum zakłóceń wynikających z błędów technicznych. Jednak niektóre z zamieszczonych w tym serwisie danych lub informacji mogły być utworzone lub zamieszczone w plikach lub formatach, które nie są wolne od błędów, w związku z czym nie możemy zagwarantować, że problemy takie nie spowodują przerw w dostępie do serwisu lub innych zakłóceń w jego funkcjonowaniu. Komisja Europejska nie bierze odpowiedzialności w związku z tego rodzaju problemami będącymi następstwem korzystania z tego serwisu lub jakichkolwiek serwisów zewnętrznych, do których odsyła niniejszy serwis.
++Niniejsze zastrzeżenie nie ma na celu ograniczenia odpowiedzialności Komisji Europejskiej w przypadku naruszenia jakichkolwiek wymagań określonych w stosownych przepisach prawa krajowego ani wyłączenia jej odpowiedzialności za kwestie, które na gruncie tego prawa nie podlegają wyłączeniu.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="pt">Em conformidade com o n.º 3 do artigo 4.° da Decisão de Execução (UE) 2015/1505 da Comissão, de 8 de setembro de 2015, que estabelece as especificações técnicas e os formatos relativos às listas de confiança, nos termos do artigo 22.º, n.º 5, do Regulamento (UE) n.º 910/2014 do Parlamento Europeu e do Conselho relativo à identificação eletrónica e aos serviços de confiança para as transações eletrónicas no mercado interno, a presente lista contém as informações notificadas pelos Estados-Membros ao abrigo do n.º 1 do artigo 4.° e n.º 2 do artigo 4.° da Decisão de Execução (UE) 2015/1505 da Comissão.
++Este sítio Web da Comissão Europeia assegura a interoperabilidade necessária para facilitar uma utilização eficaz das listas aprovadas e tem por objectivo fornecer informações exactas e actualizadas. Procuraremos corrigir todos os erros que nos forem comunicados. Contudo, a Comissão declina toda e qualquer responsabilidade quanto ao conteúdo das listas aprovadas nacionais, que incumbe exclusivamente aos Estados-Membros.
++É nosso objectivo reduzir ao mínimo os inconvenientes causados por erros técnicos. Contudo, determinados dados constantes do nosso sítio podem ter sido criados ou estruturados em ficheiros ou formatos não isentos de erros, pelo que não podemos garantir um serviço sem interrupções ou perturbações. A Comissão declina qualquer responsabilidade por eventuais problemas que surjam na sequência da consulta deste sítio ou de quaisquer sítios externos a que as ligações dêem acesso.
++A presente declaração de exoneração de responsabilidade não pretende limitar a responsabilidade da Comissão Europeia de uma forma que contrarie o disposto na legislação nacional aplicável, nem excluir a sua responsabilidade nos casos em que tal não é permitido por essa legislação.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="ro">În conformitate cu articolul 4 alineatul (3) din Decizia de punere în aplicare (UE) 2015/1505 a Comisiei din 14 octombrie 2013 de modificare a Deciziei 2009/767/CE în ceea ce privește crearea, menținerea și publicarea listelor sigure de prestatori de servicii de certificare supravegheați/acreditați de către statele membre, prezenta listă conține informațiile notificate de statele membre în conformitate cu articolul 4 alineatele (1) și (2) din Decizia de punere în aplicare (UE) 2015/1505 a Comisiei.
++Comisia Europeană utilizează acest site ca instrument de facilitare a utilizării Listelor naționale sigure, prin sporirea interoperabilității. Scopul nostru este ca aceste informații să fie actualizate și exacte. În cazul în care ni se vor semnala erori, vom încerca să le corectăm. Totuși, Comisia nu îșiasumă niciun fel de responsabilitate cu privire la conținutul Listelor naționale sigure, care intră, integral, în sarcina statelor membre.
++De asemenea, ne propunem să reducem consecințele negative cauzate de erori tehnice. Cu toate acestea, este posibil ca unele date sau informații de pe site-ul nostru să fi fost create sau structurate în fișiere sau formate care pot prezenta erori. Prin urmare, nu putem garanta că serviciile noastrenu vor fi întrerupte sau afectate de asemenea probleme. Comisia Europeană nu își asumă nicio responsabilitate cu privire la eventuale probleme survenite ca urmare a utilizării acestui site sau a oricăror alte site-uri externe la care face trimitere.
++Această denegare de responsabilitate nu este destinată să limiteze răspunderea Comisiei Europene într-un mod care contravine reglementărilor prevăzute de legislația internă aplicabilă și nu exclude răspunderea sa în cazuri care, în conformitate cu legislația respectivă, aceasta nu poate fiexclusă.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="sk">V súlade s článkom 4 ods. 3 vykonávacieho rozhodnutia Komisie (EÚ) 2015/1505 z 8. septembra 2015, ktorým sa ustanovujú technické špecifikácie a formáty týkajúce sa dôveryhodných zoznamov podľa článku 22 ods. 5 nariadenia Európskeho parlamentu a Rady (EÚ) č. 910/2014 o elektronickej identifikácii a dôveryhodných službách pre elektronické transakcie na vnútornom trhu, tento zoznam obsahuje informácie oznámené členskými štátmi podľa článkov 4 ods. 1 a 2 vykonávacieho rozhodnutia Komisie (EÚ) 2015/1505.
++Európska komisia spravuje tieto internetové stránky ako interoperabilný nástroj, ktorý slúži na uľahčenie praktického využitia zoznamov dôveryhodných informácií. Naším cieľom je poskytovať tieto informácie včas a správne. Ak budeme upozornení na chyby, pokúsime sa ich napraviť.Komisia však nepreberá žiadnu zodpovednosť, ani inak neručí za obsah zoznamov dôveryhodných informácií, ktoré poskytli členské štáty.
++Je naším cieľom minimalizovať technické chyby. Niektoré informácie alebo údaje na tejto webovej lokalite však mohli byť vytvorené v chybných súboroch alebo formátoch, a preto nemožno zaručiť, že tieto problémy nespôsobia výpadok alebo inú poruchu našej webovej lokality. Komisia nenesie žiadnu zodpovednosť za podobné chyby, ktoré sa zistia pri používaní tejto lokality alebo pridružených externých lokalít.
++Zámerom tohto vyhlásenia o odmietnutí zodpovednosti nie je obmedzenie zodpovednosti Európskej komisie v rozpore s požiadavkami ustanovenými v príslušných vnútroštátnych predpisoch ani vylúčenie jej zodpovednosti vo veciach, v ktorých ju podľa týchto predpisov nie je možné vylúčiť.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="sl">Seznam v skladu s členom 4(3) Izvedbenega sklepa Komisije (EU) 2015/1505 z dne 8. septembra 2015 o določitvi tehničnih specifikacij in formatov v zvezi z zanesljivimi seznami v skladu s členom 22(5) Uredbe (EU) št. 910/2014 Evropskega parlamenta in Sveta o elektronski identifikaciji in storitvah zaupanja za elektronske transakcije na notranjem trgu, vsebuje informacije, ki so jih v skladu s členom 4 (1) in (2) Izvedbenega sklepa Komisije (EU) 2015/1505 sporočile države članice.
++Evropska komisija si prizadeva izboljšati praktično uporabo zanesljivih seznamov držav članic. Temu je namenjeno tudi to spletišče. Želimo zagotavljati pravočasne in točne informacije. Če nas boste opozorili na morebitne napake, jih bomo poskušali čimprej odpraviti. Komisija ne prevzema nikakršne zakonske ali druge odgovornosti glede vsebine nacionalnih zanesljivih seznamov, za katero so odgovorne izključno države članice.
++Uporabnikom želimo omogočiti nemoteno uporabo s čim manj tehničnimi napakami. Vendar so lahko nekateri podatki in informacije na našem spletišču v datotekah ali obliki, ki niso popolnoma brez napak, zato ne moremo zagotoviti, da takšne težave ne bodo vplivale na zagotavljanje naših storitev. Komisija ne prevzema nobene odgovornosti v zvezi s težavami, ki so posledica uporabe tega spletišča ali povezanega zunanjega spletišča.
++Izjava ne omejuje odgovornosti Evropske komisije pri kakršnem koli delovanju v nasprotju z veljavno nacionalno zakonodajo, niti ne izključuje odgovornosti za dejanja, ki jih v skladu s to zakonodajo ni mogoče izključiti.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="fi">Tämä luettelo sisältää komission täytäntöönpanopäätöksen (EU) 2015/1505 4 artiklan 3 kohdan mukaisesti tiedot, jotka EU-maat ovat toimittaneet komission täytäntöönpanopäätöksen (EU) 2015/1505 4 artiklan 1 ja 2 kohdan mukaisesti (Komission täytäntöönpanopäätös (EU) 2015/1505, annettu 8 päivänä syyskuuta 2015, luotettujen luetteloiden teknisten eritelmien ja muotoseikkojen vahvistamisesta sähköisestä tunnistamisesta ja sähköisiin transaktioihin liittyvistä luottamuspalveluista sisämarkkinoilla annetun Euroopan parlamentin ja neuvoston asetuksen (EU) N:o 910/2014 22 artiklan 5 kohdan mukaisesti).
++Euroopan komissio ylläpitää tätä verkkosivustoa helpottaakseen kansallisten luotettavien luetteloiden käyttöä. Pyrimme pitämään tiedot ajantasaisina ja virheettöminä. Pyrimme korjaamaan tietoomme tulleet virheet. Komissio ei kuitenkaan voi olla vastuussa kansallisten luotettavien luetteloiden sisällöstä, joka on yksinomaan jäsenvaltioiden vastuulla.
++Tavoitteenamme on minimoida teknisten häiriöiden aiheuttamat haitat. Jotkin tiedot sivustollamme on voitu luoda tai muotoilla sellaiseen muotoon tai sellaisiin tiedostoihin, jotka eivät ole virheettömiä, emmekä voi taata, ettei palvelumme keskeydy tai etteivät kyseiset ongelmat muutoin vaikuta siihen. Euroopan komissio ei vastaa ongelmista, jotka johtuvat tämän sivuston tai siihen linkitettyjen ulkopuolisten sivustojen käytöstä.
++Tämän vastuuvapauslausekkeen tarkoituksena ei ole rajoittaa Euroopan komission vastuuta vastoin sovellettavan kansallisen lain vaatimuksia tai poistaa komission vastuuta seikoista, joiden osalta vastuuta ei sovellettavan kansallisen lain mukaan voida poistaa.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="sv">Av listan framgår var du kan hitta den information som EU-länderna har anmält, och som kommissionen måste tillhandahålla, enligt artikel 4.1, 4.2 och 4.3 i kommissionens genomförandebeslut (EU) 2015/1505 av den 8 september 2015 om fastställande av tekniska minimispecifikationer och format rörande förteckningar över betrodda tjänsteleverantörer i enlighet med artikel 22.5 i Europaparlamentets och rådets förordning (EU) nr 910/2014 om elektronisk identifiering och betrodda tjänster för elektroniska transaktioner på den inre marknaden.
++Vi har samlat informationen på den här webbplatsen, så att du lättare ska kunna använda den i praktiken. Vi strävar efter att hålla informationen aktuell och korrekt. Om felaktigheter kommer till vår kännedom, försöker vi att rätta till dem. Vi frånsäger oss dock allt ansvar för de nationella förteckningarna. Medlemsländerna ansvarar helt och hållet själva för innehållet.
++Vi strävar efter att så långt som möjligt undvika tekniska störningar. En del uppgifter eller information på vår sida kan dock ha skapats eller strukturerats i filer eller format som inte är felfria. Vi kan inte garantera att den service vi tillhandahåller kommer att vara fri från avbrott eller andra störningar som har att göra med sådana problem. Kommissionen frånsäger sig allt ansvar för problem som kan uppstå till följd av att denna webbplats eller någon av dess länkar har använts.
++Denna ansvarsfriskrivning är inte avsedd att inskränka kommissionens ansvar i strid med tillämplig nationell lagstiftning eller att utesluta ansvar för kommissionen i de fall där friskrivning inte får ske enligt sådan lagstiftning.</TSLLegalNotice>
++ <TSLLegalNotice xml:lang="hr">U skladu s člankom 4. stavkom 3. Provedbene odluke Komisije (EU) 2015/1505 оd 8. rujna 2015. o utvrđivanju tehničkih specifikacija i formata koji se odnose na pouzdane popise u skladu s člankom 22. stavkom 5. Uredbe (EU) br. 910/2014 Europskog parlamenta i Vijeća o elektroničkoj identifikaciji i uslugama povjerenja za elektroničke transakcije na unutarnjem tržištu, trenutačni popis sadržava informacije o kojima su države članice izvijestile u skladu s člankom 4. stavkom 1. i člankom 4. stavkom 2. Provedbene odluke Komisije (EU) 2015/1505.
++Europska Komisija održava ovo web-mjesto kao sredstvo za postizanje interoperabilnosti koje je napravljeno kako bi olakšalo praktičnu primjenu nacionalnih pouzdanih popisa. Naš je cilj ove informacije održavati pravodobnim i točnim. Ukaže li nam se na pogreške, pokušat ćemo ih otkloniti. No, Komisija ne preuzima nikakvu odgovornost za sadržaj nacionalnih pouzdanih popisa, jer su za njega odgovorne isključivo države članice. Cilj nam je smetnje uzrokovane tehničkim pogreškama svesti na minimum. Međutim, postoji mogućnost da su neki podaci i informacije na našim stranicama izrađeni ili strukturirani u datotekama ili formatima koji nisu bez pogrešaka te stoga ne možemo jamčiti da će se naše usluge odvijati bez prekida ili da takvi problemi neće na neki drugi način utjecati na njih. Europska Komisija ne preuzima nikakvu odgovornost u vezi s problemima koji nastanu zbog uporabe ovih stranica ili bilo kojih povezanih vanjskih stranica. Ovom se izjavom o ograničenju odgovornosti ne ograničava odgovornost Europske Komisije u slučaju kršenja uvjeta propisanih primjenjivim nacionalnim pravom niti se isključuje njezina odgovornost u slučajevima u kojima u skladu s tim pravom to nije moguće.</TSLLegalNotice>
++ </PolicyOrLegalNotice>
++ <HistoricalInformationPeriod>65535</HistoricalInformationPeriod>
++ <PointersToOtherTSL>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://ec.europa.eu/tools/lotl/eu-lotl.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUlistofthelists</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>EU</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">European Commission</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUlistofthelists</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFMzCCAxugAwIBAgIJAJzqELfj2cWyMA0GCSqGSIb3DQEBCwUAMFcxCzAJBgNVBAYTAkFUMS8wLQYDVQQKDCZSdW5kZnVuayB1bmQgVGVsZWtvbSBSZWd1bGllcnVuZ3MtR21iSDEXMBUGA1UEAwwOUlRSIFNlcnZpY2VzIDQwHhcNMTcwMTE5MTc1ODA4WhcNMjEwMTE5MTc1ODA4WjBXMQswCQYDVQQGEwJBVDEvMC0GA1UECgwmUnVuZGZ1bmsgdW5kIFRlbGVrb20gUmVndWxpZXJ1bmdzLUdtYkgxFzAVBgNVBAMMDlRydXN0ZWQgTGlzdCA2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyVv8Q9Sw5HlU5/g4S0vOIH4FT0HOqLob9Loj8LA0DXhCUFxZUbZxl3zltAc72SdIUhOs16W7htYo6TKY1cRJqvpt6qm5l8P+B6o0Gt2evy1vgt/kvRvRVjk2Qsd9H1d2nIiyRr5z3ac3d2kiX0sIe2I02GHsJqEqahBdR2b5O8bMi5CVxh1ZgwQo+AieYtrrnBI9otyUiTyWZvk9DmOb28bdLGqOKArtub90EunCezUhKCOYmIEgAphS0KEE4SOURFreOGeJppd9OvkCN4mQkWdPxOoPpsAZmUu1KrwlAPNbpZR41MSNGNo3k7Y3jMxSLB2tP9nOcZI8HDFg+sy/4QIDAQABo4IBADCB/TAfBgNVHSMEGDAWgBQy0CUUAY3m62y+7e/kHp75C2vPCDAdBgNVHQ4EFgQUD4/pY33/ttXb8YCK17ovsM9AXHMwDgYDVR0PAQH/BAQDAgeAMBQGA1UdIAQNMAswCQYHKigADwABAjAJBgNVHRMEAjAAMBEGA1UdJQQKMAgGBgQAkTcDADA1BgNVHR8ELjAsMCqgKKAmhiRodHRwczovL3d3dy5zaWduYXR1ci5ydHIuYXQvcnRyNC5jcmwwQAYIKwYBBQUHAQEENDAyMDAGCCsGAQUFBzAChiRodHRwczovL3d3dy5zaWduYXR1ci5ydHIuYXQvcnRyNC5jZXIwDQYJKoZIhvcNAQELBQADggIBAJgl406ah6pLX2efheBaENNLKzwvAPyevk+Ohpx0qbL3S4Rpq5a8XqWkCnl2H7Cx6faED3xwQmYv62w3X5/wuqVkBnuyYO/L5lPvAK0mYjvATf86SHzf/yR1SxcFsbydVPPhTCvRagjbejgtnenfMSTIOam96opZh1FL1e2yWL9tZFn7DUHnVwN+d/LKjSIlkZVb4p7htGKOzps5Wc/ZkBUcgpWZ3zvLlIxAR0mlmShgI1MAkP9vzTvO94MUpoxpnZTN6le3svNv0D9zrkncqDtokr+JpAeYmqwy3sRxd3g5qmAAhuYfOr2o9rMVzqIVn7DmT2u454ZrDletEoVx6n1Go8kBqevslZi/U/udapXm2BVsX7HufG3PL7kDm9rY+npAjk2sCL6K0Mo4y+BiVe81ZGELplGFQdqEbC+Um19hVtZaUqw6pa9GGeYJJESimyKQzmE/5RuSwFPsOehK1MSqbEIczX9d+SM/HH5A8STMydI2Fx5y9r5v7sTRPVSLLU+s+WRuMpObM+Xi00iF4CihSwnWVTpFtVQlaBHHK9muUHGuW9fo9qoExFS1nbUvbbjoa7A+qIhtDrrx6QmD9paCyjt18+TaxmTEzOYzOR6DPIY7LG4bMKk7L6ocF+HXjXiAovMig3cV9RF4Pg2dl5wOBItLVRUYIZlxBolo80AP</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://www.signatur.rtr.at/currenttl.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>AT</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Rundfunk und Telekom Regulierungs-GmbH</Name>
++ <Name xml:lang="de">Rundfunk und Telekom Regulierungs-GmbH</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/AT</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIID3zCCAsegAwIBAgIJAOOTbJMmowFCMA0GCSqGSIb3DQEBBQUAMIGHMS0wKwYDVQQDEyRCZWxnaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IxSTBHBgNVBAoTQEZQUyBFY29ub215LCBTTUVzLCBTZWxmLWVtcGxveWVkIGFuZCBFbmVyZ3kgLSBRdWFsaXR5IGFuZCBTYWZldHkxCzAJBgNVBAYTAkJFMB4XDTE0MDIxOTEzMzcxNVoXDTI0MDIxNzEzMzcxNVowgYcxLTArBgNVBAMTJEJlbGdpYW4gVHJ1c3RlZCBMaXN0IFNjaGVtZSBPcGVyYXRvcjFJMEcGA1UEChNARlBTIEVjb25vbXksIFNNRXMsIFNlbGYtZW1wbG95ZWQgYW5kIEVuZXJneSAtIFF1YWxpdHkgYW5kIFNhZmV0eTELMAkGA1UEBhMCQkUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDAgEFkoDPTYDvGk+/IPnGSPm58NRE7mpzLHk8lxpYnTAtbMhn7FWru9GlNi+blYYNOEmzN2E5KO9+7AAAMmx2x8zmEMwc3oUQ7E0WN5Gl+Y+7n6NtX50D/4Sbw4IjVvwwRRru8Coj5vq5Hz3JKTgft8teEpwb5vSFZh6+o9irdX342RJU4AtG78sxZvzIqpa3WsddMf5XDyjnGK3dRgkDuOaBxWEexuUiN4LvO+MacwoaxEqLhEZ6TALGWS2WmNEW3OlUdf7nc0Tz/lnyQsuFn01c4pg56hjyxLtpjyHwNwbTDx+cjBpBveOT9Nb6UfKFHknC5AfrIOWnFLXUmyKD/AgMBAAGjTDBKMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgbAMB0GA1UdDgQWBBRf745pXfv0l1rxBwgOUhlQqteQUTARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQEFBQADggEBAG8j1gOIKEKTd904EepYs1MioBErjXxkAN2zvaZevh3awkB6cGeQUnmDz3ve4ZCJSB4MZ138EkUi2eobXaPyaLv01vl6sM6eUj6QhwNvfGXHP99AOHG8ZyH4IkJgB+8jImhg2danj4VcAosGtvTknYtZ2K+GhRevgAnoryhJ7A7jszwWzaahFwTnunymlBXlrwG9KyBSkg4IhWgc+IgYUgA7rpOZ6zXFPTJQJphiRg7pQECnV1Fvw9ediMGhBnNL3tE/5IKIug2XoJ3Mlh9lho6c8YAhyp2Q16inCLDJksZc1qUqRHo9lmwWnGANWfZvQWRJS0LJvrF7LSL5H/Y4yZo=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIID3zCCAsegAwIBAgIJAJH6V+OXuB7aMA0GCSqGSIb3DQEBBQUAMIGHMS0wKwYDVQQDEyRCZWxnaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IxSTBHBgNVBAoTQEZQUyBFY29ub215LCBTTUVzLCBTZWxmLWVtcGxveWVkIGFuZCBFbmVyZ3kgLSBRdWFsaXR5IGFuZCBTYWZldHkxCzAJBgNVBAYTAkJFMB4XDTE0MDIxOTEzMzc0MFoXDTI0MTAxNDEzMzc0MFowgYcxLTArBgNVBAMTJEJlbGdpYW4gVHJ1c3RlZCBMaXN0IFNjaGVtZSBPcGVyYXRvcjFJMEcGA1UEChNARlBTIEVjb25vbXksIFNNRXMsIFNlbGYtZW1wbG95ZWQgYW5kIEVuZXJneSAtIFF1YWxpdHkgYW5kIFNhZmV0eTELMAkGA1UEBhMCQkUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDAgEFkoDPTYDvGk+/IPnGSPm58NRE7mpzLHk8lxpYnTAtbMhn7FWru9GlNi+blYYNOEmzN2E5KO9+7AAAMmx2x8zmEMwc3oUQ7E0WN5Gl+Y+7n6NtX50D/4Sbw4IjVvwwRRru8Coj5vq5Hz3JKTgft8teEpwb5vSFZh6+o9irdX342RJU4AtG78sxZvzIqpa3WsddMf5XDyjnGK3dRgkDuOaBxWEexuUiN4LvO+MacwoaxEqLhEZ6TALGWS2WmNEW3OlUdf7nc0Tz/lnyQsuFn01c4pg56hjyxLtpjyHwNwbTDx+cjBpBveOT9Nb6UfKFHknC5AfrIOWnFLXUmyKD/AgMBAAGjTDBKMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgbAMB0GA1UdDgQWBBRf745pXfv0l1rxBwgOUhlQqteQUTARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQEFBQADggEBABSri/BFtWHsvDgFri/fPFXJaQ9a5U1HgfOrg0pcVacnC2ezhZ3Ita1d+nWlaHfUBx2L7pp41G23TZE9Efcb/8RPuYDDcIv2TSKV/hIxthk+IP6avZ6cEuWL3iXhqusRM313QgH8G67EPDmTy9hX0t/3KnBQZ6gmb9SpTnG44pQ8LOfLvpzaT2Z1etBsXp0JED7P0OPJq459S3huIYoM3NTNaU8dLGAYJUR7D2fcvDySvt8xIjO7HtzHer79Uq4bNn8uRRHgKJ2LMBK0LvoVBX0PekQFSXi06xpPA9SjmozZ76dW0fK7uPUOFoXB9LtsZCFsMRjTL9+KhPyhSam2iy8=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIID3zCCAsegAwIBAgIJAK7RpgGHETKPMA0GCSqGSIb3DQEBBQUAMIGHMS0wKwYDVQQDEyRCZWxnaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IxSTBHBgNVBAoTQEZQUyBFY29ub215LCBTTUVzLCBTZWxmLWVtcGxveWVkIGFuZCBFbmVyZ3kgLSBRdWFsaXR5IGFuZCBTYWZldHkxCzAJBgNVBAYTAkJFMB4XDTE0MDIxOTEzMzc1MloXDTI1MDIxMTEzMzc1MlowgYcxLTArBgNVBAMTJEJlbGdpYW4gVHJ1c3RlZCBMaXN0IFNjaGVtZSBPcGVyYXRvcjFJMEcGA1UEChNARlBTIEVjb25vbXksIFNNRXMsIFNlbGYtZW1wbG95ZWQgYW5kIEVuZXJneSAtIFF1YWxpdHkgYW5kIFNhZmV0eTELMAkGA1UEBhMCQkUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDAgEFkoDPTYDvGk+/IPnGSPm58NRE7mpzLHk8lxpYnTAtbMhn7FWru9GlNi+blYYNOEmzN2E5KO9+7AAAMmx2x8zmEMwc3oUQ7E0WN5Gl+Y+7n6NtX50D/4Sbw4IjVvwwRRru8Coj5vq5Hz3JKTgft8teEpwb5vSFZh6+o9irdX342RJU4AtG78sxZvzIqpa3WsddMf5XDyjnGK3dRgkDuOaBxWEexuUiN4LvO+MacwoaxEqLhEZ6TALGWS2WmNEW3OlUdf7nc0Tz/lnyQsuFn01c4pg56hjyxLtpjyHwNwbTDx+cjBpBveOT9Nb6UfKFHknC5AfrIOWnFLXUmyKD/AgMBAAGjTDBKMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgbAMB0GA1UdDgQWBBRf745pXfv0l1rxBwgOUhlQqteQUTARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQEFBQADggEBABabI8rU/pW4uiTHk47X838qntx6FJ5iDCs+iaED142+yju/wQVU4J8rjS4UqsdO8wOM4sfyLjMLRRsK60saZ5o2u+tLIj0QrFRytTD1WIuPZxpBjQU8Zj/+aLkr4bQmyqgJ4XzJZ9BMvi3Yv18jQxJSjvGpXaWpUNLNnhENTuzKv8f/0vBn2Inmpg7cwgj2q8qhZ/3r1ZmHETSDmEdjV4ovYruAKX58jwwnRdgacTtgQpB88+zZDtAp3FVJxR9nefCdvjV2nuN++UgA2v8d2u9c8c7ObGd7dL6O9rQCfvBWbw6/h9nkXSJSAjKXS1uvnABtq3fQabHwxNc8rIQPkLk=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIID3zCCAsegAwIBAgIJAOv7FV6q0Or/MA0GCSqGSIb3DQEBBQUAMIGHMS0wKwYDVQQDEyRCZWxnaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IxSTBHBgNVBAoTQEZQUyBFY29ub215LCBTTUVzLCBTZWxmLWVtcGxveWVkIGFuZCBFbmVyZ3kgLSBRdWFsaXR5IGFuZCBTYWZldHkxCzAJBgNVBAYTAkJFMB4XDTE0MDIxOTEzMzgwNFoXDTI1MDYxMTEzMzgwNFowgYcxLTArBgNVBAMTJEJlbGdpYW4gVHJ1c3RlZCBMaXN0IFNjaGVtZSBPcGVyYXRvcjFJMEcGA1UEChNARlBTIEVjb25vbXksIFNNRXMsIFNlbGYtZW1wbG95ZWQgYW5kIEVuZXJneSAtIFF1YWxpdHkgYW5kIFNhZmV0eTELMAkGA1UEBhMCQkUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDAgEFkoDPTYDvGk+/IPnGSPm58NRE7mpzLHk8lxpYnTAtbMhn7FWru9GlNi+blYYNOEmzN2E5KO9+7AAAMmx2x8zmEMwc3oUQ7E0WN5Gl+Y+7n6NtX50D/4Sbw4IjVvwwRRru8Coj5vq5Hz3JKTgft8teEpwb5vSFZh6+o9irdX342RJU4AtG78sxZvzIqpa3WsddMf5XDyjnGK3dRgkDuOaBxWEexuUiN4LvO+MacwoaxEqLhEZ6TALGWS2WmNEW3OlUdf7nc0Tz/lnyQsuFn01c4pg56hjyxLtpjyHwNwbTDx+cjBpBveOT9Nb6UfKFHknC5AfrIOWnFLXUmyKD/AgMBAAGjTDBKMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgbAMB0GA1UdDgQWBBRf745pXfv0l1rxBwgOUhlQqteQUTARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQEFBQADggEBAJQt17IzKeqnxakdgysT1FlymocZUUHGhfbQAfr4OEm48LMoN4M5ZeeRMVIwk4jODURuhawtKJ3hRdGB+zTzIMLheOmAGGRDUNrDwctpn8G+RqEFjlgc5yi1ICHBZJrvyud7cPwz8AwMtV+K1iFmbEWqsGASZ96J9uilJJ+RkPcV3Olwtgi3+IxOxHfhmq0PCdRk1k8+c7frdT935Z8SfFgnaPy4RFg2eKdvC2qsvsF3J19eP/BKlGdVVe44yTB3UCE3KSLiySvgM/JXIQN5VE+lGPeURKnoXsW5E71IdUEi30Ptd0YBxTjEairZKyzhgGbZEnBUWSkn6n9uZ5Ai2lo=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFeDCCBP6gAwIBAgIMWC5ThUy0RpptTp0uMAoGCCqGSM49BAMDMH8xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTowOAYDVQQDEzFHbG9iYWxTaWduIEdDQyBFNDUgUXVhbGlmaWVkIFFTQ0QgU2lnbmluZyBDQSAyMDIwMRkwFwYDVQRhExBOVFJCRS0wNDU5MTM0MjU2MB4XDTI1MDcyMjE1MzUxOFoXDTI3MDcyMzE1MzUxOFowggEHMQswCQYDVQQGEwJCRTEnMCUGA1UECBMeQnJ1c3NlbHMgSG9vZmRzdGVkZWxpamsgR2V3ZXN0MRwwGgYDVQQHExNTaW50LUpvb3N0LXRlbi1Ob2RlMUkwRwYDVQQKE0BGZWRlcmFsZSBPdmVyaGVpZHNkaWVuc3QgRWNvbm9taWUsIEsuTS5PLCBNaWRkZW5zdGFuZCBlbiBFbmVyZ2llMUkwRwYDVQQDE0BGZWRlcmFsZSBPdmVyaGVpZHNkaWVuc3QgRWNvbm9taWUsIEsuTS5PLCBNaWRkZW5zdGFuZCBlbiBFbmVyZ2llMRswGQYDVQRhExJOVFJCRS0wMzE0LjU5NS4zNDgwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCw1ThDEoFFZJhP2qJPJDyxzuL/G7AghC0dmWMwMKAACSgXuGhLnsNvLeaxe6nc/eVcDokU0bOdSD3c7d8RG7hv5OtQ22X2EH6Pve1IT1Lgg3+xfmBLrmHi/UGik75KrAN7ifuhzqFEgDOqku8ZSO4+PDs9HZg6X4phillTWIJ+H3rrm8Zb/msgKjdKgZZag9Ql0hzdoJwzkCXVqJrV32d2c5e2Z3t8ExAjlXcfjIdfW8ONOwIqCe/SefiXoabygmUhc+CzJ6b8ylahQCkIpMaqtAZoUQGeNXSBykUHZddpXNbikM7uwnAiCEUAa8jEa/YWG2CJs7swF7MNMG+yaaXpAgMBAAGjggIJMIICBTAOBgNVHQ8BAf8EBAMCBkAwgaMGCCsGAQUFBwEBBIGWMIGTME4GCCsGAQUFBzAChkJodHRwOi8vc2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC9nc2djY2U0NXF1YWxxc2Nkc2lnbmNhMjAyMC5jcnQwQQYIKwYBBQUHMAGGNWh0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL2dzZ2NjZTQ1cXVhbHFzY2RzaWduY2EyMDIwMFkGA1UdIARSMFAwQwYLKwYBBAGgMgEoJAIwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCQYHBACL7EABAzBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmdsb2JhbHNpZ24uY29tL2dzZ2NjZTQ1cXVhbHFzY2RzaWduY2EyMDIwLmNybDA3BggrBgEFBQcBAwQrMCkwCAYGBACORgEBMAgGBgQAjkYBBDATBgYEAI5GAQYwCQYHBACORgEGAjAgBgNVHSUEGTAXBgkqhkiG9y8BAQUGCisGAQQBgjcKAwwwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS1ixC9qo9vveNITthfKIMXFhc9OzAdBgNVHQ4EFgQUVTXDcVGqVUX3iJr2LRjemG+LzfkwCgYIKoZIzj0EAwMDaAAwZQIwWMjqbDmwwt5EGM5D/X09QIAQwXjfbTKmF+3w33aGdVTV8DDG7Gtku5EmtYQQU4LOAjEA3M3qbx5FFEXGFaNuGkLWbpOHVepkI84zZg5q+cRsdfhwGw7s98XZ7ESDnFvsC4YC</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://tsl.belgium.be/tsl-be.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>BE</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">FPS Economy, SMEs, Self-employed and Energy - Quality and Safety</Name>
++ <Name xml:lang="fr">SPF Economie, PME, Classes moyennes et Energie - Qualité et Sécurité</Name>
++ <Name xml:lang="nl">FOD Economie, KMO, Middenstand en Energie - Kwaliteit en Veiligheid</Name>
++ <Name xml:lang="de">FÖD Wirtschaft, KMU, Mittelstand und Energie - Qualität und Sicherheit</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/BE</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://crc.bg/files/_en/TSL_BG.pdf</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>BG</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/pdf</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Communications Regulation Commission</Name>
++ <Name xml:lang="bg">Комисия за регулиране на съобщенията</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/BG</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://crc.bg/files/_en/TSL_BG.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>BG</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Communications Regulation Commission</Name>
++ <Name xml:lang="bg">Комисия за регулиране на съобщенията</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/BG</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIDkTCCAnmgAwIBAgIFEkAyZ6kwDQYJKoZIhvcNAQELBQAwWDELMAkGA1UEBhMCQ1kxMDAuBgNVBAoMJ0RlcGFydG1lbnQgb2YgRWxlY3Ryb25pYyBDb21tdW5pY2F0aW9uczEXMBUGA1UEAwwOQ1ktVFNMIFNpZ25lcjEwHhcNMTcxMjAxMDAwMDAwWhcNMjcxMjAxMDAwMDAwWjBYMQswCQYDVQQGEwJDWTEwMC4GA1UECgwnRGVwYXJ0bWVudCBvZiBFbGVjdHJvbmljIENvbW11bmljYXRpb25zMRcwFQYDVQQDDA5DWS1UU0wgU2lnbmVyMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKAsRMYRj0v937oGqxRQrjvWBFncZ+jEq/qyUxgiQB0DGWnOEN9QbtvdIu/swVSCh3FZc7vrvI2aTt0NDQ2kZ8ohBpcj+qQb4xUFU5PXhUdIiGsqGO/+0hYeteJZyhHZ1VxL97U0LzmqkmfYumNmJUdDOoqfmzkatHrORvooSlK+SYhXHTrCxXEU0e3xIwnlXcyaVXRBbDdFsGY3p5QrhTBQ5Cd+FxZMhHLhxnUetPnqN9GOJXgghZAy+72c4zmc7X8gshaxbvO7MEvrBgdbaZcjHod7XiHowzCTxLFjDR9eHXrLvmukYcY9qeb5ieJ37VXf9JUbO9q+aFQu5wJ61Z8CAwEAAaNiMGAwHQYDVR0OBBYEFDPKoJc8X/T59hCvhxlDqw2JXj1uMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgbAMBEGA1UdIAQKMAgwBgYEVR0gADARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQELBQADggEBAINBgvYZfI1L6iY0i1OnVoQR4Nje/FuCzW9tppUCC2h9T9x9sClph6o8hceaiBUDdobX9/BIxc15o59q7wbmyGtYnNpZG8nctj/90uciXvUdOCA7PQeX5/cMUVU/Yscg+Pv1ydNyu/7tZtdDfKDyc+Lux9CDGpvYMDDRqX048NsYTB4shry0a7EzhOyD8jIYjY2xU7AYIvGQI1w/OZ2wqEAM7KhhEHz915wdhkv9DBb/CB14mONa1gMWTL27e7GnXZ+mWZghF1HyDjbG3Pr6jFzEgvxMTkGGLpvLOFm7ULwqYbP+ORd7l6exZ+XvzoN5ilPRZmnx/6eHdhutre/BqmE=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIDkTCCAnmgAwIBAgIFEm38MY8wDQYJKoZIhvcNAQELBQAwWDELMAkGA1UEBhMCQ1kxMDAuBgNVBAoMJ0RlcGFydG1lbnQgb2YgRWxlY3Ryb25pYyBDb21tdW5pY2F0aW9uczEXMBUGA1UEAwwOQ1ktVFNMIFNpZ25lcjIwHhcNMTgwNTAxMDAwMDAwWhcNMjgwNTAxMDAwMDAwWjBYMQswCQYDVQQGEwJDWTEwMC4GA1UECgwnRGVwYXJ0bWVudCBvZiBFbGVjdHJvbmljIENvbW11bmljYXRpb25zMRcwFQYDVQQDDA5DWS1UU0wgU2lnbmVyMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNtGgaAVmMYd5N0LDtMTtNGwZCga3LWsDfJ2ft1S30pU3+CSUOLHxl44fp9xPf6xrbn8g9OVt52Ey1TsEXWjmOtcXrnyDoEzMBpJiDUyXD4LabfN+0POXH/5wpmuoEohEb39SN4HUXsIKjU9WFr+MA8T77g7UPIt7ymZ6q/LuF/cdf2vVzD9xhkt9+oZjuh4NNtUeGBbrjaTMFfeIvKeOJd2Ar/rytDLeCi+ikdyt7KzE8RxY/H5jlUikh/kGrDcDzp6Q2jZrukCUx60ZAmoD74D8CqNyfYjBZ9GX3wg/DhfyWrbw5bHIa1CMVq+qMV2TbhWupJAVewyXZDZLX7LgsCAwEAAaNiMGAwHQYDVR0OBBYEFJoW0el/Y7woUa3DpsmhC3hOI2HTMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgbAMBEGA1UdIAQKMAgwBgYEVR0gADARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQELBQADggEBAImG6p0MDaJLK5oCGbqF/6mheRG2g3UBe+NqjOb+jjvuSWmcTHBgHE03fctR51zlCvup9/y2Y3b/ga8XFKfI1lF8jVzl74h0WXYg/OmgQ7MaJK7T1UevPZatx9+yG8Mh4fMaKWLzpRq2522KbXkVGpWweYp5RNXDcFsJV2joenq1g3FfFX9LK43V6EUzCJ+8wb7nwzOSqIe4lQGrqCMUJoBD+uSjKvbKbrFRR01ZJjM6UjC77x9SePGbyZhoBDOkizjMCDYdc8HThGQdQPRT3104BTQtUnTqR+IzXpv/1AsStmvvLYzFmE+SnLvspUmGW/Ki+8lSqI4wNybBnnYOXbg=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://dec.dmrid.gov.cy/dmrid/dec/ws_dec.nsf/all/5064247FF4FC3DCCC2258506002EEA17/$file/TSL-CY-sign.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>CY</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Department of Electronic Communications</Name>
++ <Name xml:lang="el">Τμήμα Ηλεκτρονικών Επικοινωνιών</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/CY</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIF0zCCA7ugAwIBAgIIWJYC72/hm6gwDQYJKoZIhvcNAQENBQAwejELMAkGA1UEBhMCQ1oxDzANBgNVBAcTBlByYWd1ZTEsMCoGA1UECgwjRGlnaXTDoWxuw60gYSBpbmZvcm1hxI1uw60gYWdlbnR1cmExLDAqBgNVBAMMI0RpZ2l0w6FsbsOtIGEgaW5mb3JtYcSNbsOtIGFnZW50dXJhMB4XDTIzMDMxNzE5NDEwMFoXDTI2MDMxNzE5NDEwMFowejELMAkGA1UEBhMCQ1oxDzANBgNVBAcTBlByYWd1ZTEsMCoGA1UECgwjRGlnaXTDoWxuw60gYSBpbmZvcm1hxI1uw60gYWdlbnR1cmExLDAqBgNVBAMMI0RpZ2l0w6FsbsOtIGEgaW5mb3JtYcSNbsOtIGFnZW50dXJhMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzgjT/fKm7K1DjMjMmPgNfFQ5EZUXA/NgccTA40jlcqb6fY1tVsrodsbH+xyKnULEU2FBlmjOw4gWC88y4ztIjnpcG3wLcFJ6j2p/y/R10rs6AipZHxzlKGJLmril43/GS8IRQXwi9N0NzuzCIV0tJ543kWBuYwQtRrCzYY+7RH2kB96dw1BfqghL1TXSSApZeWYCW0D5AEGePhSJjtMxZDxmncCEX+7TgYqI8MqF6XttXFZxDkBfWiXvsJUbdcWKI/+zUe+PPqvkxvEnuBzcWq3iuAMbhrYBLGewylChYsLMIIvgMCvGi7jvNO5Y/CsqHfSSS2qMDh70SIESSRxbPcCaSV9QDBDUC3vv9S5xzVjPiRJ7h8htiBhagcwl3QqpAl0MYAadHwD3+CbOpSk9qZF5qnpsevs0NK+yQ1FXDINJ6+xTJ5AvNCFgF1etrclkXLn6LBiZGxA5lYn4YwgJ99OWBE6Vxg1YYlbraHU+LWXnzzSpXGlFUTa6OuzsIFJ19vh2jAZ4Z0vebdiFdLFQeqlRETC7nHvvFasT9gbefuWcRvUFvCp6EXT282EZ/47v69yr0TGCS6U41Djjsq3YQBpRcnOqXZRkuP9uRW77Q60qsQ5xQ5yVie3U4lAWyhye1T+xrVTPTrkjGM7LvcE75pcNu5D6Jh4OQ+c0me26ysECAwEAAaNdMFswCQYDVR0TBAIwADAdBgNVHQ4EFgQUAGMMk3xkJNXNQg3UtIJvfe59rP8wHwYDVR0jBBgwFoAUAGMMk3xkJNXNQg3UtIJvfe59rP8wDgYDVR0PAQH/BAQDAgbAMA0GCSqGSIb3DQEBDQUAA4ICAQA4Ua1xWnQ2HLWFj/+pq6fE+jaCc7ny+461YvhVvIjoCUZ+PMmj7W07hC2cMgI+NXqosIGl/cCuPCoCo8MCEDJPm2BDe8empzJkM4Nc0+3NXwsrNHmRG+UI6lhfbGU/xWrOTdT9RYoHHg3fK0aBRop6yrHAE/ayflTnkXLEjuDc0//D+F3WmVxQ8GWubYmSUPJGYEUIdUSfwl5fKVrtyg5/lZ9uNlRhR+RrBjn5ifN1WMmJCPJwFMUamRhM86AGNNuDuTj5z4dSvTdRWs8VnG2CObtSbt4BDq8nMGRH7flIgQGaip0s4r5QJ7rjDzSwEUwrwEsEDQXIBB7Qxb30zwxqMKzApXBXobm6rhLCClqbvxOQV+/yiknENTcQXd5Bsbugy05Nb/2yBAleGy3gqzpO8Bj5PZ03ecPh6zEW8MdYOVw2VC4Uodw03G8bjDWUTAzMEXjdoXOiEssx1/KAs6w+EcEY4shNl5O5jLKMG92G5OFXPi94M+u/H/iZgrcRraF5vqu6AvefAlLspmm7QSRTsajAorXNj8w2aMyEB02YcxLc5zduIHyJrkPHnzeAIfplEXj9gQBs/eyZRZ/P7YmQnlDkim0he6/KPsuPKd0TP7uiSguT1GQLYmgKyjfm3mRnubotER59VOz57CY+31BSVQdvbiFy27jCyZb7daMgfg==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://tsl.gov.cz/publ/TSL_CZ.pdf</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>CZ</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/pdf</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Digital and Information Agency</Name>
++ <Name xml:lang="cs">Digitální a informační agentura</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/CZ</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIF0zCCA7ugAwIBAgIIWJYC72/hm6gwDQYJKoZIhvcNAQENBQAwejELMAkGA1UEBhMCQ1oxDzANBgNVBAcTBlByYWd1ZTEsMCoGA1UECgwjRGlnaXTDoWxuw60gYSBpbmZvcm1hxI1uw60gYWdlbnR1cmExLDAqBgNVBAMMI0RpZ2l0w6FsbsOtIGEgaW5mb3JtYcSNbsOtIGFnZW50dXJhMB4XDTIzMDMxNzE5NDEwMFoXDTI2MDMxNzE5NDEwMFowejELMAkGA1UEBhMCQ1oxDzANBgNVBAcTBlByYWd1ZTEsMCoGA1UECgwjRGlnaXTDoWxuw60gYSBpbmZvcm1hxI1uw60gYWdlbnR1cmExLDAqBgNVBAMMI0RpZ2l0w6FsbsOtIGEgaW5mb3JtYcSNbsOtIGFnZW50dXJhMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzgjT/fKm7K1DjMjMmPgNfFQ5EZUXA/NgccTA40jlcqb6fY1tVsrodsbH+xyKnULEU2FBlmjOw4gWC88y4ztIjnpcG3wLcFJ6j2p/y/R10rs6AipZHxzlKGJLmril43/GS8IRQXwi9N0NzuzCIV0tJ543kWBuYwQtRrCzYY+7RH2kB96dw1BfqghL1TXSSApZeWYCW0D5AEGePhSJjtMxZDxmncCEX+7TgYqI8MqF6XttXFZxDkBfWiXvsJUbdcWKI/+zUe+PPqvkxvEnuBzcWq3iuAMbhrYBLGewylChYsLMIIvgMCvGi7jvNO5Y/CsqHfSSS2qMDh70SIESSRxbPcCaSV9QDBDUC3vv9S5xzVjPiRJ7h8htiBhagcwl3QqpAl0MYAadHwD3+CbOpSk9qZF5qnpsevs0NK+yQ1FXDINJ6+xTJ5AvNCFgF1etrclkXLn6LBiZGxA5lYn4YwgJ99OWBE6Vxg1YYlbraHU+LWXnzzSpXGlFUTa6OuzsIFJ19vh2jAZ4Z0vebdiFdLFQeqlRETC7nHvvFasT9gbefuWcRvUFvCp6EXT282EZ/47v69yr0TGCS6U41Djjsq3YQBpRcnOqXZRkuP9uRW77Q60qsQ5xQ5yVie3U4lAWyhye1T+xrVTPTrkjGM7LvcE75pcNu5D6Jh4OQ+c0me26ysECAwEAAaNdMFswCQYDVR0TBAIwADAdBgNVHQ4EFgQUAGMMk3xkJNXNQg3UtIJvfe59rP8wHwYDVR0jBBgwFoAUAGMMk3xkJNXNQg3UtIJvfe59rP8wDgYDVR0PAQH/BAQDAgbAMA0GCSqGSIb3DQEBDQUAA4ICAQA4Ua1xWnQ2HLWFj/+pq6fE+jaCc7ny+461YvhVvIjoCUZ+PMmj7W07hC2cMgI+NXqosIGl/cCuPCoCo8MCEDJPm2BDe8empzJkM4Nc0+3NXwsrNHmRG+UI6lhfbGU/xWrOTdT9RYoHHg3fK0aBRop6yrHAE/ayflTnkXLEjuDc0//D+F3WmVxQ8GWubYmSUPJGYEUIdUSfwl5fKVrtyg5/lZ9uNlRhR+RrBjn5ifN1WMmJCPJwFMUamRhM86AGNNuDuTj5z4dSvTdRWs8VnG2CObtSbt4BDq8nMGRH7flIgQGaip0s4r5QJ7rjDzSwEUwrwEsEDQXIBB7Qxb30zwxqMKzApXBXobm6rhLCClqbvxOQV+/yiknENTcQXd5Bsbugy05Nb/2yBAleGy3gqzpO8Bj5PZ03ecPh6zEW8MdYOVw2VC4Uodw03G8bjDWUTAzMEXjdoXOiEssx1/KAs6w+EcEY4shNl5O5jLKMG92G5OFXPi94M+u/H/iZgrcRraF5vqu6AvefAlLspmm7QSRTsajAorXNj8w2aMyEB02YcxLc5zduIHyJrkPHnzeAIfplEXj9gQBs/eyZRZ/P7YmQnlDkim0he6/KPsuPKd0TP7uiSguT1GQLYmgKyjfm3mRnubotER59VOz57CY+31BSVQdvbiFy27jCyZb7daMgfg==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://tsl.gov.cz/publ/TSL_CZ.xtsl</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>CZ</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Digital and Information Agency</Name>
++ <Name xml:lang="cs">Digitální a informační agentura</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/CZ</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://tl.bundesnetzagentur.de/TL-DE.XML</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>DE</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Federal Network Agency</Name>
++ <Name xml:lang="de">Bundesnetzagentur</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/DE</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIGIjCCBQqgAwIBAgIEXfr4dTANBgkqhkiG9w0BAQsFADBAMQswCQYDVQQGEwJESzESMBAGA1UECgwJVFJVU1QyNDA4MR0wGwYDVQQDDBRUUlVTVDI0MDggT0NFUyBDQSBJVjAeFw0yMTAzMTcxMjQwMDRaFw0yNDAzMTcxMjM5MjVaMHsxCzAJBgNVBAYTAkRLMTEwLwYDVQQKDChEaWdpdGFsaXNlcmluZ3NzdHlyZWxzZW4gLy8gQ1ZSOjM0MDUxMTc4MTkwFQYDVQQDDA5KZXNwZXIgRS4gU2lpZzAgBgNVBAUTGUNWUjozNDA1MTE3OC1SSUQ6NDkwMjUxODYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCn5ovJ1ImQp2IAqMxGSY7SO65xNj2k27M6LXmAsvIEjmpE+GTQzCycv4ZD+cpgBjF7phk16+KllOGPwJZ4Gw+9PNX0N/7gFwVXBGqtuQFPcy7kxNUwbg8Ungl6iwwZ+ItsYy2vCA6JB2mP+V7tK8+cLuTglkvWUon7CPotduAYbKGSqg/Cva1wqKlMf9gZWRfocd/+6acNTg5xbMPH/kaGX6ifvm9XeOO5Q0LjpJG/SWJIkL0SXgTNucbECzC6Y044wQjZyhq8q62IMAb50aTsUqTxb+ADETEf+JiqtSpN6jXpOkzY44BntoVbtoPxsjoWrD5PhwQnKYw1ApuSd93nAgMBAAGjggLnMIIC4zAOBgNVHQ8BAf8EBAMCA/gwgYkGCCsGAQUFBwEBBH0wezA1BggrBgEFBQcwAYYpaHR0cDovL29jc3AuaWNhMDQudHJ1c3QyNDA4LmNvbS9yZXNwb25kZXIwQgYIKwYBBQUHMAKGNmh0dHA6Ly9tLmFpYS5pY2EwNC50cnVzdDI0MDguY29tL29jZXMtaXNzdWluZzA0LWNhLmNlcjCCAUMGA1UdIASCATowggE2MIIBMgYKKoFQgSkBAQECBjCCASIwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cudHJ1c3QyNDA4LmNvbS9yZXBvc2l0b3J5MIHuBggrBgEFBQcCAjCB4TAQFglUUlVTVDI0MDgwAwIBARqBzEZvciBhbnZlbmRlbHNlIGFmIGNlcnRpZmlrYXRldCBn5mxkZXIgT0NFUyB2aWxr5XIsIENQUyBvZyBPQ0VTIENQLCBkZXIga2FuIGhlbnRlcyBmcmEgd3d3LnRydXN0MjQwOC5jb20vcmVwb3NpdG9yeS4gQmVt5nJrLCBhdCBUUlVTVDI0MDggZWZ0ZXIgdmlsa+VyZW5lIGhhciBldCBiZWdy5m5zZXQgYW5zdmFyIGlmdC4gcHJvZmVzc2lvbmVsbGUgcGFydGVyLjAZBgNVHREEEjAQgQ5qZXNzaUBkaWdzdC5kazCBlwYDVR0fBIGPMIGMMC6gLKAqhihodHRwOi8vY3JsLmljYTA0LnRydXN0MjQwOC5jb20vaWNhMDQuY3JsMFqgWKBWpFQwUjELMAkGA1UEBhMCREsxEjAQBgNVBAoMCVRSVVNUMjQwODEdMBsGA1UEAwwUVFJVU1QyNDA4IE9DRVMgQ0EgSVYxEDAOBgNVBAMMB0NSTDI0OTEwHwYDVR0jBBgwFoAUXLt1YhYymao2oLia+2+nDF/wCtUwHQYDVR0OBBYEFFRMtlGu2sT8c8t24qqfTRnPVvk+MAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBADua+j6KjY7SsXnj8r+Neqb2Sysht9zHs03ZNrZlfEtUHMp7L+EAI+kfXlv3m73yPBkhARgIQABaXOnAUjnuYPauzacbj/7W8pHn48zyD+yiiP9CJJEXigVXmF8ldyCKxSGWkRX1VsScuzjCujYF3nHX6kN0Y5r+IUi/4OieUcDEGWGTgR/hACa4MPFkDywyCedXWJBr5tiuQduFFIwBIxT9GsDW0HghG1mJEWrb/TZsaeiY9bTSwYN37LuuxIPxKCPqXweu6EAb5oHuw8D2AqOjUAEto4QqD230/KBQ587BewkHis6bj7ZkA5xqhGbFZWLm44bbM+oTSnXDpSEQBBE=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://www.digst.dk/TSLDKpdf</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>DK</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/pdf</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="da">Digitaliseringsstyrelsen // CVR:34051178</Name>
++ <Name xml:lang="en">Danish Agency for Digitisation // CVR:34051178</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/DK</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIGuTCCBO2gAwIBAgIUFq5wKzUfMufb4s1o4JeMErNtRvYwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFYxLTArBgNVBAMMJERlbiBEYW5za2UgU3RhdCBPQ0VTIHVkc3RlZGVuZGUtQ0EgMTEYMBYGA1UECgwPRGVuIERhbnNrZSBTdGF0MQswCQYDVQQGEwJESzAeFw0yMzA5MTMxMTU4NDVaFw0yNjA5MTIxMTU4NDRaMIHUMSIwIAYDVQQDDBlLYXJpbmEgQ2VjaWxpZSBKw7hyZ2Vuc2VuMRcwFQYDVQQqDA5LYXJpbmEgQ2VjaWxpZTETMBEGA1UEBAwKSsO4cmdlbnNlbjE3MDUGA1UEBRMuVUk6REstRTpHOjc3MzkyMTY2LTMxZTctNGYxYy04ZDZjLWI2OGMzZTVlYjk5ZTEhMB8GA1UECgwYRGlnaXRhbGlzZXJpbmdzc3R5cmVsc2VuMRcwFQYDVQRhDA5OVFJESy0zNDA1MTE3ODELMAkGA1UEBhMCREswggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCdeEfVBeFHe695Pyp3mWd826qf9myMbS5nhMy+ic53GzK3vZE7Scwx7rwinXJZ5UL623HXzrXEDbet3M198SX1PMATCCYKOkuVZlynzwosB9E3xBDVBW/pDZJh8aN+wPgdGfYsF2xhL3Cd3DvMw3wdAzR0s1vUaMJlYJorz/CyKERm8+NHmOJkq45Upvpqjp6l89E57b+aQHCNw7aq5loR/VAPCXQg8V9yNCuVx1QSVbZxmM8a45WA3Dg35iFDCinfMcur4CL3E9HPyn+miqSVV7IMzfJWHIDnzXo7tjrUzNOB9rS2zD3dqwuzk6onTapLqJxu+0Rd/2EeN+FkvpYVcmXI+qO9QFNlovKttZ+snmnblqn1FcuNfwb/mc3n/fL2b1S/HJM/2vKYY+Rc8aa6L75hk/dkX8N0k6s3Tw2I+swAhd8/szRZJnN8O9yuIZoFBv7rtCDWXu3E2OkvFGWtT4GzGc8z47R77gIiET9XqM1Uw22v8ZykOCBlGdfMZhcCAwEAAaOCAZYwggGSMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUTAHiynO8w744Cjg9NrBcdJx7l7kwcwYIKwYBBQUHAQEEZzBlMD8GCCsGAQUFBzAChjNodHRwOi8vY2ExLmdvdi5kay9vY2VzL2lzc3VpbmcvMS9jYWNlcnQvaXNzdWluZy5jZXIwIgYIKwYBBQUHMAGGFmh0dHA6Ly9jYTEuZ292LmRrL29jc3AwGgYDVR0RBBMwEYEPa2Fyam9yQGRpZ3N0LmRrMCEGA1UdIAQaMBgwCAYGBACPegEBMAwGCiqBUIEpAQEBAgcwOwYIKwYBBQUHAQMELzAtMCsGCCsGAQUFBwsCMB8GBwQAi+xJAQEwFIYSaHR0cHM6Ly91aWQuZ292LmRrMEEGA1UdHwQ6MDgwNqA0oDKGMGh0dHA6Ly9jYTEuZ292LmRrL29jZXMvaXNzdWluZy8xL2NybC9pc3N1aW5nLmNybDAdBgNVHQ4EFgQUGSHdKpVQ8QAdL4NlwDGdEskkrR4wDgYDVR0PAQH/BAQDAgXgMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIAOCAYEAblxsPivCyPQijAf5SflRRrliqMJ8XBuVHgQ/HZHUHvZwtaPVZnKiHmbl8KZB6lW1TC6NqR3ZZIWcetX+ELJe4ocCbfC9aOWH7/ZhamlFiJpGfFSIgzV7u2gnPpritnZiRWq6Bwc9sUM8IJP/vlgwXhnKgHIwjglkT0p3I2Ax3CyC63HWY9WXA6bSj0sdkC81cp1xKCuDI3vO0BRg6d9eqo5EzBNMgeWA09DRU3tdiPtpcPDlrKsYP3JKWXztMf1fo94lnVhdHTJ373j9qNTOn79DjAcykvp4VTmDPJeRKJaPqhnXlyjO+9MdQXxOznDzVCt3Frc+ZDrIp+UgOrXjoDHpKzRWtrugYFJ8V8EklpEdWqxtYuXPTBaRKqYbv5JQ69UaNe7UcQoXoH76xTuKrw9uy1JmUUENFr6/YDuYPjkZiSMDr7X9O43405mMZ+7tLJk+XcT5+py4qVcoR7OfVXN6Zva13YHqdNaVgOJhV/SQfDUSRm0BWI6HbrBDfbu/</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://www.digst.dk/TSLDKxml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>DK</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="da">Digitaliseringsstyrelsen // CVR:34051178</Name>
++ <Name xml:lang="en">Danish Agency for Digitisation // CVR:34051178</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/DK</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIDrDCCApSgAwIBAgIJAJp9F/NFeDmmMA0GCSqGSIb3DQEBDQUAMG0xLjAsBgNVBAMMJUVzdG9uaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IxCzAJBgNVBAYTAkVFMS4wLAYDVQQKDCVFc3RvbmlhbiBJbmZvcm1hdGlvbiBTeXN0ZW0gQXV0aG9yaXR5MB4XDTE5MDEyNTA5NDAwNloXDTI4MDcyNDA5NDAwNlowbTEuMCwGA1UEAwwlRXN0b25pYW4gVHJ1c3RlZCBMaXN0IFNjaGVtZSBPcGVyYXRvcjELMAkGA1UEBhMCRUUxLjAsBgNVBAoMJUVzdG9uaWFuIEluZm9ybWF0aW9uIFN5c3RlbSBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBMux4ivfdlZy9W75NgMWfD7ahajygYHCp8Tw9LxQ0vkmpuyaNNlXU+uj+yffWfekVgMoLaQrCpVIN0FF8ZMnnlsK600hpgnQNI+snPxU1u9BK6P87ZpoQU2wvan2oqjWflm06ybLzvvJrPJVNoVelrUDTY6SPngMbyqqpsdXo+dW8916ZoRUcEkTFWjQXVjhY1Lqsorbpaop1iv9BV2SXmsh4szRlqpu4dDSElWViBn0+A1ptiSAt7JINr0DDjfswqE+dhvjf6xq+IEaqUoMtGPKgz7SDqKKyg/KBO1ZGunUZE+91HKUASt+sPy3O3wMZM1SpZe1INEXQ0EQ4gytdAgMBAAGjTzBNMAwGA1UdEwQFMAMCAQAwCwYDVR0PBAQDAgeAMB0GA1UdDgQWBBScAndEhykw8vEHVFuQ7XPtHnqFajARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQENBQADggEBAHaLcIDZmUA9Bcv7TjuQW2Q3cFWFSmKc8aT5HaRKBxRRy10j9czqT439w/smT4De8JYyULXU+SoUX6/5sjmcpYxczFIC6imH8XLTgOca3vRAhek5iM80+h6v8CvxQHrsqNiSrLImE4LWfXWhQ/WPcyQdNrHCFrynJ9Gf6Q1DzQBRstpj5I8WjE+ME+w+vDj+VHHjI4wd5NkJhwwaF5PFB6uRrdb95e1dqLe4CTALe6+dh2QYhzSWZ+AZ2GaF+LlFreHhyV0sl+KwcNKSzSotStHL0zPTnq/yxPNaihhFmAlPdZdwq7vTN+yn5PAqEcfhTn06Gf5yDZjrmf5JO5eMpzM=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIDrDCCApSgAwIBAgIJANYjcEBni/iUMA0GCSqGSIb3DQEBDQUAMG0xLjAsBgNVBAMMJUVzdG9uaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IxCzAJBgNVBAYTAkVFMS4wLAYDVQQKDCVFc3RvbmlhbiBJbmZvcm1hdGlvbiBTeXN0ZW0gQXV0aG9yaXR5MB4XDTE5MDEyNTA5NDI1N1oXDTI5MDEyNDA5NDI1N1owbTEuMCwGA1UEAwwlRXN0b25pYW4gVHJ1c3RlZCBMaXN0IFNjaGVtZSBPcGVyYXRvcjELMAkGA1UEBhMCRUUxLjAsBgNVBAoMJUVzdG9uaWFuIEluZm9ybWF0aW9uIFN5c3RlbSBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/Cin6xlZ6to4wWlT0KC5eBk3WVexaN1FOHLW42uXScIDITD+2P6w5XWCZCElhW7PBHQZZ6+gSSVSghafOqOPXvstSOv8UX7wM1ds+CxCTBQu3gNsu1DqEl/z7vVXTumXwtvtfM/fZkB5+7yQ4DXPmkvdWp4g0BOf8rZcOeQYSPipbgSQho/QZmfztueuWbneJ0jyLQ7vSh1YdFlFNNBzC4piycOh5d7Al7Q5+jdr0MaT8ZVevS16vWQFlmCwjpDXQeleTi4jiGUTNZPIjDPT2VHlAHVwK8/VLNo0XQfF1/Ja5eIX9mOocGgzo6ZNSyOVyiMiMav6E7IleDNzw4wtDAgMBAAGjTzBNMAwGA1UdEwQFMAMCAQAwCwYDVR0PBAQDAgeAMB0GA1UdDgQWBBR/uDLzHBU2e7Qnni1CMObW/Tm9+jARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQENBQADggEBADrNqccyitbRwqTFqPhW03VOkITeJ57IX6bM89f4XXkgzW2VpjIXSS7ThyIjtXzcq5MIJgll4nBhH54wkdXNIwRL5lPAFUEc/lvSZSt2F/9DeYA4t0dCkzj0L79FEsUv9qZJpuXLEh4JoiLtpYZ9/s7MujsmzfoR24DFM4A4Ny9l5mgfBRMymjWCzT2cc+OTL1uNTv2YGXK7NwVPQfMwo9bs70xGVguwcTnjy3qydajt263kjntul5E+VSqz5upd6raF2Ty9sNnUiQLDFT641WhnBltnfQecK1LnejyvfZMJmsDNHJh9T7eWg5Hpd5DwkcHHU+fdNdh6bewqQEiqHbs=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://sr.riik.ee/tsl/estonian-tsl.pdf</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>EE</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/pdf</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Estonian Information System Authority</Name>
++ <Name xml:lang="et">Riigi Infosüsteemi Amet</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EE</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIDrDCCApSgAwIBAgIJAJp9F/NFeDmmMA0GCSqGSIb3DQEBDQUAMG0xLjAsBgNVBAMMJUVzdG9uaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IxCzAJBgNVBAYTAkVFMS4wLAYDVQQKDCVFc3RvbmlhbiBJbmZvcm1hdGlvbiBTeXN0ZW0gQXV0aG9yaXR5MB4XDTE5MDEyNTA5NDAwNloXDTI4MDcyNDA5NDAwNlowbTEuMCwGA1UEAwwlRXN0b25pYW4gVHJ1c3RlZCBMaXN0IFNjaGVtZSBPcGVyYXRvcjELMAkGA1UEBhMCRUUxLjAsBgNVBAoMJUVzdG9uaWFuIEluZm9ybWF0aW9uIFN5c3RlbSBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBMux4ivfdlZy9W75NgMWfD7ahajygYHCp8Tw9LxQ0vkmpuyaNNlXU+uj+yffWfekVgMoLaQrCpVIN0FF8ZMnnlsK600hpgnQNI+snPxU1u9BK6P87ZpoQU2wvan2oqjWflm06ybLzvvJrPJVNoVelrUDTY6SPngMbyqqpsdXo+dW8916ZoRUcEkTFWjQXVjhY1Lqsorbpaop1iv9BV2SXmsh4szRlqpu4dDSElWViBn0+A1ptiSAt7JINr0DDjfswqE+dhvjf6xq+IEaqUoMtGPKgz7SDqKKyg/KBO1ZGunUZE+91HKUASt+sPy3O3wMZM1SpZe1INEXQ0EQ4gytdAgMBAAGjTzBNMAwGA1UdEwQFMAMCAQAwCwYDVR0PBAQDAgeAMB0GA1UdDgQWBBScAndEhykw8vEHVFuQ7XPtHnqFajARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQENBQADggEBAHaLcIDZmUA9Bcv7TjuQW2Q3cFWFSmKc8aT5HaRKBxRRy10j9czqT439w/smT4De8JYyULXU+SoUX6/5sjmcpYxczFIC6imH8XLTgOca3vRAhek5iM80+h6v8CvxQHrsqNiSrLImE4LWfXWhQ/WPcyQdNrHCFrynJ9Gf6Q1DzQBRstpj5I8WjE+ME+w+vDj+VHHjI4wd5NkJhwwaF5PFB6uRrdb95e1dqLe4CTALe6+dh2QYhzSWZ+AZ2GaF+LlFreHhyV0sl+KwcNKSzSotStHL0zPTnq/yxPNaihhFmAlPdZdwq7vTN+yn5PAqEcfhTn06Gf5yDZjrmf5JO5eMpzM=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIDrDCCApSgAwIBAgIJANYjcEBni/iUMA0GCSqGSIb3DQEBDQUAMG0xLjAsBgNVBAMMJUVzdG9uaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IxCzAJBgNVBAYTAkVFMS4wLAYDVQQKDCVFc3RvbmlhbiBJbmZvcm1hdGlvbiBTeXN0ZW0gQXV0aG9yaXR5MB4XDTE5MDEyNTA5NDI1N1oXDTI5MDEyNDA5NDI1N1owbTEuMCwGA1UEAwwlRXN0b25pYW4gVHJ1c3RlZCBMaXN0IFNjaGVtZSBPcGVyYXRvcjELMAkGA1UEBhMCRUUxLjAsBgNVBAoMJUVzdG9uaWFuIEluZm9ybWF0aW9uIFN5c3RlbSBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/Cin6xlZ6to4wWlT0KC5eBk3WVexaN1FOHLW42uXScIDITD+2P6w5XWCZCElhW7PBHQZZ6+gSSVSghafOqOPXvstSOv8UX7wM1ds+CxCTBQu3gNsu1DqEl/z7vVXTumXwtvtfM/fZkB5+7yQ4DXPmkvdWp4g0BOf8rZcOeQYSPipbgSQho/QZmfztueuWbneJ0jyLQ7vSh1YdFlFNNBzC4piycOh5d7Al7Q5+jdr0MaT8ZVevS16vWQFlmCwjpDXQeleTi4jiGUTNZPIjDPT2VHlAHVwK8/VLNo0XQfF1/Ja5eIX9mOocGgzo6ZNSyOVyiMiMav6E7IleDNzw4wtDAgMBAAGjTzBNMAwGA1UdEwQFMAMCAQAwCwYDVR0PBAQDAgeAMB0GA1UdDgQWBBR/uDLzHBU2e7Qnni1CMObW/Tm9+jARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQENBQADggEBADrNqccyitbRwqTFqPhW03VOkITeJ57IX6bM89f4XXkgzW2VpjIXSS7ThyIjtXzcq5MIJgll4nBhH54wkdXNIwRL5lPAFUEc/lvSZSt2F/9DeYA4t0dCkzj0L79FEsUv9qZJpuXLEh4JoiLtpYZ9/s7MujsmzfoR24DFM4A4Ny9l5mgfBRMymjWCzT2cc+OTL1uNTv2YGXK7NwVPQfMwo9bs70xGVguwcTnjy3qydajt263kjntul5E+VSqz5upd6raF2Ty9sNnUiQLDFT641WhnBltnfQecK1LnejyvfZMJmsDNHJh9T7eWg5Hpd5DwkcHHU+fdNdh6bewqQEiqHbs=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://sr.riik.ee/tsl/estonian-tsl.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>EE</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Estonian Information System Authority</Name>
++ <Name xml:lang="et">Riigi Infosüsteemi Amet</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EE</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIICZjCCAgugAwIBAgIJANeHQWATgt+cMAoGCCqGSM49BAMEMIGQMQswCQYDVQQGEwJFTDEPMA0GA1UEBwwGQXRoZW5zMT4wPAYDVQQKDDVIZWxsZW5pYyBUZWxlY29tbXVuaWNhdGlvbnMgYW5kIFBvc3QgQ29tbWlzc2lvbiwgRUVUVDEwMC4GA1UEAwwnSGVsbGVuaWMgVHJ1c3RlZCBMaXN0IFNjaGVtZSBPcGVyYXRvci0xMB4XDTIxMDMwNTA3MzUwOVoXDTI2MDkwMzA3MzUwOVowgZAxCzAJBgNVBAYTAkVMMQ8wDQYDVQQHDAZBdGhlbnMxPjA8BgNVBAoMNUhlbGxlbmljIFRlbGVjb21tdW5pY2F0aW9ucyBhbmQgUG9zdCBDb21taXNzaW9uLCBFRVRUMTAwLgYDVQQDDCdIZWxsZW5pYyBUcnVzdGVkIExpc3QgU2NoZW1lIE9wZXJhdG9yLTEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR7MlwDiLTryq1z4tJ/6V3ZBeBjA3YVrpuA25ddLyfBaNXKdNGxJaavWtH+u3exNSxIsxJYj++3D/UyQBsiToG3o0wwSjAdBgNVHQ4EFgQUpRIBCdaHCtohtG3o2p2BsPIcZFwwCQYDVR0TBAIwADALBgNVHQ8EBAMCBsAwEQYDVR0lBAowCAYGBACRNwMAMAoGCCqGSM49BAMEA0kAMEYCIQCiQVBWUFSUMDyPd2EY1PmCAmfkOBgswnzqOsSe4WutigIhAM7d4W05/9tdgOjbbgLwkd6WKTqVYpFMrTG6l/ahLAlV</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIICZTCCAgugAwIBAgIJAJd82J1RAQwRMAoGCCqGSM49BAMEMIGQMQswCQYDVQQGEwJFTDEPMA0GA1UEBwwGQXRoZW5zMT4wPAYDVQQKDDVIZWxsZW5pYyBUZWxlY29tbXVuaWNhdGlvbnMgYW5kIFBvc3QgQ29tbWlzc2lvbiwgRUVUVDEwMC4GA1UEAwwnSGVsbGVuaWMgVHJ1c3RlZCBMaXN0IFNjaGVtZSBPcGVyYXRvci0yMB4XDTIxMDMwNTA3MzgzM1oXDTI2MTIwNDA3MzgzM1owgZAxCzAJBgNVBAYTAkVMMQ8wDQYDVQQHDAZBdGhlbnMxPjA8BgNVBAoMNUhlbGxlbmljIFRlbGVjb21tdW5pY2F0aW9ucyBhbmQgUG9zdCBDb21taXNzaW9uLCBFRVRUMTAwLgYDVQQDDCdIZWxsZW5pYyBUcnVzdGVkIExpc3QgU2NoZW1lIE9wZXJhdG9yLTIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAReEiebLPcZnmU/nll2kxrFFpW97bb8DyOyWyn6xYlztH+vFtGg0wKu2X5XXg/42Dl6E72JDtqgWALlrYyq/gYYo0wwSjAdBgNVHQ4EFgQUN/GgUJ5e1FePhr2duzrjTu9qqF4wCQYDVR0TBAIwADALBgNVHQ8EBAMCBsAwEQYDVR0lBAowCAYGBACRNwMAMAoGCCqGSM49BAMEA0gAMEUCIF4ekbBcA7Ax/ynJNryVEEji0HN9jhvi79gMhDJki2PPAiEArfSJ+DyZOyH6H/Y5bIzTCwvP2UphrzW7+4AyCvL7chg=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIICZTCCAgugAwIBAgIJAN5sdH/XZ8AmMAoGCCqGSM49BAMEMIGQMQswCQYDVQQGEwJFTDEPMA0GA1UEBwwGQXRoZW5zMT4wPAYDVQQKDDVIZWxsZW5pYyBUZWxlY29tbXVuaWNhdGlvbnMgYW5kIFBvc3QgQ29tbWlzc2lvbiwgRUVUVDEwMC4GA1UEAwwnSGVsbGVuaWMgVHJ1c3RlZCBMaXN0IFNjaGVtZSBPcGVyYXRvci0zMB4XDTIxMDMwNTA3NDAxNVoXDTI3MDMwNDA3NDAxNVowgZAxCzAJBgNVBAYTAkVMMQ8wDQYDVQQHDAZBdGhlbnMxPjA8BgNVBAoMNUhlbGxlbmljIFRlbGVjb21tdW5pY2F0aW9ucyBhbmQgUG9zdCBDb21taXNzaW9uLCBFRVRUMTAwLgYDVQQDDCdIZWxsZW5pYyBUcnVzdGVkIExpc3QgU2NoZW1lIE9wZXJhdG9yLTMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATen1l7TKrMXbf0L60f23u2zWyT1k6r7+xpMCqzsF0zS8c2Ylpb6DM8dxsjGGhg+X4K7bVBocLAwzybrekQ4uVmo0wwSjAdBgNVHQ4EFgQUKJj5CuO6uvve0QvsmdN7pKka5jUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBsAwEQYDVR0lBAowCAYGBACRNwMAMAoGCCqGSM49BAMEA0gAMEUCIQDaLJAf7eSTlnefSfeDDArkLiS/iWbNpIYe5696KnLAcQIgRElGtyj8pa0+FWk0KJR/Wu7D1DhgPltex75WCdGoKvQ=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://www.eett.gr/tsl/EL-TSL.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>EL</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Hellenic Telecommunications and Post Commission, EETT</Name>
++ <Name xml:lang="el">Εθνική Επιτροπή Τηλεπικοινωνιών και Ταχυδρομείων - EETT</Name>
++ <Name xml:lang="el">EETT</Name>
++ <Name xml:lang="en">EETT</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EL</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIGEzCCA9CgAwIBAgIJANredPZbPXo9MDgGCSqGSIb3DQEBCjAroA0wCwYJYIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFlAwQCATB3MQswCQYDVQQGEwJFUzFAMD4GA1UECgw3TUlOSVNUUlkgT0YgRUNPTk9NSUMgQUZGQUlSUyBBTkQgRElHSVRBTCBUUkFOU0ZPUk1BVElPTjEmMCQGA1UEAwwdU1BBTklTSCBUUlVTVCBTQ0hFTUUgT1BFUkFUT1IwHhcNMjMxMDMxMTA0ODMzWhcNMjgwNTAxMTA0ODMzWjB3MQswCQYDVQQGEwJFUzFAMD4GA1UECgw3TUlOSVNUUlkgT0YgRUNPTk9NSUMgQUZGQUlSUyBBTkQgRElHSVRBTCBUUkFOU0ZPUk1BVElPTjEmMCQGA1UEAwwdU1BBTklTSCBUUlVTVCBTQ0hFTUUgT1BFUkFUT1IwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/hqZaQvcAZEr2qlRgc/vl2Z+wHpdoHaK4Fg9hbUos13vnM09YT9uBx+QYlD2V5P7n8yCXD8FJM4aqJg85VLlT16fubEXjO3uRzEdUhegO6uWk/xzMHyYb0e3RIorzuXf+sF4UkHjm7cAChdWqeAjbVlRU5Ho9R7qtXUpfgiqfEGOI2sMTwFQ56SXxAQNUrHWxN+aZ1uuC27QO8xJksICNL31ByLA+3aVWhf1136ppAqop+iN5FNEjySDKMHfxMDP/o+nrgCmTNjPuoLe78tWTM+CTgnPl4kbwJTG29x5lW1bS9IkcUk72PYG/FDaFr3aytTzvSYBDNgGnGUG3yQvuoIEwwZEttt3uTbHs8WWt4KUuDcx9bzJTeqoIMo2ceRjDKsb2+PX8PSOHHhLZnphKhq1a4XAuVUOSsNhuuNs5ehzHJQCn1lPc8wI3eJdPgLq1hJAxi01OqeS5xsDHfng0kVfOoaBVLkb5bnpbATR6UPiM+IU6roo/GtbDJmnk/FZDs20XvStbRNFaSpXMyIixoF6oFEqbQnnZMHBi/wRiNFLhtsquD4zJfbjlmhmVfDTLtC/sAg9Z7fygaFBq20BZCpYsb7q8LBcitkEX6/7V4pK/0pRf8wzhJxPtlVUckG3ETdYqfqZM2ZqdSSQxLNT9i9xZPLSWlHAYTyPs30P3ZQIDAQABo0wwSjAJBgNVHRMEAjAAMAsGA1UdDwQEAwIGQDAdBgNVHQ4EFgQUp0b60K013GrJMS84qHydb6WHHpwwEQYDVR0lBAowCAYGBACRNwMAMDgGCSqGSIb3DQEBCjAroA0wCwYJYIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFlAwQCAQOCAgEAPY2FNdIxa61RZ2Gr2/qcpn896sQge08xrGArSxRXhy9Re0M9+JgxrpKDGWK2D2whJxB4A6NFZlhlcbdvjr/J75DWeFghE+7AAs0HxAT0ZIaEQKRB+YB7Mdwz9nXcpWT245wwwAjjCgW8kYyT6gZJPq/xkJ1J4VtEKK4a3NJ5DiFQAfzUfiFptx5/hHCEi4wE0VkOBGGF6Ti3B3JXd8rLIJ9Y5UY/27yslmTBfqZJpAztXe+SvE/ae/kpIqgpnaRWBTNQzpGKtoEitHvokR0jq52Xyp+XHkpAw3Jdp5aQ/HqpZZ1I1/csLqTeODpiWRP3vvvTi0ZjViHTxWL6NDBNyJcu+soGUKusIQH1MpY/DyHoHHG3K4Ay4NcEVv/HMQKfSaV4dkb3o+DT3Y1QHaE1Wl6xCAWIKFArOpQcQ/YgwJKIIu17xKcjQD4PrIqCXxbk83PWTAk9cIuatt5ONJVTfoagnBd2NqdXNE5lI0xcJUDS+MkgHlwzwHCnYN+wfuoNPIVGV0xXlZl8ENViXNVgNX2buZnS17N8XDSba5srMM9Ebl5LEo2x1h651Aocf4CJ8jMqMCybLNQ5bgOZaXczF1sJWmfDmGxWnnQXA31ybAn4rchqr6oxgTBDJD4Saj4lSwcFaChsYo9PltkZTo2twqLSdHPD/vrvS5hsMhM0lPQ=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://sedediatid.mineco.gob.es/Prestadores/TSL/TSL.pdf</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>ES</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/pdf</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">MINISTRY OF ECONOMIC AFFAIRS AND DIGITAL TRANSFORMATION</Name>
++ <Name xml:lang="es">MINISTERIO DE ASUNTOS ECONOMICOS Y TRANSFORMACION DIGITAL</Name>
++ <Name xml:lang="en">MINISTRY OF DIGITAL TRANSFORMATION</Name>
++ <Name xml:lang="es">MINISTERIO DE TRANSFORMACION DIGITAL</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/ES</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://sedediatid.mineco.gob.es/Prestadores/TSL/TSL.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>ES</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">MINISTRY OF ECONOMIC AFFAIRS AND DIGITAL TRANSFORMATION</Name>
++ <Name xml:lang="es">MINISTERIO DE ASUNTOS ECONOMICOS Y TRANSFORMACION DIGITAL</Name>
++ <Name xml:lang="en">MINISTRY OF DIGITAL TRANSFORMATION</Name>
++ <Name xml:lang="es">MINISTERIO DE TRANSFORMACION DIGITAL</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/ES</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFoDCCA4igAwIBAgIFFJlsq/cwDQYJKoZIhvcNAQENBQAwQTELMAkGA1UEBhMCRkkxETAPBgNVBAoMCFRyYWZpY29tMQ0wCwYDVQQLDAROQ1NDMRAwDgYDVQQDDAdOQ1NDLUZJMB4XDTIyMDMyMzAwMDAwMFoXDTI1MDYwMTAwMDAwMFowQTELMAkGA1UEBhMCRkkxETAPBgNVBAoMCFRyYWZpY29tMQ0wCwYDVQQLDAROQ1NDMRAwDgYDVQQDDAdOQ1NDLUZJMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnZ5B41gIHmXSl+qf9NwZm5PHO1cLwIW+duZRGJPcjPh137tdDUhtor5YdN2/L1zIDTO8vdxVp/1E3Kbvrz5IrADBsK4GKWLi6NnwTNyelcNYwo9qm+baHNTMCA4j5e2Q8gcrsZEBBczQgozl5V+wfezCWAklcyMuaxRLp9MDrEPO11wqogqdU1nPLbBIO8/q+dPuADbdhMpr+ONLmn9JjPD8Ql52fpztAUS7yhkwu5fSyuwL1IgAHtR8j114NU/EowgMwtaIU8+NoR4aRoGY39arz6GG0H+oRPLygVTbTd5WvZy9yDTCz36rX2w0eBDL3uPnIpwKnCC3ooL1xp6NKkJ+8RSmqVmIKXJx7Em6UQAXqIG400K0/TUDZYBOb7m+lihHtne/+lkg5bCD1P3J4KEh21wH9LGV5l1xLMxVd26K4Rgq0dtK9x8J4D1donXPw2vwbzWuR8gbFLFoeVLNhkXF94XUFx7CZiCfzeic3SSOBsfqxL3f1hmQ+zghCy6dNgvEWJYAhX+qska011KG9yYybSJlrW230GhHDHcFEr/ngRsv63reibL+vKPWDUFF0X4DdMU9JpJ3V3dZ+t4Hu7QEwcHCAIi3sqkoYAp9936FISjgEg48RYnL//60o3FS0sdgqIptRzOvYOfzLgPx9VCqR0jyA8bPGHWka2TsW3cCAwEAAaOBnjCBmzAdBgNVHQ4EFgQUV+j3x/J6bedMKKHx3d+0XTqay+kwCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBsAwEQYDVR0gBAowCDAGBgRVHSAAMDkGA1UdEQQyMDCBFHRzbF9saXN0QHRyYWZpY29tLmZphhhodHRwczovL3d3dy50cmFmaWNvbS5maS8wEQYDVR0lBAowCAYGBACRNwMAMA0GCSqGSIb3DQEBDQUAA4ICAQBsDe4DdYrYASj4TbUIvaQovRnV+OUOOOUzGz4GAgo4idNEFWGijaO8eVYBI8ZeeNkb4wILuT3Vx53hk/lZApnHg2NbWBxUUid2OLz1Yzev27eiQ0TlUG0z+S30mAMOyr0k7eLfG+iTGbNylHww6YLxGmciIaFmChu+5IsSZ/94zf4P7uhhSnr/qkxJomivaQezP/YnyLB1gYVMbRnsDQK8rugFf4Dt9Pjch2N3PP69YbBmprUH6pVLiG6QI65v504506vGVa3Yh6eJcPFvX21Z9nu5XGlJb9GJGjE0ZG1PhFQNxBSZf8jI3duiqUG0UmI1eYh9jb9x0JSxn1k+lnSb56kYZ9Dk4v9Ips8mMJdS35uBBLwWboqDV0kk9QXr1et13I/MG8GwF8m5XCCXYtJ4P/GudvaaIVQnM183ly3BAIQL33lWuEc4VJzwif37NtYLkWL9+dmurScCvKm1G2jJw//wwlupXS89tHHYUHnhJon08+YXYl0NF37DaFWCjNPiFGA+yCFVa2fxiJy+Qw6+odPpV1ibTivt/n7/IdlXmaU1NXcy/TQbjjbU9Qb+v2iN71VWA2Tp5PX2XBNJZVSka5W3u/BCOx4+lq1BfHP6qtx1WDVdfy4w2j+goMZ86DZwqpt3QGFWVNJ54UpyVwBf264KSh2OijXTw96WH4EAPA==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFpDCCA4ygAwIBAgIFFGLFzFswDQYJKoZIhvcNAQENBQAwQzELMAkGA1UEBhMCRkkxETAPBgNVBAoMCFRyYWZpY29tMQ0wCwYDVQQLDAROQ1NDMRIwEAYDVQQDDAlOQ1NDLUZJX0IwHhcNMjIwMzIzMDAwMDAwWhcNMjUxMjMxMDAwMDAwWjBDMQswCQYDVQQGEwJGSTERMA8GA1UECgwIVHJhZmljb20xDTALBgNVBAsMBE5DU0MxEjAQBgNVBAMMCU5DU0MtRklfQjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKQdLyKXBz7JkNM0nJsbQGLPykRP2FC2PvygTVOyPrDoxogFLTJMteVf+vghd0HMToBbauqnh7CFiX+Gy1uPr2pLEamog7Jp4hnzh/qgGcASMJ2txfnbo2dEpFTBToMhzo246YVr6v09UzhKKkZpBMe12a9zsRsB0PlSq26ghUVd92fOH9+xMnsqP+6ze8TPSODkZxWXfQIk5cxhW/GwQKgC6K81zKTaUGPpYZLSX6RIuuCy+lQIsw9R0J3EoOW/GiZDO8vozODCfgs0o9GvWYtVtSl8NucbvJXrU9+d62uBi2aEMrfEWlC+MuQCufV0DJ7RNpwRVTD7nLNR8amvFl8hrY/wnsnKp7dEVUzbEfwsyPCd9jr+oGyPQ8uu8sM+blF3LZfHHluQxvPTcoQJEdyiYiBRNygSIKijhY5VDYdEWl6KEsC4muc33avnYlLqxDPYZ2zQBsCGfeXOB6S/YbFdp7SUzLtX/+YsdHYGYr0FMsXdvF83hfD+tEo5z3gM4ol/GdS7UIffddsgNkd1xOJ+w9fu5JYvMuBj43FR4DN5qFmFtHJZz8kTRE3EmDmpIazVq+vhI1NX76GXTAZ3B8Y4aU3Hk/0yBQ1j0hIx3m3S6mHo2j9le4Pgf+1It1pqOusYp761yr4K1TIqPGSLTxSSjZsD84b7sfMNuP1qSJCJAgMBAAGjgZ4wgZswHQYDVR0OBBYEFKggL21nCmKk6q1HZQdvdvTOfIXMMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgbAMBEGA1UdIAQKMAgwBgYEVR0gADA5BgNVHREEMjAwgRR0c2xfbGlzdEB0cmFmaWNvbS5maYYYaHR0cHM6Ly93d3cudHJhZmljb20uZmkvMBEGA1UdJQQKMAgGBgQAkTcDADANBgkqhkiG9w0BAQ0FAAOCAgEAAmxnsR1WEq+stXXzBTmLPC0qbxr/Cqs2jRVFNHx6mLFfG0DDiatK/lGwKlLLolK/OO997FPytcJ9UsNss7cdOVjqk1LZLFygr9ppPjs5G1aRawZtVaeSvbQqyfjaCCvJqPORe4L1bDN5BC2A5jkece32UM7T9gJJva910qS83R62Otk85yOwVJ9TBmkTu6oHTm40jbcfiz5MLzKZB0l4W78Hyxl8qEtjZAp6q1WUxUegxPR2GsXIM0P6gGztM/MdOCAA56HOiSXWxk2u9yj0aamM2xkuQsnVWlf9crfhhdc036dtful+00F2gx7lq9uXGUqvZqRovWuqqpoM9ng094obeHmxe8HfTgaMKfL0K19BD6i1n6lpBEoXUEtKJmxzdCG4FnDufvbWf5qXBluh+yb8HuuMbUaw5UYqgmKhvx5rv1tVpeR/Y8lA7YeBoG6kCiOy/HfN9WN+EevrFRNoCJbZW9ezuunRWJeHYNU2hWJFBRUme3FzMaqMtmIxBw93orcvc3o5N0ASF1INwf5q6GRRXpp9pZSwPzz4iqdsIN5P4PxhtKJoapC0eyRy+nG8EZFZ/5g2YBi4YykpTR22pdDxeOC4TvB4XTFDOTfk6Fzl5GFkVxv5d7Dag7NHIF8WO++VPYNQoJcZAX9fNn0EFQ/0SJNtmu4HfJ1bsyjESOI=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://dp.trustedlist.fi/fi-tl.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>FI</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Finnish Transport and Communications Agency Traficom</Name>
++ <Name xml:lang="en">Finnish Transport and Communications Agency</Name>
++ <Name xml:lang="en">Traficom</Name>
++ <Name xml:lang="fi">Liikenne- ja viestintävirasto Traficom</Name>
++ <Name xml:lang="fi">Liikenne- ja viestintävirasto</Name>
++ <Name xml:lang="fi">Traficom</Name>
++ <Name xml:lang="sv">Transport- och kommunikationsverket Traficom</Name>
++ <Name xml:lang="sv">Transport- och kommunikationsverket</Name>
++ <Name xml:lang="sv">Traficom</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/FI</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFXDCCBESgAwIBAgIUbR6J39k5qND1JSlgxEd+bJgAQx4wDQYJKoZIhvcNAQELBQAwgZcxCzAJBgNVBAYTAkZSMTAwLgYDVQQKDCdBZ2VuY2UgTmF0aW9uYWxlIGRlcyBUaXRyZXMgU8OpY3VyaXPDqXMxFzAVBgNVBAsMDjAwMDIgMTMwMDAzMjYyMTEwLwYDVQQDDChBdXRvcml0w6kgZGUgQ2VydGlmaWNhdGlvbiBQZXJzb25uZXMgQUFFMQowCAYDVQQFEwE0MB4XDTI0MTAwODE1NTA0OFoXDTI3MTAwODE1NTA0OFowfDELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFOVFMxFzAVBgNVBAsMDjAwMDIgMTMwMDA3NjY5MSMwIQYDVQQDDBpNYXRoaWV1IEpPUlJZIDMzMTAwMDM4OThqbTEQMA4GA1UEKgwHTWF0aGlldTEOMAwGA1UEBAwFSk9SUlkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCTu9SgITZn9p36gIgDSndt/g7qpLJzj2Bt9t28BkprA6U8I7ukbgqcEeQwJKVhcx4OZ4FHMP43jZlCplU1bCYNL5+an98mlrDdSSFbV8ano4tWuDqD2d14jxwWpYxto6ZHtPC+23vzDP/xDUwdnnl6BIr5FemEmi946s8puLjDLtEMUTpWaAo+WH7/T8g1hxlco3x45v47z7nR/MkuukOcvYL09jcER1s+NWxVEb2whiiztgVbD1Od2aZh9H9uj1T7BfxDSlapHCQPmJfvfR6TSWy6GfJFe6FF/bud8o33etgCeNhq3DFG5oRbOtfOF5ekFJtuovf9lOv6RK4foNbFAgMBAAGjggG4MIIBtDAdBgNVHQ4EFgQUpLKvYlHeCngPPnQffCmCPOJRQx0wHwYDVR0jBBgwFoAUHGyk9w7WVN5Fz1CBst1ZiLMob94wCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBkAwNwYIKwYBBQUHAQMEKzApMAgGBgQAjkYBATAIBgYEAI5GAQQwEwYGBACORgEGMAkGBwQAjkYBBgEwRwYDVR0fBEAwPjA8oDqgOIY2aHR0cDovL2NybC5hbnRzLmdvdXYuZnIvYW50c2F2My9hY19wZXJzb25uZXNfYWFlXzQuY3JsMCQGA1UdEQQdMBuBGW1hdGhpZXUuam9ycnlAc3NpLmdvdXYuZnIwGAYDVR0gBBEwDzANBgsqgXoBgUgDAQIDAjCBlAYIKwYBBQUHAQEEgYcwgYQwPwYIKwYBBQUHMAGGM2h0dHA6Ly9vY3NwLmFudHMuZ291di5mci9hbnRzYXYzL2FjX3BlcnNvbm5lc19hYWVfNDBBBggrBgEFBQcwAoY1aHR0cDovL3NwLmFudHMuZ291di5mci9hbnRzYXYzL2FjX3BlcnNvbm5lc19hYWVfNC5jZXIwDQYJKoZIhvcNAQELBQADggEBAKU9mevhWyrKGEUqXCiqROvQjwl9adUAcH0F8gqQnTc8notCarIg18cAMx82uIdzswKDEkz5ZHQbx562B1+CD2aIgm5ozvmzA+t1MdJuwUQDJghFLI85VwA0eIcrcmJDwxlArNWMAPnNBIwESEC82kCNMHza6Z821qp0Ei5YhfxomBMyNbDB1/riOnr8YOmMzlqUGfxUwB6V4P6bAQAJAKMhtmI7HioVeNp3dCHhc/f1R3sihdCDkwufsG2KMo3btyh++xGwx6jfbEaLxXNhBuCMw/YE+oGXGP3KRczIGyjvWNIwJ8ZtZXCrioVWB0VhfE6ZxNhQRonyS8KLIe7XVOQ=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFVjCCBD6gAwIBAgIUHE1n9yClv331y/gsa13fXOI5DJswDQYJKoZIhvcNAQELBQAwgZcxCzAJBgNVBAYTAkZSMTAwLgYDVQQKDCdBZ2VuY2UgTmF0aW9uYWxlIGRlcyBUaXRyZXMgU8OpY3VyaXPDqXMxFzAVBgNVBAsMDjAwMDIgMTMwMDAzMjYyMTEwLwYDVQQDDChBdXRvcml0w6kgZGUgQ2VydGlmaWNhdGlvbiBQZXJzb25uZXMgQUFFMQowCAYDVQQFEwE0MB4XDTI0MTEwNzE0NTYzNloXDTI3MTEwNzE0NTYzNloweDELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFOVFMxFzAVBgNVBAsMDjAwMDIgMTMwMDA3NjY5MSEwHwYDVQQDDBhNaWNrYWVsIExBTSAzMzEwMDAzOTMzbG0xEDAOBgNVBCoMB01pY2thZWwxDDAKBgNVBAQMA0xBTTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKUW8n9LBx0f5sHeuPY00inYnNaYOIcQCN2ClddtJVL1avCHD9ia5h7nuNSannewcUZH1w/x/qTKwykMq6Vhi+LkQ0XkI8YshlzjgwLZK9FQxkoTofc/X26Vos6aQ/J9J2DHqwZaUoHhOX1tR2XcfFgdrSIHIdoB3O7ZhYvIcwWb4elN7iJKGjI3JMvHdeWDajB31MK6vbi7fGqIWY7OOEgCZ6fZ+evvEfJkaDvJVUDBi6BTGYjkBtZYBEDFuh5i2/YX9P3jIGZmKdeKT0u/qSiM6MDewJdTq6UEwWrdF05j/ggT7ZpCPkzGE0JYRFUoODLM0nMv3f8UCRyeEGRMQ9UCAwEAAaOCAbYwggGyMB0GA1UdDgQWBBQUOFpT+oXISDFNAQ5+UOu2XoNgFDAfBgNVHSMEGDAWgBQcbKT3DtZU3kXPUIGy3VmIsyhv3jAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIGQDA3BggrBgEFBQcBAwQrMCkwCAYGBACORgEBMAgGBgQAjkYBBDATBgYEAI5GAQYwCQYHBACORgEGATBHBgNVHR8EQDA+MDygOqA4hjZodHRwOi8vY3JsLmFudHMuZ291di5mci9hbnRzYXYzL2FjX3BlcnNvbm5lc19hYWVfNC5jcmwwIgYDVR0RBBswGYEXbWlja2FlbC5sYW1Ac3NpLmdvdXYuZnIwGAYDVR0gBBEwDzANBgsqgXoBgUgDAQIDAjCBlAYIKwYBBQUHAQEEgYcwgYQwPwYIKwYBBQUHMAGGM2h0dHA6Ly9vY3NwLmFudHMuZ291di5mci9hbnRzYXYzL2FjX3BlcnNvbm5lc19hYWVfNDBBBggrBgEFBQcwAoY1aHR0cDovL3NwLmFudHMuZ291di5mci9hbnRzYXYzL2FjX3BlcnNvbm5lc19hYWVfNC5jZXIwDQYJKoZIhvcNAQELBQADggEBADdYsf1tD4vJNQtEBYmVQq8i51ZxYlrYV/mdV2SF0kdDt+/Kz+Yp/jfONlCfp7l365NhbFnscOjFa1bLW8auHcBNV7ParXKCecknfRUowPWdse+Qiq8JnC2URLIFTbHNIAGoxCvQGPOwtexv1FXm3uAYYJO272pSk+ekdmzX5ICV7IOvELiT06/UjHY55KNC3NkiFpuMXafL/xs+UFIO/OfNL4A/rlNy/A+74SG7BjXZ1O1dRJz5LjuD/7xslFeCWZS7c/4Sm4hukfR7eafQyd+AFeEg5u7Bg5di4MV4G65J10rgxzBI4/LiQ80l1zGrl1EAg1jJFCkbqp66Bs2hTqg=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://cyber.gouv.fr/sites/default/files/document/tl-fr.pdf</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>FR</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/pdf</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">French network and information security agency</Name>
++ <Name xml:lang="fr">Agence nationale de la sécurité des systèmes d'information (ANSSI)</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/FR</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFXDCCBESgAwIBAgIUbR6J39k5qND1JSlgxEd+bJgAQx4wDQYJKoZIhvcNAQELBQAwgZcxCzAJBgNVBAYTAkZSMTAwLgYDVQQKDCdBZ2VuY2UgTmF0aW9uYWxlIGRlcyBUaXRyZXMgU8OpY3VyaXPDqXMxFzAVBgNVBAsMDjAwMDIgMTMwMDAzMjYyMTEwLwYDVQQDDChBdXRvcml0w6kgZGUgQ2VydGlmaWNhdGlvbiBQZXJzb25uZXMgQUFFMQowCAYDVQQFEwE0MB4XDTI0MTAwODE1NTA0OFoXDTI3MTAwODE1NTA0OFowfDELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFOVFMxFzAVBgNVBAsMDjAwMDIgMTMwMDA3NjY5MSMwIQYDVQQDDBpNYXRoaWV1IEpPUlJZIDMzMTAwMDM4OThqbTEQMA4GA1UEKgwHTWF0aGlldTEOMAwGA1UEBAwFSk9SUlkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCTu9SgITZn9p36gIgDSndt/g7qpLJzj2Bt9t28BkprA6U8I7ukbgqcEeQwJKVhcx4OZ4FHMP43jZlCplU1bCYNL5+an98mlrDdSSFbV8ano4tWuDqD2d14jxwWpYxto6ZHtPC+23vzDP/xDUwdnnl6BIr5FemEmi946s8puLjDLtEMUTpWaAo+WH7/T8g1hxlco3x45v47z7nR/MkuukOcvYL09jcER1s+NWxVEb2whiiztgVbD1Od2aZh9H9uj1T7BfxDSlapHCQPmJfvfR6TSWy6GfJFe6FF/bud8o33etgCeNhq3DFG5oRbOtfOF5ekFJtuovf9lOv6RK4foNbFAgMBAAGjggG4MIIBtDAdBgNVHQ4EFgQUpLKvYlHeCngPPnQffCmCPOJRQx0wHwYDVR0jBBgwFoAUHGyk9w7WVN5Fz1CBst1ZiLMob94wCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBkAwNwYIKwYBBQUHAQMEKzApMAgGBgQAjkYBATAIBgYEAI5GAQQwEwYGBACORgEGMAkGBwQAjkYBBgEwRwYDVR0fBEAwPjA8oDqgOIY2aHR0cDovL2NybC5hbnRzLmdvdXYuZnIvYW50c2F2My9hY19wZXJzb25uZXNfYWFlXzQuY3JsMCQGA1UdEQQdMBuBGW1hdGhpZXUuam9ycnlAc3NpLmdvdXYuZnIwGAYDVR0gBBEwDzANBgsqgXoBgUgDAQIDAjCBlAYIKwYBBQUHAQEEgYcwgYQwPwYIKwYBBQUHMAGGM2h0dHA6Ly9vY3NwLmFudHMuZ291di5mci9hbnRzYXYzL2FjX3BlcnNvbm5lc19hYWVfNDBBBggrBgEFBQcwAoY1aHR0cDovL3NwLmFudHMuZ291di5mci9hbnRzYXYzL2FjX3BlcnNvbm5lc19hYWVfNC5jZXIwDQYJKoZIhvcNAQELBQADggEBAKU9mevhWyrKGEUqXCiqROvQjwl9adUAcH0F8gqQnTc8notCarIg18cAMx82uIdzswKDEkz5ZHQbx562B1+CD2aIgm5ozvmzA+t1MdJuwUQDJghFLI85VwA0eIcrcmJDwxlArNWMAPnNBIwESEC82kCNMHza6Z821qp0Ei5YhfxomBMyNbDB1/riOnr8YOmMzlqUGfxUwB6V4P6bAQAJAKMhtmI7HioVeNp3dCHhc/f1R3sihdCDkwufsG2KMo3btyh++xGwx6jfbEaLxXNhBuCMw/YE+oGXGP3KRczIGyjvWNIwJ8ZtZXCrioVWB0VhfE6ZxNhQRonyS8KLIe7XVOQ=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFVjCCBD6gAwIBAgIUHE1n9yClv331y/gsa13fXOI5DJswDQYJKoZIhvcNAQELBQAwgZcxCzAJBgNVBAYTAkZSMTAwLgYDVQQKDCdBZ2VuY2UgTmF0aW9uYWxlIGRlcyBUaXRyZXMgU8OpY3VyaXPDqXMxFzAVBgNVBAsMDjAwMDIgMTMwMDAzMjYyMTEwLwYDVQQDDChBdXRvcml0w6kgZGUgQ2VydGlmaWNhdGlvbiBQZXJzb25uZXMgQUFFMQowCAYDVQQFEwE0MB4XDTI0MTEwNzE0NTYzNloXDTI3MTEwNzE0NTYzNloweDELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFOVFMxFzAVBgNVBAsMDjAwMDIgMTMwMDA3NjY5MSEwHwYDVQQDDBhNaWNrYWVsIExBTSAzMzEwMDAzOTMzbG0xEDAOBgNVBCoMB01pY2thZWwxDDAKBgNVBAQMA0xBTTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKUW8n9LBx0f5sHeuPY00inYnNaYOIcQCN2ClddtJVL1avCHD9ia5h7nuNSannewcUZH1w/x/qTKwykMq6Vhi+LkQ0XkI8YshlzjgwLZK9FQxkoTofc/X26Vos6aQ/J9J2DHqwZaUoHhOX1tR2XcfFgdrSIHIdoB3O7ZhYvIcwWb4elN7iJKGjI3JMvHdeWDajB31MK6vbi7fGqIWY7OOEgCZ6fZ+evvEfJkaDvJVUDBi6BTGYjkBtZYBEDFuh5i2/YX9P3jIGZmKdeKT0u/qSiM6MDewJdTq6UEwWrdF05j/ggT7ZpCPkzGE0JYRFUoODLM0nMv3f8UCRyeEGRMQ9UCAwEAAaOCAbYwggGyMB0GA1UdDgQWBBQUOFpT+oXISDFNAQ5+UOu2XoNgFDAfBgNVHSMEGDAWgBQcbKT3DtZU3kXPUIGy3VmIsyhv3jAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIGQDA3BggrBgEFBQcBAwQrMCkwCAYGBACORgEBMAgGBgQAjkYBBDATBgYEAI5GAQYwCQYHBACORgEGATBHBgNVHR8EQDA+MDygOqA4hjZodHRwOi8vY3JsLmFudHMuZ291di5mci9hbnRzYXYzL2FjX3BlcnNvbm5lc19hYWVfNC5jcmwwIgYDVR0RBBswGYEXbWlja2FlbC5sYW1Ac3NpLmdvdXYuZnIwGAYDVR0gBBEwDzANBgsqgXoBgUgDAQIDAjCBlAYIKwYBBQUHAQEEgYcwgYQwPwYIKwYBBQUHMAGGM2h0dHA6Ly9vY3NwLmFudHMuZ291di5mci9hbnRzYXYzL2FjX3BlcnNvbm5lc19hYWVfNDBBBggrBgEFBQcwAoY1aHR0cDovL3NwLmFudHMuZ291di5mci9hbnRzYXYzL2FjX3BlcnNvbm5lc19hYWVfNC5jZXIwDQYJKoZIhvcNAQELBQADggEBADdYsf1tD4vJNQtEBYmVQq8i51ZxYlrYV/mdV2SF0kdDt+/Kz+Yp/jfONlCfp7l365NhbFnscOjFa1bLW8auHcBNV7ParXKCecknfRUowPWdse+Qiq8JnC2URLIFTbHNIAGoxCvQGPOwtexv1FXm3uAYYJO272pSk+ekdmzX5ICV7IOvELiT06/UjHY55KNC3NkiFpuMXafL/xs+UFIO/OfNL4A/rlNy/A+74SG7BjXZ1O1dRJz5LjuD/7xslFeCWZS7c/4Sm4hukfR7eafQyd+AFeEg5u7Bg5di4MV4G65J10rgxzBI4/LiQ80l1zGrl1EAg1jJFCkbqp66Bs2hTqg=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://cyber.gouv.fr/sites/default/files/document/tl-fr.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>FR</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">French network and information security agency</Name>
++ <Name xml:lang="fr">Agence nationale de la sécurité des systèmes d'information (ANSSI)</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/FR</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://gov.hr/UserDocsImages/Usluge%20povjerenja/Pouzdani_popis_RH.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>HR</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Ministry of Justice Public Administration and Digital Transformation</Name>
++ <Name xml:lang="hr">MINISTARSTVO PRAVOSUĐA UPRAVE I DIGITALNE TRANSFORMACIJE</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/HR</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIEPDCCAySgAwIBAgIEFgcFvTANBgkqhkiG9w0BAQsFADCBlDELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MUEwPwYDVQQKDDhOYXRpb25hbCBNZWRpYSBhbmQgSW5mb2NvbW11bmljYXRpb25zIEF1dGhvcml0eSwgSHVuZ2FyeTEvMC0GA1UEAwwmSHVuZ2FyaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IwHhcNMjQwODI3MTQxMDE1WhcNMjYwODI3MTQxMDE1WjCBlDELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MUEwPwYDVQQKDDhOYXRpb25hbCBNZWRpYSBhbmQgSW5mb2NvbW11bmljYXRpb25zIEF1dGhvcml0eSwgSHVuZ2FyeTEvMC0GA1UEAwwmSHVuZ2FyaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCCMKrgH9r7O1kpdyBGXzQfb20A/irIilysOeyEApVCuf1MCWm0smm7yM3XHTi+XAbnMn5n64GbhNgaMe4MB4vHtTUuObWXd2J4YblBx88WxPFfEVOmWWQ6n/C1TvMUGctG4zZ5YBPG2B13Qz02AEaN3WK4+/q5aJPYe91phT2xXX0HDDILBpgJngJPZLFzFNoRNWjuy/oKiaGRjXspFh/doUSXBb3R8/FgcWM0fFJS5a+Z3P280rvinnYO0fTp9HXP1be9QOHTe7BBqZv71xRFUyXA8Yptc3zCl1SDB+Ut0QJMg8g+/4AL2uwMM4zgtt3OAhxt31034cAieARaBKd1AgMBAAGjgZMwgZAwHwYDVR0jBBgwFoAULAbFjrK5NrypwBS9G2kaU8UDwEcwHQYDVR0OBBYEFCwGxY6yuTa8qcAUvRtpGlPFA8BHMA4GA1UdDwEB/wQEAwIGQDAdBgNVHREEFjAUgRJUTG9wZXJhdG9yQG5taGguaHUwDAYDVR0TAQH/BAIwADARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQELBQADggEBAC1oqQciWI1zjVM9jDxGuxKKX8m3nJW/0ujzsWCGhHt2luCM2Y/KTzDHZER/U65gS3aAU13taUHiBwwryQgThKJuWrNZM5wNqRVG+eRT2BrhZEWwDG8T7ginErqSVil79UHTMrRjhV7StenvoM65L/LlU3K8/DC0j9aBzfkueq4Fd3wewqeg0L+NI7bz1Isle/14jcNlbZVbDJVzjdcnAH5ghYqmA3mra4yOKAAKsPLHE4DxzoEBqrSaHkdLSC4lCX+lF6RjYj3SeJ1OTQ/EZ6ej6NkHaC1Ga8iYwVCabNEQ5iETj6KPj6wbDfUFvE9dMystJWCAxjl7TKj7SRF5CZ8=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIEPDCCAySgAwIBAgIEPZWvzTANBgkqhkiG9w0BAQsFADCBlDELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MUEwPwYDVQQKDDhOYXRpb25hbCBNZWRpYSBhbmQgSW5mb2NvbW11bmljYXRpb25zIEF1dGhvcml0eSwgSHVuZ2FyeTEvMC0GA1UEAwwmSHVuZ2FyaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IwHhcNMjQwODI3MTQwNzQ3WhcNMjYwMjI3MTUwNzQ3WjCBlDELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MUEwPwYDVQQKDDhOYXRpb25hbCBNZWRpYSBhbmQgSW5mb2NvbW11bmljYXRpb25zIEF1dGhvcml0eSwgSHVuZ2FyeTEvMC0GA1UEAwwmSHVuZ2FyaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8c7/uMZPI6Ndi4k6NcyBsrCtpHEpxrBpcrW6zky0b3L347eGK0y/QVu83XdqAF+7KE74XAZPR5by5+58yT+aHfdaLwlezCVEtvZIvcCRMU6twKLyYpJAXDjZvhmZ3tdAdcPS/azIy3olymoAuy+ab/RiPlDqO2RfPSUosP4JwlKz9vpUxmJb+Eszr5d9MgZ91PLvFmTnhfvJ0xeFwDsZsM+npKaC9XezKVp6JWF9+VMUsACJZ3UfzOGyPzANTZM8fzbYzZxI5qMRNfHHKtqNS7PBw5cdCEZgsHPU1tX+Lm7i3GmiEf18lP41XNoQ0zh27Lodo0V85D1LT5UByjWhpAgMBAAGjgZMwgZAwHwYDVR0jBBgwFoAUSf69jNxUnhZmoZPnLuCs6H+7YR8wHQYDVR0OBBYEFEn+vYzcVJ4WZqGT5y7grOh/u2EfMA4GA1UdDwEB/wQEAwIGQDAdBgNVHREEFjAUgRJUTG9wZXJhdG9yQG5taGguaHUwDAYDVR0TAQH/BAIwADARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQELBQADggEBALaQGBhPXQcrHZuoK0PYuttM17mI2AQhNCBAB8Xqve8OPaVp4dKR0NmzoYvlY72RcU6jMH2uxgnbN2Ujryf/9GJpDErYKYbhwTih3zSPmVRxHmSeBr7Zb7ywWAugzGQ+1Re/U8fMTXDaoWdMlUuNfjeC+KX2o50s0x2BPpNF772IgVTaZzqxvqKgK9xVBBvsluNhjUTQM+tiR0CKwjaTeicnlOX46tjyR2cooo7sInP3PAXqyLbJLP1dOMRYKljhcGb4FQunrd9d9Puv9yPmFmTc+KtkZWM8F2vdbd4Sgd6K2athG+hqQD2B/RC6Sy4UV7aC8QQjX/3hLHgA+C45ako=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIEPDCCAySgAwIBAgIEGL7kKDANBgkqhkiG9w0BAQsFADCBlDELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MUEwPwYDVQQKDDhOYXRpb25hbCBNZWRpYSBhbmQgSW5mb2NvbW11bmljYXRpb25zIEF1dGhvcml0eSwgSHVuZ2FyeTEvMC0GA1UEAwwmSHVuZ2FyaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IwHhcNMjUwMzEzMTMwNDAwWhcNMjcwMzEzMTMwNDAwWjCBlDELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MUEwPwYDVQQKDDhOYXRpb25hbCBNZWRpYSBhbmQgSW5mb2NvbW11bmljYXRpb25zIEF1dGhvcml0eSwgSHVuZ2FyeTEvMC0GA1UEAwwmSHVuZ2FyaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCn+KSJvUjDp5+8qZGpLxfq9LxWFvMuvLwZiahurcGAm20G07vq80Ig8z4ogNaVZTkJsVpDHr/Liho+dyCVibpEJUo488vCU3xaKotdWmqAYwErOznFFZn4lkhwKnA5iLOQjAv8cauKaqMkTjJ2QlfVbLl1lO7TsH0rQc6RFVmbHgXIkPWoAmta9aa9PLMR5QkZV1R3UX8GMbeDQn4NalHpH5KRASIIX50R5RQkzT4lHiicy/SfG4kUhPCr45V4bi4v8lVWbmZB+qnZocOCVFVHCnzvSWOG9AzcOI7WxGTDHVSee/Q0lNFCMl+ph5X4dGELzDuU6vdHQ/8e3cM//la7AgMBAAGjgZMwgZAwHwYDVR0jBBgwFoAUVDSfANZ02mMQZPdbUTgv5nRce4UwHQYDVR0OBBYEFFQ0nwDWdNpjEGT3W1E4L+Z0XHuFMA4GA1UdDwEB/wQEAwIGQDAdBgNVHREEFjAUgRJUTG9wZXJhdG9yQG5taGguaHUwDAYDVR0TAQH/BAIwADARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQELBQADggEBAIUlkUV+LUQz8P3xFjEKB+3glAfBdSUqbECk+0rYWGdomPwBTXlXW+C2+4cYCGpafFtOjPSKDGH2GNMmxcYTpb1bwCS81WTnhieApVMpA0AwK/QQAn0c2EEOYJKDQA3aejDwz/NFUqvYifxM3M9XgROYdHqvDobZTWMogpUxtLr1b6UweYpynnBts2mSKpiz7wwlOkhMq6nAP76lcdAH0TTmGBnMsbCcM4F53D2+j/o6LV0aOjKEruMXTeJgKMQabHJApjABP/qKGlw5Pf+njJaeCB7vR+zUXnQJFXHJ3NeKCR6wX97q4/px9BlCL45n4YlaCs8WP+wHOzAgGAkEbA4=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>http://www.nmhh.hu/tl/pub/HU_TL.pdf</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>HU</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/pdf</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">National Media and Infocommunications Authority, Hungary</Name>
++ <Name xml:lang="hu">Nemzeti Média- és Hírközlési Hatóság</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/HU</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIEPDCCAySgAwIBAgIEFgcFvTANBgkqhkiG9w0BAQsFADCBlDELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MUEwPwYDVQQKDDhOYXRpb25hbCBNZWRpYSBhbmQgSW5mb2NvbW11bmljYXRpb25zIEF1dGhvcml0eSwgSHVuZ2FyeTEvMC0GA1UEAwwmSHVuZ2FyaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IwHhcNMjQwODI3MTQxMDE1WhcNMjYwODI3MTQxMDE1WjCBlDELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MUEwPwYDVQQKDDhOYXRpb25hbCBNZWRpYSBhbmQgSW5mb2NvbW11bmljYXRpb25zIEF1dGhvcml0eSwgSHVuZ2FyeTEvMC0GA1UEAwwmSHVuZ2FyaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCCMKrgH9r7O1kpdyBGXzQfb20A/irIilysOeyEApVCuf1MCWm0smm7yM3XHTi+XAbnMn5n64GbhNgaMe4MB4vHtTUuObWXd2J4YblBx88WxPFfEVOmWWQ6n/C1TvMUGctG4zZ5YBPG2B13Qz02AEaN3WK4+/q5aJPYe91phT2xXX0HDDILBpgJngJPZLFzFNoRNWjuy/oKiaGRjXspFh/doUSXBb3R8/FgcWM0fFJS5a+Z3P280rvinnYO0fTp9HXP1be9QOHTe7BBqZv71xRFUyXA8Yptc3zCl1SDB+Ut0QJMg8g+/4AL2uwMM4zgtt3OAhxt31034cAieARaBKd1AgMBAAGjgZMwgZAwHwYDVR0jBBgwFoAULAbFjrK5NrypwBS9G2kaU8UDwEcwHQYDVR0OBBYEFCwGxY6yuTa8qcAUvRtpGlPFA8BHMA4GA1UdDwEB/wQEAwIGQDAdBgNVHREEFjAUgRJUTG9wZXJhdG9yQG5taGguaHUwDAYDVR0TAQH/BAIwADARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQELBQADggEBAC1oqQciWI1zjVM9jDxGuxKKX8m3nJW/0ujzsWCGhHt2luCM2Y/KTzDHZER/U65gS3aAU13taUHiBwwryQgThKJuWrNZM5wNqRVG+eRT2BrhZEWwDG8T7ginErqSVil79UHTMrRjhV7StenvoM65L/LlU3K8/DC0j9aBzfkueq4Fd3wewqeg0L+NI7bz1Isle/14jcNlbZVbDJVzjdcnAH5ghYqmA3mra4yOKAAKsPLHE4DxzoEBqrSaHkdLSC4lCX+lF6RjYj3SeJ1OTQ/EZ6ej6NkHaC1Ga8iYwVCabNEQ5iETj6KPj6wbDfUFvE9dMystJWCAxjl7TKj7SRF5CZ8=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIEPDCCAySgAwIBAgIEPZWvzTANBgkqhkiG9w0BAQsFADCBlDELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MUEwPwYDVQQKDDhOYXRpb25hbCBNZWRpYSBhbmQgSW5mb2NvbW11bmljYXRpb25zIEF1dGhvcml0eSwgSHVuZ2FyeTEvMC0GA1UEAwwmSHVuZ2FyaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IwHhcNMjQwODI3MTQwNzQ3WhcNMjYwMjI3MTUwNzQ3WjCBlDELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MUEwPwYDVQQKDDhOYXRpb25hbCBNZWRpYSBhbmQgSW5mb2NvbW11bmljYXRpb25zIEF1dGhvcml0eSwgSHVuZ2FyeTEvMC0GA1UEAwwmSHVuZ2FyaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8c7/uMZPI6Ndi4k6NcyBsrCtpHEpxrBpcrW6zky0b3L347eGK0y/QVu83XdqAF+7KE74XAZPR5by5+58yT+aHfdaLwlezCVEtvZIvcCRMU6twKLyYpJAXDjZvhmZ3tdAdcPS/azIy3olymoAuy+ab/RiPlDqO2RfPSUosP4JwlKz9vpUxmJb+Eszr5d9MgZ91PLvFmTnhfvJ0xeFwDsZsM+npKaC9XezKVp6JWF9+VMUsACJZ3UfzOGyPzANTZM8fzbYzZxI5qMRNfHHKtqNS7PBw5cdCEZgsHPU1tX+Lm7i3GmiEf18lP41XNoQ0zh27Lodo0V85D1LT5UByjWhpAgMBAAGjgZMwgZAwHwYDVR0jBBgwFoAUSf69jNxUnhZmoZPnLuCs6H+7YR8wHQYDVR0OBBYEFEn+vYzcVJ4WZqGT5y7grOh/u2EfMA4GA1UdDwEB/wQEAwIGQDAdBgNVHREEFjAUgRJUTG9wZXJhdG9yQG5taGguaHUwDAYDVR0TAQH/BAIwADARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQELBQADggEBALaQGBhPXQcrHZuoK0PYuttM17mI2AQhNCBAB8Xqve8OPaVp4dKR0NmzoYvlY72RcU6jMH2uxgnbN2Ujryf/9GJpDErYKYbhwTih3zSPmVRxHmSeBr7Zb7ywWAugzGQ+1Re/U8fMTXDaoWdMlUuNfjeC+KX2o50s0x2BPpNF772IgVTaZzqxvqKgK9xVBBvsluNhjUTQM+tiR0CKwjaTeicnlOX46tjyR2cooo7sInP3PAXqyLbJLP1dOMRYKljhcGb4FQunrd9d9Puv9yPmFmTc+KtkZWM8F2vdbd4Sgd6K2athG+hqQD2B/RC6Sy4UV7aC8QQjX/3hLHgA+C45ako=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIEPDCCAySgAwIBAgIEGL7kKDANBgkqhkiG9w0BAQsFADCBlDELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MUEwPwYDVQQKDDhOYXRpb25hbCBNZWRpYSBhbmQgSW5mb2NvbW11bmljYXRpb25zIEF1dGhvcml0eSwgSHVuZ2FyeTEvMC0GA1UEAwwmSHVuZ2FyaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IwHhcNMjUwMzEzMTMwNDAwWhcNMjcwMzEzMTMwNDAwWjCBlDELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MUEwPwYDVQQKDDhOYXRpb25hbCBNZWRpYSBhbmQgSW5mb2NvbW11bmljYXRpb25zIEF1dGhvcml0eSwgSHVuZ2FyeTEvMC0GA1UEAwwmSHVuZ2FyaWFuIFRydXN0ZWQgTGlzdCBTY2hlbWUgT3BlcmF0b3IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCn+KSJvUjDp5+8qZGpLxfq9LxWFvMuvLwZiahurcGAm20G07vq80Ig8z4ogNaVZTkJsVpDHr/Liho+dyCVibpEJUo488vCU3xaKotdWmqAYwErOznFFZn4lkhwKnA5iLOQjAv8cauKaqMkTjJ2QlfVbLl1lO7TsH0rQc6RFVmbHgXIkPWoAmta9aa9PLMR5QkZV1R3UX8GMbeDQn4NalHpH5KRASIIX50R5RQkzT4lHiicy/SfG4kUhPCr45V4bi4v8lVWbmZB+qnZocOCVFVHCnzvSWOG9AzcOI7WxGTDHVSee/Q0lNFCMl+ph5X4dGELzDuU6vdHQ/8e3cM//la7AgMBAAGjgZMwgZAwHwYDVR0jBBgwFoAUVDSfANZ02mMQZPdbUTgv5nRce4UwHQYDVR0OBBYEFFQ0nwDWdNpjEGT3W1E4L+Z0XHuFMA4GA1UdDwEB/wQEAwIGQDAdBgNVHREEFjAUgRJUTG9wZXJhdG9yQG5taGguaHUwDAYDVR0TAQH/BAIwADARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQELBQADggEBAIUlkUV+LUQz8P3xFjEKB+3glAfBdSUqbECk+0rYWGdomPwBTXlXW+C2+4cYCGpafFtOjPSKDGH2GNMmxcYTpb1bwCS81WTnhieApVMpA0AwK/QQAn0c2EEOYJKDQA3aejDwz/NFUqvYifxM3M9XgROYdHqvDobZTWMogpUxtLr1b6UweYpynnBts2mSKpiz7wwlOkhMq6nAP76lcdAH0TTmGBnMsbCcM4F53D2+j/o6LV0aOjKEruMXTeJgKMQabHJApjABP/qKGlw5Pf+njJaeCB7vR+zUXnQJFXHJ3NeKCR6wX97q4/px9BlCL45n4YlaCs8WP+wHOzAgGAkEbA4=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>http://www.nmhh.hu/tl/pub/HU_TL.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>HU</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">National Media and Infocommunications Authority, Hungary</Name>
++ <Name xml:lang="hu">Nemzeti Média- és Hírközlési Hatóság</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/HU</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIICwTCCAiqgAwIBAgIJAJXDVBeDkXK3MA0GCSqGSIb3DQEBBQUAMHQxCzAJBgNVBAYTAklFMQ8wDQYDVQQHEwZEdWJsaW4xHjAcBgNVBAoTFURlcGFydG1lbnQgb2YgRmluYW5jZTENMAsGA1UECxMEQ01PRDElMCMGA1UEAxMcRXZlbnQgUHVibGlzaGluZyBJbnRlcm5hbCBDQTAeFw0xMDA3MDUxNDI3MjVaFw0yMDA3MDIxNDI3MjVaMFQxCzAJBgNVBAYTAklFMR4wHAYDVQQKExVEZXBhcnRtZW50IG9mIEZpbmFuY2UxDTALBgNVBAsTBENNT0QxFjAUBgNVBAMTDVRhZGdoIE8nTGVhcnkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAL2eMyRkdde3Brd1N6gh1inG5j8gRbYQ6T/2BwiUlStHEeP/DmKcWKghQKEs6SBMSY/HGZw3ffrqe8tbzDBDeM0Z/F4xgSgYpcVL2QKTtQx4Wv61TESxNH7w5Jc9K2ZpeZz2bAcT2jrFdvBNcwtZ8hNyRsny2xNI8YuvpaZiLw1LAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBTxbALrhi0E0ebV6LpbNTNCvGXorzAfBgNVHSMEGDAWgBRfcPgfLU4sDzxy8r51M+iEDQIcjTANBgkqhkiG9w0BAQUFAAOBgQB4UDYDlveQZFbeN/za2UxQs+RqVZ9u+vT+lG4c+ecxmuFb6vpREjM28WciOAzzJ6hXcXxSZHgYbtVcL6F0JcPBT1HCFGTuHOWlBXzKL4zsuUmMYMPKD+2OojFDmAAvqlsqJT7bWA22EpxRHSf29twbbUuOw04rDAWh6RPDhg7zRg==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIC5DCCAk2gAwIBAgIJAJXDVBeDkXNiMA0GCSqGSIb3DQEBBQUAMHQxCzAJBgNVBAYTAklFMQ8wDQYDVQQHEwZEdWJsaW4xHjAcBgNVBAoTFURlcGFydG1lbnQgb2YgRmluYW5jZTENMAsGA1UECxMEQ01PRDElMCMGA1UEAxMcRXZlbnQgUHVibGlzaGluZyBJbnRlcm5hbCBDQTAeFw0xNDA2MTYwOTU2MTJaFw0yNDA2MTMwOTU2MTJaMHcxCzAJBgNVBAYTAklFMTQwMgYDVQQKEytEZXBhcnRtZW50IG9mIFB1YmxpYyBFeHBlbmRpdHVyZSBhbmQgUmVmb3JtMRowGAYDVQQLExFHb3Zlcm5tZW50IFJlZm9ybTEWMBQGA1UEAxMNVGFkZ2ggTyBMZWFyeTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0+AtJZLHW+Nkc/Rho8qflL2lEr8OoChQ3nzhiGHSIW/QmpHzzm54mPL6dybLmnpE5/I2lum0c0DohkQKH07Ouz46Lk/AGs7qpRNE14y1WOtbL7JkW5Y7Ktv/gqv8neg77feAUiZNJaQZ2nhIaQi3OyXqwqzEGafzpWsj2BxId2cCAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFMVbM3lCFwp+r61i88s1hisafmA+MB8GA1UdIwQYMBaAFF9w+B8tTiwPPHLyvnUz6IQNAhyNMA0GCSqGSIb3DQEBBQUAA4GBAAxyDOqFkdqel1AxOGm04dl87WdBvoew1wxaEp4AhUtk4nAmu7EgmB3scop6Q43hq+dWScvSxWPZAyKUGEmc/qsUnq9NRQGqpB8g9CJKYEC9HHkbNn7b/LbNRdvd49YEfC5qAPgj0SDmQffcahrIGyU2lzZfTW4I00cXn7ogUqu5</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://eidas.gov.ie/Irelandtslsigned.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>IE</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Department of the Environment, Climate and Communications</Name>
++ <Name xml:lang="ga">Roinn Comhshaoil, Aeráide agus Cumarsáide</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/IE</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIF7zCCBNegAwIBAgIDI32sMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAklTMRMwEQYDVQQFEwo1MjEwMDAyNzkwMRUwEwYDVQQKEwxBdWRrZW5uaSBoZi4xJzAlBgNVBAsTHlV0Z2VmYW5kaSBmdWxsZ2lsZHJhIHNraWxyaWtqYTEaMBgGA1UEAxMRRnVsbGdpbHQgYXVka2VubmkwHhcNMjEwOTIwMDkwNjAzWhcNMjUwOTIwMDkwNjAzWjCBqTELMAkGA1UEBhMCSVMxGDAWBgNVBAoTD0ZqYXJza2lwdGFzdG9mYTEXMBUGA1UECxMOc3RhcmZzc2tpbHJpa2kxFDASBgNVBAsMC0F1w7BrZW5uaW5nMQowCAYDVQQLEwE4MR4wHAYDVQQFExUzMTA3ODEyOTA5OjU3MDM5NzI0OTkxJTAjBgNVBAMMHFNpZ3LDum4gTGlsamEgU2lnbWFyc2TDs3R0aXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDH1LpmTsBiEt3bG9v93R8eqp02yUKuAZom5fUffA6RtHRYDxsKUnCXil0YQ5qflEpJlCZ+5LRCkcwTCfaXj4eyt00vROXA6zCVBzto5MMt1tDB6HhFSUjAnZggW+szz/iFAefBhTLUdA28CPSjK6FXRs8DfGwr+X6C1grFl0iMJIDTHrE+No2q54mjnFZmpVDDdGjLJmf0Ag3uJOnmxTL0Kg5OJmTJed3DWdXw09efC96ta91FFUde1TQ6X+IfStR4SCpO6cJqaUkdFvz3vDxVJuLRS0K6R6NiIwCAWU9ia/OJNfFIQ20/D29HP5c6OCJFxz+ITW9ChH9hLNM7M5kNAgMBAAGjggJIMIICRDAMBgNVHRMBAf8EAjAAMHcGCCsGAQUFBwEBBGswaTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuYXVka2VubmkuaXMwQgYIKwYBBQUHMAKGNmh0dHA6Ly9jZHAuaXNsYW5kc3JvdC5pcy9za2lscmlraS9mdWxsZ2lsdGF1ZGtlbm5pLnA3YjCCAQ8GA1UdIASCAQYwggECMIH/BglggmABAgEBAQIwgfEwgbcGCCsGAQUFBwICMIGqGoGnVGhpcyBjZXJ0aWZpY2F0ZSBpcyBpbnRlbmRlZCBmb3IgYXV0aGVudGljYXRpb24uIFRoaXMgY2VydGZpY2F0ZSBmdWxmaWxzIHRoZSByZXF1aXJlbWVudHMgZm9yIGEgcXVhbGlmaWVkIGNlcnRpZmljYXRlIGFzIGRlZmluZWQgaW4gYWN0IDI4LzIwMDEgYW5kIERpcmVjdGl2ZSA5OS85My9FQy4wNQYIKwYBBQUHAgEWKWh0dHA6Ly9jcC5hdWRrZW5uaS5pcy9mdWxsZ2lsdGF1ZGtlbm5pL2NwMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDAjAfBgNVHSMEGDAWgBTCKT6G/4bE2jUfaaak/wGDPEozqTBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsLmF1ZGtlbm5pLmlzL2Z1bGxnaWx0YXVka2VubmkvbGF0ZXN0LmNybDAdBgNVHQ4EFgQUNri+eIino2lPr4cIZg3BXLmFgO0wDQYJKoZIhvcNAQELBQADggEBAIf34kAcAS1XZGKhewx6fTS2OjA8oVhmqXXm8k97JsJUjQUcIiRPdpXHwiZxdD3IKOEKIMppywVssbk13lteFfc5IzREO/4aWeUIBlMBfBnyaHZkij6jbzABkCVVtDcdtDJ2+A/j7yhtsE7bAIitZvAl6T80c6IFlVlGH8cFLxuhlvGBu4cRD3gPNyhk5iVQZPKZhvX4YXMtHigINx1qKx0FbQP+lntjJy0yu+A0/xsj/ha6yrvudeYUK6ZJagVEPweTX7LNyKvt3+AvBrazBHx5w6mV2BJH9Qqpu0mtuR9TRDxyVORHrtyT3sx+ynIDtl5kkWPwYCwCKtzl0FiVNJ8=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://tsl.fjarskiptastofa.is/library/skrar/tsl/tsl.pdf</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>IS</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/pdf</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Electronic Communications Office of Iceland</Name>
++ <Name xml:lang="is">Fjarskiptastofa</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/IS</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://tsl.fjarskiptastofa.is/library/skrar/tsl/tsl.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>IS</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Electronic Communications Office of Iceland</Name>
++ <Name xml:lang="is">Fjarskiptastofa</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/IS</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFUjCCBDqgAwIBAgIQEK7utqGYkEyYnrNc0XlTLzANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCSVQxJjAkBgNVBAoMHUFnZW56aWEgcGVyIGwnSXRhbGlhIERpZ2l0YWxlMRowGAYDVQQFDBFWQVRJVC05NzczNTAyMDU4NDENMAsGA1UEAwwEQWdJRDEhMB8GCSqGSIb3DQEJARYSaXRfdHNsQGFnaWQuZ292Lml0MB4XDTE2MDQyNzA4NTM0MloXDTIxMDExMjA4NTM0MlowgbQxCzAJBgNVBAYTAklUMSYwJAYDVQQKDB1BZ2VuemlhIHBlciBsJ0l0YWxpYSBEaWdpdGFsZTEvMC0GA1UECwwmSXRhbGlhbiBUcnVzdGVkIExpc3QgTWFuYWdlbWVudCBPZmZpY2UxGjAYBgNVBAUMEVZBVElULTk3NzM1MDIwNTg0MQ0wCwYDVQQDDARBZ0lEMSEwHwYJKoZIhvcNAQkBFhJpdF90c2xAYWdpZC5nb3YuaXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQf3nLh9d4BwwuuF4Z0m9APKF+SqYc+nySjnyqNDevHc4989STgw4StRaI+QWr7eYvV+qLv9KKR57zfcOib37zKVGmdaXx33S3iy3cxLms2xtjvz2/YYOqdAaWdPP90VnnoSXndaGDb1RUgeisHiHfC1LZEdReYE9j4jVCwg0C8QHafKnBCXU5oKGl0BHLvc/1hhvglz3JqpF1TvJjcucHLRUoX4psJabWVhsBmb2+cFAO5PQIUDz1FbLY6hPcnRhp6CDkyTCztITfg4R4SegaXc9MXGGl0z+xHoDhd0LQoxXFLC0ZaOgZGxz4wQRYmboILy/rbU82wTf/AXIYJ5BrAgMBAAGjggGNMIIBiTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIGwDAdBgNVHQ4EFgQUunUq6QVK5Y31PcP5ihoQKOU7jqgwEQYDVR0lBAowCAYGBACRNwMAMDkGA1UdHwQyMDAwLqAsoCqGKGh0dHBzOi8vZWlkYXMuYWdpZC5nb3YuaXQvY3JsL0lUX0NSTC5jcmwwgcYGA1UdIASBvjCBuzAKBggrBgEFBQcCATCBrAYDK0wQMIGkMDkGCCsGAQUFBwIBFi1odHRwczovL2VpZGFzLmFnaWQuZ292Lml0L2Nwcy9JVF9DUFNfQUdJRC5wZGYwZwYIKwYBBQUHAgIwWzAkFh1BZ2VuemlhIHBlciBsJ0l0YWxpYSBEaWdpdGFsZTADAgEBGjNDZXJ0aWZpY2F0ZSB1c2FibGUgdG8gdmFsaWRhdGUgSXRhbGlhbiBUcnVzdGVkIExpc3QwHwYDVR0jBBgwFoAUEG5XowkBlDSw7RnJVsM45A8SYkMwGAYIKwYBBQUHAQMEDDAKMAgGBgQAjkYBBDANBgkqhkiG9w0BAQsFAAOCAQEAnsiB+TUDBkVMsqjT2RLMZgOEi/IJsJqK7YBvl1+1Piu5sKyuyeSJsTMPYJsraen284m1ZVC9qsog47QxAXL1K621R9kU5HMUSKiimbDvSOiHNnWWWLbabk+gzSxMPhxzFlLnGZ4hxKVrnfuIZJH0JibMNXq1S1WAEInq4iGUdYvegYLz8i946riCbSYUtB0GDbKn6KQlux/GR7nwaImetqZM4cHLmCxShn6wS1s1NaQjBsgwUtxq14PbFlaH0whmytWmL7sW52mAcyzhAbkxA80dPj+er7zz/GskJe5Rle3lzFKAKznhD3QYms84iy3UjnXeSuKSXQw10sKtbNVeSw==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFUjCCBDqgAwIBAgIQN05etZHKmECSK/TenCUl0DANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCSVQxJjAkBgNVBAoMHUFnZW56aWEgcGVyIGwnSXRhbGlhIERpZ2l0YWxlMRowGAYDVQQFDBFWQVRJVC05NzczNTAyMDU4NDENMAsGA1UEAwwEQWdJRDEhMB8GCSqGSIb3DQEJARYSaXRfdHNsQGFnaWQuZ292Lml0MB4XDTE2MDQyNzA5MjA0NloXDTIxMDUxMjA5MjA0NlowgbQxCzAJBgNVBAYTAklUMSYwJAYDVQQKDB1BZ2VuemlhIHBlciBsJ0l0YWxpYSBEaWdpdGFsZTEvMC0GA1UECwwmSXRhbGlhbiBUcnVzdGVkIExpc3QgTWFuYWdlbWVudCBPZmZpY2UxGjAYBgNVBAUMEVZBVElULTk3NzM1MDIwNTg0MQ0wCwYDVQQDDARBZ0lEMSEwHwYJKoZIhvcNAQkBFhJpdF90c2xAYWdpZC5nb3YuaXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJtzPKirZAlfG2RjE+cA83AYSxJC4pgFZFhr750Z56bEZ9UjMTajcTBKg6VhZxRU+R2z6sbj2o3OV4s8eDhgK6MI66xC78CoTwQk0ths+oiobvSvPIGuF91NkbLR7leEurWnaYid8nWYDHX6ok5+p3wK/LTjnYIQok10DYl0f0BIGCPrMmRnZr1BKijh+XhmJLpPxiYSwMfxM6itJ2mSUquhN2BxxerB8nptD5o8UVrLKmepCMYycFAZ5qSf/GqMKUrh8Yy3GvDGJfxJm7vPqKcj+g/oCBIm0YOA24RieahqlZDLdmio57XqEFyV4E5ye6rjFPoKu2v9HxAgvn9MFxAgMBAAGjggGNMIIBiTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIGwDAdBgNVHQ4EFgQUAt+oGvjGL3RLbqTgdl6KPs3z/zQwEQYDVR0lBAowCAYGBACRNwMAMDkGA1UdHwQyMDAwLqAsoCqGKGh0dHBzOi8vZWlkYXMuYWdpZC5nb3YuaXQvY3JsL0lUX0NSTC5jcmwwgcYGA1UdIASBvjCBuzAKBggrBgEFBQcCATCBrAYDK0wQMIGkMDkGCCsGAQUFBwIBFi1odHRwczovL2VpZGFzLmFnaWQuZ292Lml0L2Nwcy9JVF9DUFNfQUdJRC5wZGYwZwYIKwYBBQUHAgIwWzAkFh1BZ2VuemlhIHBlciBsJ0l0YWxpYSBEaWdpdGFsZTADAgEBGjNDZXJ0aWZpY2F0ZSB1c2FibGUgdG8gdmFsaWRhdGUgSXRhbGlhbiBUcnVzdGVkIExpc3QwHwYDVR0jBBgwFoAUEG5XowkBlDSw7RnJVsM45A8SYkMwGAYIKwYBBQUHAQMEDDAKMAgGBgQAjkYBBDANBgkqhkiG9w0BAQsFAAOCAQEBQnxvuiuL507lhU/KdytchoLNdPS23IUT8OGBnJHzDYzGEVsHuEEo7TVuqRNhKpTe/MmKVGLAL7LzaigcHYSngux0F+20fZCW3o8NOc9OQNz8K8XhrOLIuzmiPvHRgjluMWaVU6QZkHEJu0ncQuErr+cGCV41SniCSff4DeoFYZt4wqiFra2Lh9geUkFmGyw39vdGcub8k24xRQUZ3CBWylS9GxGCicr/gAGnlvFbt6byWd9xpytVG0pnwiIkG08dVwly/zW/Zka++C+xsbrcFBzivu8zQmyKGs4ykU5WoaSIL/U6jv1yxrR4pPhq73KfBCwojqAX2gJjxtlQX/q0Mg==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFUTCCBDmgAwIBAgIQZTsBHXHnMEWLMsMhC1buxjANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCSVQxJjAkBgNVBAoMHUFnZW56aWEgcGVyIGwnSXRhbGlhIERpZ2l0YWxlMRowGAYDVQQFDBFWQVRJVC05NzczNTAyMDU4NDENMAsGA1UEAwwEQWdJRDEhMB8GCSqGSIb3DQEJARYSaXRfdHNsQGFnaWQuZ292Lml0MB4XDTIwMTIwMTA5MzQ0MVoXDTI2MDExNDA5MzQ0MVowgbMxCzAJBgNVBAYTAklUMSYwJAYDVQQKDB1BZ2VuemlhIHBlciBsJ0l0YWxpYSBEaWdpdGFsZTEvMC0GA1UECwwmSXRhbGlhbiBUcnVzdGVkIExpc3QgTWFuYWdlbWVudCBPZmZpY2UxGTAXBgNVBAUMEFZBVElULTk3NzM1MDIwNTgxDTALBgNVBAMMBEFnSUQxITAfBgkqhkiG9w0BCQEWEml0X3RzbEBhZ2lkLmdvdi5pdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKxsC/kmEJJO7/hcupCbonzR0UBxgO2Qud6/M4kvAE1NyRdd6soE6wLFSUcIoZCw6by31ddfaNTJbFkevNDUS31u2ycsOqMobPm/uTOTNpDhMLrsncY5O8aSGNYYMVn9Og2AtDhYDdkqnWR4jigzgTSJ/Fk5PFJarFZ/tk+kl3jLvrI9qOP861yQ+QCc/I+C04ugcpDONwkoWukZJtHayVrOoUZwgQGHBVFeD4nFbdZFH33le9YHN9vg7lczdTbLsYhEJp0WUwMsewC/NuPJ/grpr7hj6UcM4h4qEC/eS5d63pZHnwXqvgMW1AN6P38sSbXdd+45hDDcxVBhQ/JH5M8CAwEAAaOCAY0wggGJMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgbAMB0GA1UdDgQWBBSGmjb0h4WtXP3TDc0Njk9qZcpSNDARBgNVHSUECjAIBgYEAJE3AwAwOQYDVR0fBDIwMDAuoCygKoYoaHR0cHM6Ly9laWRhcy5hZ2lkLmdvdi5pdC9jcmwvSVRfQ1JMLmNybDCBxgYDVR0gBIG+MIG7MAoGCCsGAQUFBwIBMIGsBgMrTBAwgaQwOQYIKwYBBQUHAgEWLWh0dHBzOi8vZWlkYXMuYWdpZC5nb3YuaXQvY3BzL0lUX0NQU19BR0lELnBkZjBnBggrBgEFBQcCAjBbMCQWHUFnZW56aWEgcGVyIGwnSXRhbGlhIERpZ2l0YWxlMAMCAQEaM0NlcnRpZmljYXRlIHVzYWJsZSB0byB2YWxpZGF0ZSBJdGFsaWFuIFRydXN0ZWQgTGlzdDAfBgNVHSMEGDAWgBQQblejCQGUNLDtGclWwzjkDxJiQzAYBggrBgEFBQcBAwQMMAowCAYGBACORgEEMA0GCSqGSIb3DQEBCwUAA4IBAQFLLVVR81eBCxGXEDtvpltOERl7r/WbolQ62qYd2YfRCf7Xj9Qb65ZayvVtb9XQLO3h6sGFpKZ5tyXiA9HVbt+om9J+ezxaYMhWomNntJ2oi8g2rk3DV9jhkBxTwLrkFjU9yQokHzFBE4jy9OBciktmGZ22EOL03CAQD0OVc7ukr9zI8ICw5DL5t/v8o86Stu3y1DuvyZ519xRNJ6CZTTYiaD9iFOHma+VDbUy4yzZ642Z2FnUxxLxZZAnjJe1iKND6OGApxnB512So63VFLtPTcC26js10j6MFR+A7evqbWsVZTx1mlA0uQIro7c/NbZodboJ27jqJwwnLcsBqyPZG</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFUjCCBDqgAwIBAgIQdoEx8tMJRESZrx3ITwK2dzANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCSVQxJjAkBgNVBAoMHUFnZW56aWEgcGVyIGwnSXRhbGlhIERpZ2l0YWxlMRowGAYDVQQFDBFWQVRJVC05NzczNTAyMDU4NDENMAsGA1UEAwwEQWdJRDEhMB8GCSqGSIb3DQEJARYSaXRfdHNsQGFnaWQuZ292Lml0MB4XDTIwMTIwMTA5NDA1MVoXDTI2MDUxNDA5NDA1MVowgbQxCzAJBgNVBAYTAklUMSYwJAYDVQQKDB1BZ2VuemlhIHBlciBsJ0l0YWxpYSBEaWdpdGFsZTEvMC0GA1UECwwmSXRhbGlhbiBUcnVzdGVkIExpc3QgTWFuYWdlbWVudCBPZmZpY2UxGjAYBgNVBAUMEVZBVElULTk3NzM1MDIwNTg0MQ0wCwYDVQQDDARBZ0lEMSEwHwYJKoZIhvcNAQkBFhJpdF90c2xAYWdpZC5nb3YuaXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQN3R97HGAIkPLE0SZVMnIgQrG2gmfUvvbfDbvTpx2Ng1qHFV+gSo4cKwR5uP3qycCA2kAkR8HoSqE9t/UGz3XEbaFaBCvRXXGNhREYHnUTW3TcfS2lv+QhY5fug84wkeetEOBBGE81zio+sZVRzRT7hHak8sGv26VOzLW6Jgt6q4M+r+4Q6dGKde9bjQxnlL9CpWSadImrKXUog3ar7Diy7CLTtQoBI6FnYili2oBGJIh9rM3uHyWZ+2/ctQtl9GB2M/vCBixyoySG52j/HLzsxEAtwnnuOzKx3d3JoegGGotvoqg/+Lj/sB/EBpYU1o/jToLFyVa/V7Q+uuQwGYBAgMBAAGjggGNMIIBiTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIGwDAdBgNVHQ4EFgQUAAiTuMDCn+3Th5/SnfZ9MbLpCM4wEQYDVR0lBAowCAYGBACRNwMAMDkGA1UdHwQyMDAwLqAsoCqGKGh0dHBzOi8vZWlkYXMuYWdpZC5nb3YuaXQvY3JsL0lUX0NSTC5jcmwwgcYGA1UdIASBvjCBuzAKBggrBgEFBQcCATCBrAYDK0wQMIGkMDkGCCsGAQUFBwIBFi1odHRwczovL2VpZGFzLmFnaWQuZ292Lml0L2Nwcy9JVF9DUFNfQUdJRC5wZGYwZwYIKwYBBQUHAgIwWzAkFh1BZ2VuemlhIHBlciBsJ0l0YWxpYSBEaWdpdGFsZTADAgEBGjNDZXJ0aWZpY2F0ZSB1c2FibGUgdG8gdmFsaWRhdGUgSXRhbGlhbiBUcnVzdGVkIExpc3QwHwYDVR0jBBgwFoAUEG5XowkBlDSw7RnJVsM45A8SYkMwGAYIKwYBBQUHAQMEDDAKMAgGBgQAjkYBBDANBgkqhkiG9w0BAQsFAAOCAQEBbM/KmjgWRWE05eorBsjURkwxrrpYiZTLTmTxHOPyKVEYp9qLs95ffAWBnCNnDVx/ZM5N2VLeUDnWL+eJMx6ohaS1Rfk0/+jnxJnThHU9LWdu6NdZIjh8cDG2NKwKMhGJmr2qKXn6vpmV4GSTAJT0Y3C6utpGVxyuJz7oyNayqiXilLWghIq4LBAgrt9iIvykSTvGkvqtRP6yhq5h41lzRhbpbdryZcdDirqlrakPHqMpbeZYybWhu9yfTrPJ5ws99cRDLOOoNNVqjbmxfc240B/aCf+U4zLPjP0IAb2EY4e45YBURdho+xhLX6bUL7GgZsynnTx2089HJPqKmLqeqg==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://eidas.agid.gov.it/TL/TSL-IT.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>IT</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Agenzia per l'Italia Digitale</Name>
++ <Name xml:lang="it">Agenzia per l'Italia Digitale</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/IT</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFsjCCA5qgAwIBAgIJANWyu7iEuYtUMA0GCSqGSIb3DQEBCwUAMEoxCzAJBgNVBAYTAkxJMR8wHQYDVQQKDBZBbXQgZsO8ciBLb21tdW5pa2F0aW9uMRowGAYDVQQDDBFUcnVzdGVkIExpc3QgQ0EgMjAeFw0yMTAxMDgxMzAxMDBaFw0yNTAxMDgxMzAxMDBaMEcxCzAJBgNVBAYTAkxJMR8wHQYDVQQKDBZBbXQgZsO8ciBLb21tdW5pa2F0aW9uMRcwFQYDVQQDDA5UcnVzdGVkIExpc3QgNjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAL+Y6ZqL7bhTsNXRoYsFvruazEUl25rV9nutBanfo8oV1J5wUeY1j00g9qput5IDLo6UWJg3887TxIDNhpYk0RdOegqxXNt7SZRpqqvqUtWiQYaruhTt6aSagWkbop3qD5buXAHC4eTbhukQuATl9FhlSRTeGWGPvZRawe7e9Az2GaYj96zszMI8FZ4OweAH5fRJPSfIuffWEXQlo8TuAtmHVyZ1yMh2nFhEWaGhXwAJ1luyVE7CuwFVK+W6A+bK9xNyVSh8Ej6NnBQxazffr/AcTVraph3ugU3Sjrdhc1WbofGt0aJtRMWWA1sX4jXDWPrBQCGxCus+YOLqriT7/wgIpIcb3BKpCML1Th+UOJ2WaOr25uOrY0u0NWzEbUzu++XopSG8zIOFk7seXlGKMxNrLtFNyYhIByXN0Ek/6dY3e1vafcAPUB+Y5hq/2kWpbVqDVP9ekWCSIekMD1NwlIulzKSFAe122fg85FXp90We8Op/Krph6JoJxl4rddljAwIDAQABo4IBHDCCARgwHwYDVR0jBBgwFoAUxtpl5ueSfdn8EJWUO/Ym9dhkhnEwHQYDVR0OBBYEFM2aoogULIODXECTyumQGfqn5f7QMA4GA1UdDwEB/wQEAwIHgDAXBgNVHSAEEDAOMAwGCmCDNgoKAAABAQAwCQYDVR0TBAIwADARBgNVHSUECjAIBgYEAJE3AwAwQQYDVR0fBDowODA2oDSgMoYwaHR0cHM6Ly93d3cubGx2LmxpL2ZpbGVzL2FrL2NybC1sbHYtYWstdGxjYTIuY3JsMEwGCCsGAQUFBwEBBEAwPjA8BggrBgEFBQcwAoYwaHR0cHM6Ly93d3cubGx2LmxpL2ZpbGVzL2FrL2Nlci1sbHYtYWstdGxjYTIuY2VyMA0GCSqGSIb3DQEBCwUAA4ICAQAfC+AnfNQlCCjsWv+WBzVLd9JL1h9jbyXOn1hAR09c8r8Rrf1Fb+Wn6t7oBYKOUogRHki5D5bbb9+kYOq7f2fxYg+vcGJ9M1Cpxh4F9yFgSvkfj/Vw8iRa3BPbiot7kRvQ//xdsZeTyR+YbeCvTbpmUd7HjzAhphCPf9tMgsacfrI97dsALGl+6YNYREnA2uLEF8ttDl0IM1MdmZ4QT/qpJlIpYhIxxiFvAjvlb84xWdtfzYhEwAtxYzTUg6h8L85d42oTTMQ8NeTXquhBSFlKywAHcfXMAHKX4kpEhazh/fqzhVS0EmOL1Mcanb977qPLxLtbSBY4l1TPnx/k7qYlf/MBwSvaAdDsx2NwczcvgH/NVkreIIIakQfjm00ZV+HMA2laUgtbJYETLecaVrURObjEP+wfNt5EhuQaVLXc2uaj8WR19x8/yfP3OUQntqz3eE8iAc5y25z35Pz11ylf6y78wmBKe3qcuOAS36KLj5MJHbLaMY6CUigFrny7zNATW7zaIxBwNt4mCF/fHGa9DsZIeV5UkzYDt3E21ucsLnBn/0uuesalcR8LpljdU3DqH+mLbMYtgXgPXWAdJkmpW9uKEyGffHnaYrpKTRqRWtDCdiHD6DAlZL4IPDl7iM1XFQPj8fSN90xf25qMDa7cBthf7KYgZjiSQ2xN8kByJw==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFsjCCA5qgAwIBAgIJANWyu7iEuYtVMA0GCSqGSIb3DQEBCwUAMEoxCzAJBgNVBAYTAkxJMR8wHQYDVQQKDBZBbXQgZsO8ciBLb21tdW5pa2F0aW9uMRowGAYDVQQDDBFUcnVzdGVkIExpc3QgQ0EgMjAeFw0yMTAxMDgxMzEwMzFaFw0yNjAxMDgxMzEwMzFaMEcxCzAJBgNVBAYTAkxJMR8wHQYDVQQKDBZBbXQgZsO8ciBLb21tdW5pa2F0aW9uMRcwFQYDVQQDDA5UcnVzdGVkIExpc3QgNzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAMunfVthxSbtRlcNSAGMAkkCok3s+RFI38KlP9RQ836qeEY/UANdp28WcocVpp47Vrr3AqfJ10mr26hodQriY6zJIeR57hCVJNaOWat+qT/jvLV8Gq/IaXZb0t0BbPVDW2bWHQMnP1E6UuD4IVraRP/YZE3z4WJusG+9t8AyerJZnY7SVHSJfZiSZzILBZzQ7PK2W594oISuxxh5y+jKt2h8jT25kKVN9sMR9JP3uHb31LIjXXTyHNZFyhHj/u3d3zvxcvarZKMgCEJJ0fvY8wOPHCbKX3WTbrTmLjRSlKOhto1Jvt/vYsbPKf0On3DEXjrDAXxV1Aw42wEvCtxBtUuxiGcMgfNq0c0l/qGJ3jGKpFBYhl7k5bA9ZJae7j0eQ4PF6pL5BWMk2sOB1kXiQzTzGaUAwqkpubsxzD/Kycsz1QzuHErLG7M8BkS3h9ge3XvsdHw3ni9IOH3ZWy4y1Ftl+56duLQwkavwZz/u0UE9fKXWPecxyN5G+ku/Tjc10QIDAQABo4IBHDCCARgwHwYDVR0jBBgwFoAUxtpl5ueSfdn8EJWUO/Ym9dhkhnEwHQYDVR0OBBYEFI6L90PcfHcaLVzJF7TZarj024kSMA4GA1UdDwEB/wQEAwIHgDAXBgNVHSAEEDAOMAwGCmCDNgoKAAABAQAwCQYDVR0TBAIwADARBgNVHSUECjAIBgYEAJE3AwAwQQYDVR0fBDowODA2oDSgMoYwaHR0cHM6Ly93d3cubGx2LmxpL2ZpbGVzL2FrL2NybC1sbHYtYWstdGxjYTIuY3JsMEwGCCsGAQUFBwEBBEAwPjA8BggrBgEFBQcwAoYwaHR0cHM6Ly93d3cubGx2LmxpL2ZpbGVzL2FrL2Nlci1sbHYtYWstdGxjYTIuY2VyMA0GCSqGSIb3DQEBCwUAA4ICAQBNhdWj1i2l6M7KOOZMcMIIVlGhxh4vHkHeeIGdSGJID2h9InQdgvE5BOq8cTiY2PiEtRkK6fhCfQl7DsPcb3aikt3DD9XDmONkt1XEjJ0fYjSsWq75BDtmxWEyCGwDqULfKKQeigHFSD2gZT0wOuXpn98M0qlrHSp0DbZE+h4ea8tl6OZJXdvc/cDKQo5nzyP0MjwRBNcIVDb+m8vsauLkD/+LsB2TS3nGk8oW+QlUNm27RLQ3scD/oZRvaqJdIr3F6wtOWIrIk6tKHWGUQoJxMtiV1P4itlrhlwzG341dDsK3ZOM+TFlJx0nmc0MS3Ay54qHLk66loxCEWDrLDRVg4r//SV8hIGlVpQd1V/jpDj83/tFNoKOsccwnB53dE/+776OmBYTp52Ee2ub+P+1GhhZmDm70WBl9o4jYf4Vc5Sa4UGSO8zm5FfPk+O/6hvSY/yLq96gWm4LAjooJ12+USaX/oQJMClNPtt1wV4hZWZLM7NBGSXd9yltDSUrTz3kdi+N8lpUAB6xWPtSUxMMNj+adCKh3tgHnaK4aeyAuB2gzWa9eQN2REcFzlSfrVAQCbe+UliAFId9DAKC/ucQrVvUUgeMdP4CKBNDTsh9ZqKEESgKEc/8nc839rO0bwgAT1PJtxwdrRKeNNcXlMHTPE4jAZ1cQuHS1XiIvwTHP0A==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFvTCCA6WgAwIBAgIUWYfQNmYtVM/i0XC58kyqNbS6uNIwDQYJKoZIhvcNAQELBQAwSjELMAkGA1UEBhMCTEkxHzAdBgNVBAoMFkFtdCBmw7xyIEtvbW11bmlrYXRpb24xGjAYBgNVBAMMEVRydXN0ZWQgTGlzdCBDQSAzMB4XDTI0MTEyODEyMDYyMloXDTI4MTEyODEyMDYyMlowRzELMAkGA1UEBhMCTEkxHzAdBgNVBAoMFkFtdCBmw7xyIEtvbW11bmlrYXRpb24xFzAVBgNVBAMMDlRydXN0ZWQgTGlzdCA4MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAuYRnM8ispVhg/ojMqPi+LxpRHDWIR4QYnKhoOMxY2DdI80MJB/YZlgNEu4c618GS3MGXsOaZxXLbMlerpT5YV1jaROF2E4Yzsy4Ag4rzWxP9V5AelPLy9OEb+ktOy/pn/NHshzllzXH4Rw1tIJrboAALXQQNGAwtNFeEym2OzMAZoFQzTuXgmZXxhyLJpOV5A0fIsiwRbHNvAnwCCPMZhFxL8akxFOJhr6NTvWZBqXV36hxa40ssSQYyPfBj7R2S1zyt1cpS2VVhwBSMMjtWJRuVDeOsOamGzl+Ht+4e4ZN91JcgTmWGexnY4AfcbY70Hp8Q824Z14KKCtINEFIVTz5TJ493s/URAGYxV5autPWpE4+PeBXurk5zQ/ueC7JaX+/IieHl089H0v0ujbURgqQCGYqNcKKZFJm2ZlNpdIQW4ahVIxEp6OOg3xYEQKbm7sX0yHEzTsaFrvustdScpGtsZQ6HvyZD6OO9DHYtu8BU/mFIppLPDVGAjFIxNoCPAgMBAAGjggEcMIIBGDAfBgNVHSMEGDAWgBReNLw46ixAPtvFSoqTiBgyRDCnMjAdBgNVHQ4EFgQULhSirHsRPRUVX2FFWxpaILjPfqgwDgYDVR0PAQH/BAQDAgeAMBcGA1UdIAQQMA4wDAYKYIM2CgoAAAEBADAJBgNVHRMEAjAAMBEGA1UdJQQKMAgGBgQAkTcDADBBBgNVHR8EOjA4MDagNKAyhjBodHRwczovL3d3dy5sbHYubGkvZmlsZXMvYWsvY3JsLWxsdi1hay10bGNhMy5jcmwwTAYIKwYBBQUHAQEEQDA+MDwGCCsGAQUFBzAChjBodHRwczovL3d3dy5sbHYubGkvZmlsZXMvYWsvY2VyLWxsdi1hay10bGNhMy5jZXIwDQYJKoZIhvcNAQELBQADggIBACslEdLXgQadhzM5Ub9yHDQREZEfxXxvfMrFRDrJZwrztn+Xhr4rnZjkU1PVsHD39l7IeoDDm9rdMzyXeWBGQq8Iab7B3KvqOZIDuvblg14b2rjolvBz1ffuB1gSV54Mb0OALaJ7e670zhOt9IOwBRgPs/Xc7BZEuoL8bbcH5x8g7aLrT5JSeTfdTJtBdPnBMJqdjls1PUbfp4kxxrseL4H2dSELggXX7We1WFFt0rpzyX5iFjXhuVfRH4G/UB/npp9WUUB45Cy33cg1aRhEKgFuiTYqx5hmpp49iG/cvTlQ9ou3kWZgUMv3B+j8a9ZFDje5gy+2mFDb95B16Uimb54E7i7YoLJTZ5H8fhGXluyrd/KJvq69Dvvgq/pXjZQWU2byMgINaMJLlKmu3kIH0o/NrEhdMgcw3ZPwvW68mFBXL/lt0vtraPMDeTc5AluIHAmKDtiCY2vkP8j7Sr17h2pZVvnlRcNMJwNAf7h7yjH/IqHJsojbgUmV0dALFMfwHUVSKRaHQ0Sa2ZUvbNP6cCoY7LM2sRhCM7D/9PRPvMzLWFRqN6ndt4Y2iHUIuCekGL/VZVU3AyKc6sBfbqEgSbIthMcf3ofCUifBn1SbaIcydsgbkhQtIyqPK22XZTGjjF29G5qI8i30I+lEDTHyJ5ZNmSs0I+mklWtd54hnZ10b</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFvTCCA6WgAwIBAgIUSAY9IgLhjUS4ibJ7G5iAH5nZZ3cwDQYJKoZIhvcNAQELBQAwSjELMAkGA1UEBhMCTEkxHzAdBgNVBAoMFkFtdCBmw7xyIEtvbW11bmlrYXRpb24xGjAYBgNVBAMMEVRydXN0ZWQgTGlzdCBDQSAzMB4XDTI0MTEyODEyMTA1NFoXDTI5MTEyODEyMTA1NFowRzELMAkGA1UEBhMCTEkxHzAdBgNVBAoMFkFtdCBmw7xyIEtvbW11bmlrYXRpb24xFzAVBgNVBAMMDlRydXN0ZWQgTGlzdCA5MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA4Z7ZVoIRDoqquyfdPuX05HjZzEsO1fp6PdiYoGCH/MOEyMOIEl9/qPuWOzTEVgnXnfTxUxoFuvPBV7on5qKRO0pd8PzS6A8Y60afGsp5RNdiZBP4f3Fzpi1qLx5jTZrnne7VUX2lGfWRWf+On+1orXiwqu2yohLIehonrQXpMl1+AY2i7QRbdDk3aP+hKisuqCw03O7ECf4myDk1KOyOgnfiVeaRHx9gwOwNR7VmQ1isYSWaegoTSUZGmIIZCv6ki3E0vd9RDqlV2aWZG3HMo1EppC1bs7SFQ1VCeGpoK9dgUaHeiqkPkm1KS/NisFR+ZsQY6u7d6NS9sZYQh7FXNmTNq8TmcUGZqBhInKhhH1f9CdsKoy0E/s7hSje1VlhTE4DBdamX8myoCxkchmoZ4KuKdNKXl/SvnNpUv5VJ21oe3MJedfie4Z2czdbTi8eF6mcEuBNmUyElePSGuE7TZ0GvH+Z2dnJfD2hz4Zu4fQQWrzmlR684kFPSf9k2ZQdPAgMBAAGjggEcMIIBGDAfBgNVHSMEGDAWgBReNLw46ixAPtvFSoqTiBgyRDCnMjAdBgNVHQ4EFgQUgrE7HkUcdBzTtYNxhXCQoTaIAYgwDgYDVR0PAQH/BAQDAgeAMBcGA1UdIAQQMA4wDAYKYIM2CgoAAAEBADAJBgNVHRMEAjAAMBEGA1UdJQQKMAgGBgQAkTcDADBBBgNVHR8EOjA4MDagNKAyhjBodHRwczovL3d3dy5sbHYubGkvZmlsZXMvYWsvY3JsLWxsdi1hay10bGNhMy5jcmwwTAYIKwYBBQUHAQEEQDA+MDwGCCsGAQUFBzAChjBodHRwczovL3d3dy5sbHYubGkvZmlsZXMvYWsvY2VyLWxsdi1hay10bGNhMy5jZXIwDQYJKoZIhvcNAQELBQADggIBAHxV540BT2u5nETUrE5H6ukpcGmvivQ/hVwt9gWQ5Y5nufVesv0nVGEFDglPY/wKPi1J66aC919YvRWKlmEOZKQ9KjXNppfRAaDHR7BlGGWKtUOj5Jf9zDyIpfn76+7LSFgSxkJRurqQvaFNkFN59A1ErgT+7NgdjRAzZa7e9XMMav50UWtaTtr+pbnY8gYoRh14lp2BKnnvudqyso0LjqQvhlOtTPqrtnoS1DVRomv6bF4x9PjUicuo6pp2Ub86REz7fU9Qvr2q+qte0dvYiE+Lf5yacj28TR+2otuu421BkMNDcMs22ykB7Weyjij6l8hR1JEj9qU68cIBheI8hjNFCM0/0/ckj+KtiAGsdkyRFx5dbytp4ME4tt9n+An85fzyINgmUgCSHNUMzhr5SybaytSbUT6bcqRulTEsv4hGA1AC8u6ETNQQG+XRyMPZo+d+pbeJl+nWWO3Z401P8BPKnsLan4cApCRgacSF+Wpzkq1x3IUkLYcIo2rlDaqYsfk9jlRMU2826G0Uyf9J3Vj0LLljl7WOeZLPtICdoLNc1SHJpIOHB8pqOKw1MYD6sJ9DJUP69ysDopVA99kYW7rnuZAVTZAjcIOpoGvlAO7HtCmsYsBrEvIx5RoW+j6V7+2NXV8ZrIhwzTk8WWnwPgihEWjL7eXQ2LViiprd2sEy</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://www.llv.li/files/ak/xml-llv-ak-tsl.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>LI</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Office for Communications</Name>
++ <Name xml:lang="de">Amt für Kommunikation</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/LI</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIDQDCCAiigAwIBAgIFEjkEClswDQYJKoZIhvcNAQELBQAwOTELMAkGA1UEBhMCTFQxDDAKBgNVBAoMA1JSVDEcMBoGA1UEAwwTQXVyaW1hcyBNYWNpamF1c2thczAeFw0yNTA3MDkwMDAwMDBaFw0zMDA3MDkwMDAwMDBaMDkxCzAJBgNVBAYTAkxUMQwwCgYDVQQKDANSUlQxHDAaBgNVBAMME0F1cmltYXMgTWFjaWphdXNrYXMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDtqErPgH5YFEErjqJB2+PFE7t41596aAcNjnqEe6gcayXU7Cx3aex6BoPEnDQMhqxj8enUWJEx6fafeZgPAbSZ7HQ5/BsWcpIWK3l4GWjRV3Tx0p8rS588/yQjmoHqHTFNyxIYz+nK69lY/WyRjl3Fay7Nof4iv53MxMLGzCvP5l9Iyi2TKx/jcyAWbydUsA2/63mZhK73eG3Q1CpVvU0VN0A8qWW01VPalk5rYlx8ToBznjSkO4ZfKnfyh87Tl7lHDuQQM7CzaISos1bw1i8Ua2IN/YkZbS3/HLT6IhMbtUl8fYWE6e/DU++SkCZilK6MRU1SveaHlW9swwe45xTAgMBAAGjTzBNMB0GA1UdDgQWBBSRyRpOXkaNOg8jFNjJSeBmi2eoqDAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIGwDARBgNVHSAECjAIMAYGBFUdIAAwDQYJKoZIhvcNAQELBQADggEBAMJVOCWiCOxxumwvXWK+ikLfhpT1sIAnrXss/MSecAzMvw0VlB7kIVguYVUW+KpOSYdRFzBsojAhgJR5hZ7cg+KLP5xD/i2ZXVR3AFmAxeEb+RXHZb9goCce2QGgPS9NQk0VLtvT8HtRBwOj6WT6GUnMPL4sOF5ZS3fB5rs7Od/XOCfHcfFn4GjUV5ExLrOyVZP2AsiSrdk48nW5VUZTzlse5d7Gx1cOLYDiAbhw9z1hwvY3MZejGeJwJkKLx/v+TXOqzbgBWId3ipHR+VjR2hCDUvTaiSSVCMKDt/lsdzGIiqyppR2hqkR/LCLdiyNUx3BKNInZPo0047wDkzHCVpc=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIECDCCAvCgAwIBAgIFEj2M/kIwDQYJKoZIhvcNAQELBQAweTELMAkGA1UEBhMCTFQxSTBHBgNVBAoMQENvbW11bmljYXRpb25zIFJlZ3VsYXRvcnkgQXV0aG9yaXR5IG9mIHRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExHzAdBgNVBAMMFkRhcml1cyBNaWNoYWxjZXZpw6hpdXMwHhcNMjUwNzMxMDAwMDAwWhcNMzAxMDMwMDAwMDAwWjB5MQswCQYDVQQGEwJMVDFJMEcGA1UECgxAQ29tbXVuaWNhdGlvbnMgUmVndWxhdG9yeSBBdXRob3JpdHkgb2YgdGhlIFJlcHVibGljIG9mIExpdGh1YW5pYTEfMB0GA1UEAwwWRGFyaXVzIE1pY2hhbGNldmnDqGl1czCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMXtrQW2emWhH/Bx/u1BBBo0R9fH72PPkWNP9RHnF13iFPSG41ohDn1aHFoUFV3nVSFqQnHShJ0mfiGGnRKeVJA6p58N0/PhDa0zEMfwdCR+bHH7lhCuH4C5++C+72dGo6YrlM2REHK6q1F+4ZvFiowxCXgOQcLHOO43JWZrWLxqjDbg1ts+Vy2s0/ojS6mictM2VqmJbpwLFSEeLucdADuqRi31irVxD7Fface1cMgum3BxlIkatxrQmVR2q24VSmrZlLMz4ewpTSMwPXASMevwLyfrh08HQWsCtliZVVulP8m0GCzWf2RqiyrCjmX04vu8j6iR0lDiO22cK0tTHyUCAwEAAaOBljCBkzAdBgNVHQ4EFgQUILziyZUuKX4eX/o6O7Zy0b8qrWwwCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBsAwEQYDVR0gBAowCDAGBgRVHSAAMCcGA1UdEQQgMB6BHGRhcml1cy5taWNoYWxjZXZpY2l1c0BycnQubHQwGwYDVR0lBBQwEgYIKwYBBQUHAwMGBgQAkTcDADANBgkqhkiG9w0BAQsFAAOCAQEALuB39C7+QZkrgVL/CqBrFyzo5/c+jOVdj0PEDAxsrINb0oZNkJD+EUMqpLVASENkt5RKf560hmRe2Q8kD0357ucEonuEQTpYFYdqs/D/q2XVEEwVOR4SctVfmQwmtuLqPjbIG9A0wKzLLeRrucsKJUg+2YW5bCTqKpyBs/zG4OY/5TMEbni1QReUx/QoMYSUeiHJ2EUMNW2POSSlDmzHWTJTCjcg+cu8+9oNGgJakIwxWDFRmlanYSbWZkjLN4+MRkF9TSs9umMc3yf10LYJvTWZ4WJPIQhbpb9apl9IKz0CzEd11gI8lYisFiNfcF4UKez+c/5K2VlgVa/PrvqPQQ==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://elektroninisparasas.lt/LT-TSL.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>LT</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Communications Regulatory Authority of the Republic of Lithuania</Name>
++ <Name xml:lang="lt">Lietuvos Respublikos ryšių reguliavimo tarnyba </Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/LT</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIICjDCCAhOgAwIBAgIUaLo3ZSTI6j1b5dQbKzfhN/epMKowCgYIKoZIzj0EAwQwfjELMAkGA1UEBhMCTFUxEDAOBgNVBAcMB0JlbHZhdXgxDjAMBgNVBAoMBUlMTkFTMSQwIgYDVQQLDBtOYXRpb25hbCBEaWdpdGFsIFRydXN0IEJvZHkxDjAMBgNVBAMMBUlMTkFTMRcwFQYDVQRhDA5WQVRMVS0yMjk1OTQ2MzAeFw0yNTA0MTEwNTQ2MzBaFw0yODA0MTAwNTQ2MzBaMH4xCzAJBgNVBAYTAkxVMRAwDgYDVQQHDAdCZWx2YXV4MQ4wDAYDVQQKDAVJTE5BUzEkMCIGA1UECwwbTmF0aW9uYWwgRGlnaXRhbCBUcnVzdCBCb2R5MQ4wDAYDVQQDDAVJTE5BUzEXMBUGA1UEYQwOVkFUTFUtMjI5NTk0NjMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATBSIwHyUDeq63bYo7RMX4JkbjUImjbBpblt5ioTpptvkoR1PyNojZaTnbWp1TzEwpehzzTYrwBN4uIE+vkV8Nue8PhJoh62iTDNXfYzfVZkou/ucqvC+SEB7lyn0JlhRSjUjBQMB0GA1UdDgQWBBSVtslX3RDZMeUu/A8f3QT8HcuHzTAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIGQDARBgNVHSUECjAIBgYEAJE3AwAwCgYIKoZIzj0EAwQDZwAwZAIwJbzVladMHwIBBctEoahSV6Jr+1HkgR5vmP05kJsOa7kI2gX3zIdaXTsSJi27D8qJAjAnWNhUIKphR8joW+3c17Lr7aYhiba1j+Qljv88ErCAGVohBURK5EhlYMqWo579/y0=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://trusted-list.lu/tsl.pdf</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>LU</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/pdf</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">ILNAS</Name>
++ <Name xml:lang="fr">ILNAS</Name>
++ <Name xml:lang="fr">Institut Luxembourgeois de la Normalisation, de l'Accréditation, de la Sécurité et qualité des produits et services</Name>
++ <Name xml:lang="de">ILNAS</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/LU</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIICjDCCAhOgAwIBAgIUaLo3ZSTI6j1b5dQbKzfhN/epMKowCgYIKoZIzj0EAwQwfjELMAkGA1UEBhMCTFUxEDAOBgNVBAcMB0JlbHZhdXgxDjAMBgNVBAoMBUlMTkFTMSQwIgYDVQQLDBtOYXRpb25hbCBEaWdpdGFsIFRydXN0IEJvZHkxDjAMBgNVBAMMBUlMTkFTMRcwFQYDVQRhDA5WQVRMVS0yMjk1OTQ2MzAeFw0yNTA0MTEwNTQ2MzBaFw0yODA0MTAwNTQ2MzBaMH4xCzAJBgNVBAYTAkxVMRAwDgYDVQQHDAdCZWx2YXV4MQ4wDAYDVQQKDAVJTE5BUzEkMCIGA1UECwwbTmF0aW9uYWwgRGlnaXRhbCBUcnVzdCBCb2R5MQ4wDAYDVQQDDAVJTE5BUzEXMBUGA1UEYQwOVkFUTFUtMjI5NTk0NjMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATBSIwHyUDeq63bYo7RMX4JkbjUImjbBpblt5ioTpptvkoR1PyNojZaTnbWp1TzEwpehzzTYrwBN4uIE+vkV8Nue8PhJoh62iTDNXfYzfVZkou/ucqvC+SEB7lyn0JlhRSjUjBQMB0GA1UdDgQWBBSVtslX3RDZMeUu/A8f3QT8HcuHzTAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIGQDARBgNVHSUECjAIBgYEAJE3AwAwCgYIKoZIzj0EAwQDZwAwZAIwJbzVladMHwIBBctEoahSV6Jr+1HkgR5vmP05kJsOa7kI2gX3zIdaXTsSJi27D8qJAjAnWNhUIKphR8joW+3c17Lr7aYhiba1j+Qljv88ErCAGVohBURK5EhlYMqWo579/y0=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://trusted-list.lu/tsl.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>LU</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">ILNAS</Name>
++ <Name xml:lang="fr">ILNAS</Name>
++ <Name xml:lang="fr">Institut Luxembourgeois de la Normalisation, de l'Accréditation, de la Sécurité et qualité des produits et services</Name>
++ <Name xml:lang="de">ILNAS</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/LU</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFsjCCA5qgAwIBAgIQVmsdHB4YwedhXaj5uXVqzTANBgkqhkiG9w0BAQsFADCBgTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxGzAZBgNVBAMMEmVQYXJha3N0cyBJQ0EgMjAyMTAeFw0yMTEwMDYxMzQ3MzdaFw0yNTEwMDYxMzQ3MzdaMHExCzAJBgNVBAYTAkxWMTUwMwYDVQQKDCxEaWdpdMSBbMSBcyBkcm/FocSrYmFzIHV6cmF1ZHrEq2JhcyBrb21pdGVqYTErMCkGA1UEAwwiTGF0dmlhbiBUcnVzdCBMaXN0IFNjaGVtZSBPcGVyYXRvcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALiN+6JKrbMsTfu3f21l8t8ZEEv8Qfp/L6ftjuLUAmGG0qG6ICHummpxD/zuNN1a6yKCG4FoeQO5NSE0tq9IoOIsXW5ycsep7CqTLo9kH9GEKsDV3Ry3acNpxIYGAwoemY3J4XK8tpnIwUEqvKTDOOStdvtHy7Nl/doPbw8nlvicTDPq7PYvs0yAWnes54WRNrHXtlNEbnRet/V5kXL+lCkPip1o81elTovpbHLreCLAd511Oik9Mu0swnqm8Vt7sByVSzICcyfznvandvxHBZHgB5xHUipTgGgJe6aD6LJ6RUasBA+u4wOc4X9wTCOeU7dgk1KHhmc5YSEmwcyM1w8CAwEAAaOCATMwggEvMAwGA1UdEwEB/wQCMAAwEQYDVR0lBAowCAYGBACRNwMAMB0GA1UdDgQWBBSTG+LzXto+Mf8esQlDqY+R9rmS0jAfBgNVHSMEGDAWgBQZ6YJzV916YDK/6HQZJhX3rYD0FzAOBgNVHQ8BAf8EBAMCBkAwdQYIKwYBBQUHAQEEaTBnMD8GCCsGAQUFBzAChjNodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jZXJ0L2VQYXJha3N0c19JQ0FfMjAyMS5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmVwYXJha3N0cy5sdjBFBgNVHR8EPjA8MDqgOKA2hjRodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvZVBhcmFrc3RzX0lDQV8yMDIxXzMuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQAKSN+Gu9gXlBK/N7RR+XW9Jwp2Ep+n8/B/abGzgOKj4IEE+Pb7hl29y52RF1oJ6FBF1Ib4uL5iez/JqZCbae9jAJMTkY6V7LI8kOrVGmz163VeGH3x5Iu+r3lTsBzJRj+3DBJrcOVrxCYHueqIgKUPqac3sb5qZnjFfNWHTu/zTRJD8qyc52FcomsE8sA4q96da3oTJcDGv27G5ZzKilV8Sr4/Y1akMN8WkKJ9KFD2nC12gcW+/5GAkRvjlGnsQrboteQfs/yVuxAEcGCV0PzjlLG9UyBxhFldpBMAr/MVCFnYQ5TfslSOTzjD3lO+DU9fCsb5RnMS5dLRYsSqzFW+HKjl/mVO/G6VQfbb5zbLAHeh9TKTmpSy9R+43sAUk34zNVnOd6i9UuQP7ViMU7QWSJRLAG1B9i+4IVYvpZiuzO4AsHD1/Q7901twiI7bzGTx763Z+OAFz1qo6pxhJ+d2jHjn54bo8VRlrXEb2K6aNg/S4YMsROwq+OdpcG04eDIoxQHHRnHRaDj/81aSivMmxwIENlFQcEQQFxxx7616XsW6jh/v0RwcItCRw2EFWfuZlfh8MdyRcBiNXmjomAhcLp+OyDF2TJO+HbVM3W71KPjbiMfCwghJZRPZRl42elIgxgAjhx5ohAkAMf4qfRsy2N91vB+XsgcUWZ+Sf3aKWA==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFszCCA5ugAwIBAgIQREON56Jz1XRnY/6v2uHdxDANBgkqhkiG9w0BAQsFADCBgTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxGzAZBgNVBAMMEmVQYXJha3N0cyBJQ0EgMjAyMTAeFw0yNDEyMTkxMTA4MzFaFw0yODEyMTkxMTA4MzFaMHExCzAJBgNVBAYTAkxWMTUwMwYDVQQKDCxEaWdpdMSBbMSBcyBkcm/FocSrYmFzIHV6cmF1ZHrEq2JhcyBrb21pdGVqYTErMCkGA1UEAwwiTGF0dmlhbiBUcnVzdCBMaXN0IFNjaGVtZSBPcGVyYXRvcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ/A0ewgHlsdDanMiG+kN+ShkrWyN6M6v+JvQvvaRQLkt1StuDHbJw7RKcljZabjc2CYou6oZTu8mZkK6ps8VJZJ1DuuYwmPrENCkWI5flogM5dkNFzLhuSonoonqNEyJK344B/KurtKGiAHv1gG1U2nj9QETPPnq1CM2gz85mjk526azocFhmCnDOUZoawfwSmzV1B2VNVq0uik3ZUgk3WdWtwtiDwGPg36WDpaEOqXUdEdiePYsP6PaE5pgKnZDf2febs0u0wHC3c1k8EhuB8F4OZizE4mtS5AOxCehND0Ash5INkvYNnH3HcAkTVYxLAENUUahGR8PZcZFDb1NdkCAwEAAaOCATQwggEwMAwGA1UdEwEB/wQCMAAwEQYDVR0lBAowCAYGBACRNwMAMB0GA1UdDgQWBBSXG0PCnC4DR7s0WQ0ef0mKgFCG2zAfBgNVHSMEGDAWgBQZ6YJzV916YDK/6HQZJhX3rYD0FzAOBgNVHQ8BAf8EBAMCBkAwdQYIKwYBBQUHAQEEaTBnMD8GCCsGAQUFBzAChjNodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jZXJ0L2VQYXJha3N0c19JQ0FfMjAyMS5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmVwYXJha3N0cy5sdjBGBgNVHR8EPzA9MDugOaA3hjVodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvZVBhcmFrc3RzX0lDQV8yMDIxXzE3LmNybDANBgkqhkiG9w0BAQsFAAOCAgEAW2dB1PN0Lrf/Upz+sV+07psL9B1P1ob7LPdYSAx6fPZyqywKTHsKyWqWbjxAHCMp8nPcuAEtlYjZ+Spc0RrfIVCbw/pasfNct48WMvkBJ86jZ+YgQlG5QcfK9cpBsPdf5He7/4GoxGM7nvEoas2tPs1foVGfBCsDUEhGj6Hwr7t8zwTtzglmUSMnnCTMiR8mLQPy8aXAB0D4w+06rsS3AhLRuRGb0aSyyFKW9x7X9JSyC1O9sF7D6y/sLa0ae1/VBUaJEgNBXH6UINdZEa05CYmblaUMHBarZpLlzOi7Fo+4lTV9e4gpOyw4q9AokmsVWYSna71GepoPQefGP1Pgy8Flv8fpk3Z5lSd45vKYPr/aUdnzbAcUfOv4PwLj/DL12wB0Phtwq/VC5P+PT9THJZx5VT4v10naDP1KoDr+SW/dcEwgVLWvDAtiA18cQtS5fP2eaMCciY8fn738DOzwq3NBIbpUkw9S/8wWEUHSir5bUhl2K/lo2kTsZ41HJBNY5OfgiHDwvz32xNYoExtyqXPiBxV4BJVxbZLmL92KYVJ24jaYoX1QE+4j3Vo8cu7EylK+ri+jYdGhjAEoGFCGS4BdS4W3hcYStyMkR9J3zmEQ1aiWyRwYqakinUhN+OPG4PQGybdGspQmjee442hTeQN/IVtuChqZMWatnEqmjuM=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFszCCA5ugAwIBAgIQatqKHNZIHZZoLdAWeppTITANBgkqhkiG9w0BAQsFADCBgTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxGzAZBgNVBAMMEmVQYXJha3N0cyBJQ0EgMjAyMTAeFw0yNTA1MjExMzA3MzRaFw0yOTA1MjExMzA3MzRaMHExCzAJBgNVBAYTAkxWMTUwMwYDVQQKDCxEaWdpdMSBbMSBcyBkcm/FocSrYmFzIHV6cmF1ZHrEq2JhcyBrb21pdGVqYTErMCkGA1UEAwwiTGF0dmlhbiBUcnVzdCBMaXN0IFNjaGVtZSBPcGVyYXRvcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKFhax6zUwiAyx/OT4vDB9UAdg2PMoBYuhcJQQCUKXqcMo/j1RJ3Md4rma0QjcJEIG2Ol81sLh7ejznNATG3/XZP7cg+EPTzYpnz+pn7jSY2nA7DfYRRr0OPYYgTAepDRtAV06+cpcwviB//IdjY2MIFpdykmd6BfwKLYHZkARLXSKADyZf310+DD5VBw+9br4jEAXanGS/aqHvKEGONpVB64nP4PZ69ulSYgK/MVJ0avmkbt/avdMInXm46NSHP6tHMOPA+OeWdKvv+FtpypggNptV9+2vVA9nEVO2N4IaIOoDjX16PzLJIVilJ9Ms7ieKHN6fKTrR7LCFUCybqKNcCAwEAAaOCATQwggEwMAwGA1UdEwEB/wQCMAAwEQYDVR0lBAowCAYGBACRNwMAMB0GA1UdDgQWBBQJA+o53eFwHXGwHg8voH14TAiJhjAfBgNVHSMEGDAWgBQZ6YJzV916YDK/6HQZJhX3rYD0FzAOBgNVHQ8BAf8EBAMCBkAwdQYIKwYBBQUHAQEEaTBnMD8GCCsGAQUFBzAChjNodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jZXJ0L2VQYXJha3N0c19JQ0FfMjAyMS5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmVwYXJha3N0cy5sdjBGBgNVHR8EPzA9MDugOaA3hjVodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvZVBhcmFrc3RzX0lDQV8yMDIxXzE3LmNybDANBgkqhkiG9w0BAQsFAAOCAgEAH/RXIOc+eiLkT+8S7a7aHJYpJLsM+AD+4w6cj9p7TTD78105KvuJoeq1VayE3vftSkBcDC94PzRZQiQZ9E9SvSGQtBHE63SocnXLF65vml4qGxUwH9AQ5x13vqKRSRB3WVCztiZ0t9E+zxYnxJzuS3G/j6ULAA9Wn7iVn0+KVUyHTVne0rQwyGK0prbCBm16nCbz1fwLiUnR+jnBqz6d72WEkLXS0TY3W7pev9YV1lp636urmHO+QKjKFlU23AVWOvuYvKFdZGRKFgB/lm66xtrrs0YAoIslb5QUKG6WHoi3oYsYu3IuYcZ51RFq7G7p41FYuOB1tS4OJcncrjiYKLeHcBKCwOo3HveDUkCcq681kSMsZZgIPrhiljXBvQKbFme4IdCJrfWLkmwL2bZoXPt+8PkUkVrtc66Hw4MyXq8YHBpAid1JjefXRgXgV4IcFoW10s8ypAlSdbvyU4veMyPQ7Bx7A/TRG5K54mnKUnClP+fiL6FfLROyKlNbWDxQNP9WWDU9UWl0vwGJz9lVS9mL0cVPKePxDHPCPcTYAbQVEnjdnWoBzYozAVgI7Qrgzm1PBmWtdDIKskQgNzmQcpShXVtdWA9Z96w9HcIMX4VzJYb4mVng1/6zCbBV5nSBfvqOiwZQfHqAi0okrUAWeQhHxluAMMdY09mqH/hBbFo=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://trustlist.gov.lv/tsl/latvian-tsl.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>LV</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Supervisory Committee of Digital Security</Name>
++ <Name xml:lang="lv">Digitālās drošības uzraudzības komiteja</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/LV</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://tsl.mca.org.mt/MT_TSL.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>MT</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Malta Communications Authority</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/MT</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFyjCCA7KgAwIBAgIFFMyAj6UwDQYJKoZIhvcNAQELBQAwaDELMAkGA1UEBhMCTkwxLzAtBgNVBAoMJlJpamtzaW5zcGVjdGllIERpZ2l0YWxlIEluZnJhc3RydWN0dXVyMRwwGgYDVQQDDBNSREkgTkwgVFNMIFNpZ25lciAxMQowCAYDVQQFEwE1MB4XDTIzMDEwMTAwMDAwMFoXDTI4MDEwMTAwMDAwMFowaDELMAkGA1UEBhMCTkwxLzAtBgNVBAoMJlJpamtzaW5zcGVjdGllIERpZ2l0YWxlIEluZnJhc3RydWN0dXVyMRwwGgYDVQQDDBNSREkgTkwgVFNMIFNpZ25lciAxMQowCAYDVQQFEwE1MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsTqqg974T6mHiWPNGv9IrVYFB+4fWJboTXx+ACNzcGehwqAfN3aSTawnJ95nq3rol0bK/8TePjeu2OjkZFBAhZyBzh99Hr0QEyj+qJGOErcX3ujbSOu9/MxtoUZHCVXLChecm/dLDgqnVGGUI0EJEP+rW/fu9uz30Mb2bvTuCiWxa369LuntFFlALOo5OxTfdOEj1V7ubcdqyGVroUn/ePyTpaqOhD8el293Zv3qfi2y0t05IyngrbV2rDFk7Y5++pyXhlgxck9UbKv9clHkb5hzW7JS2CJaFo3PRo5dEWmYYc9YayvioRkI6BaoYypXXTuUc9Zu9A2jMS6ACG+cQwU48K0ZvQDWBopvJJ7kGc+PCmwWluUs0ECzM/HQq6pRNfw6ZUR0q/7xANPCU5/2VYKIEb7I/3HZC4v4Q0iu30QXltUmQQTIBjzX7ZYX3ZQFr8FCrGRwPmAgwCNvRGR+y2/vykYQTTZ1qcoubzhiJZvFSfRrmVz155nMOHGiY4R8xkM7rbEeE+Zjglg7OfvWIp/ecgNVhnUm+GAJnOZw5e337nsGigHMGlbCi1pBtw0f1+5jMN90QemamoC7xUn0xbbdH3p4tvxZbuTlcLwVB44OvVvTqQTBiWVX+u0gAPUpUzUKTb43wj0/vxKOFb7PZWiI3Lhrl5pJ6Sju6lnhwFkCAwEAAaN7MHkwHQYDVR0OBBYEFISge/8g59F7ILYOZoaJ252V5+8kMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgbAMBEGA1UdIAQKMAgwBgYEVR0gADAXBgNVHREEEDAOgQxlaWRhc0ByZGkubmwwEQYDVR0lBAowCAYGBACRNwMAMA0GCSqGSIb3DQEBCwUAA4ICAQB31upkefX2Mty4o8REJ25aIj7kvSPzBfRIFuOrN9wFSzcddLNwIb2XZT55qZdTmXGh+gtipk881yvMQKYgz5g1LwijAJkAe6BlIyXM8XLIR44ktCvu+BWiTXt+mevGnHn65i56TQEpfGLzryl7tXnn3dvv1SowXkraL1piTsC6aPWNMdgmZp5wqHldQYN/Y/MkmMN7bla2TLQGLl7qxVRpZ/QXC/90gKXfxtKCrmVbwF2ezwa5u53bCXdSYqd+1gTCMdbmRYqYkJN1gSlmMtHWmPRtmPDMms/TanQXhkVepz71xfhFiaz310aF8jFhApxqhVCpK01Pd8Crg0LNaF97DeNBbOS6i9L6dDVFjM00vE6AbLaQCcc9XL41cTUoaarGaUkZJf3mOWUFWDrGP7gStyxf8k0a1NpoPCe7UZesqrDiyU4UPxgBVo3XfXXOJLp12GKiHJEGOTSi8dj6JkLQVPLJjU/tVXm9MsGXCH2LSoYeWf9R5l8IviO+qtcvUUP/rEw2uYM3bDxecF8ZNGAE2oL1M1kJQs+GJUKQ/U2nPzrIdQ9icx4Kedr/1sPgYmARNE6MCg+hHIzXqmsgnL6+uMtX290vQOnK2rmBeWESP5RNcXGKMA1dlF/OvEigVC3FXA9FS8tkskF7ls53yCrPhcbgBnztWTXosF0lkXyM7A==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFyjCCA7KgAwIBAgIFFIL/ecswDQYJKoZIhvcNAQELBQAwaDELMAkGA1UEBhMCTkwxLzAtBgNVBAoMJlJpamtzaW5zcGVjdGllIERpZ2l0YWxlIEluZnJhc3RydWN0dXVyMRwwGgYDVQQDDBNSREkgTkwgVFNMIFNpZ25lciAyMQowCAYDVQQFEwE2MB4XDTIzMDEwMTAwMDAwMFoXDTI4MDQwMTAwMDAwMFowaDELMAkGA1UEBhMCTkwxLzAtBgNVBAoMJlJpamtzaW5zcGVjdGllIERpZ2l0YWxlIEluZnJhc3RydWN0dXVyMRwwGgYDVQQDDBNSREkgTkwgVFNMIFNpZ25lciAyMQowCAYDVQQFEwE2MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwaN627juutYUWCRlPXAHHSBXbq4ReJ9+FGRHbQ4axiLg4bxRRsnihACPFU6BijUHahaIjznffGh3PMDDqtVQLu9CxZdKc0QQEVtOGmZYR5rFqdw4FyPBOIHABEJOpN0RMErTcqUZGJvRp0komkzYHdb2S9gsetAsf1O2iq2CGlD6lU859wZU04EZYLSm+eb6O3hdF5KuYbHr2xu5oP4UOZWMv8yk3seg+Fv394P7BQvRQKU9KIp70B95ho7QsAbc5rYze5lzMqIQT8ciaZIYpTc99HIC/MmB/VwYM3VNAR6xmfkEPs/gZ+Ifz9/VmgX0NwFT55MsxrtuvHqD4yUSp87ulcnnuefxMd5np6ND2aUHlqA64Hj4G3nkzTtx+NNTzwjMZxZoodFNeOdjXs/KscSiC8PDUv/htAQ8nrHkpBOAWU92cBOz16LHRVOIsGNbsXbjSjQCbr1azMU7RBtDQ8HxlFZmXQ41nGl7K75BMlX5VuJXund8et+kbfik+XvZaZIFHKlIOZc+Q7EPl4QfTI3K/A27iLG7yITjJe3HOLh+LSU1VE9dlsHGehMEBGV2y4QHr6GweWA/LXrvuwCPlOhN40Au6DD8KN6bLaNuzIi/UfBhqEDELFJiS4rCHm03yi7ga9Prw9RbHXARw3ooSnEPcQYe+AWeUFvu6C6aTGUCAwEAAaN7MHkwHQYDVR0OBBYEFNE42SCJ8tnrD0ZYHxQFumRFc2UJMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgbAMBEGA1UdIAQKMAgwBgYEVR0gADAXBgNVHREEEDAOgQxlaWRhc0ByZGkubmwwEQYDVR0lBAowCAYGBACRNwMAMA0GCSqGSIb3DQEBCwUAA4ICAQBtYEqNFv7vD2+17bdI4kXydD3vVEoYrvt+O/YBveP1IAfpRSkOGYOS5IvASHq5tYGfsIn8tRn9cEy0y333l1blSn4EN8abuKZC37FENBMBlNQuiMoXBqUYT6CwRUsNNbd1W3+eXm5GrvISihl003ztZlmf9QaKRZGUY1n1/2NpsJGpsOE6H0L4q/2tjtqWp2T4bVb4auwfMMt1k+IZ1998Ce7npy2Q2goM1XMFHVCQUJcddIx9c92Tx3he0MSjvQRaVIRDrzQhmkcLD5+skYza/N+dafz53SSD+5Tb7OG/Yl1ugwx7IdxS4tS0G2yrBnKzQohQ6AAmXf/inmnKrFoFg7pJQB/unUMe0gSM2wdlkoCHtbrb7JAbl3Pst3hC3IAR5GlF3PZ+JbMs12XneAFyIs5JiFW2XdDAOnCTB978QbWwc4kRvMcBS5//cNXo3vvinIDQWF7i3XyfDjpDNOCbiLUSGvko7TIODEGBkNPU3Uk1ZrwDVsRgLJQEgOplELDgN0HwXfp0G5ZIdnnroMnqFwDVjygjw9VkDW33oyjRr2QAI0aM3elT4jXrJbQCmL2So8GMxDS/OREnQCAkjGQa6TC0dRv8b4PBpcuhQnOIwM+j3CEEJrlqycABr7ItrYUc+hiyPXZCNWlx2TeYRAFMWI201vDLeqQvBebH287tiQ==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://www.rdi.nl/site/binaries/site-content/collections/documents/current-tsl.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>NL</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="nl">Rijksinspectie Digitale Infrastructuur</Name>
++ <Name xml:lang="en">Dutch Authority for Digital Infrastructure</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/NL</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFzjCCA7agAwIBAgIKB1uVj7q4nA3LUTANBgkqhkiG9w0BAQsFADBoMQswCQYDVQQGEwJOTzEYMBYGA1UEYQwPTlRSTk8tOTgzMTYzMzI3MRMwEQYDVQQKDApCdXlwYXNzIEFTMSowKAYDVQQDDCFCdXlwYXNzIENsYXNzIDMgQ0EgRzIgSFQgQnVzaW5lc3MwHhcNMjMxMDIwMDcwMzUyWhcNMjYxMDIwMjE1OTAwWjCBijELMAkGA1UEBhMCTk8xKTAnBgNVBAoMIE5BU0pPTkFMIEtPTU1VTklLQVNKT05TTVlORElHSEVUMQswCQYDVQQLDAJJVDEpMCcGA1UEAwwgTkFTSk9OQUwgS09NTVVOSUtBU0pPTlNNWU5ESUdIRVQxGDAWBgNVBGEMD05UUk5PLTk3NDQ0Njg3MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKxGdUULZsTe/tqvhUmrcRewV4jfPMrjJWDa3Ddw92NC8i0YedmPHT2gj0GvmCGNkBs9/Sf/4LHUY7tD5RGqQAWPDdclEagWb6dmTKs8mAs1o0untXrf7bc6uZvVKDV/cKYzDWa8ujswoSklHtwpCg6NolXjcDod5HqzH++R+vRVuH80G0z2piNzckuJ7L0qKTamYI1g37VCH5FV3w1ljyvek0QT0Z/8sMBn6/V4jnVk6yssnebw0VmPOZEF/QjdkOvL30UuLCoxIfOtr5IV4/twX5h9SzBvR1qmPxq9EKzWoP1aZ7F0dyEwq3IyR4p4U1fg3KnLqqb3ZgyS2oHC/8cCAwEAAaOCAVUwggFRMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUsJFqvU6NsgkZhKm2dq1C8mno+C8wHQYDVR0OBBYEFKIDoAkQmcDW91tjINUxEYTYb85NMA4GA1UdDwEB/wQEAwIGQDAfBgNVHSAEGDAWMAoGCGCEQgEaAQMFMAgGBgQAj3oBAjA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vY3JsLmJ1eXBhc3NjYS5jb20vQlBDbDNDYUcySFRCUy5jcmwwbwYIKwYBBQUHAQEEYzBhMCcGCCsGAQUFBzABhhtodHRwOi8vb2NzcGJzLmJ1eXBhc3NjYS5jb20wNgYIKwYBBQUHMAKGKmh0dHA6Ly9jcnQuYnV5cGFzc2NhLmNvbS9CUENsM0NhRzJIVEJTLmNlcjAlBggrBgEFBQcBAwQZMBcwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjANBgkqhkiG9w0BAQsFAAOCAgEAM8VBmkH2F5BwyWxxTjuBa5RBZGxqQZPPB7tR6pyhitzGbbp6wqK05dUpNAyjHulw8VCBDKz08Gsv0FWEBp2DR+tiaW/sv7TOkLXPJ4KouBWTj8TIsoiMRGs/Cusk7r3rTV0VxN8xNG/eaEMTergiVnsYB4i1tr7Uu0vbU82mzg+CMrUgZtelSuVbmko8hblqAbbr4+n2YiZxHAHcYVzpyMShaoqD+Ifs6AjF1bv0ExqcotnmW5fXACx4k7sFgqcfNATkoplUNHY6Y4/+5gGrP1CyD+TAn6u0ajjwM73DbHOPYUQWCPJdwJHg+uNMRtoF5qSdtVWNnZhViXOhNjyMDneSBrpFT98NlTAwu9pBwnMcIHl7vN0x0KTD+zJqOSL+91ur/VuqxTV8aXOIpcH+u/tDCfVj3RHkbKPWTNIC/BlD6NnMVmQYUUq5Lvj3nIfBk9bay+41EXXLLQEnZVWCE2Bk7b0xh1xR/6kQqsMZ0MgJ0Bf76DTd/ETDf8vZhE2c8Q5CxOMxrbDHQV1IN/TZ40tAHekDcNEp48lRNheM9qlWdituYg1Wm1TQ7uYaOlxOCh5GuTtv3UqSx+u/7t9gcdb3dg2FPdtx3NYpImZX0BYsjF8/JzGukGOlnzzQv3/HqjksILTOtzbje//CKyb1szM8p0gTZbJZ0DUDW1V+cKc=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFzjCCA7agAwIBAgIKB/uV1dhO8lKAHTANBgkqhkiG9w0BAQsFADBoMQswCQYDVQQGEwJOTzEYMBYGA1UEYQwPTlRSTk8tOTgzMTYzMzI3MRMwEQYDVQQKDApCdXlwYXNzIEFTMSowKAYDVQQDDCFCdXlwYXNzIENsYXNzIDMgQ0EgRzIgSFQgQnVzaW5lc3MwHhcNMjQwNDE1MDgxNzI1WhcNMjcwNDE1MjE1OTAwWjCBijELMAkGA1UEBhMCTk8xKTAnBgNVBAoMIE5BU0pPTkFMIEtPTU1VTklLQVNKT05TTVlORElHSEVUMQswCQYDVQQLDAJJVDEpMCcGA1UEAwwgTkFTSk9OQUwgS09NTVVOSUtBU0pPTlNNWU5ESUdIRVQxGDAWBgNVBGEMD05UUk5PLTk3NDQ0Njg3MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKnRrVaeBnBMSTf1VNlyO3kdqI8oQ8qge6a/Boh2Hb61exGjqQomitrkNzhrqty4N38ql4LswdWIvPBYkDShOh2ubiEGRxIkqzgmD1ZT2bSEniHYX/qXgfN+7t3gsG2HEOzYEx8SLVxacjxtiGV55CPOyPXwVDEh8+QLV50+DWJ0C0rsCuMnYTguvgesyKZC6Lp6CxnDvCFqW2UVhZZyvIpY2A9zSpjrHaJ8SFr3PBlHUwiBbU0TA278ptA9ibx9viyzrCP4FgGF3W0QCkZ3ZYkB8XFXsW/gTrJhnBH7hrfZ27A4yO124ZQtoaoTYKSgAVtOuuBZwUyvUOOtK7Fl/p8CAwEAAaOCAVUwggFRMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUsJFqvU6NsgkZhKm2dq1C8mno+C8wHQYDVR0OBBYEFFjfRsc4ScVId5UvZHAjHbfe8s2fMA4GA1UdDwEB/wQEAwIGQDAfBgNVHSAEGDAWMAoGCGCEQgEaAQMFMAgGBgQAj3oBAjA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vY3JsLmJ1eXBhc3NjYS5jb20vQlBDbDNDYUcySFRCUy5jcmwwbwYIKwYBBQUHAQEEYzBhMCcGCCsGAQUFBzABhhtodHRwOi8vb2NzcGJzLmJ1eXBhc3NjYS5jb20wNgYIKwYBBQUHMAKGKmh0dHA6Ly9jcnQuYnV5cGFzc2NhLmNvbS9CUENsM0NhRzJIVEJTLmNlcjAlBggrBgEFBQcBAwQZMBcwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjANBgkqhkiG9w0BAQsFAAOCAgEAUwibQXlcyu31jaQnIsrPmLm6ozbN7XvqhGRpRjelEgK0IWK4Gi0Rh4E7JP7MfhLCJvwPlU1gQ6uMjOWq6xhLNkgiNXOWmAKQfdx4DydljwLlAjbpLbi/K2fzWi55rJP3L3WRTiTSO7pWx3FsJDGcTagxL8E/pDbGn0+lyZ2JaPl2adVbMZDMPYF+hCxn6Nlx7XM8gKqTO4lIvF6lSUbnqiO+zCsmWq69lQUNbfnvS3eP2KLCHSoT24qbQnW5oD9/eMJOAGeqU/wrT6lW4pE/zT8ZfpPHLxQBsBQiEi/j+7ehISd5kRUCmWT9mGfb0eVlt8/RQ6q9JtmDyNIbq1tWNwiTS8B5GO+kzFIQqHKoKYRieK6BU2Aw/jMGeRxKmMkJv3fEDmt+Ys7EIqCVhG4y3LHERKroBWbETldsmLX5/ocUelqbax0SFmwPXnKepXRYfRWp7C9jEiSQElrsFGygWgULqrRjk/JbVTDiSQvPRPgtJQXGkbE2jHrQO4ib2pE8SlhLypFr7B9SKPW/5Lmb20To3cJV6ffe+cftCeYv0yZsbA0jVYdltSCNeWOob7dTpbFUKXU5zuUKZCgdVXfCKSrVux84j5Kkspkc9dGbnIkwaW/xDgVhwlDl3cPA9AwyDbwPgmrif0UkQmpN4lfGDrc1EkHDkfhddS7q0iSPFYE=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://nkom.no/files/TSL/NO_TSL.pdf</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>NO</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/pdf</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">NORWEGIAN COMMUNICATIONS AUTHORITY</Name>
++ <Name xml:lang="no">NASJONAL KOMMUNIKASJONSMYNDIGHET</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/NO</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFzjCCA7agAwIBAgIKB1uVj7q4nA3LUTANBgkqhkiG9w0BAQsFADBoMQswCQYDVQQGEwJOTzEYMBYGA1UEYQwPTlRSTk8tOTgzMTYzMzI3MRMwEQYDVQQKDApCdXlwYXNzIEFTMSowKAYDVQQDDCFCdXlwYXNzIENsYXNzIDMgQ0EgRzIgSFQgQnVzaW5lc3MwHhcNMjMxMDIwMDcwMzUyWhcNMjYxMDIwMjE1OTAwWjCBijELMAkGA1UEBhMCTk8xKTAnBgNVBAoMIE5BU0pPTkFMIEtPTU1VTklLQVNKT05TTVlORElHSEVUMQswCQYDVQQLDAJJVDEpMCcGA1UEAwwgTkFTSk9OQUwgS09NTVVOSUtBU0pPTlNNWU5ESUdIRVQxGDAWBgNVBGEMD05UUk5PLTk3NDQ0Njg3MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKxGdUULZsTe/tqvhUmrcRewV4jfPMrjJWDa3Ddw92NC8i0YedmPHT2gj0GvmCGNkBs9/Sf/4LHUY7tD5RGqQAWPDdclEagWb6dmTKs8mAs1o0untXrf7bc6uZvVKDV/cKYzDWa8ujswoSklHtwpCg6NolXjcDod5HqzH++R+vRVuH80G0z2piNzckuJ7L0qKTamYI1g37VCH5FV3w1ljyvek0QT0Z/8sMBn6/V4jnVk6yssnebw0VmPOZEF/QjdkOvL30UuLCoxIfOtr5IV4/twX5h9SzBvR1qmPxq9EKzWoP1aZ7F0dyEwq3IyR4p4U1fg3KnLqqb3ZgyS2oHC/8cCAwEAAaOCAVUwggFRMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUsJFqvU6NsgkZhKm2dq1C8mno+C8wHQYDVR0OBBYEFKIDoAkQmcDW91tjINUxEYTYb85NMA4GA1UdDwEB/wQEAwIGQDAfBgNVHSAEGDAWMAoGCGCEQgEaAQMFMAgGBgQAj3oBAjA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vY3JsLmJ1eXBhc3NjYS5jb20vQlBDbDNDYUcySFRCUy5jcmwwbwYIKwYBBQUHAQEEYzBhMCcGCCsGAQUFBzABhhtodHRwOi8vb2NzcGJzLmJ1eXBhc3NjYS5jb20wNgYIKwYBBQUHMAKGKmh0dHA6Ly9jcnQuYnV5cGFzc2NhLmNvbS9CUENsM0NhRzJIVEJTLmNlcjAlBggrBgEFBQcBAwQZMBcwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjANBgkqhkiG9w0BAQsFAAOCAgEAM8VBmkH2F5BwyWxxTjuBa5RBZGxqQZPPB7tR6pyhitzGbbp6wqK05dUpNAyjHulw8VCBDKz08Gsv0FWEBp2DR+tiaW/sv7TOkLXPJ4KouBWTj8TIsoiMRGs/Cusk7r3rTV0VxN8xNG/eaEMTergiVnsYB4i1tr7Uu0vbU82mzg+CMrUgZtelSuVbmko8hblqAbbr4+n2YiZxHAHcYVzpyMShaoqD+Ifs6AjF1bv0ExqcotnmW5fXACx4k7sFgqcfNATkoplUNHY6Y4/+5gGrP1CyD+TAn6u0ajjwM73DbHOPYUQWCPJdwJHg+uNMRtoF5qSdtVWNnZhViXOhNjyMDneSBrpFT98NlTAwu9pBwnMcIHl7vN0x0KTD+zJqOSL+91ur/VuqxTV8aXOIpcH+u/tDCfVj3RHkbKPWTNIC/BlD6NnMVmQYUUq5Lvj3nIfBk9bay+41EXXLLQEnZVWCE2Bk7b0xh1xR/6kQqsMZ0MgJ0Bf76DTd/ETDf8vZhE2c8Q5CxOMxrbDHQV1IN/TZ40tAHekDcNEp48lRNheM9qlWdituYg1Wm1TQ7uYaOlxOCh5GuTtv3UqSx+u/7t9gcdb3dg2FPdtx3NYpImZX0BYsjF8/JzGukGOlnzzQv3/HqjksILTOtzbje//CKyb1szM8p0gTZbJZ0DUDW1V+cKc=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFzjCCA7agAwIBAgIKB/uV1dhO8lKAHTANBgkqhkiG9w0BAQsFADBoMQswCQYDVQQGEwJOTzEYMBYGA1UEYQwPTlRSTk8tOTgzMTYzMzI3MRMwEQYDVQQKDApCdXlwYXNzIEFTMSowKAYDVQQDDCFCdXlwYXNzIENsYXNzIDMgQ0EgRzIgSFQgQnVzaW5lc3MwHhcNMjQwNDE1MDgxNzI1WhcNMjcwNDE1MjE1OTAwWjCBijELMAkGA1UEBhMCTk8xKTAnBgNVBAoMIE5BU0pPTkFMIEtPTU1VTklLQVNKT05TTVlORElHSEVUMQswCQYDVQQLDAJJVDEpMCcGA1UEAwwgTkFTSk9OQUwgS09NTVVOSUtBU0pPTlNNWU5ESUdIRVQxGDAWBgNVBGEMD05UUk5PLTk3NDQ0Njg3MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKnRrVaeBnBMSTf1VNlyO3kdqI8oQ8qge6a/Boh2Hb61exGjqQomitrkNzhrqty4N38ql4LswdWIvPBYkDShOh2ubiEGRxIkqzgmD1ZT2bSEniHYX/qXgfN+7t3gsG2HEOzYEx8SLVxacjxtiGV55CPOyPXwVDEh8+QLV50+DWJ0C0rsCuMnYTguvgesyKZC6Lp6CxnDvCFqW2UVhZZyvIpY2A9zSpjrHaJ8SFr3PBlHUwiBbU0TA278ptA9ibx9viyzrCP4FgGF3W0QCkZ3ZYkB8XFXsW/gTrJhnBH7hrfZ27A4yO124ZQtoaoTYKSgAVtOuuBZwUyvUOOtK7Fl/p8CAwEAAaOCAVUwggFRMAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUsJFqvU6NsgkZhKm2dq1C8mno+C8wHQYDVR0OBBYEFFjfRsc4ScVId5UvZHAjHbfe8s2fMA4GA1UdDwEB/wQEAwIGQDAfBgNVHSAEGDAWMAoGCGCEQgEaAQMFMAgGBgQAj3oBAjA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vY3JsLmJ1eXBhc3NjYS5jb20vQlBDbDNDYUcySFRCUy5jcmwwbwYIKwYBBQUHAQEEYzBhMCcGCCsGAQUFBzABhhtodHRwOi8vb2NzcGJzLmJ1eXBhc3NjYS5jb20wNgYIKwYBBQUHMAKGKmh0dHA6Ly9jcnQuYnV5cGFzc2NhLmNvbS9CUENsM0NhRzJIVEJTLmNlcjAlBggrBgEFBQcBAwQZMBcwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjANBgkqhkiG9w0BAQsFAAOCAgEAUwibQXlcyu31jaQnIsrPmLm6ozbN7XvqhGRpRjelEgK0IWK4Gi0Rh4E7JP7MfhLCJvwPlU1gQ6uMjOWq6xhLNkgiNXOWmAKQfdx4DydljwLlAjbpLbi/K2fzWi55rJP3L3WRTiTSO7pWx3FsJDGcTagxL8E/pDbGn0+lyZ2JaPl2adVbMZDMPYF+hCxn6Nlx7XM8gKqTO4lIvF6lSUbnqiO+zCsmWq69lQUNbfnvS3eP2KLCHSoT24qbQnW5oD9/eMJOAGeqU/wrT6lW4pE/zT8ZfpPHLxQBsBQiEi/j+7ehISd5kRUCmWT9mGfb0eVlt8/RQ6q9JtmDyNIbq1tWNwiTS8B5GO+kzFIQqHKoKYRieK6BU2Aw/jMGeRxKmMkJv3fEDmt+Ys7EIqCVhG4y3LHERKroBWbETldsmLX5/ocUelqbax0SFmwPXnKepXRYfRWp7C9jEiSQElrsFGygWgULqrRjk/JbVTDiSQvPRPgtJQXGkbE2jHrQO4ib2pE8SlhLypFr7B9SKPW/5Lmb20To3cJV6ffe+cftCeYv0yZsbA0jVYdltSCNeWOob7dTpbFUKXU5zuUKZCgdVXfCKSrVux84j5Kkspkc9dGbnIkwaW/xDgVhwlDl3cPA9AwyDbwPgmrif0UkQmpN4lfGDrc1EkHDkfhddS7q0iSPFYE=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://nkom.no/files/TSL/NO_TSL.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>NO</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">NORWEGIAN COMMUNICATIONS AUTHORITY</Name>
++ <Name xml:lang="no">NASJONAL KOMMUNIKASJONSMYNDIGHET</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/NO</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFaTCCA1GgAwIBAgIJAPkJD06+VcoxMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAlBMMSAwHgYDVQQKExdOYXRpb25hbCBCYW5rIG9mIFBvbGFuZDEcMBoGA1UEAxMTUG9saXNoIFRTTCBPcGVyYXRvcjAeFw0yMjA3MDQwOTExMjdaFw0yNzA3MDMwOTExMjdaME0xCzAJBgNVBAYTAlBMMSAwHgYDVQQKExdOYXRpb25hbCBCYW5rIG9mIFBvbGFuZDEcMBoGA1UEAxMTUG9saXNoIFRTTCBPcGVyYXRvcjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANl4s+Dyf/b4QN9rVmR4r0p7rWnJHf2KQsVFnqaWvx/OrQuwhUcPuzXMBR9CSRcckkXVPfRD/KEl0yiXpjadWzLUI6C85UIfBSn17nWsy25N4q5XjxzrD8xu1P9JDFiXmvNOl8s9pUgYJPKkRck52UQMr+ltVdH7tE6X/LiJ90X7EfU0tZTvTLd16ReI1UEJu54BUN1WziJ/ux7JVS0xUC0alNfwMwq7/VMADlrxSsFopKYTXBbwrr0mK7iVyqLoBJk4UOG7oG2m0r0HwtYQ9cnZSgDVII4tE9zII9uIr5Il7N8rRJBXPB96/5G0bONkPIiI5AshViL+0Z5YF2gOQNu7tedysSY5rzYprQ9KPFL9GlB2xV0YHNpDvKaP4/nZcubs+wGlFTHpJSiSEcTvybdt13qP+W8qCE0dYEfpUZirRX1E/RU5SiTfY7mMXOclQrOXcwzLTo3Avkh7j3Z4+ClJ5GvZdW0l50AurwoeJg0Rm8/Y1oFwrIIx8jHdx9B8mTkEJC89fCtBLpsBACKnstXC/OZsmBmevK+VWwO/P7xBxdrJPIeyh1lEVPcK23/AUlQpi4lZuwpiZ4cm0abErAsILhceQ0jMzy2ZFP35eiVUyAW/FuJTGVsBgw+hsgwUTuH7aJ9gY4n0xZWGvSBhSmDXnR8TYedfdetOKl12og0pAgMBAAGjTDBKMAsGA1UdDwQEAwIHgDARBgNVHSUECjAIBgYEAJE3AwAwCQYDVR0TBAIwADAdBgNVHQ4EFgQUDiu8pAOXGI+AjoQq6URCYPARuVgwDQYJKoZIhvcNAQELBQADggIBAAH932XnAA4tRmTX0SAE1tNM7Q7mPewm1pzgM6MfAnadh7YD9FEmuNoWXTX42FQlAL36JXahGVy2vApcBLJn/QQyE4mh7fGCUl+tRjpHAcwTyhbL9Wprfy1gyNc3h1DQCQggW3HlWwPx2Sz2nHVF4ui8Hc5nl1CPaCUtyT5KRJFvDc8LSTa9SFxVeSaQE5yJVwyUlVqmRyTDUUlbsvWtEd2EPDgPjPMl0t0cd0H/3YvyQbeRGDIfGN82Q96diNQFjaiWlnqMI9ylBumJ1rUepq+bBUvw2ZPJi//G4X6QVagC8FxCNU6FuuPEyWQleBYslVkV8WzLNsIsaDp8TcNnWfHYdWmV/3ufhJa8M2rtFoDYtjvuDNZi9XEwKFbguXIcbQ/H/EsqN5T+O6WYWmEeQoenZnCAwYLCuOfrXrugMMABkMfTpE8txyX7H0NTGXxq9l8CiAK9zg8fEgaaUFQpEZcW1YC+ntnDc6hyhhnLHZE7CbhJVFVZidZvuqo/3IwVyEUhKOt5uFmHvfasBksZKDuaZmQcQU0I2FHF6BdqufmRtkrVAIAQfdZezl0+VDJ469ZkWAoKQBpK7b0xsGX/t4CeXGmVbY4cTYpNI7chGs5QZ2iWKRZC/eEeXZ0UNKul7cmNIertLCDfJngZT7AyknwdsqZzho82HsSxkm3YeLXc</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFbTCCA1WgAwIBAgIJAMRAJBh13KZlMA0GCSqGSIb3DQEBCwUAME8xCzAJBgNVBAYTAlBMMR0wGwYDVQQKExROYXJvZG93eSBCYW5rIFBvbHNraTEhMB8GA1UEAxMYUG9saXNoIFRTTCBPcGVyYXRvciAyMDI0MB4XDTI0MTIxNjA5MTkyMFoXDTI5MTIxNTA5MTkyMFowTzELMAkGA1UEBhMCUEwxHTAbBgNVBAoTFE5hcm9kb3d5IEJhbmsgUG9sc2tpMSEwHwYDVQQDExhQb2xpc2ggVFNMIE9wZXJhdG9yIDIwMjQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDAvP2LaRM1HwpAmz/b/UO6bcu4eJWEaFC8CxDO1nYzj+vjuHHnn85UAhiWYqOQHhDTP6wk2sr32ixdfdUjHRgWgixCEkwIERR+3d6oFthyK8/oObD9y1YsCgeNheIxVuYVQQUUFHmFTHmYH6YVVG5S3ZR4iRL2+1rZcsO76c+W4TX9t04f85YineOGv00OCFAy0qV8i+TZjYAseZ9vtXH0g/u75zVA+pNDWjFr37VZGllo1KygNniJFBcP593SjHkSU0CX2dBWburXkrclE2cusNExpoAtGQesoWxjyes4m6R7cEA7fCoG9keekn7aTtkmNXqKkeEySyGdYm5SXbgQIyZu0UtVB0eB60vhMso0JLNuEBNp3HYo/vEArElo+m67mYln9S66J0v83JWzP5tCSkLzT3fYm+caX3AWb3XPBoUhWAZSik9UYbOMxaTZIzGOyOVdjBXlhTT5c0dumcYp36q9AY1lwzTVzojxgS+6TKz2fzR/IRSgU3iDFzdffECtRyhFSP8yPYIHfnrjb0+Az2DmZxShkezgQxc5ESHbNrovYYQWTTkuDz8sFBo5tnLtTEaacpEbmzePsdsIS0fR9DGNXePnNLKINdXYWkBJggjc4v57tRHdN5cInqTbcsclk+jUWXcAYY6WqwF9f7PIn7zfcKH6w/1l2JJ+7kJBLwIDAQABo0wwSjALBgNVHQ8EBAMCB4AwEQYDVR0lBAowCAYGBACRNwMAMAkGA1UdEwQCMAAwHQYDVR0OBBYEFO8luUKGxFWf0WuJib2ewmlpsRaQMA0GCSqGSIb3DQEBCwUAA4ICAQCsoQA6Ih68Uv+CjDy9Y3Vp8Mpob6TLqdGmV9dE3XTBtOj4AXecLQtXQUd0ueWRaoDfqx4KCbJl8EXtiba1mg/5AFH9U0JqoVUsl64di9FccRAvGNy8D1oZyIXZB+ye4NroYY5uazh+ujV4+rZ2BOLABINON/Ywp+n+SaSYwkD7mQyysW2469nSTLknVYSVabzEqjWtlDOCVyJLg5icQbZ01guN3CPII9Dy9wlov5jtG9UYCyGMDRQOHrNXu2Ie7q0Gi0zJH1hulqQWwUsOiXdfcgzS3yyboZFcxNE3NjKXwNSLKKPFNoZaQWug6Rh4WW/440P3/gxs88HG8a5xiwYIAX4M8hpmTdabUtHbqKv7f/RXZoUL5z3MBmonPLIg54OX/DPjHj1WqTNcgLeYXUdLS/0jnp2AZBQGeKdsJU5PbzV8B3/90cdhx9RH1sY9f/RqB2o4WSNDe6YpJWl7SSDrc+6t8Fy5P4gz01tB3MnHgndELniAA7jxArSQXl6y8h94kRg1mxit23kDLJGebY3tBcNz1Nq0+2vOR0/2tyxVD+qpJGvwsbM2XbWSkzv6FE+tlZZ6sKi2assT+1vDLpovm5VUay4Ji3RJJrLL8cKVC0EUFFgFR6xUEDKVMGAQPzFjyYCffVnrmXNrVXxHmsbvLeEN9bSBxW7ylL1ysDNPZg==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://www.nccert.pl/tsl/PL_TSL.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>PL</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">National Bank of Poland</Name>
++ <Name xml:lang="pl">Narodowy Bank Polski</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/PL</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIEwzCCA6ugAwIBAgIQA/SAHSCCpItky4mPttFvKjANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJQVDE6MDgGA1UECgwxQ2VudHJvIGRlIEdlc3TDo28gZGEgUmVkZSBJbmZvcm3DoXRpY2EgZG8gR292ZXJubzENMAsGA1UECwwEU0NFRTERMA8GA1UECwwIRUNFc3RhZG8xETAPBgNVBAMMCEVDQ0UgMDAyMB4XDTIzMDgwMzExMDM0M1oXDTI2MDgwMzExMDM0M1owZzELMAkGA1UEBhMCUFQxKDAmBgNVBAoMH0dhYmluZXRlIE5hY2lvbmFsIGRlIFNlZ3VyYW7Dp2ExLjAsBgNVBAMMJVBPUlRVR1VFU0UgVFJVU1QgTElTVCBTQ0hFTUUgT1BFUkFUT1IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3CusbKGzhzKfTUvUfbhTkLMBfn85jiPfgmvFXbNBocRgeXSXkkgqK3NKoo4GSMq30y93oGZi/r2dsSupNWYmZWtUe9CsJLgy+5eqHAH++7PNfg/etOtmIL/q2FLo5ppY4eJiPY4H+oGZOquy0eBu92pJbhxlbhHOlb81LuZEjk9ChcF40z9iQ3KCGhP+OMdSfT5zBVQxfvYOW5n4409YmO1Nl586zOC5/HzZGZnVzmbiFGmn1LlA/mFBPmLrrsHTm41r1T8wPUPjLD7qyDheUhGri3gpFpMXMcRvWKgg+yI7rmvgtbBaq/IQg3fmZ2VL7mglVW8RaRy0iLqSLSXizAgMBAAGjggFSMIIBTjAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIGQDARBgNVHSUECjAIBgYEAJE3AwAwHQYDVR0OBBYEFI8tfmCY0LxZNXAEr+Uf3gG5DNMlMB8GA1UdIwQYMBaAFDnH5Of+GhkI60QnaSrYgez5pRkbMDsGA1UdIAQ0MDIwMAYEVR0gADAoMCYGCCsGAQUFBwIBFhpodHRwOi8vd3d3LmVjY2UuZ292LnB0L2RwYzBmBggrBgEFBQcBAQRaMFgwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVjY2UuZ292LnB0MDEGCCsGAQUFBzAChiVodHRwOi8vdHJ1c3QuZWNjZS5nb3YucHQvZWNjZS0wMDIuY3J0MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmxzLmVjY2UuZ292LnB0L2NybHMvY3JsLTAwMi5jcmwwDQYJKoZIhvcNAQELBQADggEBAJ8J0o9KVheOgsPeCG7rvEWUF9tr4GXZEUsljrZKDbybPJIHL35nJutGozGjPq3+QL7J+tdZOD38NnV6bP8FXOYk1tj/rwDyAK77gw4NTDHvl57dVWfeSZ4emQvPi+SR0nVibN9uzxaFZO4WZcGP4GY53qGTWqvQv4UREK8moun/rbIjyIlplsQQ7GbZLg/YKGNhxkW7quAVmadooAeDUSBzd35NSIXzCaIP+lixC54+rpgY0SNJmJv++35ydfjnWGElsEwvIgwyRDTdtQDZVkCPzv7yDt3CFlYRCyaYqNnfHhaby9kCGx5a83qv+jX6t6rZobvQaxeB9YZoBIyASMs=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIExjCCA66gAwIBAgIQYS7/D337SVpmO2CCEzbKKzANBgkqhkiG9w0BAQsFADB/MQswCQYDVQQGEwJQVDE6MDgGA1UECgwxQ2VudHJvIGRlIEdlc3TDo28gZGEgUmVkZSBJbmZvcm3DoXRpY2EgZG8gR292ZXJubzENMAsGA1UECwwEU0NFRTERMA8GA1UECwwIRUNFc3RhZG8xEjAQBgNVBAMMCUVDQ0VOUTAwMTAeFw0yNDA1MDgxMTIyNDJaFw0yNzA1MDgxMTIyNDJaMGcxCzAJBgNVBAYTAlBUMSgwJgYDVQQKDB9HYWJpbmV0ZSBOYWNpb25hbCBkZSBTZWd1cmFuw6dhMS4wLAYDVQQDDCVQT1JUVUdVRVNFIFRSVVNUIExJU1QgU0NIRU1FIE9QRVJBVE9SMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3ILzhMTUwHxQCrpfTq6dgg6J+xyY/gptE7nsgNSK7RBkkjnsp77mY++ItweTCE/334glDa5zCsv6/59XK3lM6eJpXFVhqwbLvNT9KVgT3YEvek9fvy/DhCdmEisAv51M9b+K92WHkVaLpoURYYa9+k6sjF1iEDZ4hK8qtU7Gg5jqO00F7ghbzqFf4tnepWJRcRjrzQxD87tQYdGhErueMS6bq0LL+JHFenQC1Z2C+QkoHMrirbHHfZlwn9eKGihipvvvbJWX2t4gtU5Seo7Pv0VrL1xylJeO9dIkoNtaja8qyIZw4SvUg0imLdaYD9UfRIMEwewZ7PncNMxcvhqlQwIDAQABo4IBVDCCAVAwCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBkAwEQYDVR0lBAowCAYGBACRNwMAMB0GA1UdDgQWBBSE/HUkA1hcvLjaBsVQw08yjWDXZzAfBgNVHSMEGDAWgBTeXZmFcW676uJV4ZaHFfMVbaFm2zA7BgNVHSAENDAyMDAGBFUdIAAwKDAmBggrBgEFBQcCARYaaHR0cDovL3d3dy5lY2NlLmdvdi5wdC9kcGMwZgYIKwYBBQUHAQEEWjBYMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lY2NlLmdvdi5wdDAxBggrBgEFBQcwAoYlaHR0cDovL3RydXN0LmVjY2UuZ292LnB0L2VjY2UtMDAyLmNydDA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vY3Jscy5lY2NlLmdvdi5wdC9jcmxzL2VjY2VucTAwMS5jcmwwDQYJKoZIhvcNAQELBQADggEBANOzm11ltTG4BVmpPWIE+rmqRxN2HVPQEWjiw/N9HVg/SAIe7AlI9cjV6yr914AMVuIrl0P3zAexb35Y3bwoQYeJGcBO878A6brr2atA1wjHlYllFMyUZv+qJsbMwYQGndkjeEKOfkc8XOtJmDbs3scBjG8MQpcUgLedWvB6wy63GL/o947Udj6zUy81iJMXBk8IwtT6iY7CJND0CMdEn0M3hJu01/4HN/slpgUzR8AcR9vZapcXEtKtdfYyqmRrU/30EBEP6+dn/GcNsHlkkybtvTWaMlgsPJjsBacaDffZ8cdMIruc2j2wuWkaaWum0gyZ7yoNU1dKfwabRtyPbOw=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://www.gns.gov.pt/media/1891/TSLPTHR.pdf</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>PT</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/pdf</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Gabinete Nacional de Segurança</Name>
++ <Name xml:lang="pt">Gabinete Nacional de Segurança</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/PT</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIEwzCCA6ugAwIBAgIQA/SAHSCCpItky4mPttFvKjANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJQVDE6MDgGA1UECgwxQ2VudHJvIGRlIEdlc3TDo28gZGEgUmVkZSBJbmZvcm3DoXRpY2EgZG8gR292ZXJubzENMAsGA1UECwwEU0NFRTERMA8GA1UECwwIRUNFc3RhZG8xETAPBgNVBAMMCEVDQ0UgMDAyMB4XDTIzMDgwMzExMDM0M1oXDTI2MDgwMzExMDM0M1owZzELMAkGA1UEBhMCUFQxKDAmBgNVBAoMH0dhYmluZXRlIE5hY2lvbmFsIGRlIFNlZ3VyYW7Dp2ExLjAsBgNVBAMMJVBPUlRVR1VFU0UgVFJVU1QgTElTVCBTQ0hFTUUgT1BFUkFUT1IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3CusbKGzhzKfTUvUfbhTkLMBfn85jiPfgmvFXbNBocRgeXSXkkgqK3NKoo4GSMq30y93oGZi/r2dsSupNWYmZWtUe9CsJLgy+5eqHAH++7PNfg/etOtmIL/q2FLo5ppY4eJiPY4H+oGZOquy0eBu92pJbhxlbhHOlb81LuZEjk9ChcF40z9iQ3KCGhP+OMdSfT5zBVQxfvYOW5n4409YmO1Nl586zOC5/HzZGZnVzmbiFGmn1LlA/mFBPmLrrsHTm41r1T8wPUPjLD7qyDheUhGri3gpFpMXMcRvWKgg+yI7rmvgtbBaq/IQg3fmZ2VL7mglVW8RaRy0iLqSLSXizAgMBAAGjggFSMIIBTjAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIGQDARBgNVHSUECjAIBgYEAJE3AwAwHQYDVR0OBBYEFI8tfmCY0LxZNXAEr+Uf3gG5DNMlMB8GA1UdIwQYMBaAFDnH5Of+GhkI60QnaSrYgez5pRkbMDsGA1UdIAQ0MDIwMAYEVR0gADAoMCYGCCsGAQUFBwIBFhpodHRwOi8vd3d3LmVjY2UuZ292LnB0L2RwYzBmBggrBgEFBQcBAQRaMFgwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVjY2UuZ292LnB0MDEGCCsGAQUFBzAChiVodHRwOi8vdHJ1c3QuZWNjZS5nb3YucHQvZWNjZS0wMDIuY3J0MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmxzLmVjY2UuZ292LnB0L2NybHMvY3JsLTAwMi5jcmwwDQYJKoZIhvcNAQELBQADggEBAJ8J0o9KVheOgsPeCG7rvEWUF9tr4GXZEUsljrZKDbybPJIHL35nJutGozGjPq3+QL7J+tdZOD38NnV6bP8FXOYk1tj/rwDyAK77gw4NTDHvl57dVWfeSZ4emQvPi+SR0nVibN9uzxaFZO4WZcGP4GY53qGTWqvQv4UREK8moun/rbIjyIlplsQQ7GbZLg/YKGNhxkW7quAVmadooAeDUSBzd35NSIXzCaIP+lixC54+rpgY0SNJmJv++35ydfjnWGElsEwvIgwyRDTdtQDZVkCPzv7yDt3CFlYRCyaYqNnfHhaby9kCGx5a83qv+jX6t6rZobvQaxeB9YZoBIyASMs=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIExjCCA66gAwIBAgIQYS7/D337SVpmO2CCEzbKKzANBgkqhkiG9w0BAQsFADB/MQswCQYDVQQGEwJQVDE6MDgGA1UECgwxQ2VudHJvIGRlIEdlc3TDo28gZGEgUmVkZSBJbmZvcm3DoXRpY2EgZG8gR292ZXJubzENMAsGA1UECwwEU0NFRTERMA8GA1UECwwIRUNFc3RhZG8xEjAQBgNVBAMMCUVDQ0VOUTAwMTAeFw0yNDA1MDgxMTIyNDJaFw0yNzA1MDgxMTIyNDJaMGcxCzAJBgNVBAYTAlBUMSgwJgYDVQQKDB9HYWJpbmV0ZSBOYWNpb25hbCBkZSBTZWd1cmFuw6dhMS4wLAYDVQQDDCVQT1JUVUdVRVNFIFRSVVNUIExJU1QgU0NIRU1FIE9QRVJBVE9SMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3ILzhMTUwHxQCrpfTq6dgg6J+xyY/gptE7nsgNSK7RBkkjnsp77mY++ItweTCE/334glDa5zCsv6/59XK3lM6eJpXFVhqwbLvNT9KVgT3YEvek9fvy/DhCdmEisAv51M9b+K92WHkVaLpoURYYa9+k6sjF1iEDZ4hK8qtU7Gg5jqO00F7ghbzqFf4tnepWJRcRjrzQxD87tQYdGhErueMS6bq0LL+JHFenQC1Z2C+QkoHMrirbHHfZlwn9eKGihipvvvbJWX2t4gtU5Seo7Pv0VrL1xylJeO9dIkoNtaja8qyIZw4SvUg0imLdaYD9UfRIMEwewZ7PncNMxcvhqlQwIDAQABo4IBVDCCAVAwCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBkAwEQYDVR0lBAowCAYGBACRNwMAMB0GA1UdDgQWBBSE/HUkA1hcvLjaBsVQw08yjWDXZzAfBgNVHSMEGDAWgBTeXZmFcW676uJV4ZaHFfMVbaFm2zA7BgNVHSAENDAyMDAGBFUdIAAwKDAmBggrBgEFBQcCARYaaHR0cDovL3d3dy5lY2NlLmdvdi5wdC9kcGMwZgYIKwYBBQUHAQEEWjBYMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lY2NlLmdvdi5wdDAxBggrBgEFBQcwAoYlaHR0cDovL3RydXN0LmVjY2UuZ292LnB0L2VjY2UtMDAyLmNydDA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vY3Jscy5lY2NlLmdvdi5wdC9jcmxzL2VjY2VucTAwMS5jcmwwDQYJKoZIhvcNAQELBQADggEBANOzm11ltTG4BVmpPWIE+rmqRxN2HVPQEWjiw/N9HVg/SAIe7AlI9cjV6yr914AMVuIrl0P3zAexb35Y3bwoQYeJGcBO878A6brr2atA1wjHlYllFMyUZv+qJsbMwYQGndkjeEKOfkc8XOtJmDbs3scBjG8MQpcUgLedWvB6wy63GL/o947Udj6zUy81iJMXBk8IwtT6iY7CJND0CMdEn0M3hJu01/4HN/slpgUzR8AcR9vZapcXEtKtdfYyqmRrU/30EBEP6+dn/GcNsHlkkybtvTWaMlgsPJjsBacaDffZ8cdMIruc2j2wuWkaaWum0gyZ7yoNU1dKfwabRtyPbOw=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://www.gns.gov.pt/media/1894/TSLPT.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>PT</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Gabinete Nacional de Segurança</Name>
++ <Name xml:lang="pt">Gabinete Nacional de Segurança</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/PT</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIHKzCCBROgAwIBAgIMIglUNPpaxto+b7tRMA0GCSqGSIb3DQEBCwUAMFwxCzAJBgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEeMBwGA1UEAxMVY2VydFNJR04gUXVhbGlmaWVkIENBMRcwFQYDVQRhEw5WQVRSTy0xODI4ODI1MDAeFw0yMjA4MTkxMjEyMjZaFw0yMzA4MTkxMjEyMjZaMIHkMQswCQYDVQQGEwJSTzEyMDAGA1UECgwpQVVUT1JJVEFURUEgUEVOVFJVIERJR0lUQUxJWkFSRUEgUk9NQU5JRUkxEjAQBgNVBAsMCUNPTkRVQ0VSRTEyMDAGA1UEAwwpQVVUT1JJVEFURUEgUEVOVFJVIERJR0lUQUxJWkFSRUEgUk9NQU5JRUkxEzARBgNVBBQMCjAzNzQ1NDExNzkxHDAaBgNVBAkME1N0ci5CbGQuIExpYmVydGF0aWkxETAPBgNVBAgMCFNlY3RvciA1MRMwEQYDVQRhDApSTzQyMjgzNzM1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv1cl76NH6jb4yX7+4MA49jlxh2p6BaW6jD1kA+QChKchcGMGp9EMGmZZcOvphRJVx8K7fvFoC46lZ+ET+WULaJhT4jXqNU0aOks9SHIWUYXuYI98+JHCZLXkIAjF9L9MzmelbJTluOc4s2e4wmTFfHGfxkD7QiFB4lCXMJWWeWz2YUJdkpIfLRoIjYciftq3ovPNhvLDferhnGC6iPrqPrZ23dkLUOGE2wgIH4VJXEzSYNhsVGqotUcBKI0EEKB8K1kM+YpSnpDdCnGubOCEOkoJtG864MLYG6MwrXupOdJ8BlXssq0bDAEi0j9y4DnhXgp942gSQRTD+VXUgwBzcQIDAQABo4ICYjCCAl4weAYIKwYBBQUHAQEEbDBqMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5jZXJ0c2lnbi5ybzBDBggrBgEFBQcwAoY3aHR0cDovL3d3dy5jZXJ0c2lnbi5yby9jZXJ0Y3JsL2NlcnRzaWduLXF1YWxpZmllZGNhLmNydDAOBgNVHQ8BAf8EBAMCBsAwHwYDVR0jBBgwFoAUj02HUV4Rf+GZw5HxaEw/rFkEsYswHQYDVR0OBBYEFNefq7LkcZ7fx0b8H0gS4KsRe+WjMIGGBgNVHSAEfzB9MDoGBwQAi+xAAQEwLzAtBggrBgEFBQcCARYhaHR0cDovL3d3dy5jZXJ0c2lnbi5yby9yZXBvc2l0b3J5MD8GDCsGAQQBgcM5AwEDDDAvMC0GCCsGAQUFBwIBFiFodHRwOi8vd3d3LmNlcnRzaWduLnJvL3JlcG9zaXRvcnkwQAYDVR0fBDkwNzA1oDOgMYYvaHR0cDovL2NybC5jZXJ0c2lnbi5yby9jZXJ0c2lnbi1xdWFsaWZpZWRjYS5jcmwwQQYDVR0RBDowOKAiBgorBgEEAYI3FAIDoBQMEmNvbnRhY3RAYWRyLmdvdi5yb4ESY29udGFjdEBhZHIuZ292LnJvMB8GA1UdJQQYMBYGCCsGAQUFBwMCBgorBgEEAYI3CgMMMGMGCCsGAQUFBwEDBFcwVTAIBgYEAI5GAQEwEwYGBACORgEGMAkGBwQAjkYBBgIwNAYGBACORgEFMCowKBYiaHR0cHM6Ly93d3cuY2VydHNpZ24ucm8vcmVwb3NpdG9yeRMCZW4wDQYJKoZIhvcNAQELBQADggIBAGsDT2V1owTyAHZ0Z9dSDbenhxUQe0UEm9EBichuRgb9ujywpMOox6fJLZaFlcUoikyhNgB4CqcNvF/dJTcRkeLkJFeOZ5jwc9RyJY4jiZs4s3QFTrwa3q/tJ58jlIipf4SPceATYCJRerfvmPbxq/H7BynhllJVdFTYFWT3fk6hYiSDmrpfYwp1fmRMWlO/zWpGUfcEC6AQiN0bMokSsb1PyT0ArqtLsWS13AeqYha4YcDv0fM6XyggwrbgqVe+4UPIt6cI0+HpVdj3AXHqnQ1MPkbkQQgwJI4Tif8MSj0X8e4ae8TfOZOMOkWwT8zHpyDLKms86ubsywIrZlsQD9wd6gBw5VJotC1/qUOwusttGSWEgtTr78aLps03A11MImcVuYw664c3Evy2NAe+YHuQ+tO2SmA0R3tOFQiC+c1etzyaFlPcGZX+6hc9guotRyUbDXfZnPRALqrHPavkWnptzg4JjQ6Ker9P9l4bOObA0ZJRD5I4Df+/7jN6d+D2LhJXywRf349qXlrs38TEsyfJWE8DflySnh2bnSL2/N3GMvPPXgbdM0F69/MrcbJGlwc73bZEDbT5aSz44TeiPV50zoXE+cnkHVgmE7g10oTDEFy7gxEs/SiBxnmIVTPfXAAbE8fly+hYyN15ZAgu+Lio8AZ+EyfSivRIbHnJhiQk</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIG1DCCBLygAwIBAgIUbZ+O7m7cKULTeN/YnkcvJxMAIGAwDQYJKoZIhvcNAQELBQAwgYAxCzAJBgNVBAYTAlJPMRgwFgYDVQQKDA9UcmFucyBTcGVkIFMuQS4xFzAVBgNVBGEMDlZBVFJPLTEyNDU4OTI0MSIwIAYDVQQLDBlUcmFucyBTcGVkIFRydXN0IFNlcnZpY2VzMRowGAYDVQQDDBFUcmFucyBTcGVkIFFDQSBHMzAeFw0yNDEwMTcxNDQ0MTVaFw0yNjEwMTcxNDQ0MTRaMIG1MQswCQYDVQQGEwJSTzEyMDAGA1UECgwpQVVUT1JJVEFURUEgUEVOVFJVIERJR0lUQUxJWkFSRUEgUk9NQU5JRUkxETAPBgNVBGEMCDQyMjgzNzM1MQ4wDAYDVQQEDAVMdXBhbjEWMBQGA1UEKgwNRGlhbmEgTWloYWVsYTEZMBcGA1UEBRMQMjAwNDEyMjM1RE1MMzIwNTEcMBoGA1UEAwwTRGlhbmEgTWloYWVsYSBMdXBhbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKpTIqQDDMtliieISHKSiab+z46u6Kuw7twU6dOJPxcTfc1uERiYBrbukAocbRVvLvDvq4XPWE28gdYkJq0xVZe7PPSIyrXdHj4klR+8NAOU6nNgoj3yTHqI5EB9s9wrL2CWh8qA42/WV3Nt98r4xYUEcuNjuP0tTFW6ItxMBSMq7q8qknEZ5hoext2BDLGrUCdlMjjXmGUVNItKA8yFVq02nF8GfQbkZDD1z4AqAvwhjE8e5h+RQBIL+3Qqm+UWx30nYeKTYMlrQ5tnXUaIAu2oOYaYoFMKjU0/7r3mFbG2jEEATnfNmXZD97wrPfIwEKL9eLBAxQog5XG1aWeReiUCAwEAAaOCAg0wggIJMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUnwU7GTInyg5uFG7YYafwDflENLwwcAYIKwYBBQUHAQEEZDBiMDkGCCsGAQUFBzAChi1odHRwOi8vd3d3LnRyYW5zc3BlZC5yby9jYWNlcnRzL3RzX3FjYV9nMy5wN2MwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnRyYW5zc3BlZC5yby8wIQYDVR0RBBowGIEWZGlhbmEubHVwYW5AYWRyLmdvdi5ybzBVBgNVHSAETjBMMAkGBwQAi+xAAQIwPwYLKwYBBAGCuB0BAQEwMDAuBggrBgEFBQcCARYiaHR0cDovL3d3dy50cmFuc3NwZWQucm8vcmVwb3NpdG9yeTARBgNVHSUECjAIBgYEAJE3AwAwbgYIKwYBBQUHAQMEYjBgMAgGBgQAjkYBATAIBgYEAI5GAQQwEwYGBACORgEGMAkGBwQAjkYBBgEwNQYGBACORgEFMCswKRYjaHR0cHM6Ly93d3cudHJhbnNzcGVkLnJvL3JlcG9zaXRvcnkTAmVuMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly93d3cudHJhbnNzcGVkLnJvL2NybC90c19xY2FfZzMuY3JsMB0GA1UdDgQWBBS3JB7s+EuvOqxtnlcvZP6TnXxl7TAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQELBQADggIBAKCWHJWB80jqb4+yJ6rwsKhvePaTTOoIsJmoYZu/Et3lyjhVpHb1gNfl1RwHL1m6cC9qakNm8NMitq9WXgHG+z/6kqzCIyDpY29eIEdpnw7NTxeWivun99SILCWcxrwwIyabOvKkTNzsVHL/LbHxmVOnVxUJGi1tWFpw0obNmMdN7Q9Mtre4/9sLTOuefyIz4qQLSBxuu20IpP+jknDiFH+KOk3aAu3NpuQL1+4jsqo/f9sy5hJ6Q1AGGITXapyH13sdYmYE2fk2IJiTtaeN7kcNSIlxAy+4SAqeiwo/AlM/5k29cHcVNpBMJeEVq3EowenSS/FDf3VqjHKrJHKrtD4SVUrsiOSMLSXhDIRA42RMmpMTt2Hc0JJ1Xf1kHjXhjejI5Bbf8Fp/jBguqb3TYQT0/VKJhjCAk0QR17CtNp/vPSK73qUvrgG8/sUs9o//eJCShZNW0eiCZtR/brBtd2Hn5ttFEjCTo2JN11+iYtOLxrcEHbsz2JnPEv/Uh2KhWgY0yHOElbpOSLZ1ALpJgYxwul1sbyteLSqUzOsJpP8m8y+VDE/LvDJaMhRuQA3H2jMaAnQZlGZulhUeV+rooiF474sCgaXOaQcdpxliIefPS1VCr4UHtrASZLtMQ+CP8oT0tCA1UQeU1+YJ8qELAWDat0ZO0ByCF5nESG1c4DmM</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://www.adr.gov.ro/trustedlist.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>RO</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">AUTHORITY FOR THE DIGITALISATION OF ROMANIA</Name>
++ <Name xml:lang="ro">AUTORITATEA PENTRU DIGITALIZAREA ROMANIEI</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/RO</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIEBjCCAu6gAwIBAgIUYwuagE+Cs0NgrEawpr6JJCfmbzcwDQYJKoZIhvcNAQELBQAwgZUxLjAsBgNVBAoMJVN3ZWRpc2ggUG9zdCBhbmQgVGVsZWNvbSBBZ2VuY3kgKFBUUykxEjAQBgNVBAcMCVN0b2NraG9sbTESMBAGA1UECAwJU3RvY2tob2xtMQswCQYDVQQGEwJTRTEuMCwGA1UEAwwlU3dlZGlzaCBQb3N0IGFuZCBUZWxlY29tIEFnZW5jeSAoUFRTKTAeFw0yMjA5MTMxNDAzNDFaFw0yNTA5MTIxNDAzNDFaMIGVMS4wLAYDVQQKDCVTd2VkaXNoIFBvc3QgYW5kIFRlbGVjb20gQWdlbmN5IChQVFMpMRIwEAYDVQQHDAlTdG9ja2hvbG0xEjAQBgNVBAgMCVN0b2NraG9sbTELMAkGA1UEBhMCU0UxLjAsBgNVBAMMJVN3ZWRpc2ggUG9zdCBhbmQgVGVsZWNvbSBBZ2VuY3kgKFBUUykwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIrViYRDpMXTixcDPBUlsIGLFLSPHD7WT6ICCcWJZrAs6O8/BWGm0NHiFzm2qiidiCXII1P0W2ffvdlF4/MzSLIOnp6o4XduZORN4xeqCviqhPnwLTTClXCm3FOBDVbmdbZA59tnofq83xyoRAcJk1UTUYiyX8LWMZtbyiuDByKK4/M/PMf0WHz8QWNjAcqrSxOhzZa7iDzXnPpdho2h1R71RKE/y3n86v5tLGhDxzjcz5Ef//y+XUJ5wry/bc1/+2Rbqc4O/kH8gZD0j7tajtmzEY0u2Luz5R3wOAx1lgH0/ujUgGtsebJRZ9LI9eswHCLdIrKZ73GZXU6C7eYXgbAgMBAAGjTDBKMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgZAMBEGA1UdJQQKMAgGBgQAkTcDADAdBgNVHQ4EFgQUUB/eT+UjIBRIGeFZHzlnbPDSvdIwDQYJKoZIhvcNAQELBQADggEBAAVeAi4Zm13aMwoRYvdrlJy95jomKtJ2kPYhNafycV3l2npJjVgAF5fwsLmZ3fL8i9O9c1bjIBr8xnorm1HAz4Z27Bmtn2rOLfMquazpufh+Oa2sQdRy1asS3bwsbO8RA0B5qAu3qj/gMPTA8sgCBOoUsREl6YuwXcy2NlpiWxYc9ocAH8mnkki4aVQFU84UVsZOQXJOPnJzmu0RmrtDR8I682hXjpYNw/YRRMiZ+zEFOqgFiKhKn4+wrMAlFmzNjm6Mfr2WcVYhJZiNnM2AN+SAzo4iaxWd28M8DkFYu1ZaJvgEPLj11WlOleAGkdGj2ywke3+ObxDSt32vwakTdF4=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIEBjCCAu6gAwIBAgIUIPiiRCTDfQdWUbb+wxM4dWcR8dcwDQYJKoZIhvcNAQELBQAwgZUxLjAsBgNVBAoMJVN3ZWRpc2ggUG9zdCBhbmQgVGVsZWNvbSBBZ2VuY3kgKFBUUykxEjAQBgNVBAcMCVN0b2NraG9sbTESMBAGA1UECAwJU3RvY2tob2xtMQswCQYDVQQGEwJTRTEuMCwGA1UEAwwlU3dlZGlzaCBQb3N0IGFuZCBUZWxlY29tIEFnZW5jeSAoUFRTKTAeFw0yNDAxMTAxNDU4MjFaFw0yNzAxMDkxNDU4MjFaMIGVMS4wLAYDVQQKDCVTd2VkaXNoIFBvc3QgYW5kIFRlbGVjb20gQWdlbmN5IChQVFMpMRIwEAYDVQQHDAlTdG9ja2hvbG0xEjAQBgNVBAgMCVN0b2NraG9sbTELMAkGA1UEBhMCU0UxLjAsBgNVBAMMJVN3ZWRpc2ggUG9zdCBhbmQgVGVsZWNvbSBBZ2VuY3kgKFBUUykwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDU0gU0qb0mNic9938lGYV8xweSkrdpkCpCjhfg4W/9U8XSlZzCIqvU5L8VPk1VC6sCM7uOXJu19U4o4GJ9K0FmZ3egI0v0/uhSYd41vQtGRfezjx56W2mIPCKifN5RT2uKsu15MbMCK4Erc3i/C9f/Ht7XI9IbztTCzKeOUPcZXUCSIVfVjNjrhCeEbFJHDFf400TyRQNjCoY5teS9oNx9vY/TpANTytI5HHTQga9+nkHoUMEOHOmZDLO7fvHF5XbEgFfx7tpLUhQ0Y6BEktw39rY1N8hhySffct/BBUqus7zzm3UCrTNsa9aM7YKK3sphLP/DJCdvSbDa4ABoM2yhAgMBAAGjTDBKMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgZAMBEGA1UdJQQKMAgGBgQAkTcDADAdBgNVHQ4EFgQUaWKRXtqZNMHTxVFB11/tu2RCNxYwDQYJKoZIhvcNAQELBQADggEBAHESWVJpJB70Gk5xz5drmObnGxtztPZDQMXFuek01t5v07DeCspKWTs/wybSJnEM1y9tsQtJ3UvaPQf2Pec0rJUrxgB3PdfXyyxNgeUVPxquYK61Mech458IIIN33ai6Ui5isv0M+d2LY0pFD0XLgGi2vR76q3Hd5Vhg7ozeRgKMHhPsRPrRgG9yW06ytSiFAbA3LDM8fpN7AyUsRhKj8XbbFpKsEOydSOycA98KwlTEJ5gxPcIY7t/DUhqMB2JuUYI/ch+FJogkqx2ontY8jNZknghVS9hM5BjGbOGN8vnLrG3mYfL6rriUpW09OVhr/f+3O3bbuQS40gf0kE6v/Yc=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIEBjCCAu6gAwIBAgIUOzkTfz3FusEX4xAXgwcZ/M50a8wwDQYJKoZIhvcNAQELBQAwgZUxLjAsBgNVBAoMJVN3ZWRpc2ggUG9zdCBhbmQgVGVsZWNvbSBBZ2VuY3kgKFBUUykxEjAQBgNVBAcMCVN0b2NraG9sbTESMBAGA1UECAwJU3RvY2tob2xtMQswCQYDVQQGEwJTRTEuMCwGA1UEAwwlU3dlZGlzaCBQb3N0IGFuZCBUZWxlY29tIEFnZW5jeSAoUFRTKTAeFw0yNTA2MDMxMzEzMTJaFw0yODA2MDIxMzEzMTJaMIGVMS4wLAYDVQQKDCVTd2VkaXNoIFBvc3QgYW5kIFRlbGVjb20gQWdlbmN5IChQVFMpMRIwEAYDVQQHDAlTdG9ja2hvbG0xEjAQBgNVBAgMCVN0b2NraG9sbTELMAkGA1UEBhMCU0UxLjAsBgNVBAMMJVN3ZWRpc2ggUG9zdCBhbmQgVGVsZWNvbSBBZ2VuY3kgKFBUUykwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC51eNJziwSKI6P7qH8hNNe2QfPs+xMKBGl0qz3lfr6e8fiLWhHzzS/Tk8XrudUqwaXXrXJBOuZibHSdmvpUBm8E8ytwjTieeZ9+1wcVRB1t6vINoj1XinZcKfIxXhRPao7bJNAIAM9WXoaYv3viLy3Ag7LQ7ArATL5j1DMfUnQ4yVS0ux6tysj+bVUdyvEstRs8ZaXyHyAGTJlTDrnI5dnko0EKSxQt9qRxhTQF0R0XX3be3Qpjaf1QJDUYSbqmROLVsvhy4jvHLvnn6M1Iocj3YKyYHqdVUYpHnfzsjK1i9n2MoUsaz+qRi6PyjbaRf4qyC4DNvJEs5dD29e6c3U/AgMBAAGjTDBKMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgZAMBEGA1UdJQQKMAgGBgQAkTcDADAdBgNVHQ4EFgQUvYZ2D4cNzdpEAQGF5Dkyrw+5CdcwDQYJKoZIhvcNAQELBQADggEBAHHgmMreIQi29ugS6hXcGlRbQ4Ob3xrtNgN99XiVdLHgBp+WvCFSEzgTOvwZgmRTdcu5a2gAVBxVqshKCOa6qe80746JMKVwvI0/ed4ZbYZqxJTAMPPAp1tru50YfXewP44phNmu4HaUdab8KI5ZeF03LTzezzUtZRrMmShkoAvOMjDuylrybGYfL0P/g5I10Q+akPDmewNnNPRFkC3gqH6JAsnE/HlazuG6FghD/UsvWN3U9fB2CesLRmfQ2kJGs17oM3+QYZNr89yWnFogmz8CaNhKyeBM+3iCQpS2Zcucs1RA9tWmuF/19HIqf1imHctBKyhxYGjwEDEaNR6s11Q=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://trustedlist.pts.se/SE-TL.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>SE</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">Swedish Post and Telecom Agency (PTS)</Name>
++ <Name xml:lang="sv">Post- och telestyrelsen (PTS)</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/SE</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIEQjCCAyqgAwIBAgIIRvPCP6JFF4EwDQYJKoZIhvcNAQELBQAwgbYxCzAJBgNVBAYTAlNJMWcwZQYDVQQKDF5NSU5JU1RSU1RWTyBaQSBESUdJVEFMTk8gUFJFT0JSQVpCTywgSU7FoFBFS1RPUkFUIFJFUFVCTElLRSBTTE9WRU5JSkUgWkEgSU5GT1JNQUNJSlNLTyBEUlXFvUJPMRkwFwYDVQQDDBBEcmFnYW4gUGV0cm92acSHMQ8wDQYDVQQqEwZEcmFnYW4xEjAQBgNVBAQMCVBldHJvdmnEhzAeFw0yMzA0MTMxMjIxMDBaFw0yNjEwMTMxMjIxMDBaMIG2MQswCQYDVQQGEwJTSTFnMGUGA1UECgxeTUlOSVNUUlNUVk8gWkEgRElHSVRBTE5PIFBSRU9CUkFaQk8sIElOxaBQRUtUT1JBVCBSRVBVQkxJS0UgU0xPVkVOSUpFIFpBIElORk9STUFDSUpTS08gRFJVxb1CTzEZMBcGA1UEAwwQRHJhZ2FuIFBldHJvdmnEhzEPMA0GA1UEKhMGRHJhZ2FuMRIwEAYDVQQEDAlQZXRyb3ZpxIcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCMRkbnlpiCBbCUQB3pOnU87TzGpvMM5frqIDyX0zP3rRMsvw/gxZIAah0AzJRJNyPbhf1WZkhdjTo5a7K7tsUhfEsgjmOHCugITuH8YWyBSM2c0owmdDc6qZYiQ/bbYkR+PVU9EstVsmMKUkoVpdIg3bAoU6jZYPf0UiTMDMLEgdKGmUQj4QF/gzFBU1BhIXDDp/qeOSve7zmlFhazEGp6lQTsXxIlwN323ZExjY2vuP9ebI4TV1A7zT4Mp3P9USsZXhww1cXrq8qs68tHIb1sy1/FtmJPDyNL0ADglqFNhXLFCX0+oRxltEWf/yWn9W9SpC8JdG9YmovzNhxmvd5rAgMBAAGjUjBQMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFH6Xmzvr9cJG6wnPzvT3dhRerb3xMA4GA1UdDwEB/wQEAwIGwDARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQELBQADggEBACrGOVbp6rE/I8BkACuwf1H5HSSmx77dnZksCHblg9TU08eotYyZ4SvWk8l3ceAHyzrg2x2fgpPa5e5CxVm2QmKayP0jNT/JvRP87Pu8hRObiWPwEJRVT6u4smLoR6tuLQ89NvtKRgT2s6ol06UEvjjWpS3YTNg13nsFSId0hQ3FesDqbNAHdMYLaHTvps9j19zuV66gSvyHXEEQJKsvHNtbTiHy/V6jlhKpSP8/bPSwwHwBQD2yU/DXRzJNker1UX1fxBNwKvG1eMxw89fTRrxskwUwDPtuTCWo34EgeFxwDIFlJV9GcpFZmPaPfpn3kCabPq9vrx4j4CzDKtoYjaw=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIEJjCCAw6gAwIBAgIIH42a28+H6bowDQYJKoZIhvcNAQELBQAwgagxCzAJBgNVBAYTAlNJMWcwZQYDVQQKDF5NSU5JU1RSU1RWTyBaQSBESUdJVEFMTk8gUFJFT0JSQVpCTywgSU7FoFBFS1RPUkFUIFJFUFVCTElLRSBTTE9WRU5JSkUgWkEgSU5GT1JNQUNJSlNLTyBEUlXFvUJPMRIwEAYDVQQDEwlKYW4gUmVwYXIxDDAKBgNVBCoTA0phbjEOMAwGA1UEBBMFUmVwYXIwHhcNMjMwNTE2MDUzNTAwWhcNMjYwNzEzMDUzNTAwWjCBqDELMAkGA1UEBhMCU0kxZzBlBgNVBAoMXk1JTklTVFJTVFZPIFpBIERJR0lUQUxOTyBQUkVPQlJBWkJPLCBJTsWgUEVLVE9SQVQgUkVQVUJMSUtFIFNMT1ZFTklKRSBaQSBJTkZPUk1BQ0lKU0tPIERSVcW9Qk8xEjAQBgNVBAMTCUphbiBSZXBhcjEMMAoGA1UEKhMDSmFuMQ4wDAYDVQQEEwVSZXBhcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMlkUmiaus6BRjSFdJWY4ZLHb0V+9/m8v32MNViEoc/tdEDetbeTr+xsTSPalQCghV8uf1/Xyz+9X1vnqzEm36Y97jHNdtvmKaL0iUGSMKSgcA+L8jS+4nmrEv18V8+TONzC27oj1qmzrF38l6ZIbHHFt+BaSUYXpb0wPnGz7ehFsuyAp9J2a5lgyhUPi7Q+a4R+xkQtEBUnUvVFb6vbWb/lSgpG3fJ81UaSXruhA5tIdntJDzKe+m/ikIbK7KhmRf/7xAFFNkS+QRpC4owajySqX5AuJsypvTYfRAwWq2FnKif2xjMsiCDMl4lOZOk1JJDkLTf94wnJLT5XhR6NtEUCAwEAAaNSMFAwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUYbXq46QWQGCoNEAW4DeBNKkwkMcwDgYDVR0PAQH/BAQDAgbAMBEGA1UdJQQKMAgGBgQAkTcDADANBgkqhkiG9w0BAQsFAAOCAQEAbmQHjCqpfOjysk+CtnOFM15hXnB/Qq03cwlS+KmnJ0MRZMeGutRU1EhzEZvtZok96lEx88ZhoU1jf0rost9lMrDoGzcVUbHsug6xmJqAnt40O9dutxXrE6D2tQCYOQgUB+/mfE8RUakoZXfYt5v3ZPuaAMHLiBT9cP6D589jQPUgzrKOo0nTUIkt5KKLiIsmP8iZO6CQJ0xt4LZCKnXe1qdjGaQOcFRHavy5QFlfmnZ3xTllQzSg78aUz7LnItr5+Ym8siz/h4BoqKLsI2Ut7HDr1npRSLnTTDMxaWbG1MsSZnzBi2FzxM1BE1D8ugSuiFeJh6NdyX3qdGgm+Z42Lg==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://www.tl.gov.si/SI_TL.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>SI</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">REPUBLIC OF SLOVENIA, MINISTRY OF DIGITAL TRANSFORMATION, INFORMATION SOCIETY INSPECTORATE</Name>
++ <Name xml:lang="sl">MINISTRSTVO ZA DIGITALNO PREOBRAZBO, INŠPEKTORAT REPUBLIKE SLOVENIJE ZA INFORMACIJSKO DRUŽBO</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/SI</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFEDCCA3igAwIBAgIFFD9H/fswDQYJKoZIhvcNAQELBQAwgYUxCzAJBgNVBAYTAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMScwJQYDVQQKDB5Ow6Fyb2Ruw70gYmV6cGXEjW5vc3Ruw70gw7pyYWQxHzAdBgNVBAMMFlRydXN0ZWQgTGlzdCBzaWduZXIgMTAxFzAVBgNVBAUTDk5UUlNLLTM2MDYxNzAxMB4XDTI1MDQwMTAwMDAwMFoXDTMzMDYzMDAwMDAwMFowgYUxCzAJBgNVBAYTAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMScwJQYDVQQKDB5Ow6Fyb2Ruw70gYmV6cGXEjW5vc3Ruw70gw7pyYWQxHzAdBgNVBAMMFlRydXN0ZWQgTGlzdCBzaWduZXIgMTAxFzAVBgNVBAUTDk5UUlNLLTM2MDYxNzAxMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEApDjddVizt4f6yEj5CPwlcWFzchFVkz8sLxfIPKPVxWq5OEietBCbzJ9Kn7QhqozEqnXYGF9x3iULzgS7SXZDKW2CvSnmjgx19SgUQ04p1ybK6YUZoniYKLkiW6Tye5MbUzC3ARJFO5KphW+IYn6ZOaScWmS+TVRz/DRIxR76p/gFrdtHA4l24nAmwtmiEcPlouMBI8zau2TxLYpfFlUxiVLFa4ueaWOt5+WLVSu3/8aZ8TPfHEBGTT4Qw65rBkCVj9US6UgED9ZURr42g6OPtKlSHdp3PQmyFsZsY80QsMBP94K9nEYhigQekHpncsW9SEfLGArilrvaKFei073N+F44PZuSFlHE1DXQ4CsLXYUDaQieZDibHUw3ZAkzr6ouLoGOvD9DidAaGoVkE4iHYH98M+IrnkwvgmP5TOWvs8bNBYQC0GzQTOVo4TxN6nnCKXWzHpAZGbNgDG3UWItMHtLZTBH727GRe6R1B9KIqpY+C/nBc8FxlzQ0aq6ZxOw/AgMBAAGjgYQwgYEwHQYDVR0OBBYEFBFY5rJma48Bbq2TgHGkjS6OrMnrMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgbAMBEGA1UdIAQKMAgwBgYEVR0gADAfBgNVHREEGDAWgRRwb2RhdGVsbmFAbmJ1Lmdvdi5zazARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQELBQADggGBAF3ewHpgk322ht0lT9qHertoEN1OtxbjYBkenmT3cydyILB9nYLFBZ7TL5VjzRtDC+8XOtsJXGVVko9/fj9tL+KodnmDlOjlp/Ovzwejwvakr6Ev4d1sVEHH4NSfxZ715LExd+LgQBf+gVE8ziSY3Kek6Af88y/6MRAs2lLa8/OK6m3g0+rdGD0xFj88c0DwiFmkFho/WKCLNgdtUIAZcbhi0Ufs7JD9cF7/+pLEt9o9Vl9n95UR5DFs/Afoi4sMsmYjUBPqSsMs1Uz0hH1loo3ZiXJuzGzMF/PqQJDRNT0u+K4GbXYW3oX1enB26XGuArGRCQ1Es8Wp0QkS8SppeVcnTXEOQXJ2y8Oy2JKMcvfxuCiiGHzl9IpSeOBR7KLEe2/Vr84FPlBrRTw6KNHsN8JV+svtXnH28XCx9TuCEo151HfbzPfWM45U7yLbLW6zqgSh1/6sJiUcRh4Ro8ctzkEwDUlbHYDeHm1tSOrsfsbQ56SAt/3gr2vnQLqJ+AtoEg==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIFEDCCA3igAwIBAgIFFEBkr74wDQYJKoZIhvcNAQELBQAwgYUxCzAJBgNVBAYTAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMScwJQYDVQQKDB5Ow6Fyb2Ruw70gYmV6cGXEjW5vc3Ruw70gw7pyYWQxHzAdBgNVBAMMFlRydXN0ZWQgTGlzdCBzaWduZXIgMTExFzAVBgNVBAUTDk5UUlNLLTM2MDYxNzAxMB4XDTI1MDQwMTAwMDAwMFoXDTMzMTIzMTAwMDAwMFowgYUxCzAJBgNVBAYTAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMScwJQYDVQQKDB5Ow6Fyb2Ruw70gYmV6cGXEjW5vc3Ruw70gw7pyYWQxHzAdBgNVBAMMFlRydXN0ZWQgTGlzdCBzaWduZXIgMTExFzAVBgNVBAUTDk5UUlNLLTM2MDYxNzAxMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAlarWmFZjmcK5QgO9Yp6ED0N/jVynXIL5b+yrUD9Ce2JMeLvD+BkLNOZElOhmB0Hbu2NVVi03qItvpDSHO65YCvWg3uYuBQF+eaJzrus0O2ugqD7M2QWsJSf1Tq9oJYH76KXZx4oK4ee8WbTR3WUcmgucUEJN/DipVHELGJkw3pnE74SyiHqp4DgBM8sohlFE2DjSTXx2RU+/3C96rZZiy6958YBWbCwbkICYqDeYxrb5Vq2uCpXg7jZN35VUroIxTi7gNJuJ9J9AqWdzW0Ya9hPG9Sq331X8Ik3999S893TgRp6m+6CLkdtNXpb38Iw2gqD4PUu2EqRkAAs1gdgzmtOAposSWdw+eqprzHaTkydLGO9K48MHx6sup+mvqbCIPhvAmFHNhJqDSkl/1nEzHo9+0EmoeI2relHsMXSRYGDRB+GvkTg9AvCLFKyrdlGwWC+C41Hb75Wxu+jaTr6m+YaiEr3Ugah+KjIEtQcBV5eBKDXUE9Ixy3KbsGrXaWIRAgMBAAGjgYQwgYEwHQYDVR0OBBYEFDfQBjSuiF+/zrSVcnULj+/f6jZeMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgbAMBEGA1UdIAQKMAgwBgYEVR0gADAfBgNVHREEGDAWgRRwb2RhdGVsbmFAbmJ1Lmdvdi5zazARBgNVHSUECjAIBgYEAJE3AwAwDQYJKoZIhvcNAQELBQADggGBACUI1IW6Hk8THL64SN1ZDq4wdxvghFhsVSW6esMr1DG1Fqd4JVIVqlVZhEz8r/hvxcYoabw0KvaFf3AZr74B4tinPUM+fnOAX8PHDO9beWSVvQe1Z9VsAVOPNimPggrLSufIdADkdpU6E44Zy5Xo9iBz31vGVPG3Igii9TPAcmaBGRuuPxN9ChxURC9TfAK3nL+WL+rKbP20rktKhrpRsqIbYdRS0LVyeyMBmr87bZY4OOTxW+wayjHVApTSURwFvJ7+WbhIrKRB5GUtdlcx3Bs0Tj9oICB3tOVCKCXtA9EgGjsEOFUTk1careWFaoGrS81h0X3nbZw3UTk+P1HKwmOzvqgOJ7P5YAzRzl0ozegxH66IP+fCBr15rnBclhbD+Meq45Bk8Q/q03f2AWEdbE5g15N/M9i3eGmsyLoMoDgPTSzE1n4IlJVh45f3GLAcAF9XOZMPZAUlbV/Zamsf/kBYqRUAmpwZIsFh3yBnY20yyUI05PajsX6vKfGqkcpoQQ==</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>http://tl.nbu.gov.sk/kca/tsl/tsl.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>SK</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">National Security Authority</Name>
++ <Name xml:lang="sk">Národný bezpečnostný úrad</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/SK</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ <OtherTSLPointer>
++ <ServiceDigitalIdentities>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>MIIIAjCCBeqgAwIBAgIUHQiKmcmM7NMyG25PRlC8Qs9VpoQwDQYJKoZIhvcNAQENBQAwXzELMAkGA1UEBhMCUFQxKjAoBgNVBAoMIURpZ2l0YWxTaWduIENlcnRpZmljYWRvcmEgRGlnaXRhbDEkMCIGA1UEAwwbRElHSVRBTFNJR04gUVVBTElGSUVEIENBIEcxMB4XDTIzMTAwMjEzMjk1MFoXDTI2MTAwMTEzMjk1MFowggFaMQswCQYDVQQGEwJSTzE9MDsGA1UECww0Q2VydGlmaWNhdGUgUHJvZmlsZSAtIFF1YWxpZmllZCBDZXJ0aWZpY2F0ZSAtIE1lbWJlcjEjMCEGA1UEYQwaTEVJWEctMjU0OTAwWk5ZQTFGTFVROVUzOTMxHDAaBgNVBAoME0VVUk9QRUFOIENPTU1JU1NJT04xKTAnBgNVBAsMIEVudGl0bGVtZW50IC0gRUMgU1RBVFVUT1JZIFNUQUZGMSswKQYJKoZIhvcNAQkBFhxhZHJpYW4uY3JvaXRvcnVAZWMuZXVyb3BhLmV1MREwDwYDVQQEDAhDUk9JVE9SVTEaMBgGA1UEKgwRQ09OU1RBTlRJTiBBRFJJQU4xHTAbBgNVBAsMFFJlbW90ZVFTQ0RNYW5hZ2VtZW50MSMwIQYDVQQDDBpDT05TVEFOVElOIEFEUklBTiBDUk9JVE9SVTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMEPfdAKKFfKpCzoMFhBvEv5OI0t9wQ1Ua5JzVpENOOKKjS9Cm/IwzyTLsWuLJDqaUvmI6oTOZ4TYo7WaFyyi2YVq4TSVXo9G8t8RykHMu13vwrCyoMJ/GucZ9ypgkRnEEWUdvUGN26ROmCsryBIfvCpC/Pe9tF6Oh6dBi2CmX8HlE43zNYOkVuikxa5ymB13W1yYsNKV920My/ZCfpFoEyW34H3+6ZNR7Iwh6h6T4QkIMkjcRTTaeMTYD/kaQV+lFntXlfP2of6Xdqaif39nJeuthCpgL8ciWAE3mb0vuJIRXAcrHRhj2qDT3kXJvpo8S+qmkvMIRdabzeYbVzo+3kCAwEAAaOCArcwggKzMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUc0nxQBwUBHyaEn/6L81cZyMY6RQwgYYGCCsGAQUFBwEBBHoweDBGBggrBgEFBQcwAoY6aHR0cHM6Ly9xY2EtZzEuZGlnaXRhbHNpZ24ucHQvRElHSVRBTFNJR05RVUFMSUZJRURDQUcxLnA3YjAuBggrBgEFBQcwAYYiaHR0cHM6Ly9xY2EtZzEuZGlnaXRhbHNpZ24ucHQvb2NzcDAnBgNVHREEIDAegRxhZHJpYW4uY3JvaXRvcnVAZWMuZXVyb3BhLmV1MF8GA1UdIARYMFYwNwYLKwYBBAGBx3wEAQEwKDAmBggrBgEFBQcCARYaaHR0cHM6Ly9wa2kuZGlnaXRhbHNpZ24ucHQwEAYOKwYBBAGBx3wEAgEBAQQwCQYHBACL7EABAjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwSwYDVR0fBEQwQjBAoD6gPIY6aHR0cHM6Ly9xY2EtZzEuZGlnaXRhbHNpZ24ucHQvRElHSVRBTFNJR05RVUFMSUZJRURDQUcxLmNybDAdBgNVHQ4EFgQUInlF6Cl5HKvUE35Ifm8y7cfQvvAwDgYDVR0PAQH/BAQDAgZAMIHTBggrBgEFBQcBAwSBxjCBwzAIBgYEAI5GAQEwCAYGBACORgEEMBMGBgQAjkYBBjAJBgcEAI5GAQYBMGoGBgQAjkYBBTBgMC4WKGh0dHBzOi8vcWNhLWcxLmRpZ2l0YWxzaWduLnB0L1BEU19wdC5wZGYTAnB0MC4WKGh0dHBzOi8vcWNhLWcxLmRpZ2l0YWxzaWduLnB0L1BEU19lbi5wZGYTAmVuMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjANBgkqhkiG9w0BAQ0FAAOCAgEACH5DHJNDzsMXTu+ph7fXEEbFK6xqbg68tRcvwr7xgmaAwfM2pGjq62O637y5yVfYT6Aa7oiC4sshT7Tu/c/UHpjTn4/tDghkwlhSkUc9FREmOu9doRLWNJ6OE31UBW94w9s0EjpvFJLpkODv0F2M4iqTLMtV7H0M+ggNA+cMa2NnyRZCCNVKoP8CxgQySjgv7DhSXTSahhaKJUQqE5yXvrjBZvrIyESlTCtoLFa0mWljWlW4aVf4P+m1lLjCpqzpLc5B9m1gXxwzJzUT0DcQgLdTka/QBFKTvD0F8+6qUqazM6+26ddFOQegX8Kc8xzvyXss1bu8JqXKwjzEwHd6ywAWgqJi7v1+KlT0DvX0Y4X8kSh9X5Xuz5tjZnby0hvP7qQSXhHsYUOrxU3Dkj8V9kJvDKhnCuTdJcEaCrcdWbimNib4YIicCQOoE79XL5/KQ5gYgeCGkudcLkteOfvDBM/G8HbqSbv4x8+HEdnjgoCL4lv4iaD4qtpfvkU6bRXlMtT2Q4Q7pg/Mo02jh66+S9HoXtoBUeUZMWER2OkjUG1CbOOwclIw6GuiCZ7BRSu0tG3C54f0jBdDqj2Unvh9geRjBiRNq0pksCD9GQj4yQc0iYxEbu2RCum8suLlkeQZL2oVYvRdjYFiT5kcWAYuGaZH3YGoR+MT3b7ABahollY=</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ <ServiceDigitalIdentity>
++ <DigitalId>
++ <X509Certificate>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</X509Certificate>
++ </DigitalId>
++ </ServiceDigitalIdentity>
++ </ServiceDigitalIdentities>
++ <TSLLocation>https://ec.europa.eu/tools/lotl/Final_EU_TSL-UKsigned.xml</TSLLocation>
++ <AdditionalInformation>
++ <OtherInformation>
++ <TSLType>http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric</TSLType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTerritory>UK</SchemeTerritory>
++ </OtherInformation>
++ <OtherInformation>
++ <ns3:MimeType>application/vnd.etsi.tsl+xml</ns3:MimeType>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeOperatorName>
++ <Name xml:lang="en">tScheme Limited</Name>
++ </SchemeOperatorName>
++ </OtherInformation>
++ <OtherInformation>
++ <SchemeTypeCommunityRules>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/UK</URI>
++ <URI xml:lang="en">http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon</URI>
++ </SchemeTypeCommunityRules>
++ </OtherInformation>
++ </AdditionalInformation>
++ </OtherTSLPointer>
++ </PointersToOtherTSL>
++ <ListIssueDateTime>2025-08-08T10:06:48Z</ListIssueDateTime>
++ <NextUpdate>
++ <dateTime>2026-02-04T11:06:48Z</dateTime>
++ </NextUpdate>
++ <DistributionPoints>
++ <URI>https://ec.europa.eu/tools/lotl/eu-lotl.xml</URI>
++ </DistributionPoints>
++ </SchemeInformation>
++<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="id-4e7c05feee75952aaa7a56bc8b06b7a6"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"/><ds:Reference Id="ref-enveloped-signature" URI=""><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><ds:DigestValue>nrfL29aRuAmD1/JifILxTp4pRP35xDNUvzIPv0Ki+wCjJQ5+2L3ddYRhA/hZI92/aoNmG4YAwsC19XSxbrEY2g==</ds:DigestValue></ds:Reference><ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#xades-id-4e7c05feee75952aaa7a56bc8b06b7a6"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><ds:DigestValue>2K/PvriRxhOHzjG+YZnp87pM8Y7eZgyieITCzED3MS8gYKcFAHJwEne7BkL6ydTwYaKJSAb/LKuqfHbk278cLQ==</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue Id="value-id-4e7c05feee75952aaa7a56bc8b06b7a6">a7bryBEOCOH4yiUs5R0nSzZvwFeQmgAUSavHKb+R77JeBVUsXYKDfEsXJpjHTtR/d3RJP8bJoos14qYrQf3iVxD7DQI9zbsv6y/V54nvfTl15bAlHg5XreX8dM7WM+KDAEgFif8/3Gm6cDNeG6R2Kt2diWu5xYO4n1kMVWqVkjqnMo8Ian0RUmzvl0tfFNh3MmSPn5/b4VKchWn+rUQLOatET5VZ8euhPD7zzXTlLl0aDFbCWnqwNUfkiAG1VYH4oAuqfUiDYno+Zp15HsxSS7DA2rnYHrbd1NwFlEH/s57huL8mdrESEIwsqO34SCHpx3Ps9+lh0jaUXQXz3QKj40WCcdm0cadVBzR6hQSJ9WsYv3oh2T6YWfZTK9LlxErdC6Y9Tzg1SVUIpVDeW1qsDjJ0cK7rwAhip52MR7KllFPD7X8C55cHdGweAJE8dbSaDjvrps9+ot2ZFHs+O2D7XZMJJa9uj/C3pZ97I0F84xBqqwQ8EiE246I8QxNc+7ipIOJqJlfM13S/ZctaVO/XlSedumcvfcUdmrKvzUFPM0Z3SJgAEX58LscXxS5PoJfljavOOFrojPJCvJkc7+ItEHwE1LncIu5VNLaU0aarAj0I4wKlOVypukgLQvIlH4qrTIr4mPLeiHLKoZrxxfuSppDsAP51xMCCZjccDSZp16s=</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>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</ds:X509Certificate></ds:X509Data></ds:KeyInfo><ds:Object><xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Target="#id-4e7c05feee75952aaa7a56bc8b06b7a6"><xades:SignedProperties Id="xades-id-4e7c05feee75952aaa7a56bc8b06b7a6"><xades:SignedSignatureProperties><xades:SigningTime>2025-08-08T11:00:04Z</xades:SigningTime><xades:SigningCertificate><xades:Cert><xades:CertDigest><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><ds:DigestValue>MChItQCvaWcTKbZ1lIIXL2BVbmm0YgKgZVrgIx0FFUhNIdTlv6RylET5voFVvbYBiGh3nUr2rsAQouSJzYkTaQ==</ds:DigestValue></xades:CertDigest><xades:IssuerSerial><ds:X509IssuerName>CN=DIGITALSIGN QUALIFIED CA G1,O=DigitalSign Certificadora Digital,C=PT</ds:X509IssuerName><ds:X509SerialNumber>660862747298009142807362633871991440505734410485</ds:X509SerialNumber></xades:IssuerSerial></xades:Cert></xades:SigningCertificate></xades:SignedSignatureProperties><xades:SignedDataObjectProperties><xades:DataObjectFormat ObjectReference="#ref-enveloped-signature"><xades:MimeType>text/xml</xades:MimeType></xades:DataObjectFormat></xades:SignedDataObjectProperties></xades:SignedProperties></xades:QualifyingProperties></ds:Object></ds:Signature></TrustServiceStatusList>
+\ No newline at end of file
diff --git a/gnu/packages/patches/qemu-disable-bios-tables-test.patch b/gnu/packages/patches/qemu-disable-bios-tables-test.patch
deleted file mode 100644
index ba89b91099..0000000000
--- a/gnu/packages/patches/qemu-disable-bios-tables-test.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-The bios-tables-test may fail; disable it (see: https://gitlab.com/qemu-project/qemu/-/issues/1098)
-
-diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build
-index 2f0d3ef080..e3c33a86b5 100644
---- a/tests/qtest/meson.build
-+++ b/tests/qtest/meson.build
-@@ -1,6 +1,5 @@
- slow_qtests = {
- 'aspeed_smc-test': 360,
-- 'bios-tables-test' : 910,
- 'cdrom-test' : 610,
- 'device-introspect-test' : 720,
- 'migration-test' : 480,
-@@ -86,9 +85,6 @@ qtests_i386 = \
- config_all_devices.has_key('CONFIG_Q35') and \
- config_all_devices.has_key('CONFIG_VIRTIO_PCI') and \
- slirp.found() ? ['virtio-net-failover'] : []) + \
-- (unpack_edk2_blobs and \
-- config_all_devices.has_key('CONFIG_HPET') and \
-- config_all_devices.has_key('CONFIG_PARALLEL') ? ['bios-tables-test'] : []) + \
- qtests_pci + \
- qtests_cxl + \
- ['fdc-test',
-@@ -235,7 +231,6 @@ qtests_arm = \
-
- # TODO: once aarch64 TCG is fixed on ARM 32 bit host, make bios-tables-test unconditional
- qtests_aarch64 = \
-- (cpu != 'arm' and unpack_edk2_blobs ? ['bios-tables-test'] : []) + \
- (config_all_accel.has_key('CONFIG_TCG') and config_all_devices.has_key('CONFIG_TPM_TIS_SYSBUS') ? \
- ['tpm-tis-device-test', 'tpm-tis-device-swtpm-test'] : []) + \
- (config_all_devices.has_key('CONFIG_XLNX_ZYNQMP_ARM') ? ['xlnx-can-test', 'fuzz-xlnx-dp-test'] : []) + \
-@@ -260,9 +255,6 @@ qtests_s390x = \
- qtests_riscv32 = \
- (config_all_devices.has_key('CONFIG_SIFIVE_E_AON') ? ['sifive-e-aon-watchdog-test'] : [])
-
--qtests_riscv64 = \
-- (unpack_edk2_blobs ? ['bios-tables-test'] : [])
--
- qos_test_ss = ss.source_set()
- qos_test_ss.add(
- 'ac97-test.c',
-@@ -328,7 +320,6 @@ if gnutls.found()
- endif
-
- qtests = {
-- 'bios-tables-test': [io, 'boot-sector.c', 'acpi-utils.c', 'tpm-emu.c'],
- 'cdrom-test': files('boot-sector.c'),
- 'dbus-vmstate-test': files('migration-helpers.c') + dbus_vmstate1,
- 'erst-test': files('erst-test.c'),
diff --git a/gnu/packages/patches/qemu-disable-migration-test.patch b/gnu/packages/patches/qemu-disable-migration-test.patch
deleted file mode 100644
index 2a30d26f55..0000000000
--- a/gnu/packages/patches/qemu-disable-migration-test.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build
-index e3c33a86b5..a3bbf9c841 100644
---- a/tests/qtest/meson.build
-+++ b/tests/qtest/meson.build
-@@ -2,7 +2,6 @@ slow_qtests = {
- 'aspeed_smc-test': 360,
- 'cdrom-test' : 610,
- 'device-introspect-test' : 720,
-- 'migration-test' : 480,
- 'npcm7xx_pwm-test': 300,
- 'npcm7xx_watchdog_timer-test': 120,
- 'qom-test' : 900,
-@@ -100,7 +99,6 @@ qtests_i386 = \
- 'cpu-plug-test',
- 'q35-test',
- 'vmgenid-test',
-- 'migration-test',
- 'test-x86-cpuid-compat',
- 'numa-test'
- ]
-@@ -173,7 +171,7 @@ qtests_ppc64 = \
- (slirp.found() ? ['pxe-test'] : []) + \
- (config_all_devices.has_key('CONFIG_USB_UHCI') ? ['usb-hcd-uhci-test'] : []) + \
- (config_all_devices.has_key('CONFIG_USB_XHCI_NEC') ? ['usb-hcd-xhci-test'] : []) + \
-- qtests_pci + ['migration-test', 'numa-test', 'cpu-plug-test', 'drive_del-test']
-+ qtests_pci + ['numa-test', 'cpu-plug-test', 'drive_del-test']
-
- qtests_sh4 = (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : [])
- qtests_sh4eb = (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : [])
-@@ -240,8 +238,7 @@ qtests_aarch64 = \
- config_all_devices.has_key('CONFIG_TPM_TIS_I2C') ? ['tpm-tis-i2c-test'] : []) + \
- ['arm-cpu-features',
- 'numa-test',
-- 'boot-serial-test',
-- 'migration-test']
-+ 'boot-serial-test']
-
- qtests_s390x = \
- qtests_filter + \
-@@ -249,8 +246,7 @@ qtests_s390x = \
- 'drive_del-test',
- 'device-plug-test',
- 'virtio-ccw-test',
-- 'cpu-plug-test',
-- 'migration-test']
-+ 'cpu-plug-test']
-
- qtests_riscv32 = \
- (config_all_devices.has_key('CONFIG_SIFIVE_E_AON') ? ['sifive-e-aon-watchdog-test'] : [])
-@@ -324,7 +320,6 @@ qtests = {
- 'dbus-vmstate-test': files('migration-helpers.c') + dbus_vmstate1,
- 'erst-test': files('erst-test.c'),
- 'ivshmem-test': [rt, '../../contrib/ivshmem-server/ivshmem-server.c'],
-- 'migration-test': migration_files,
- 'pxe-test': files('boot-sector.c'),
- 'qos-test': [chardev, io, qos_test_ss.apply({}).sources()],
- 'tpm-crb-swtpm-test': [io, tpmemu_files],
diff --git a/gnu/packages/patches/qemu-fix-test-virtio-version.patch b/gnu/packages/patches/qemu-fix-test-virtio-version.patch
new file mode 100644
index 0000000000..8e466324e7
--- /dev/null
+++ b/gnu/packages/patches/qemu-fix-test-virtio-version.patch
@@ -0,0 +1,29 @@
+Upstream-status: Sent to qemu-devel@nongnu.org
+Message-ID: <20250831125255.7066-1-maxim@guixotic.coop>
+
+There were some discussion in <https://gitlab.com/qemu-project/qemu/-/issues/1626>.
+
+diff --git a/tests/functional/test_virtio_version.py b/tests/functional/test_virtio_version.py
+index a5ea73237f..501545f655 100755
+--- a/tests/functional/test_virtio_version.py
++++ b/tests/functional/test_virtio_version.py
+@@ -10,6 +10,8 @@
+ # This work is licensed under the terms of the GNU GPL, version 2 or
+ # later. See the COPYING file in the top-level directory.
+
++import os
++
+ from qemu.machine import QEMUMachine
+ from qemu_test import QemuSystemTest
+
+@@ -68,7 +70,9 @@ def run_device(self, devtype, opts=None, machine='pc'):
+ """
+ Run QEMU with `-device DEVTYPE`, return device info from `query-pci`
+ """
+- with QEMUMachine(self.qemu_bin) as vm:
++ with QEMUMachine(
++ self.qemu_bin,
++ base_temp_dir=os.environ.get('TMPDIR', '/var/tmp')) as vm:
+ vm.set_machine(machine)
+ if opts:
+ devtype += ',' + opts
diff --git a/gnu/packages/patches/qemu-glibc-2.41.patch b/gnu/packages/patches/qemu-glibc-2.41.patch
deleted file mode 100644
index 56beab690e..0000000000
--- a/gnu/packages/patches/qemu-glibc-2.41.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-from https://gitlab.com/qemu-project/qemu/-/commit/27a8d899c7a100fd5aa040a8b993bb257687c393
-
-From 27a8d899c7a100fd5aa040a8b993bb257687c393 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 7 Feb 2025 16:09:20 +0000
-Subject: [PATCH] linux-user: Do not define struct sched_attr if libc headers
- do
-
-glibc 2.41+ has added [1] definitions for sched_setattr and
-sched_getattr functions and struct sched_attr. Therefore, it needs
-to be checked for here as well before defining sched_attr, to avoid
-a compilation failure.
-
-Define sched_attr conditionally only when SCHED_ATTR_SIZE_VER0 is
-not defined.
-
-[1] https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=21571ca0d70302909cf72707b2a7736cf12190a0;hp=298bc488fdc047da37482f4003023cb9adef78f8
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2799
-Cc: qemu-stable@nongnu.org
-Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
-Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
----
- linux-user/syscall.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/linux-user/syscall.c b/linux-user/syscall.c
-index 6ee02383daf..df5ed18062c 100644
---- a/linux-user/syscall.c
-+++ b/linux-user/syscall.c
-@@ -360,7 +360,8 @@ _syscall3(int, sys_sched_getaffinity, pid_t, pid, unsigned int, len,
- #define __NR_sys_sched_setaffinity __NR_sched_setaffinity
- _syscall3(int, sys_sched_setaffinity, pid_t, pid, unsigned int, len,
- unsigned long *, user_mask_ptr);
--/* sched_attr is not defined in glibc */
-+/* sched_attr is not defined in glibc < 2.41 */
-+#ifndef SCHED_ATTR_SIZE_VER0
- struct sched_attr {
- uint32_t size;
- uint32_t sched_policy;
-@@ -373,6 +374,7 @@ struct sched_attr {
- uint32_t sched_util_min;
- uint32_t sched_util_max;
- };
-+#endif
- #define __NR_sys_sched_getattr __NR_sched_getattr
- _syscall4(int, sys_sched_getattr, pid_t, pid, struct sched_attr *, attr,
- unsigned int, size, unsigned int, flags);
---
-GitLab
-
diff --git a/gnu/packages/patches/qgit-2.12-fix-search-style.patch b/gnu/packages/patches/qgit-2.12-fix-search-style.patch
new file mode 100644
index 0000000000..07d87dfeb2
--- /dev/null
+++ b/gnu/packages/patches/qgit-2.12-fix-search-style.patch
@@ -0,0 +1,23 @@
+From 757c0fc17b879f5a5719e6959c926c997ef5c4f2 Mon Sep 17 00:00:00 2001
+From: Cristian Tibirna <tibirna@kde.org>
+Date: Mon, 28 Jul 2025 20:21:11 -0400
+Subject: [PATCH] Fix issue #162: match partial strings as well as wildcards in
+ listview search
+
+---
+ src/listview.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/listview.cpp b/src/listview.cpp
+index 3223d61..8cd8f71 100644
+--- a/src/listview.cpp
++++ b/src/listview.cpp
+@@ -1321,7 +1321,7 @@ bool ListViewProxy::filterAcceptsRow(int source_row, const QModelIndex&) const {
+ int ListViewProxy::setFilter(bool isOn, bool h, SCRef fl, int cn, ShaSet* s) {
+
+ #if QT_VERSION >= 0x060000
+- filter = QRegularExpression::fromWildcard(fl, Qt::CaseInsensitive);
++ filter = QRegularExpression::fromWildcard(fl, Qt::CaseInsensitive, QRegularExpression::UnanchoredWildcardConversion);
+ #else
+ filter = QRegExp(fl, Qt::CaseInsensitive, QRegExp::Wildcard);
+ #endif
diff --git a/gnu/packages/patches/qtbase-fix-thread-test.patch b/gnu/packages/patches/qtbase-fix-thread-test.patch
deleted file mode 100644
index d54386ccc7..0000000000
--- a/gnu/packages/patches/qtbase-fix-thread-test.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-From 2bce75a6b53cccbf9c813581b64eea87f3ab55fc Mon Sep 17 00:00:00 2001
-From: Thiago Macieira <thiago.macieira@intel.com>
-Date: Fri, 1 Nov 2024 11:59:10 -0700
-Subject: [PATCH] tst_QThread: improve test on multiple threads waiting on
- wait()
-
-Amends commit 5b5297fe87859f59a7aaf5e86a8915c00714fefa to make it more
-reliable against CI timeouts and flakiness. Now, we wait for the threads
-that are expected to timeout to actually timeout before releasing the
-target thread they were waiting on. It should be impossible now for this
-to go wrong. There should also be no problem of their handing off to a
-thread that will wait forever.
-
-I've added two more tests that could, possibly, have a problem in the
-CI: when timing-out threads hand off to a timed wait that is expected to
-succeed (the > 1s wait cases). Though this should be a rare occurrence,
-if ever: the target thread's runtime is the longest of the timing out
-threads' wait, plus 5 ms. That is 30 ms in the examples I wrote, so the
-additional extra time they're waiting on should be more than enough.
-
-An extra benefit is that this test now runs much faster, at 10 to 60 ms
-per test row, instead of 800 ms previously. The drawback is that a
-failure condition is likely going to be noticed by the QSemaphores
-deadlocking.
-
-Change-Id: I360d7e9c7accc1216291fffd743c88a362cf66ac
-Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
----
- .../corelib/thread/qthread/tst_qthread.cpp | 63 +++++++++++++------
- 1 file changed, 43 insertions(+), 20 deletions(-)
-
-diff --git a/tests/auto/corelib/thread/qthread/tst_qthread.cpp b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
-index 99602098fac..beb843b0d8c 100644
---- a/tests/auto/corelib/thread/qthread/tst_qthread.cpp
-+++ b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
-@@ -36,6 +36,8 @@
- #include <exception>
- #endif
-
-+#include <thread>
-+
- #include <QtTest/private/qemulationdetector_p.h>
-
- using namespace std::chrono_literals;
-@@ -1226,21 +1228,28 @@ void tst_QThread::multiThreadWait_data()
- // this is probably too fast and the Forever gets in too quickly
- addRow(0, -1);
-
-- addRow(100, -1);
-- addRow(100, 200, -1);
-- addRow(200, 100, -1);
-- addRow(-1, 100, 100, 100);
-+ // any time below 100ms (see below) is expected to timeout
-+ addRow(25, -1);
-+ addRow(25, 50, -1);
-+ addRow(50, 25, -1);
-+ addRow(-1, 25, 25, 25);
-+ addRow(25, 2000);
-+ addRow(25, 2000, 25, -1);
- }
-
- void tst_QThread::multiThreadWait()
- {
-+ static constexpr auto TimeoutThreshold = 100ms;
-+ auto isExpectedToTimeout = [](unsigned value) {
-+ return value < TimeoutThreshold.count();
-+ };
-+
- class TargetThread : public QThread {
- public:
- QSemaphore sync;
- void run() override
- {
- sync.acquire();
-- msleep(Waiting_Thread::WaitTime);
- }
- };
-
-@@ -1265,43 +1274,57 @@ void tst_QThread::multiThreadWait()
- QFETCH(QList<int>, deadlines);
- TargetThread target;
- target.start();
-+ QElapsedTimer elapsedTimer;
-+ elapsedTimer.start();
-
-- QSemaphore startSema, endSema;
-+ // we use a QSemaphore to wait on the WaiterThread::run() instead of
-+ // QThread::wait() so it's easier to debug when the latter has a problem
-+ QSemaphore startSema, timeoutSema, successSema;
- std::array<std::unique_ptr<WaiterThread>, 5> threads; // 5 threads is enough
-+ int expectedTimeoutCount = 0;
- for (int i = 0; i < deadlines.size(); ++i) {
- threads[i] = std::make_unique<WaiterThread>();
- threads[i]->startSema = &startSema;
-- threads[i]->endSema = &endSema;
-+ if (isExpectedToTimeout(deadlines.at(i))) {
-+ ++expectedTimeoutCount;
-+ threads[i]->endSema = &timeoutSema;
-+ } else {
-+ threads[i]->endSema = &successSema;
-+ }
- threads[i]->target = &target;
- threads[i]->deadline = QDeadlineTimer(deadlines.at(i));
- threads[i]->start();
- }
-
-- // release the waiting threads first, then the target thread they're waiting on
-+ // release the waiting threads first, so they begin waiting
- startSema.release(deadlines.size());
-- target.sync.release();
-
-- // wait for our waiting threads on a semaphore instead of QThread::wait()
-- // to make debugging easier
-- QVERIFY(endSema.tryAcquire(deadlines.size(), QDeadlineTimer::Forever));
-+ // then wait for the threads that are expected to timeout to do so
-+ QVERIFY(timeoutSema.tryAcquire(expectedTimeoutCount, QDeadlineTimer::Forever));
-+
-+ // compute the elapsed time for timing comparisons
-+ std::this_thread::sleep_for(5ms); // short, but long enough to avoid rounding errors
-+ auto elapsed = elapsedTimer.durationElapsed();
-+ std::this_thread::sleep_for(5ms);
-+
-+ // cause the target thread to exit, so the successful threads do succeed
-+ target.sync.release();
-+ int expectedSuccessCount = deadlines.size() - expectedTimeoutCount;
-+ QVERIFY(successSema.tryAcquire(expectedSuccessCount, QDeadlineTimer::Forever));
-
- // wait for all the threads to end, before QVERIFY/QCOMPAREs
- for (int i = 0; i < deadlines.size(); ++i)
- threads[i]->wait();
- target.wait();
-
-- std::chrono::milliseconds expectedDuration{Waiting_Thread::WaitTime};
- for (int i = 0; i < deadlines.size(); ++i) {
- auto printI = qScopeGuard([i] { qWarning("i = %i", i); });
-- if (unsigned(deadlines.at(i)) < Waiting_Thread::WaitTime / 2) {
-+ if (isExpectedToTimeout(deadlines.at(i))) {
-+ QCOMPARE_LT(threads[i]->waitedDuration, elapsed);
- QCOMPARE(threads[i]->result, false);
-- QCOMPARE_LT(threads[i]->waitedDuration, expectedDuration);
-- } else if (unsigned(deadlines.at(i)) > Waiting_Thread::WaitTime * 3 / 2) {
-- QCOMPARE(threads[i]->result, true);
-- QCOMPARE_GE(threads[i]->waitedDuration, expectedDuration);
- } else {
-- qWarning("Wait time %i (index %i) is too close to the target time; test would be flaky",
-- deadlines.at(i), i);
-+ QCOMPARE_GE(threads[i]->waitedDuration, elapsed);
-+ QCOMPARE(threads[i]->result, true);
- }
- printI.dismiss();
- threads[i].reset();
---
-2.50.1
-
diff --git a/gnu/packages/patches/qtwebengine-fix-dependencies.patch b/gnu/packages/patches/qtwebengine-fix-dependencies.patch
new file mode 100644
index 0000000000..2a64981b50
--- /dev/null
+++ b/gnu/packages/patches/qtwebengine-fix-dependencies.patch
@@ -0,0 +1,25 @@
+From 224ec4e3a9f6ed91afe36837b5ea6ec1f5098d55 Mon Sep 17 00:00:00 2001
+From: Moss Heim <moss.heim@qt.io>
+Date: Mon, 08 Sep 2025 15:12:59 +0200
+Subject: [PATCH] Fix deps for components/autofill/core/browser
+
+We were missing two generated header dependencies.
+
+Pick-to: 130-based
+Fixes: QTBUG-139959
+Change-Id: Ie6d78a1d6f097443f238d78e29885cc76587f85b
+---
+
+diff --git a/src/3rdparty/chromium/components/autofill/core/browser/BUILD.gn b/src/3rdparty/chromium/components/autofill/core/browser/BUILD.gn
+index 67dcc95..e0739db 100644
+--- a/src/3rdparty/chromium/components/autofill/core/browser/BUILD.gn
++++ b/src/3rdparty/chromium/components/autofill/core/browser/BUILD.gn
+@@ -948,6 +948,8 @@
+ public_deps = [
+ "//components/autofill/core/browser/proto",
+ "//components/autofill/core/common",
++ "//components/resources:components_scaled_resources",
++ "//components/strings:components_strings",
+ "//components/autofill/core/common/mojom:mojo_types",
+ "//third_party/abseil-cpp:absl",
+ "//ui/base",
diff --git a/gnu/packages/patches/qtwebengine-fix-system-libvpx.patch b/gnu/packages/patches/qtwebengine-fix-system-libvpx.patch
deleted file mode 100644
index c102fee01e..0000000000
--- a/gnu/packages/patches/qtwebengine-fix-system-libvpx.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From c4aa5cc8c87f301a7c3b208fb017468a88836d42 Mon Sep 17 00:00:00 2001
-From: Martin Negyokru <negyokru@inf.u-szeged.hu>
-Date: Fri, 17 Jan 2025 15:55:25 +0100
-Subject: [PATCH] Fix building with system libvpx
-
-Disable code path which depends on internal api.
-According to the upstream change it is only needed
-for logging. See https://crrev.com/c/chromium/src/+/5116580
-
-Fixes: QTBUG-129955
-Change-Id: I5f396fcd8b22402af71a9e557f9f2f7f177a8114
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/617894
-Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-Reviewed-by: Moss Heim <moss.heim@qt.io>
-(cherry picked from commit 30e6fccd654e43b016637d25466b00d3897da0f9)
-Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/621129
-Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
----
-
-diff --git a/src/3rdparty/chromium/media/base/libvpx_thread_wrapper.cc b/src/3rdparty/chromium/media/base/libvpx_thread_wrapper.cc
-index 5566c8e..4821c0c 100644
---- a/src/3rdparty/chromium/media/base/libvpx_thread_wrapper.cc
-+++ b/src/3rdparty/chromium/media/base/libvpx_thread_wrapper.cc
-@@ -5,11 +5,14 @@
- #include "media/base/libvpx_thread_wrapper.h"
-
- #include "media/base/codec_worker_impl.h"
-+#if !BUILDFLAG(IS_QTWEBENGINE) || !defined(USE_SYSTEM_LIBVPX)
- #include "third_party/libvpx/source/libvpx/vpx_util/vpx_thread.h"
-+#endif
-
- namespace media {
-
- void InitLibVpxThreadWrapper() {
-+#if !BUILDFLAG(IS_QTWEBENGINE) || !defined(USE_SYSTEM_LIBVPX)
- const VPxWorkerInterface interface =
- CodecWorkerImpl<VPxWorkerInterface, VPxWorkerImpl, VPxWorker,
- VPxWorkerStatus, VPX_WORKER_STATUS_NOT_OK,
-@@ -17,6 +20,7 @@
- VPX_WORKER_STATUS_WORKING>::GetCodecWorkerInterface();
-
- CHECK(vpx_set_worker_interface(&interface));
-+#endif
- }
-
- } // namespace media
-diff --git a/src/3rdparty/chromium/third_party/libvpx/BUILD.gn b/src/3rdparty/chromium/third_party/libvpx/BUILD.gn
-index 6aedb08..2933bf4 100644
---- a/src/3rdparty/chromium/third_party/libvpx/BUILD.gn
-+++ b/src/3rdparty/chromium/third_party/libvpx/BUILD.gn
-@@ -634,6 +634,7 @@
- if (use_system_libvpx) {
- pkg_config("system_libvpx") {
- packages = [ "vpx" ]
-+ defines = ["USE_SYSTEM_LIBVPX=true"]
- }
- }
-
diff --git a/gnu/packages/patches/qtwebsockets-6.9-fix-tst_QWebSocket.patch b/gnu/packages/patches/qtwebsockets-6.9-fix-tst_QWebSocket.patch
new file mode 100644
index 0000000000..008f99aedb
--- /dev/null
+++ b/gnu/packages/patches/qtwebsockets-6.9-fix-tst_QWebSocket.patch
@@ -0,0 +1,40 @@
+from https://codereview.qt-project.org/c/qt/qtwebsockets/+/639623
+
+From 0c0f476150e501f311d054c67426b4d2304d2cbd Mon Sep 17 00:00:00 2001
+From: Timur Pocheptsov <timur.pocheptsov@qt.io>
+Date: Mon, 14 Apr 2025 14:22:51 +0200
+Subject: [PATCH] QWebSocketPrivate: disconnect/reconnect from/to destroyed
+
+QWebSocket connects to signals of its internal 'tcp socket', including
+the 'destroyed' signal to handle destruction of the socket.
+Then it disconnects from these signals at a few points, including when
+creating a new socket, by using a wildcard disconnect.
+
+Since a79d5b8d0856, a recent change in qtbase, disconnecting from
+the 'destroyed' signal using a wildcard disconnect prints a warning.
+Since this was our intended behavior we now disconnect it separately to
+be explicit and to avoid the warning.
+
+Fixes: QTBUG-135959
+Change-Id: I5bd13b1635d504feace76d201fdb6db65454ddf2
+Reviewed-by: Mate Barany <mate.barany@qt.io>
+---
+
+diff --git a/src/websockets/qwebsocket_p.cpp b/src/websockets/qwebsocket_p.cpp
+index a0ca7e0..b6a966d 100644
+--- a/src/websockets/qwebsocket_p.cpp
++++ b/src/websockets/qwebsocket_p.cpp
+@@ -717,8 +717,12 @@
+ */
+ void QWebSocketPrivate::releaseConnections(const QTcpSocket *pTcpSocket)
+ {
+- if (Q_LIKELY(pTcpSocket))
++ if (Q_LIKELY(pTcpSocket)) {
++ // Explicitly disconnect this signal to avoid warning being printed about a destroyed-signal
++ // being disconnected with the wildcard disconnect below
++ disconnect(pTcpSocket, &QObject::destroyed, this, &QWebSocketPrivate::socketDestroyed);
+ pTcpSocket->disconnect();
++ }
+ m_dataProcessor->disconnect();
+ }
+
diff --git a/gnu/packages/patches/qucs-s-qucsator-rf-search.patch b/gnu/packages/patches/qucs-s-qucsator-rf-search.patch
deleted file mode 100644
index c44036d9d1..0000000000
--- a/gnu/packages/patches/qucs-s-qucsator-rf-search.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From eb3aad2452ea6a69c22e25182fdaf5b98549758f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Muhammet=20=C5=9E=C3=BCkr=C3=BC=20Demir?=
- <41967334+dsm@users.noreply.github.com>
-Date: Sat, 7 Dec 2024 20:08:02 +0300
-Subject: [PATCH] fix ngspice and qucsator_rf path search.
-
----
- qucs/main.cpp | 8 +++---
- qucs/qucs.cpp | 75 ++++++++++++++++++++++++++++++++-------------------
- 2 files changed, 52 insertions(+), 31 deletions(-)
-
-diff --git a/qucs/main.cpp b/qucs/main.cpp
-index 287cd5b83..a015a7687 100644
---- a/qucs/main.cpp
-+++ b/qucs/main.cpp
-@@ -106,12 +106,12 @@ bool loadSettings()
- QFileInfo inf(QucsSettings.Qucsator);
- QucsSettings.QucsatorDir = inf.canonicalPath() + QDir::separator();
- if (QucsSettings.Qucsconv.isEmpty())
-- QucsSettings.Qucsconv = QucsSettings.QucsatorDir + QDir::separator() + "qucsconv_rf" + executableSuffix;
-+ QucsSettings.Qucsconv = QStandardPaths::findExecutable("qucsconv_rf",{QucsSettings.QucsatorDir});
- } else {
-- QucsSettings.Qucsator = QucsSettings.BinDir + "qucsator_rf" + executableSuffix;
-+ QucsSettings.Qucsator = QStandardPaths::findExecutable("qucsator_rf",{QucsSettings.BinDir});
- QucsSettings.QucsatorDir = QucsSettings.BinDir;
- if (QucsSettings.Qucsconv.isEmpty())
-- QucsSettings.Qucsconv = QucsSettings.BinDir + "qucsconv_rf" + executableSuffix;
-+ QucsSettings.Qucsconv = QStandardPaths::findExecutable("qucsconv_rf",{QucsSettings.BinDir});
- }
-
- QucsSettings.AdmsXmlBinDir.setPath(_settings::Get().item<QString>("AdmsXmlBinDir"));
-@@ -798,7 +798,7 @@ int main(int argc, char *argv[])
- QucsDir.cdUp();
- #endif
-
-- QucsSettings.BinDir = QucsDir.absolutePath() + "/bin/";
-+ QucsSettings.BinDir = QucsApplicationPath.contains("bin") ? QucsApplicationPath : QucsDir.absoluteFilePath("bin");
- QucsSettings.LangDir = QucsDir.canonicalPath() + "/share/" QUCS_NAME "/lang/";
-
- QucsSettings.LibDir = QucsDir.canonicalPath() + "/share/" QUCS_NAME "/library/";
-diff --git a/qucs/qucs.cpp b/qucs/qucs.cpp
-index 07d0eb4f4..e78479b53 100644
---- a/qucs/qucs.cpp
-+++ b/qucs/qucs.cpp
-@@ -156,8 +156,8 @@ QucsApp::QucsApp()
-
- select->setChecked(true); // switch on the 'select' action
- switchSchematicDoc(true); // "untitled" document is schematic
--
-- lastExportFilename = QDir::homePath() + QDir::separator() + "export.png";
-+ QDir homeDir = QDir::homePath();
-+ lastExportFilename = homeDir.absoluteFilePath("export.png");
-
- // load documents given as command line arguments
- for(int z=1; z<qApp->arguments().size(); z++) {
-@@ -172,42 +172,54 @@ QucsApp::QucsApp()
- }
- }
-
-+ QDir QucsBinDir(QucsSettings.BinDir);
- if (QucsSettings.firstRun) { // try to find Ngspice
-+ QString ngspice_exe_name = "ngspice";
- #ifdef Q_OS_WIN
-- QString ngspice_exe1 = QucsSettings.BinDir + QDir::separator() + "ngspice_con.exe";
-- QString ngspice_exe2 = "C:\\Spice64\\bin\\ngspice_con.exe";
-- QString qucsator_exe = QucsSettings.BinDir + QDir::separator() + "qucsator_rf.exe";
--#else
-- QString ngspice_exe1 = QucsSettings.BinDir + QDir::separator() + "ngspice";
-- QString qucsator_exe = QucsSettings.BinDir + QDir::separator() + "qucsator_rf";
-+ ngspice_exe_name+="_con";
- #endif
-+ /* search own path */
-+ QString ngspice_exe1 = QStandardPaths::findExecutable(ngspice_exe_name,{QucsBinDir.absolutePath()});
-+ /* search system path */
-+ QString ngspice_exe2 = QStandardPaths::findExecutable(ngspice_exe_name);
-+
-+ /* search own path */
-+ QString qucsator_exe1 = QStandardPaths::findExecutable("qucsator_rf",{QucsBinDir.absolutePath()});
-+ /* search system path */
-+ QString qucsator_exe2 = QStandardPaths::findExecutable("qucsator_rf");
-+
- QString ngspice_exe;
- bool ngspice_found = false;
-- if (QFile::exists(ngspice_exe1)) {
-+ if(!ngspice_exe1.isEmpty()){
- ngspice_found = true;
- ngspice_exe = ngspice_exe1;
-+ }else if(!ngspice_exe2.isEmpty()){
-+ ngspice_found = true;
-+ ngspice_exe = ngspice_exe2;
- }
-+
-+ QString qucsator_exe;
- bool qucsator_found = false;
-- if (QFile::exists(qucsator_exe)) {
-+ if(!qucsator_exe1.isEmpty()){
- qucsator_found = true;
-- QucsSettings.Qucsator = qucsator_exe;
-- }
--#ifdef Q_OS_WIN
-- if (!ngspice_found && QFile::exists(ngspice_exe2)) {
-- ngspice_found = true;
-- ngspice_exe = ngspice_exe2;
-+ qucsator_exe = qucsator_exe1;
-+ }else if(!qucsator_exe2.isEmpty()){
-+ qucsator_found = true;
-+ qucsator_exe = qucsator_exe2;
- }
--#endif
-- ngspice_exe = QDir::toNativeSeparators(ngspice_exe);
-+
- QString info_string;
- if (ngspice_found) {
-- QucsSettings.DefaultSimulator = spicecompat::simNgspice;
-+ QucsSettings.DefaultSimulator = spicecompat::simNgspice;
- QucsSettings.NgspiceExecutable = ngspice_exe;
- info_string += tr("Ngspice found at: ") + ngspice_exe + "\n";
- }
-- if (qucsator_found) {
-+
-+ if(qucsator_found){
-+ QucsSettings.Qucsator = qucsator_exe;
- info_string += tr("QucsatorRF found at: ") + qucsator_exe + "\n";
- }
-+
- info_string += tr("\nYou can specify another location later"
- " using Simulation->Simulators Setings\n");
- if (!ngspice_found && qucsator_found) {
-@@ -220,18 +232,27 @@ QucsApp::QucsApp()
- QMessageBox::information(nullptr,tr("Set simulator"), info_string);
- fillSimulatorsComboBox();
- } else {
-+#ifdef Q_OS_WIN
-+ QucsSettings.NgspiceExecutable = "ngspice_con.exe";
-+ QucsSettings.Qucsator = "qucsator_rf.exe";
-+#else
-+ QucsSettings.NgspiceExecutable = "ngspice";
-+ QucsSettings.Qucsator = "qucsator_rf";
-+#endif
- QMessageBox::information(this,tr("Qucs"),tr("No simulators found automatically. Please specify simulators"
- " in the next dialog window."));
- slotSimSettings();
- }
- QucsSettings.firstRun = false;
-- } else if (!QFile::exists(QucsSettings.Qucsator)) {
-- QucsSettings.Qucsator = QucsSettings.BinDir + QDir::separator() + "qucsator_rf";
--#ifdef Q_OS_WIN
-- QucsSettings.Qucsator += ".exe";
--#endif
-- QMessageBox::information(this, "Qucs",
-- tr("QucsatorRF found at: ") + QucsSettings.Qucsator + "\n");
-+ } else {
-+ if (!QucsSettings.Qucsator.contains("qucsator_rf")) {
-+ QucsSettings.Qucsator = QStandardPaths::findExecutable("qucsator_rf",{QucsBinDir.absolutePath()});
-+
-+ if(!QucsSettings.Qucsator.isEmpty()){
-+ QMessageBox::information(this, "Qucs",
-+ tr("QucsatorRF found at: ") + QucsSettings.Qucsator + "\n");
-+ }
-+ }
- }
-
- // fillLibrariesTreeView();
diff --git a/gnu/packages/patches/raptor2-libxml2.patch b/gnu/packages/patches/raptor2-libxml2.patch
new file mode 100644
index 0000000000..605301ca0f
--- /dev/null
+++ b/gnu/packages/patches/raptor2-libxml2.patch
@@ -0,0 +1,30 @@
+https://bugs.gentoo.org/906227
+https://github.com/dajobe/raptor/issues/59
+https://github.com/dajobe/raptor/pull/58
+
+From 4dbc4c1da2a033c497d84a1291c46f416a9cac51 Mon Sep 17 00:00:00 2001
+From: David Anes <david.anes@suse.com>
+Date: Thu, 4 May 2023 11:54:02 +0200
+Subject: [PATCH] Remove the access to entities 'checked' private symbol for
+ libxml2 2.11.0
+
+Since version 2.11.0, some private symbols that were never intended
+as public API/ABI have been removed from libxml2, therefore the field
+'checked' is no longer present and raptor fails to build in this
+scenario.
+--- a/src/raptor_libxml.c
++++ b/src/raptor_libxml.c
+@@ -246,10 +246,11 @@ raptor_libxml_getEntity(void* user_data, const xmlChar *name)
+
+ ret->owner = 1;
+
+-#if LIBXML_VERSION >= 20627
++#if LIBXML_VERSION >= 20627 && LIBXML_VERSION < 21100
+ /* Checked field was released in 2.6.27 on 2006-10-25
+ * http://git.gnome.org/browse/libxml2/commit/?id=a37a6ad91a61d168ecc4b29263def3363fff4da6
+ *
++ * and was later removed in version 2.11.0
+ */
+
+ /* Mark this entity as having been checked - never do this again */
+
diff --git a/gnu/packages/patches/re2c-Use-maximum-alignment.patch b/gnu/packages/patches/re2c-Use-maximum-alignment.patch
new file mode 100644
index 0000000000..6d5b95354f
--- /dev/null
+++ b/gnu/packages/patches/re2c-Use-maximum-alignment.patch
@@ -0,0 +1,48 @@
+https://github.com/skvadrik/re2c/pull/555
+
+From 44125b74628d17f0a0a6cf9b51dd1f24169cd2d5 Mon Sep 17 00:00:00 2001
+From: Alexey Abramov <levenson@mmer.org>
+Date: Fri, 22 Aug 2025 08:10:08 +0200
+Subject: [PATCH] Use maximum alignment to ensure compatibility across all
+ architectures.
+
+---
+ src/util/allocator.h | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/src/util/allocator.h b/src/util/allocator.h
+index e6c85585b..56daf056f 100644
+--- a/src/util/allocator.h
++++ b/src/util/allocator.h
+@@ -3,6 +3,7 @@
+
+ #include <stdint.h>
+ #include <stdlib.h>
++#include <stddef.h>
+ #include <algorithm>
+ #include <vector>
+
+@@ -78,11 +79,16 @@ class slab_allocator_t {
+ };
+
+ // Use maximum alignment.
++// Use alignment based on pointer size: 32-bit platforms need stronger alignment
++// for 64-bit types (double, long long), while 64-bit platforms are already
++// sufficiently aligned with pointer-sized alignment.
++constexpr size_t ALLOCATOR_ALIGNMENT = (sizeof(void*) == 4) ? alignof(max_align_t) : sizeof(void*);
++
+ // Use different types to prevent accidentally mixing allocators for data with different life spans.
+-using AstAllocator = slab_allocator_t<AllocatorKind::AST, 16 * 4096, sizeof(void*)>;
+-using IrAllocator = slab_allocator_t<AllocatorKind::IR, 16 * 4096, sizeof(void*)>;
+-using DfaAllocator = slab_allocator_t<AllocatorKind::DFA, 16 * 4096, sizeof(void*)>;
+-using OutAllocator = slab_allocator_t<AllocatorKind::OUT, 16 * 4096, sizeof(void*)>;
++using AstAllocator = slab_allocator_t<AllocatorKind::AST, 16 * 4096, ALLOCATOR_ALIGNMENT>;
++using IrAllocator = slab_allocator_t<AllocatorKind::IR, 16 * 4096, ALLOCATOR_ALIGNMENT>;
++using DfaAllocator = slab_allocator_t<AllocatorKind::DFA, 16 * 4096, ALLOCATOR_ALIGNMENT>;
++using OutAllocator = slab_allocator_t<AllocatorKind::OUT, 16 * 4096, ALLOCATOR_ALIGNMENT>;
+
+ } // namespace re2c
+
+--
+2.50.1
+
diff --git a/gnu/packages/patches/readymedia-ffmpeg7.patch b/gnu/packages/patches/readymedia-ffmpeg7.patch
new file mode 100644
index 0000000000..e1c9593e27
--- /dev/null
+++ b/gnu/packages/patches/readymedia-ffmpeg7.patch
@@ -0,0 +1,15 @@
+https://gitlab.archlinux.org/archlinux/packaging/packages/minidlna/-/raw/affcf0dd1e6f8e33d0ba90b2b0733736fa1aeb71/ffmpeg7.patch
+
+diff --git a/libav.h b/libav.h
+index b69752c..aed9d18 100644
+--- a/libav.h
++++ b/libav.h
+@@ -174,7 +174,7 @@ lav_get_interlaced(AVStream *s)
+ #define lav_codec_tag(s) s->codecpar->codec_tag
+ #define lav_sample_rate(s) s->codecpar->sample_rate
+ #define lav_bit_rate(s) s->codecpar->bit_rate
+-#define lav_channels(s) s->codecpar->channels
++#define lav_channels(s) s->codecpar->ch_layout.nb_channels
+ #define lav_width(s) s->codecpar->width
+ #define lav_height(s) s->codecpar->height
+ #define lav_profile(s) s->codecpar->profile
diff --git a/gnu/packages/patches/rtosc-0.3.1-fix-invalid-comparison-operator.patch b/gnu/packages/patches/rtosc-0.3.1-fix-invalid-comparison-operator.patch
new file mode 100644
index 0000000000..71de88f9a4
--- /dev/null
+++ b/gnu/packages/patches/rtosc-0.3.1-fix-invalid-comparison-operator.patch
@@ -0,0 +1,14 @@
+This patch fixes the unknown version comparison operator
+
+diff --git a/librtosc-cpp.pc.cmake b/librtosc-cpp.pc.cmake
+index 0d8fda2..edbcb3a 100644
+--- a/librtosc-cpp.pc.cmake
++++ b/librtosc-cpp.pc.cmake
+@@ -9,6 +9,6 @@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
+ Name: rtosc_cpp
+ Description: rtosc_cpp - a realtime safe open sound control serialization and dispatch system for C++
+ Version: @VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@
+-Requires: librtosc == @VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@
++Requires: librtosc = @VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@
+ Libs: -L${libdir} -lrtosc -lrtosc-cpp
+ Cflags: -I${includedir} \ No newline at end of file
diff --git a/gnu/packages/patches/ruby-nokogiri.patch b/gnu/packages/patches/ruby-nokogiri.patch
deleted file mode 100644
index 957d56eede..0000000000
--- a/gnu/packages/patches/ruby-nokogiri.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Description: Removed some unnecessary test setup such as SimpleCov.
-diff --git a/test/helper.rb b/test/helper.rb
-index c84c6f06..9f8022c0 100644
---- a/test/helper.rb
-+++ b/test/helper.rb
-@@ -12,14 +12,6 @@
- # - NOKOGIRI_MEMORY_SUITE: read more in test/test_memory_usage.rb
- #
-
--unless ENV["RUBY_MEMCHECK_RUNNING"]
-- require "simplecov"
-- SimpleCov.start do
-- add_filter "/test/"
-- enable_coverage :branch
-- end
--end
--
- $VERBOSE = true
-
- require "fileutils"
diff --git a/gnu/packages/patches/rust-ndarray-0.13-remove-blas-src.patch b/gnu/packages/patches/rust-ndarray-0.13-remove-blas-src.patch
deleted file mode 100644
index 936c099ce4..0000000000
--- a/gnu/packages/patches/rust-ndarray-0.13-remove-blas-src.patch
+++ /dev/null
@@ -1,28 +0,0 @@
- Cargo.toml | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
-
-diff --git a/Cargo.toml b/Cargo.toml
-index 1f3e1b6..36bc816 100644
---- a/Cargo.toml
-+++ b/Cargo.toml
-@@ -43,11 +43,6 @@
- version = "0.3.2"
- optional = true
-
--[dependencies.blas-src]
--version = "0.2.0"
--optional = true
--default-features = false
--
- [dependencies.cblas-sys]
- version = "0.1.4"
- optional = true
-@@ -91,7 +86,7 @@
- default-features = false
-
- [features]
--blas = ["cblas-sys", "blas-src"]
-+blas = ["cblas-sys"]
- docs = ["approx", "serde", "rayon"]
- serde-1 = ["serde"]
- test = ["test-blas-openblas-sys"]
diff --git a/gnu/packages/patches/rust-ndarray-0.14-remove-blas-src.patch b/gnu/packages/patches/rust-ndarray-0.14-remove-blas-src.patch
deleted file mode 100644
index 7f100d04bd..0000000000
--- a/gnu/packages/patches/rust-ndarray-0.14-remove-blas-src.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff --git a/Cargo.toml b/Cargo.toml
-index 57924f1..0c59727 100644
---- a/Cargo.toml
-+++ b/Cargo.toml
-@@ -43,11 +43,6 @@ bench = false
- version = "0.4"
- optional = true
-
--[dependencies.blas-src]
--version = "0.6.1"
--optional = true
--default-features = false
--
- [dependencies.cblas-sys]
- version = "0.1.4"
- optional = true
-@@ -92,7 +87,7 @@ version = "0.9"
- default-features = false
-
- [features]
--blas = ["cblas-sys", "blas-src"]
-+blas = ["cblas-sys"]
- docs = ["approx", "serde", "rayon"]
- serde-1 = ["serde"]
- test = ["test-blas-openblas-sys"]
diff --git a/gnu/packages/patches/rust-ndarray-remove-blas-src-dep.patch b/gnu/packages/patches/rust-ndarray-remove-blas-src-dep.patch
deleted file mode 100644
index 7221fdd608..0000000000
--- a/gnu/packages/patches/rust-ndarray-remove-blas-src-dep.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From ed09f3c91e915c3b436854a7936566edceb3e8de Mon Sep 17 00:00:00 2001
-From: Efraim Flashner <efraim@flashner.co.il>
-Date: Tue, 15 Dec 2020 10:09:45 +0200
-Subject: [PATCH] remove blas-src dependency
-
----
- Cargo.toml | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
-
-diff --git a/Cargo.toml b/Cargo.toml
-index 1f3e1b6..36bc816 100644
---- a/Cargo.toml
-+++ b/Cargo.toml
-@@ -37,10 +37,6 @@ debug = true
- name = "ndarray"
- test = true
- bench = false
--[dependencies.blas-src]
--version = "0.2.0"
--optional = true
--default-features = false
-
- [dependencies.cblas-sys]
- version = "0.1.4"
-@@ -78,7 +74,7 @@ default-features = false
- version = "0.1"
-
- [features]
--blas = ["cblas-sys", "blas-src"]
-+blas = ["cblas-sys"]
- docs = ["rustc-serialize", "serde-1"]
- serde-1 = ["serde"]
- test = ["test-blas-openblas-sys"]
---
-2.29.2
-
diff --git a/gnu/packages/patches/rust-nettle-disable-vendor.patch b/gnu/packages/patches/rust-nettle-disable-vendor.patch
deleted file mode 100644
index 5b52821cdb..0000000000
--- a/gnu/packages/patches/rust-nettle-disable-vendor.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Subject: nettle: clear out "vendored" feature cruft from build.rs
-From: Daniel Kahn Gillmor's avatarDaniel Kahn Gillmor <dkg@fifthhorseman.net>
-
-https://salsa.debian.org/rust-team/debcargo-conf/-/commit/b608e6beaa1d38c14fc16ad53780d94954a91900
-https://sources.debian.org/src/rust-nettle/7.0.0-1/debian/patches/disable-vendor.diff/
---- a/Cargo.toml 1969-12-31 19:00:00.000000000 -0500
-+++ b/Cargo.toml 2019-10-23 19:12:01.076181971 -0400
-@@ -35,4 +35,4 @@
- version = "1"
-
- [features]
--vendored = ["nettle-sys/vendored"]
-+vendored = []
diff --git a/gnu/packages/patches/rust-onenote-parser-for-clamav-deps.patch b/gnu/packages/patches/rust-onenote-parser-for-clamav-deps.patch
deleted file mode 100644
index 24d5692573..0000000000
--- a/gnu/packages/patches/rust-onenote-parser-for-clamav-deps.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From f940d8c8fa087554583158d50df071af89c516db Mon Sep 17 00:00:00 2001
-From: Simon Lamon <32477463+silamon@users.noreply.github.com>
-Date: Sat, 19 Nov 2022 20:32:07 +0100
-Subject: [PATCH] chore: upgrade dependencies (#9)
-
-Co-authored-by: Markus Siemens <markus@m-siemens.de>
----
- Cargo.toml.orig | 8 ++++----
- src/errors.rs | 6 +++---
- src/reader.rs | 2 +-
- src/utils.rs | 5 ++---
- 4 files changed, 10 insertions(+), 11 deletions(-)
-
-diff --git a/Cargo.toml.orig b/Cargo.toml.orig
-index 9afddd0..e302436 100644
---- a/Cargo.toml.orig
-+++ b/Cargo.toml.orig
-@@ -14,15 +14,15 @@ categories = ["parser-implementations"]
- backtrace = []
-
- [dependencies]
--bytes = "0.5"
-+bytes = "1.2.0"
- encoding_rs = "0.8.31"
- enum-primitive-derive = "0.2.2"
--itertools = "0.9.0"
-+itertools = "0.10.3"
- num-traits = "0.2"
- paste = "1.0"
- thiserror = "1.0"
--uuid = "0.8"
--widestring = "0.4.3"
-+uuid = "1.1.2"
-+widestring = "1.0.2"
-
- [dev-dependencies]
- insta = "1.21.1"
-diff --git a/src/errors.rs b/src/errors.rs
-index 91477b3..50079a3 100644
---- a/src/errors.rs
-+++ b/src/errors.rs
-@@ -51,8 +51,8 @@ impl From<std::string::FromUtf16Error> for Error {
- }
- }
-
--impl From<widestring::MissingNulError<u16>> for Error {
-- fn from(err: widestring::MissingNulError<u16>) -> Self {
-+impl From<widestring::error::MissingNulTerminator> for Error {
-+ fn from(err: widestring::error::MissingNulTerminator) -> Self {
- ErrorKind::from(err).into()
- }
- }
-@@ -128,6 +128,6 @@ pub enum ErrorKind {
- #[error("UTF-16 string is missing null terminator: {err}")]
- Utf16MissingNull {
- #[from]
-- err: widestring::MissingNulError<u16>,
-+ err: widestring::error::MissingNulTerminator,
- },
- }
-diff --git a/src/reader.rs b/src/reader.rs
-index 64730d0..318c280 100644
---- a/src/reader.rs
-+++ b/src/reader.rs
-@@ -40,7 +40,7 @@ impl<'a> Reader<'a> {
- }
-
- pub(crate) fn bytes(&self) -> &[u8] {
-- self.0.bytes()
-+ self.0.chunk()
- }
-
- pub(crate) fn remaining(&self) -> usize {
-diff --git a/src/utils.rs b/src/utils.rs
-index fd77181..074ff50 100644
---- a/src/utils.rs
-+++ b/src/utils.rs
-@@ -12,8 +12,7 @@ impl Utf16ToString for &[u8] {
- .map(|v| u16::from_le_bytes([v[0], v[1]]))
- .collect();
-
-- let value = U16CString::from_vec_with_nul(data)?;
--
-- Ok(value.to_string()?)
-+ let value = U16CString::from_vec_truncate(data);
-+ Ok(value.to_string().unwrap())
- }
- }
diff --git a/gnu/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch b/gnu/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch
deleted file mode 100644
index 77adc550ca..0000000000
--- a/gnu/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 8b450447e58143004b68dd21c11b710fdb79be92 Mon Sep 17 00:00:00 2001
-From: Micah Snyder <micasnyd@cisco.com>
-Date: Mon, 3 Jul 2023 21:44:57 -0700
-Subject: [PATCH] Add ability to parse section from in memory buffer
-
-Resolves: https://github.com/msiemens/onenote.rs/issues/12
----
- src/onenote/mod.rs | 23 ++++++++++++++++++++++-
- 1 file changed, 22 insertions(+), 1 deletion(-)
-
-diff --git a/src/onenote/mod.rs b/src/onenote/mod.rs
-index de172c9..8bcb62b 100644
---- a/src/onenote/mod.rs
-+++ b/src/onenote/mod.rs
-@@ -6,8 +6,9 @@ use crate::onestore::parse_store;
- use crate::reader::Reader;
- use std::ffi::OsStr;
- use std::fs::File;
--use std::io::{BufReader, Read};
-+use std::io::{BufReader, Read, Cursor};
- use std::path::Path;
-+use std::str::FromStr;
-
- pub(crate) mod content;
- pub(crate) mod embedded_file;
-@@ -76,6 +77,26 @@ impl Parser {
- Ok(Notebook { entries: sections })
- }
-
-+ /// Parse a OneNote section buffer.
-+ ///
-+ /// The `data` argument must contain a OneNote section.
-+ pub fn parse_section_buffer(&mut self, data: &[u8], file_name: &Path) -> Result<Section> {
-+ let packaging = OneStorePackaging::parse(&mut Reader::new(data))?;
-+ let store = parse_store(&packaging)?;
-+
-+ if store.schema_guid() != guid!({1F937CB4-B26F-445F-B9F8-17E20160E461}) {
-+ return Err(ErrorKind::NotASectionFile {
-+ file: file_name.to_string_lossy().into_owned(),
-+ }
-+ .into());
-+ }
-+
-+ section::parse_section(
-+ store,
-+ file_name.to_string_lossy().into_owned(),
-+ )
-+ }
-+
- /// Parse a OneNote section file.
- ///
- /// The `path` argument must point to a `.one` file that contains a
diff --git a/gnu/packages/patches/rust-onenote-parser-for-clamav-property-type.patch b/gnu/packages/patches/rust-onenote-parser-for-clamav-property-type.patch
deleted file mode 100644
index ff94fa2630..0000000000
--- a/gnu/packages/patches/rust-onenote-parser-for-clamav-property-type.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 29c08532252b917543ff268284f926f30876bb79 Mon Sep 17 00:00:00 2001
-From: Matt Jolly <Matt.Jolly@footclan.ninja>
-Date: Mon, 24 Jun 2024 17:34:05 +1000
-Subject: [PATCH] PropertType: Specify type for custom discriminant values
-
-We use custom discriminant values for enum variants for "PropertType" without specifying the type.
-This causes it to default to "isize" which on 64bit platforms is big enough to hold the 32bit constants,
-but causes overflow when isize is 32bit.
-
-This issue was uncovered due to build failures on arm for Gentoo Linux as a dependency of ClamAV.
-
-Bug: https://bugs.gentoo.org/927214
-Signed-off-by: Matt Jolly <kangie@gentoo.org>
-Co-authored-by: Steven Newbury <steve@snewbury.org.uk>
----
- src/one/property/mod.rs | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/one/property/mod.rs b/src/one/property/mod.rs
-index 42841c6..fcc0481 100644
---- a/src/one/property/mod.rs
-+++ b/src/one/property/mod.rs
-@@ -23,6 +23,7 @@ mod references;
- pub(crate) mod simple;
- pub(crate) mod time;
-
-+#[repr(u32)]
- #[derive(Debug, Copy, Clone, PartialEq)]
- #[allow(dead_code)]
- #[allow(clippy::enum_clike_unportable_variant)]
diff --git a/gnu/packages/patches/rust-poem-1-fewer-deps.patch b/gnu/packages/patches/rust-poem-1-fewer-deps.patch
deleted file mode 100644
index b98947b407..0000000000
--- a/gnu/packages/patches/rust-poem-1-fewer-deps.patch
+++ /dev/null
@@ -1,229 +0,0 @@
-diff --git a/Cargo.toml b/Cargo.toml
-index 79b878c..95ec54c 100644
---- a/Cargo.toml
-+++ b/Cargo.toml
-@@ -71,26 +71,26 @@ features = ["clock"]
- optional = true
- default-features = false
-
--[dependencies.eyre06]
--version = "0.6"
--optional = true
--package = "eyre"
-+#[dependencies.eyre06]
-+#version = "0.6"
-+#optional = true
-+#package = "eyre"
-
--[dependencies.fluent]
--version = "0.16.0"
--optional = true
-+#[dependencies.fluent]
-+#version = "0.16.0"
-+#optional = true
-
--[dependencies.fluent-langneg]
--version = "0.13.0"
--optional = true
-+#[dependencies.fluent-langneg]
-+#version = "0.13.0"
-+#optional = true
-
--[dependencies.fluent-syntax]
--version = "0.11.0"
--optional = true
-+#[dependencies.fluent-syntax]
-+#version = "0.11.0"
-+#optional = true
-
--[dependencies.futures-util]
--version = "0.3.17"
--features = ["sink"]
-+#[dependencies.futures-util]
-+#version = "0.3.17"
-+#features = ["sink"]
-
- [dependencies.headers]
- version = "0.3.7"
-@@ -125,9 +125,9 @@ features = [
- optional = true
- default-features = false
-
--[dependencies.intl-memoizer]
--version = "0.5.1"
--optional = true
-+#[dependencies.intl-memoizer]
-+#version = "0.5.1"
-+#optional = true
-
- [dependencies.libcookie]
- version = "0.17"
-@@ -146,16 +146,16 @@ version = "0.4.1"
- optional = true
- package = "csrf"
-
--[dependencies.libopentelemetry]
--version = "0.21.0"
--features = ["metrics"]
--optional = true
--package = "opentelemetry"
-+#[dependencies.libopentelemetry]
-+#version = "0.21.0"
-+#features = ["metrics"]
-+#optional = true
-+#package = "opentelemetry"
-
--[dependencies.libprometheus]
--version = "0.13.0"
--optional = true
--package = "prometheus"
-+#[dependencies.libprometheus]
-+#version = "0.13.0"
-+#optional = true
-+#package = "prometheus"
-
- [dependencies.libtempfile]
- version = "3.2.0"
-@@ -178,17 +178,17 @@ optional = true
- version = "0.10.56"
- optional = true
-
--[dependencies.opentelemetry-http]
--version = "0.10.0"
--optional = true
-+#[dependencies.opentelemetry-http]
-+#version = "0.10.0"
-+#optional = true
-
--[dependencies.opentelemetry-prometheus]
--version = "0.14.0"
--optional = true
-+#[dependencies.opentelemetry-prometheus]
-+#version = "0.14.0"
-+#optional = true
-
--[dependencies.opentelemetry-semantic-conventions]
--version = "0.13.0"
--optional = true
-+#[dependencies.opentelemetry-semantic-conventions]
-+#version = "0.13.0"
-+#optional = true
-
- [dependencies.parking_lot]
- version = "0.12.0"
-@@ -219,14 +219,14 @@ optional = true
- version = "0.11.1"
- optional = true
-
--[dependencies.redis]
--version = "0.23.0"
--features = [
-- "aio",
-- "tokio-comp",
-- "connection-manager",
--]
--optional = true
-+#[dependencies.redis]
-+#version = "0.23.0"
-+#features = [
-+# "aio",
-+# "tokio-comp",
-+# "connection-manager",
-+#]
-+#optional = true
-
- [dependencies.regex]
- version = "1.5.5"
-@@ -263,9 +263,9 @@ optional = true
- [dependencies.smallvec]
- version = "1.6.1"
-
--[dependencies.sse-codec]
--version = "0.3.2"
--optional = true
-+#[dependencies.sse-codec]
-+#version = "0.3.2"
-+#optional = true
-
- [dependencies.thiserror]
- version = "1.0.30"
-@@ -323,10 +323,10 @@ default-features = false
- [dependencies.tracing]
- version = "0.1.36"
-
--[dependencies.unic-langid]
--version = "0.9.0"
--features = ["macros"]
--optional = true
-+#[dependencies.unic-langid]
-+#version = "0.9.0"
-+#features = ["macros"]
-+#optional = true
-
- [dependencies.wildmatch]
- version = "2"
-@@ -383,13 +383,13 @@ embed = [
- "hex",
- "mime_guess",
- ]
--i18n = [
-- "fluent",
-- "fluent-langneg",
-- "fluent-syntax",
-- "unic-langid",
-- "intl-memoizer",
--]
-+#i18n = [
-+# "fluent",
-+# "fluent-langneg",
-+# "fluent-syntax",
-+# "unic-langid",
-+# "intl-memoizer",
-+#]
- multipart = ["multer"]
- native-tls = [
- "server",
-@@ -400,20 +400,20 @@ openssl-tls = [
- "tokio-openssl",
- "openssl",
- ]
--opentelemetry = [
-- "libopentelemetry",
-- "opentelemetry-http",
-- "opentelemetry-semantic-conventions",
--]
--prometheus = [
-- "libopentelemetry",
-- "opentelemetry-prometheus",
-- "libprometheus",
--]
--redis-session = [
-- "session",
-- "redis",
--]
-+#opentelemetry = [
-+# "libopentelemetry",
-+# "opentelemetry-http",
-+# "opentelemetry-semantic-conventions",
-+#]
-+#prometheus = [
-+# "libopentelemetry",
-+# "opentelemetry-prometheus",
-+# "libprometheus",
-+#]
-+#redis-session = [
-+# "session",
-+# "redis",
-+#]
- rustls = [
- "server",
- "tokio-rustls",
-@@ -445,7 +445,7 @@ tempfile = [
- ]
- test = [
- "sse",
-- "sse-codec",
-+# "sse-codec",
- "tokio-util/compat",
- ]
- tower-compat = [
diff --git a/gnu/packages/patches/rust-rspec-1-remove-clippy.patch b/gnu/packages/patches/rust-rspec-1-remove-clippy.patch
deleted file mode 100644
index 46c994f7ee..0000000000
--- a/gnu/packages/patches/rust-rspec-1-remove-clippy.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Remove the dependency on clippy
-
-diff --git a/Cargo.toml b/Cargo.toml
-index 177cb80..7260c34 100644
---- a/Cargo.toml
-+++ b/Cargo.toml
-@@ -39,9 +39,6 @@ version = "1.5"
-
- [dependencies.time]
- version = "0.2"
--[build-dependencies.clippy]
--version = "0.0.153"
--optional = true
-
- [features]
- default = []
diff --git a/gnu/packages/patches/rust-trash-2-update-windows.patch b/gnu/packages/patches/rust-trash-2-update-windows.patch
deleted file mode 100644
index f6b13a4658..0000000000
--- a/gnu/packages/patches/rust-trash-2-update-windows.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-This patch is taken from upstream so we can use an already packaged
-version of the windows crate.
-
-diff --git a/Cargo.toml b/Cargo.toml
-index 2c28dfe..6b61771 100644
---- a/Cargo.toml
-+++ b/Cargo.toml
-@@ -87,9 +87,8 @@ version = "0.2.7"
- version = "1.0.0"
-
- [target."cfg(windows)".dependencies.windows]
--version = "0.37.0"
-+version = "0.44.0"
- features = [
-- "alloc",
- "Win32_Foundation",
- "Win32_System_Com_StructuredStorage",
- "Win32_UI_Shell_PropertiesSystem",
-diff --git a/Cargo.toml.orig b/Cargo.toml.orig
-index 894a78c..c17fc02 100644
---- a/Cargo.toml.orig
-+++ b/Cargo.toml.orig
-@@ -44,7 +44,7 @@ once_cell = "1.7.2"
- once_cell = "1.7.2"
-
- [target.'cfg(windows)'.dependencies]
--windows = { version = "0.37.0", features = [ "alloc",
-+windows = { version = "0.44.0", features = [
- "Win32_Foundation",
- "Win32_System_Com_StructuredStorage",
- "Win32_UI_Shell_PropertiesSystem",
-diff --git a/src/windows.rs b/src/windows.rs
-index c1379d3..3f4426b 100644
---- a/src/windows.rs
-+++ b/src/windows.rs
-@@ -1,7 +1,6 @@
- use crate::{Error, TrashContext, TrashItem};
- use std::{
-- ffi::{OsStr, OsString},
-- mem::MaybeUninit,
-+ ffi::{c_void, OsStr, OsString},
- os::windows::{ffi::OsStrExt, prelude::*},
- path::PathBuf,
- };
-@@ -66,7 +65,7 @@ impl TrashContext {
- let shi: IShellItem =
- SHCreateItemFromParsingName(PCWSTR(wide_path_slice.as_ptr()), None)?;
-
-- pfo.DeleteItem(shi, None)?;
-+ pfo.DeleteItem(&shi, None)?;
- }
- pfo.PerformOperations()?;
- Ok(())
-@@ -78,28 +77,18 @@ pub fn list() -> Result<Vec<TrashItem>, Error> {
- ensure_com_initialized();
- unsafe {
- let mut item_vec = Vec::new();
-- let mut recycle_bin = MaybeUninit::<Option<IShellItem>>::uninit();
-
-- SHGetKnownFolderItem(
-- &FOLDERID_RecycleBinFolder,
-- KF_FLAG_DEFAULT,
-- HANDLE::default(),
-- &IShellItem::IID,
-- recycle_bin.as_mut_ptr() as _,
-- )?;
--
-- let recycle_bin = recycle_bin.assume_init().ok_or(Error::Unknown {
-- description: "SHGetKnownFolderItem gave NULL for FOLDERID_RecycleBinFolder".into(),
-- })?;
-+ let recycle_bin: IShellItem =
-+ SHGetKnownFolderItem(&FOLDERID_RecycleBinFolder, KF_FLAG_DEFAULT, HANDLE::default())?;
-
- let pesi: IEnumShellItems = recycle_bin.BindToHandler(None, &BHID_EnumItems)?;
-- let mut fetched: u32 = 0;
-
- loop {
-+ let mut fetched_count: u32 = 0;
- let mut arr = [None];
-- pesi.Next(&mut arr, &mut fetched)?;
-+ pesi.Next(&mut arr, Some(&mut fetched_count as *mut u32))?;
-
-- if fetched == 0 {
-+ if fetched_count == 0 {
- break;
- }
-
-@@ -145,7 +134,7 @@ where
- at_least_one = true;
- let id_as_wide: Vec<u16> = item.id.encode_wide().chain(std::iter::once(0)).collect();
- let parsing_name = PCWSTR(id_as_wide.as_ptr());
-- let trash_item: IShellItem = SHCreateItemFromParsingName(&parsing_name, None)?;
-+ let trash_item: IShellItem = SHCreateItemFromParsingName(parsing_name, None)?;
- pfo.DeleteItem(&trash_item, None)?;
- }
- if at_least_one {
-@@ -181,7 +170,7 @@ where
- for item in items.iter() {
- let id_as_wide: Vec<u16> = item.id.encode_wide().chain(std::iter::once(0)).collect();
- let parsing_name = PCWSTR(id_as_wide.as_ptr());
-- let trash_item: IShellItem = SHCreateItemFromParsingName(&parsing_name, None)?;
-+ let trash_item: IShellItem = SHCreateItemFromParsingName(parsing_name, None)?;
- let parent_path_wide: Vec<_> =
- item.original_parent.as_os_str().encode_wide().chain(std::iter::once(0)).collect();
- let orig_folder_shi: IShellItem =
-@@ -191,7 +180,7 @@ where
- .chain(std::iter::once(0))
- .collect();
-
-- pfo.MoveItem(trash_item, orig_folder_shi, PCWSTR(name_wstr.as_ptr()), None)?;
-+ pfo.MoveItem(&trash_item, &orig_folder_shi, PCWSTR(name_wstr.as_ptr()), None)?;
- }
- if !items.is_empty() {
- pfo.PerformOperations()?;
-@@ -203,7 +192,7 @@ where
- unsafe fn get_display_name(psi: &IShellItem, sigdnname: SIGDN) -> Result<OsString, Error> {
- let name = psi.GetDisplayName(sigdnname)?;
- let result = wstr_to_os_string(name);
-- CoTaskMemFree(name.0 as _);
-+ CoTaskMemFree(Some(name.0 as *const c_void));
- Ok(result)
- }
-
-@@ -257,7 +246,7 @@ impl CoInitializer {
- if cfg!(feature = "coinit_speed_over_memory") {
- init_mode |= COINIT_SPEED_OVER_MEMORY;
- }
-- let hr = unsafe { CoInitializeEx(std::ptr::null_mut(), init_mode) };
-+ let hr = unsafe { CoInitializeEx(None, init_mode) };
- if hr.is_err() {
- panic!("Call to CoInitializeEx failed. HRESULT: {:?}. Consider using `trash` with the feature `coinit_multithreaded`", hr);
- }
diff --git a/gnu/packages/patches/rust-wl-clipboard-rs-newer-wl.patch b/gnu/packages/patches/rust-wl-clipboard-rs-newer-wl.patch
deleted file mode 100644
index 9fb692e9a6..0000000000
--- a/gnu/packages/patches/rust-wl-clipboard-rs-newer-wl.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff --git a/Cargo.toml b/Cargo.toml
-index 7b975e0..313cb63 100644
---- a/Cargo.toml
-+++ b/Cargo.toml.new
-@@ -75,17 +75,17 @@ version = "3"
- version = "0.2"
-
- [dependencies.wayland-client]
--version = "0.27"
-+version = "0.28"
-
- [dependencies.wayland-protocols]
--version = "0.27"
-+version = "0.28"
- features = ["client", "unstable_protocols"]
- [dev-dependencies.wayland-protocols]
--version = "0.27"
-+version = "0.28"
- features = ["server", "unstable_protocols"]
-
- [dev-dependencies.wayland-server]
--version = "0.27"
-+version = "0.28"
-
- [features]
- dlopen = ["native_lib", "wayland-client/dlopen", "wayland-server/dlopen"]
diff --git a/gnu/packages/patches/safeint-disable-tests.patch b/gnu/packages/patches/safeint-disable-tests.patch
new file mode 100644
index 0000000000..baecd85b1b
--- /dev/null
+++ b/gnu/packages/patches/safeint-disable-tests.patch
@@ -0,0 +1,42 @@
+---
+ Test/GccTest/CMakeLists.txt | 18 ------------------
+ 1 file changed, 18 deletions(-)
+
+diff --git a/Test/GccTest/CMakeLists.txt b/Test/GccTest/CMakeLists.txt
+index 8a3bef4..9254d70 100644
+--- a/Test/GccTest/CMakeLists.txt
++++ b/Test/GccTest/CMakeLists.txt
+@@ -105,15 +105,6 @@ else()
+
+ target_compile_options(CompileTest_gcc PUBLIC -Wall)
+
+- add_executable(CompileTest_gcc17
+- ../CompileTest.cpp
+- ../ConstExpr.cpp
+- ../CleanCompile.cpp
+- ../../SafeInt.hpp
+- )
+-
+- target_compile_options(CompileTest_gcc17 PUBLIC -Wall -std=c++17)
+-
+ add_executable(CompileTest_gcc14
+ ../CompileTest.cpp
+ ../ConstExpr.cpp
+@@ -132,15 +123,6 @@ else()
+
+ target_compile_options(CompileTest_gcc14_NoEH PUBLIC -Wall -std=c++14 -fno-exceptions)
+
+- add_executable(CompileTest_gcc98
+- ../CompileTest.cpp
+- ../ConstExpr.cpp
+- ../CleanCompile.cpp
+- ../../SafeInt.hpp
+- )
+-
+- target_compile_options(CompileTest_gcc98 PUBLIC -D SAFEINT_USE_CPLUSCPLUS_98 -Wall -std=c++98 -fno-exceptions)
+-
+ add_executable(safe_math_test_gcc
+ ../c_safe_math/safe_math_test.c
+ ../c_safe_math/safe_math_test.h
+--
+2.50.1
diff --git a/gnu/packages/patches/sane-look-for-plugins-in-SANE_BACKEND_LIB_PATH.patch b/gnu/packages/patches/sane-look-for-plugins-in-SANE_BACKEND_LIB_PATH.patch
new file mode 100644
index 0000000000..aef4d15274
--- /dev/null
+++ b/gnu/packages/patches/sane-look-for-plugins-in-SANE_BACKEND_LIB_PATH.patch
@@ -0,0 +1,25 @@
+From 324ad2e5b5d4b08fb682fa05d5baaaf087d13f5c Mon Sep 17 00:00:00 2001
+From: Sergey Trofimov <sarg@sarg.org.ru>
+Date: Sat, 20 Sep 2025 18:26:44 +0200
+Subject: [PATCH] Look for plugins in SANE_BACKEND_LIB_PATH.
+
+---
+ backend/dll.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/backend/dll.c b/backend/dll.c
+index bf34c4f6d..d52e81206 100644
+--- a/backend/dll.c
++++ b/backend/dll.c
+@@ -461,6 +461,8 @@ load (struct backend *be)
+ be->op[i] = op_unsupported;
+
+ path = getenv ("LD_LIBRARY_PATH");
++ if (!path)
++ path = getenv ("SANE_BACKEND_LIB_PATH"); /* for guix */
+ if (!path)
+ path = getenv ("SHLIB_PATH"); /* for HP-UX */
+ if (!path)
+--
+2.51.0
+
diff --git a/gnu/packages/patches/sbcl-cl-redis-replace-sbcl-specific-calls.patch b/gnu/packages/patches/sbcl-cl-redis-replace-sbcl-specific-calls.patch
new file mode 100644
index 0000000000..5fccb8e8f3
--- /dev/null
+++ b/gnu/packages/patches/sbcl-cl-redis-replace-sbcl-specific-calls.patch
@@ -0,0 +1,53 @@
+diff --git a/connection.lisp b/connection.lisp
+index d13f646..404567b 100644
+--- a/connection.lisp
++++ b/connection.lisp
+@@ -29,8 +29,8 @@ for debugging purposes. The default is *STANDARD-OUTPUT*.")
+ ;; For SSL streams
+ (defmethod trivial-gray-streams:stream-clear-input ((stream cl+ssl::ssl-stream))
+ (trivial-gray-streams:stream-clear-input (cl+ssl::ssl-stream-socket stream)))
+-
+- (defmethod trivial-gray-streams:stream-read-sequence
++
++ (defmethod trivial-gray-streams:stream-read-sequence
+ ((stream cl+ssl::ssl-stream) sequence start end &rest args)
+ (declare (ignore args))
+ (handler-case
+@@ -45,8 +45,8 @@ for debugging purposes. The default is *STANDARD-OUTPUT*.")
+ (cl+ssl::ssl-error-zero-return () bytes-read)
+ (cl+ssl::ssl-error-syscall () -1)
+ (cl+ssl::ssl-error-ssl () -1)))
+-
+- (defmethod trivial-gray-streams:stream-write-sequence
++
++ (defmethod trivial-gray-streams:stream-write-sequence
+ ((stream cl+ssl::ssl-stream) sequence start end &rest args)
+ (declare (ignore args))
+ (handler-case
+@@ -57,17 +57,17 @@ for debugging purposes. The default is *STANDARD-OUTPUT*.")
+ (cl+ssl::ssl-error-syscall () sequence)
+ (cl+ssl::ssl-error-ssl () sequence)))
+
+- ;; For regular fd-streams
+- (defmethod trivial-gray-streams:stream-clear-input ((stream sb-sys:fd-stream))
+- (sb-impl::clear-input stream))
+-
+- (defmethod trivial-gray-streams:stream-read-sequence
+- ((stream sb-sys:fd-stream) sequence start end &rest args)
++ ;; For regular streams
++ (defmethod trivial-gray-streams:stream-clear-input ((stream stream))
++ (clear-input stream))
++
++ (defmethod trivial-gray-streams:stream-read-sequence
++ ((stream stream) sequence start end &rest args)
+ (declare (ignore args))
+ (read-sequence sequence stream :start start :end end))
+-
+- (defmethod trivial-gray-streams:stream-write-sequence
+- ((stream sb-sys:fd-stream) sequence start end &rest args)
++
++ (defmethod trivial-gray-streams:stream-write-sequence
++ ((stream stream) sequence start end &rest args)
+ (declare (ignore args))
+ (write-sequence sequence stream :start start :end end)
+ sequence)))
diff --git a/gnu/packages/patches/sbcl-fix-arm64-shared-lib.patch b/gnu/packages/patches/sbcl-fix-arm64-shared-lib.patch
new file mode 100644
index 0000000000..5aa654764e
--- /dev/null
+++ b/gnu/packages/patches/sbcl-fix-arm64-shared-lib.patch
@@ -0,0 +1,129 @@
+From b25c5a9f89922554e1221dab761e1eb583113953 Mon Sep 17 00:00:00 2001
+From: Douglas Katzman <dougk@google.com>
+Date: Thu, 4 Sep 2025 13:28:15 -0400
+Subject: [PATCH 1/2] Change asm to avoid 'ld' error making libsbcl.so on linux
+
+Fixes lp#2122059
+---
+ src/runtime/arm64-assem.S | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/runtime/arm64-assem.S b/src/runtime/arm64-assem.S
+index 95e0bfc89..b708f4ca0 100644
+--- a/src/runtime/arm64-assem.S
++++ b/src/runtime/arm64-assem.S
+@@ -235,9 +235,15 @@ no_args:
+
+ // load CARDTABLE-TN. reg_NAME macros aren't autogenerated for native asm code
+ // and it hardly seems worth #defining it to use in one assembly statement.
++#ifdef LISP_FEATURE_LINUX
++ adrp x28, :got:gc_card_mark
++ ldr x28, [x28, #:got_lo12:gc_card_mark]
++ ldr x28, [x28]
++#else
+ adrp x28, PAGE(gc_card_mark)
+ add x28, x28, PAGELOW(gc_card_mark)
+ ldr x28, [x28]
++#endif
+
+ // Load the closure-fun (or simple-fun-self), in case we're
+ // trying to call a closure.
+--
+2.51.0
+
+From 076ae8dfc67d23bda158666847c5f1b627d90778 Mon Sep 17 00:00:00 2001
+From: Stas Boukarev <stassats@gmail.com>
+Date: Thu, 4 Sep 2025 20:39:24 +0300
+Subject: [PATCH 2/2] Fix libsbcl.so on linux arm64
+
+It got already fixed but this one has a macro.
+---
+ src/runtime/GNUmakefile | 2 +-
+ src/runtime/arm64-assem.S | 43 ++++++++++++++++++++++-----------------
+ 2 files changed, 25 insertions(+), 20 deletions(-)
+
+diff --git a/src/runtime/GNUmakefile b/src/runtime/GNUmakefile
+index cb34b5586..3a63d1c67 100644
+--- a/src/runtime/GNUmakefile
++++ b/src/runtime/GNUmakefile
+@@ -138,7 +138,7 @@ libsbcl.so: $(PIC_OBJS)
+ %.pic.o: %.c
+ $(CC) -fPIC -c $(CPPFLAGS) $(filter-out -fno-pie,$(CFLAGS)) $< -o $@
+ %.pic.o: %.S # (-fPIC doesn't affect hand-written assembly source)
+- $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
++ $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ -DLIBSBCL
+
+ SHRINKWRAP_DEPS = ../../output/sbcl.core ../../tools-for-build/elftool.lisp
+ shrinkwrap-sbcl.s shrinkwrap-sbcl-core.o: $(SHRINKWRAP_DEPS)
+diff --git a/src/runtime/arm64-assem.S b/src/runtime/arm64-assem.S
+index b708f4ca0..1794fc60e 100644
+--- a/src/runtime/arm64-assem.S
++++ b/src/runtime/arm64-assem.S
+@@ -13,24 +13,37 @@
+
+ #endif
+
+-#ifdef LISP_FEATURE_DARWIN
+-#define GNAME(var) _##var
+-#define PAGE(var) _##var@PAGE
+-#define PAGELOW(var) _##var@PAGEOFF
+-#else
+-#define GNAME(var) var
+-#define PAGE(var) var
+-#define PAGELOW(var) #:lo12:##var
+-#endif
+-
+ #ifdef LISP_FEATURE_DARWIN
+ #define TYPE(name)
+ #define SIZE(name)
++#define GNAME(var) _##var
++
++.macro LOAD_GNAME, dest, symbol
++ adrp \dest, _\symbol@PAGE
++ ldr \dest, [\dest, _\symbol@PAGEOFF]
++.endm
++
+ #else
++
+ #define TYPE(name) .type name,%function
+ #define SIZE(name) .size name,.-name
++#define GNAME(var) var
++
++#ifdef LIBSBCL
++.macro LOAD_GNAME, dest, symbol
++ adrp \dest, :got:\symbol
++ ldr \dest, [\dest, #:got_lo12:\symbol]
++ ldr \dest, [\dest]
++.endm
++#else
++.macro LOAD_GNAME, dest, symbol
++ adrp \dest, \symbol
++ ldr \dest, [\dest, #:lo12:\symbol]
++.endm
++#endif
+ #endif
+
++
+ #ifdef LISP_FEATURE_SB_THREAD
+ .macro ENTER_PA
+ str reg_wNULL,[reg_THREAD,THREAD_PSEUDO_ATOMIC_BITS_OFFSET]
+@@ -235,15 +248,7 @@ no_args:
+
+ // load CARDTABLE-TN. reg_NAME macros aren't autogenerated for native asm code
+ // and it hardly seems worth #defining it to use in one assembly statement.
+-#ifdef LISP_FEATURE_LINUX
+- adrp x28, :got:gc_card_mark
+- ldr x28, [x28, #:got_lo12:gc_card_mark]
+- ldr x28, [x28]
+-#else
+- adrp x28, PAGE(gc_card_mark)
+- add x28, x28, PAGELOW(gc_card_mark)
+- ldr x28, [x28]
+-#endif
++ LOAD_GNAME x28, gc_card_mark
+
+ // Load the closure-fun (or simple-fun-self), in case we're
+ // trying to call a closure.
+--
+2.51.0
+
diff --git a/gnu/packages/patches/schiffbruch-fix-build-for-gcc-13.patch b/gnu/packages/patches/schiffbruch-fix-build-for-gcc-13.patch
new file mode 100644
index 0000000000..0cc87b2a90
--- /dev/null
+++ b/gnu/packages/patches/schiffbruch-fix-build-for-gcc-13.patch
@@ -0,0 +1,39 @@
+Submitted as pull request <https://github.com/sandsmark/Schiffbruch/pull/1>.
+
+From: Florian Pelz <pelzflorian@pelzflorian.de>
+Date: Wed, 24 Sep 2025 10:24:24 +0200
+Subject: [PATCH] fix build for gcc 13
+
+---
+ src/Renderer.cpp | 3 ++-
+ src/types.hpp | 1 +
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/Renderer.cpp b/src/Renderer.cpp
+index d3339e2..93d472c 100644
+--- a/src/Renderer.cpp
++++ b/src/Renderer.cpp
+@@ -202,6 +202,8 @@ RGBSTRUCT GetPixel(short x, short y, sf::Image *img)
+ // DWORD pitch = ddsd->lPitch >> 1;
+ // DWORD color = pixels[y * pitch + x * 2];
+
++ RGBSTRUCT rgbStruct;
++
+ // TODO: more efficient
+ if (x < 0 || y < 0 || x >= int(img->getSize().x) || y >= int(img->getSize().y)) {
+ rgbStruct.r = 0;
+diff --git a/src/types.hpp b/src/types.hpp
+index 2034966..fd1882d 100644
+--- a/src/types.hpp
++++ b/src/types.hpp
+@@ -3,6 +3,7 @@
+ #include "headers.hpp"
+ //#include "miniwin.h"
+
++#include <cstdint>
+ #include <SFML/Graphics/Texture.hpp>
+
+ namespace Action {
+--
+2.51.0
+
diff --git a/gnu/packages/patches/slurm-23-salloc-fallback-shell.patch b/gnu/packages/patches/slurm-23-salloc-fallback-shell.patch
index 53605bf3ae..daaeb9358f 100644
--- a/gnu/packages/patches/slurm-23-salloc-fallback-shell.patch
+++ b/gnu/packages/patches/slurm-23-salloc-fallback-shell.patch
@@ -8,32 +8,19 @@ instance because user code is linked against an incompatible libc.
Similar patch submitted upstream: https://bugs.schedmd.com/show_bug.cgi?id=19896
diff --git a/src/salloc/opt.c b/src/salloc/opt.c
-index ffff7c8..74563ad 100644
+index f535600..848f099 100644
--- a/src/salloc/opt.c
+++ b/src/salloc/opt.c
-@@ -329,6 +329,7 @@ static void _opt_args(int argc, char **argv, int het_job_offset)
- * NOTE: This function is NOT reentrant (see getpwuid_r if needed) */
- static char *_get_shell(void)
- {
-+ char *shell;
- struct passwd *pw_ent_ptr;
+@@ -333,8 +333,10 @@ static char *_get_shell(void)
+ if (uid == SLURM_AUTH_NOBODY)
+ uid = getuid();
- if (opt.uid == SLURM_AUTH_NOBODY)
-@@ -336,11 +337,13 @@ static char *_get_shell(void)
- else
- pw_ent_ptr = getpwuid(opt.uid);
-
-- if (!pw_ent_ptr) {
-- pw_ent_ptr = getpwnam("nobody");
-- warning("no user information for user %u", opt.uid);
-+ if (pw_ent_ptr) {
-+ shell = pw_ent_ptr->pw_shell;
-+ } else {
+- if (!(shell = uid_to_shell(uid)))
+- fatal("no user information for user %u", uid);
++ if (!(shell = uid_to_shell(uid))) {
+ shell = getenv("SHELL") ?: "/bin/sh";
+ warning("no user information for user %u, using '%s' as the shell", opt.uid, shell);
- }
-- return pw_ent_ptr->pw_shell;
-+ return shell;
- }
++ }
- static void _salloc_default_command(int *argcp, char **argvp[])
+ return shell;
+ }
diff --git a/gnu/packages/patches/soci-mysql-ddl-types.patch b/gnu/packages/patches/soci-mysql-ddl-types.patch
new file mode 100644
index 0000000000..e92fb117d1
--- /dev/null
+++ b/gnu/packages/patches/soci-mysql-ddl-types.patch
@@ -0,0 +1,15 @@
+Description: Add two unusual column type entries to make liblinphone work
+Author: Dennis Filder <d.filder@web.de>
+Bug-Debian: https://bugs.debian.org/984534
+Last-Update: 2021-03-10
+--- a/src/backends/sqlite3/statement.cpp
++++ b/src/backends/sqlite3/statement.cpp
+@@ -440,6 +440,8 @@
+ m["mediumint"] = dt_integer;
+ m["smallint"] = dt_integer;
+ m["tinyint"] = dt_integer;
++ m["tinyintunsigned"] = dt_integer;
++ m["intunsigned"] = dt_integer;
+
+ // dt_long_long
+ m["bigint"] = dt_long_long;
diff --git a/gnu/packages/patches/spice-vdagent-monitor-size-calculation.patch b/gnu/packages/patches/spice-vdagent-monitor-size-calculation.patch
new file mode 100644
index 0000000000..370932c7ed
--- /dev/null
+++ b/gnu/packages/patches/spice-vdagent-monitor-size-calculation.patch
@@ -0,0 +1,29 @@
+From 3660acfcbaaca9c66dca5ef09205bd7c1d70b98c Mon Sep 17 00:00:00 2001
+From: Lukas Joeressen <lukas@joeressen.net>
+Date: Sat, 12 Apr 2025 10:42:02 +0200
+Subject: [PATCH] Fix VDAGentMonitorConfig size calculation
+
+The VDAgentMonitorsConfig struct has the VD_AGENT_CONFIG_MONITORS_FLAG_PHYSICAL_SIZE flag that
+indicates if physical monitor sizes are included in the data. If this flag is set there is one
+instance of VDAgentMonitorMM for each monitor following the other data.
+---
+ src/vdagentd/vdagentd.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/vdagentd/vdagentd.c b/src/vdagentd/vdagentd.c
+index 3e59331..27a6f15 100644
+--- a/src/vdagentd/vdagentd.c
++++ b/src/vdagentd/vdagentd.c
+@@ -208,6 +208,9 @@ static void do_client_monitors(VirtioPort *vport, int port_nr,
+ /* Store monitor config to send to agents when they connect */
+ size = sizeof(VDAgentMonitorsConfig) +
+ new_monitors->num_of_monitors * sizeof(VDAgentMonConfig);
++ if (new_monitors->flags & VD_AGENT_CONFIG_MONITORS_FLAG_PHYSICAL_SIZE) {
++ size += new_monitors->num_of_monitors * sizeof(VDAgentMonitorMM);
++ }
+ if (message_header->size != size) {
+ syslog(LOG_ERR, "invalid message size for VDAgentMonitorsConfig");
+ return;
+--
+GitLab
+
diff --git a/gnu/packages/patches/stepmania-ffmpeg-compat.patch b/gnu/packages/patches/stepmania-ffmpeg-compat.patch
new file mode 100644
index 0000000000..b5b9bcd8f2
--- /dev/null
+++ b/gnu/packages/patches/stepmania-ffmpeg-compat.patch
@@ -0,0 +1,49 @@
+See [6] and [7].
+[6] https://github.com/Tatsh/tatsh-overlay/blob/master/games-arcade/stepmania/files/stepmania-ffmpeg-6.patch
+[7] https://github.com/Tatsh/tatsh-overlay/blob/master/games-arcade/stepmania/files/stepmania-ffmpeg-7.patch
+
+diff --git a/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp b/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp
+index 935ddf324b0..d4eed01d599 100644
+--- a/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp
++++ b/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp
+@@ -9,6 +9,10 @@
+
+ #include <cerrno>
+
++#if LIBAVCODEC_VERSION_MAJOR > 59
++#define frame_number frame_num
++#endif
++
+ static void FixLilEndian()
+ {
+ #if defined(ENDIAN_LITTLE)
+@@ -405,7 +405,7 @@ void MovieTexture_FFMpeg::RegisterProtocols()
+ return;
+ Done = true;
+
+-#if !FF_API_NEXT
++#if LIBAVCODEC_VERSION_MAJOR < 58
+ avcodec::avcodec_register_all();
+ avcodec::av_register_all();
+ #endif
+@@ -508,7 +508,7 @@ RString MovieDecoder_FFMpeg::OpenCodec()
+ if( m_pStreamCodec->codec )
+ avcodec::avcodec_close( m_pStreamCodec );
+
+- avcodec::AVCodec *pCodec = avcodec::avcodec_find_decoder( m_pStreamCodec->codec_id );
++ const avcodec::AVCodec *pCodec = avcodec::avcodec_find_decoder( m_pStreamCodec->codec_id );
+ if( pCodec == nullptr )
+ return ssprintf( "Couldn't find decoder %i", m_pStreamCodec->codec_id );
+
+diff --git a/src/arch/MovieTexture/MovieTexture_FFMpeg.h b/src/arch/MovieTexture/MovieTexture_FFMpeg.h
+index c092b765fc2..99f5ffcb1be 100644
+--- a/src/arch/MovieTexture/MovieTexture_FFMpeg.h
++++ b/src/arch/MovieTexture/MovieTexture_FFMpeg.h
+@@ -13,6 +13,7 @@ namespace avcodec
+ #include <libavformat/avformat.h>
+ #include <libswscale/swscale.h>
+ #include <libavutil/pixdesc.h>
++ #include <libavcodec/avcodec.h>
+
+ #if LIBAVCODEC_VERSION_MAJOR >= 58
+ #define av_free_packet av_packet_unref \ No newline at end of file
diff --git a/gnu/packages/patches/stk-5.0.1-fix-typo.patch b/gnu/packages/patches/stk-5.0.1-fix-typo.patch
new file mode 100644
index 0000000000..b4160dcdc6
--- /dev/null
+++ b/gnu/packages/patches/stk-5.0.1-fix-typo.patch
@@ -0,0 +1,8 @@
+This patch fixes typo.
+
+diff -ruN stk-5.0.1-a/projects/eguitar/ElectricGuitar stk-5.0.1-b/projects/eguitar/ElectricGuitar
+--- stk-5.0.1-a/projects/eguitar/ElectricGuitar 2024-11-30 15:07:14.267988301 +0530
++++ stk-5.0.1-b/projects/eguitar/ElectricGuitar 2024-11-30 15:05:40.951986213 +0530
+@@ -1 +1 @@
+-wish < tcl/Eguitar.tcl | ./eguitar -or -ip
++wish < tcl/EGuitar.tcl | ./eguitar -or -ip
diff --git a/gnu/packages/patches/telegram-desktop-allow-disable-libtgvoip.patch b/gnu/packages/patches/telegram-desktop-allow-disable-libtgvoip.patch
deleted file mode 100644
index 1354a1e9cd..0000000000
--- a/gnu/packages/patches/telegram-desktop-allow-disable-libtgvoip.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From 322d2c452bf1a4df7b9fe161d4991a347043550c Mon Sep 17 00:00:00 2001
-From: Klemens Nanni <klemens@posteo.de>
-Date: Wed, 2 Mar 2022 01:07:48 +0100
-Subject: [PATCH] Introduce TDESKTOP_DISABLE_LEGACY_TGVOIP
-
-Originally from Alt Linux[0], OpenBSD has so far adapted the removal of
-tgvoip in the official net/tdesktop build.
-
-tgcalls provides everything needed for calls; audio/video/desktop
-sharing calls have been working fine across different operating systems
-and telegram desktop/mobile versions without problems.
-
-0: http://www.sisyphus.ru/cgi-bin/srpm.pl/Sisyphus/telegram-desktop/getpatch/1
----
- Telegram/CMakeLists.txt | 6 +++---
- Telegram/SourceFiles/calls/calls_call.cpp | 6 ++++++
- Telegram/cmake/lib_tgcalls.cmake | 4 ++++
- Telegram/cmake/telegram_options.cmake | 8 ++++++++
- 4 files changed, 21 insertions(+), 3 deletions(-)
-
-diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt
-index 008c71b15..291305909 100644
---- a/Telegram/CMakeLists.txt
-+++ b/Telegram/CMakeLists.txt
-@@ -26,7 +26,9 @@ get_filename_component(res_loc Resources REALPATH)
- include(cmake/telegram_options.cmake)
- include(cmake/lib_ffmpeg.cmake)
- include(cmake/lib_stripe.cmake)
--include(cmake/lib_tgvoip.cmake)
-+if (NOT TDESKTOP_DISABLE_LEGACY_TGVOIP)
-+ include(cmake/lib_tgvoip.cmake)
-+endif()
- include(cmake/lib_tgcalls.cmake)
- include(cmake/td_export.cmake)
- include(cmake/td_mtproto.cmake)
-@@ -49,9 +51,7 @@ set_target_properties(Telegram PROPERTIES AUTOMOC ON)
-
- target_link_libraries(Telegram
- PRIVATE
-- tdesktop::lib_tgcalls_legacy
- tdesktop::lib_tgcalls
-- tdesktop::lib_tgvoip
-
- # Order in this list defines the order of include paths in command line.
- # We need to place desktop-app::external_minizip this early to have its
-diff --git a/Telegram/SourceFiles/calls/calls_call.cpp b/Telegram/SourceFiles/calls/calls_call.cpp
-index 5fe9ac677..bebf48e70 100644
---- a/Telegram/SourceFiles/calls/calls_call.cpp
-+++ b/Telegram/SourceFiles/calls/calls_call.cpp
-@@ -39,7 +39,9 @@ class InstanceImpl;
- class InstanceV2Impl;
- class InstanceV2ReferenceImpl;
-+#ifndef TDESKTOP_DISABLE_LEGACY_TGVOIP
- class InstanceImplLegacy;
- void SetLegacyGlobalServerConfig(const std::string &serverConfig);
-+#endif
- } // namespace tgcalls
-
- namespace Calls {
-@@ -56,6 +58,8 @@ const auto Register = tgcalls::Register<tgcalls::InstanceImpl>();
- const auto RegisterV2 = tgcalls::Register<tgcalls::InstanceV2Impl>();
- const auto RegV2Ref = tgcalls::Register<tgcalls::InstanceV2ReferenceImpl>();
-+#ifndef TDESKTOP_DISABLE_LEGACY_TGVOIP
- const auto RegisterLegacy = tgcalls::Register<tgcalls::InstanceImplLegacy>();
-+#endif
-
- [[nodiscard]] base::flat_set<int64> CollectEndpointIds(
- const QVector<MTPPhoneConnection> &list) {
-@@ -1332,7 +1336,9 @@ Call::~Call() {
- }
-
- void UpdateConfig(const std::string &data) {
-+#ifndef TDESKTOP_DISABLE_LEGACY_TGVOIP
- tgcalls::SetLegacyGlobalServerConfig(data);
-+#endif
- }
-
- } // namespace Calls
-diff --git a/Telegram/cmake/lib_tgcalls.cmake b/Telegram/cmake/lib_tgcalls.cmake
-index 94cfdb856..9ac4fe479 100644
---- a/Telegram/cmake/lib_tgcalls.cmake
-+++ b/Telegram/cmake/lib_tgcalls.cmake
-@@ -268,6 +268,10 @@ PRIVATE
- ${tgcalls_loc}
- )
-
-+if (TDESKTOP_DISABLE_LEGACY_TGVOIP)
-+ return()
-+endif()
-+
- add_library(lib_tgcalls_legacy STATIC)
- init_target(lib_tgcalls_legacy)
-
-diff --git a/Telegram/cmake/telegram_options.cmake b/Telegram/cmake/telegram_options.cmake
-index a5a6d9405..2eb9953f2 100644
---- a/Telegram/cmake/telegram_options.cmake
-+++ b/Telegram/cmake/telegram_options.cmake
-@@ -4,7 +4,9 @@
- # For license and copyright information please follow this link:
- # https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
-
-+option(TDESKTOP_DISABLE_LEGACY_TGVOIP "Disable legacy tgvoip support." OFF)
- option(TDESKTOP_API_TEST "Use test API credentials." OFF)
-+
- set(TDESKTOP_API_ID "0" CACHE STRING "Provide 'api_id' for the Telegram API access.")
- set(TDESKTOP_API_HASH "" CACHE STRING "Provide 'api_hash' for the Telegram API access.")
-
-@@ -36,6 +38,12 @@ if (TDESKTOP_API_ID STREQUAL "0" OR TDESKTOP_API_HASH STREQUAL "")
- " ")
- endif()
-
-+if (TDESKTOP_DISABLE_LEGACY_TGVOIP)
-+ target_compile_definitions(Telegram PRIVATE TDESKTOP_DISABLE_LEGACY_TGVOIP)
-+else()
-+ target_link_libraries(Telegram PRIVATE tdesktop::lib_tgcalls_legacy tdesktop::lib_tgvoip)
-+endif()
-+
- if (DESKTOP_APP_DISABLE_AUTOUPDATE)
- target_compile_definitions(Telegram PRIVATE TDESKTOP_DISABLE_AUTOUPDATE)
- endif()
---
-2.39.2
-
diff --git a/gnu/packages/patches/telegram-desktop-unbundle-cppgir.patch b/gnu/packages/patches/telegram-desktop-unbundle-cppgir.patch
index a24dbe25bb..33edfaf193 100644
--- a/gnu/packages/patches/telegram-desktop-unbundle-cppgir.patch
+++ b/gnu/packages/patches/telegram-desktop-unbundle-cppgir.patch
@@ -1,34 +1,41 @@
-From a5c42e07ae223d440ff11347e0cf1fd58fd383df Mon Sep 17 00:00:00 2001
-From: Nicholas Guriev <nicholas@guriev.su>
-Date: Sat, 26 Aug 2023 18:23:53 +0300
-Subject: [PATCH 1/2] Look for system-wide cppgir before fallback to the
- bundled copy
+Upstream-status: https://github.com/desktop-app/cmake_helpers/pull/305
+
+From fa47432aeccb2cf657a79f8e1a3af1ef0663b4c6 Mon Sep 17 00:00:00 2001
+From: dan <i@dan.games>
+Date: Sun, 12 Oct 2025 18:45:40 +0800
+Subject: [PATCH] Look for system-wide cppgir before fallback to the bundled
+ copy.
-Closes: #282
---
- external/glib/CMakeLists.txt | 4 +++-
- external/glib/generate_cppgir.cmake | 7 ++++++-
- 2 files changed, 9 insertions(+), 2 deletions(-)
+ external/glib/CMakeLists.txt | 7 ++++---
+ external/glib/generate_cppgir.cmake | 16 +++++++++++-----
+ 2 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/external/glib/CMakeLists.txt b/external/glib/CMakeLists.txt
-index 3c6fe4be..c862705f 100644
+index 9b80f23..1a2e9b7 100644
--- a/external/glib/CMakeLists.txt
+++ b/external/glib/CMakeLists.txt
-@@ -13,9 +13,11 @@ function(add_cppgir) # isolate scope
- set(BUILD_EXAMPLES OFF)
- add_subdirectory(cppgir EXCLUDE_FROM_ALL)
- endfunction()
--add_cppgir()
+@@ -21,14 +21,15 @@ INTERFACE
+ GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_56
+ )
- include(generate_cppgir.cmake)
+-block()
++include(generate_cppgir.cmake)
++
+if (NOT CppGir_FOUND)
-+ add_cppgir()
+ set(BUILD_TESTING OFF)
+ set(BUILD_DOC OFF)
+ set(BUILD_EXAMPLES OFF)
+ add_subdirectory(cppgir EXCLUDE_FROM_ALL)
+-endblock()
+endif()
- generate_cppgir(external_glib Gio-2.0)
- find_package(PkgConfig REQUIRED)
+-include(generate_cppgir.cmake)
+
+ if (DESKTOP_APP_GLIB2_gio-unix-2.0_VERSION VERSION_GREATER_EQUAL 2.86)
+ generate_cppgir(external_glib GioUnix-2.0)
diff --git a/external/glib/generate_cppgir.cmake b/external/glib/generate_cppgir.cmake
-index c15d3f9e..9b0a5ac8 100644
+index c4475c6..012fd52 100644
--- a/external/glib/generate_cppgir.cmake
+++ b/external/glib/generate_cppgir.cmake
@@ -4,6 +4,8 @@
@@ -40,42 +47,7 @@ index c15d3f9e..9b0a5ac8 100644
function(generate_cppgir target_name gir)
set(cppgir_loc ${cmake_helpers_loc}/external/glib/cppgir)
-@@ -17,6 +19,9 @@ function(generate_cppgir target_name gir)
- ${cppgir_loc}/data/cppgir.ignore
- ${cppgir_loc}/data/cppgir_unix.ignore
- )
-+ if (CppGir_FOUND)
-+ set(ignore_files) # rely on default ignore list
-+ endif()
-
- set(gir_path)
- if (IS_ABSOLUTE "${gir}")
-@@ -33,7 +38,7 @@ function(generate_cppgir target_name gir)
- --class
- --class-full
- --expected
-- --ignore
-+ "$<$<BOOL:${ignore_files}>:--ignore>"
- "$<JOIN:${ignore_files},:>"
- --output
- ${gen_dst}
-
-From eed39522952c15f448c54290454806dd011c4996 Mon Sep 17 00:00:00 2001
-From: Nicholas Guriev <nicholas@guriev.su>
-Date: Sat, 26 Aug 2023 18:23:53 +0300
-Subject: [PATCH 2/2] Look for system-wide cppgir before fallback to the
- bundled copy
-
-Closes: #282
----
- external/glib/generate_cppgir.cmake | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/external/glib/generate_cppgir.cmake b/external/glib/generate_cppgir.cmake
-index 9b0a5ac8..2ad82277 100644
---- a/external/glib/generate_cppgir.cmake
-+++ b/external/glib/generate_cppgir.cmake
-@@ -15,11 +15,12 @@ function(generate_cppgir target_name gir)
+@@ -13,10 +15,14 @@ function(generate_cppgir target_name gir)
set(gen_timestamp ${gen_dst}/${target_name}_cppgir.timestamp)
@@ -83,13 +55,28 @@ index 9b0a5ac8..2ad82277 100644
- ${cppgir_loc}/data/cppgir.ignore
- ${cppgir_loc}/data/cppgir_unix.ignore
- )
-- if (CppGir_FOUND)
+ if (NOT CppGir_FOUND)
+ set(ignore_files
+ ${cppgir_loc}/data/cppgir.ignore
+ ${cppgir_loc}/data/cppgir_unix.ignore
+ )
+ else()
- set(ignore_files) # rely on default ignore list
- endif()
++ set(ignare_files) # rely on default ignore list
++ endif()
+ add_custom_command(
+ OUTPUT
+@@ -28,7 +34,7 @@ function(generate_cppgir target_name gir)
+ --class
+ --class-full
+ --expected
+- --ignore
++ "$<$<BOOL:${ignore_files}>:--ignore>"
+ "$<JOIN:${ignore_files},:>"
+ --output
+ ${gen_dst}
+
+base-commit: c7e0493dea2b870fb1b8e26604201fdb9e8c1ee5
+--
+2.49.0
+
diff --git a/gnu/packages/patches/tensorflow-lite-unbundle.patch b/gnu/packages/patches/tensorflow-lite-unbundle.patch
deleted file mode 100644
index efd7d5bbc6..0000000000
--- a/gnu/packages/patches/tensorflow-lite-unbundle.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Disable local CMake build code for bundled 3rdparty components.
-
-diff --git a/tensorflow/lite/CMakeLists.txt b/tensorflow/lite/CMakeLists.txt
-index 0476170e075..90abea00e8c 100644
---- a/tensorflow/lite/CMakeLists.txt
-+++ b/tensorflow/lite/CMakeLists.txt
-@@ -564,7 +564,7 @@ set(_ALL_TFLITE_HDRS ${_ALL_TFLITE_SRCS})
- list(FILTER _ALL_TFLITE_HDRS INCLUDE REGEX ".*\\.h$")
- target_include_directories(tensorflow-lite
- PUBLIC $<BUILD_INTERFACE:${TENSORFLOW_SOURCE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
-- ${CMAKE_BINARY_DIR}/gemmlowp
-+ ${gemmlowp_ROOT}/include/gemmlowp
- )
- target_link_libraries(tensorflow-lite
- PUBLIC
-diff --git a/tensorflow/lite/tools/cmake/modules/Findgemmlowp.cmake b/tensorflow/lite/tools/cmake/modules/Findgemmlowp.cmake
-index 70331ad0a69..a9bd8a0f3bd 100644
---- a/tensorflow/lite/tools/cmake/modules/Findgemmlowp.cmake
-+++ b/tensorflow/lite/tools/cmake/modules/Findgemmlowp.cmake
-@@ -18,7 +18,6 @@
- include(gemmlowp)
- if(gemmlowp_POPULATED)
- set(GEMMLOWP_FOUND TRUE)
-- get_target_property(GEMMLOWP_INCLUDE_DIRS gemmlowp INTERFACE_DIRECTORIES)
- set(GEMMLOWP_LIBRARIES
- gemmlowp
- gemmlowp_fixedpoint
diff --git a/gnu/packages/patches/torbrowser-use-system-wide-dir.patch b/gnu/packages/patches/torbrowser-use-system-wide-dir.patch
new file mode 100644
index 0000000000..223467a9c1
--- /dev/null
+++ b/gnu/packages/patches/torbrowser-use-system-wide-dir.patch
@@ -0,0 +1,36 @@
+Replace "/usr/lib/mozilla" (the system-wide directory for extensions and
+native manifests) with "$ICECAT_SYSTEM_DIR".
+
+--- a/toolkit/xre/nsXREDirProvider.cpp
++++ b/toolkit/xre/nsXREDirProvider.cpp
+@@ -296,24 +296,12 @@ nsresult nsXREDirProvider::GetBackgroundTasksProfilesRootDir(
+ static nsresult GetSystemParentDirectory(nsIFile** aFile) {
+ nsresult rv;
+ nsCOMPtr<nsIFile> localDir;
+-# if defined(XP_MACOSX)
+- rv = GetOSXFolderType(kOnSystemDisk, kApplicationSupportFolderType,
+- getter_AddRefs(localDir));
+- if (NS_SUCCEEDED(rv)) {
+- rv = localDir->AppendNative("Mozilla"_ns);
+- }
+-# else
+- constexpr auto dirname =
+-# ifdef HAVE_USR_LIB64_DIR
+- "/usr/lib64/mozilla"_ns
+-# elif defined(__OpenBSD__) || defined(__FreeBSD__)
+- "/usr/local/lib/mozilla"_ns
+-# else
+- "/usr/lib/mozilla"_ns
+-# endif
+- ;
+- rv = NS_NewNativeLocalFile(dirname, false, getter_AddRefs(localDir));
+-# endif
++
++ const char* systemParentDir = getenv("ICECAT_SYSTEM_DIR");
++ if (!systemParentDir || !*systemParentDir) return NS_ERROR_FAILURE;
++
++ rv = NS_NewNativeLocalFile(nsDependentCString(systemParentDir), false,
++ getter_AddRefs(localDir));
+
+ if (NS_SUCCEEDED(rv)) {
+ localDir.forget(aFile);
diff --git a/gnu/packages/patches/torbrowsers-add-store-to-rdd-allowlist.patch b/gnu/packages/patches/torbrowsers-add-store-to-rdd-allowlist.patch
index 2e0e5009f4..ad648cbac4 100644
--- a/gnu/packages/patches/torbrowsers-add-store-to-rdd-allowlist.patch
+++ b/gnu/packages/patches/torbrowsers-add-store-to-rdd-allowlist.patch
@@ -1,3 +1,20 @@
+By default Firefox sandbox security model allows browser components to
+access files under '/usr', '/etc' and user home directories. However,
+similar to Nix, on Guix some of those file hierarchies are actually
+symlinks to '/gnu/store' paths, which then get denied, breaking some
+expected functionality on the browser. Moreover, their final store
+paths are not available on the build environment and also expected to
+change.
+
+Guix users that are willing to further restrict browsers' access to their
+file systems and do not mind losing some funcionality are advised to use
+Guix Containers.
+
+See: <https://bugzilla.mozilla.org/show_bug.cgi?id=1848615#c8>,
+<https://codeberg.org/guix/guix/issues/661>,
+<https://issues.guix.gnu.org/38045> and
+<https://issues.guix.gnu.org/77559>
+
--- a/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp
+++ b/security/sandbox/linux/broker/SandboxBrokerPolicyFactory.cpp
@@ -452,6 +452,7 @@
diff --git a/gnu/packages/patches/ungoogled-chromium-RUNPATH.patch b/gnu/packages/patches/ungoogled-chromium-RUNPATH.patch
index 379c47ac7e..5dd6faaade 100644
--- a/gnu/packages/patches/ungoogled-chromium-RUNPATH.patch
+++ b/gnu/packages/patches/ungoogled-chromium-RUNPATH.patch
@@ -4,7 +4,7 @@ search path (and the 'validate-runpath' phase can do its work).
diff --git a/build/config/gcc/BUILD.gn b/build/config/gcc/BUILD.gn
--- a/build/config/gcc/BUILD.gn
+++ b/build/config/gcc/BUILD.gn
-@@ -99,7 +99,14 @@ config("executable_config") {
+@@ -101,7 +101,14 @@
]
}
diff --git a/gnu/packages/patches/ungoogled-chromium-extension-search-path.patch b/gnu/packages/patches/ungoogled-chromium-extension-search-path.patch
index 5ce219ccc7..c7fffa99c2 100644
--- a/gnu/packages/patches/ungoogled-chromium-extension-search-path.patch
+++ b/gnu/packages/patches/ungoogled-chromium-extension-search-path.patch
@@ -3,22 +3,22 @@ Look for extensions in $CHROMIUM_EXTENSION_DIRECTORY instead of
--- a/chrome/common/chrome_paths.cc
+++ b/chrome/common/chrome_paths.cc
-@@ -4,6 +4,7 @@
+@@ -6,6 +6,7 @@
- #include "chrome/common/chrome_paths.h"
+ #include <optional>
+#include "base/environment.h"
+ #include "base/files/file_path.h"
#include "base/files/file_util.h"
- #include "base/logging.h"
- #include "base/native_library.h"
-@@ -511,7 +512,13 @@
+ #include "base/no_destructor.h"
+@@ -522,7 +523,13 @@
#endif
- #if defined(OS_LINUX) || defined(OS_CHROMEOS)
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
case chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS: {
- cur = base::FilePath(kFilepathSinglePrefExtensions);
+ std::unique_ptr<base::Environment> environment(base::Environment::Create());
-+ std::string extension_dir;
-+ if (environment->GetVar("CHROMIUM_EXTENSION_DIRECTORY", &extension_dir)) {
++ if (environment->GetVar("CHROMIUM_EXTENSION_DIRECTORY")) {
++ auto extension_dir = environment->GetVar("CHROMIUM_EXTENSION_DIRECTORY").value();
+ cur = base::FilePath(extension_dir);
+ } else {
+ cur = base::FilePath(kFilepathSinglePrefExtensions);
diff --git a/gnu/packages/patches/ungoogled-chromium-ffmpeg-compat.patch b/gnu/packages/patches/ungoogled-chromium-ffmpeg-compat.patch
deleted file mode 100644
index 636f518a33..0000000000
--- a/gnu/packages/patches/ungoogled-chromium-ffmpeg-compat.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-The bundled ffmpeg in Chromium is newer than the one in Guix. Patch so
-we can build with the new and old ffmpeg versions.
-
-Taken from Gentoo:
-https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/chromium-93-fix-build-with-system-ffmpeg.patch
-
-diff --git a/media/filters/audio_decoder_unittest.cc b/media/filters/audio_decoder_unittest.cc
---- a/media/filters/audio_decoder_unittest.cc
-+++ b/media/filters/audio_decoder_unittest.cc
-@@ -109,7 +109,11 @@ void SetDiscardPadding(AVPacket* packet,
- }
-
- // If the timestamp is positive, try to use FFmpeg's discard data.
-+#if LIBAVUTIL_VERSION_MAJOR < 57
-+ int skip_samples_size = 0;
-+#else
- size_t skip_samples_size = 0;
-+#endif
- const uint32_t* skip_samples_ptr =
- reinterpret_cast<const uint32_t*>(av_packet_get_side_data(
- packet, AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));
-diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
---- a/media/filters/ffmpeg_demuxer.cc
-+++ b/media/filters/ffmpeg_demuxer.cc
-@@ -427,11 +427,19 @@ void FFmpegDemuxerStream::EnqueuePacket(
- scoped_refptr<DecoderBuffer> buffer;
-
- if (type() == DemuxerStream::TEXT) {
-+#if LIBAVUTIL_VERSION_MAJOR < 57
-+ int id_size = 0;
-+#else
- size_t id_size = 0;
-+#endif
- uint8_t* id_data = av_packet_get_side_data(
- packet.get(), AV_PKT_DATA_WEBVTT_IDENTIFIER, &id_size);
-
-+#if LIBAVUTIL_VERSION_MAJOR < 57
-+ int settings_size = 0;
-+#else
- size_t settings_size = 0;
-+#endif
- uint8_t* settings_data = av_packet_get_side_data(
- packet.get(), AV_PKT_DATA_WEBVTT_SETTINGS, &settings_size);
-
-@@ -443,7 +451,11 @@ void FFmpegDemuxerStream::EnqueuePacket(
- buffer = DecoderBuffer::CopyFrom(packet->data, packet->size,
- side_data.data(), side_data.size());
- } else {
-+#if LIBAVUTIL_VERSION_MAJOR < 57
-+ int side_data_size = 0;
-+#else
- size_t side_data_size = 0;
-+#endif
- uint8_t* side_data = av_packet_get_side_data(
- packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size);
-
-@@ -504,7 +516,11 @@ void FFmpegDemuxerStream::EnqueuePacket(
- packet->size - data_offset);
- }
-
-+#if LIBAVUTIL_VERSION_MAJOR < 57
-+ int skip_samples_size = 0;
-+#else
- size_t skip_samples_size = 0;
-+#endif
- const uint32_t* skip_samples_ptr =
- reinterpret_cast<const uint32_t*>(av_packet_get_side_data(
- packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));
diff --git a/gnu/packages/patches/ungoogled-chromium-system-ffmpeg.patch b/gnu/packages/patches/ungoogled-chromium-system-ffmpeg.patch
deleted file mode 100644
index 1472206b02..0000000000
--- a/gnu/packages/patches/ungoogled-chromium-system-ffmpeg.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Alias the av_stream_get_first_dts definition added by Chromium in
-their bundled fork.
-
-Taken from Arch Linux:
-
- https://github.com/archlinux/svntogit-packages/blob/38fd5d2f2e0ade932aa7a80b7dea26215fc41854/trunk/unbundle-ffmpeg-av_stream_get_first_dts.patch
-
-diff --git a/build/linux/unbundle/ffmpeg.gn b/build/linux/unbundle/ffmpeg.gn
---- a/build/linux/unbundle/ffmpeg.gn
-+++ b/build/linux/unbundle/ffmpeg.gn
-@@ -12,6 +12,7 @@ pkg_config("system_ffmpeg") {
- "libavformat",
- "libavutil",
- ]
-+ defines = [ "av_stream_get_first_dts(stream)=stream->first_dts" ]
- }
-
- buildflag_header("ffmpeg_features") {
diff --git a/gnu/packages/patches/ungoogled-chromium-system-nspr.patch b/gnu/packages/patches/ungoogled-chromium-system-nspr.patch
index b39cf1281b..757d02b342 100644
--- a/gnu/packages/patches/ungoogled-chromium-system-nspr.patch
+++ b/gnu/packages/patches/ungoogled-chromium-system-nspr.patch
@@ -6,7 +6,7 @@ https://salsa.debian.org/chromium-team/chromium/-/blob/master/debian/patches/sys
diff --git a/base/BUILD.gn b/base/BUILD.gn
--- a/base/BUILD.gn
+++ b/base/BUILD.gn
-@@ -184,6 +184,12 @@ buildflag_header("ios_cronet_buildflags") {
+@@ -159,6 +159,12 @@
flags = [ "CRONET_BUILD=$is_cronet_build" ]
}
@@ -16,18 +16,18 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn
+ ]
+}
+
+ use_epoll = is_linux || is_chromeos || is_android
+
# Base and everything it depends on should be a static library rather than
- # a source set. Base is more of a "library" in the classic sense in that many
- # small parts of it are used in many different contexts. This combined with a
-@@ -838,8 +844,6 @@ mixed_component("base") {
- "third_party/cityhash_v103/src/city_v103.cc",
- "third_party/cityhash_v103/src/city_v103.h",
- "third_party/icu/icu_utf.h",
+@@ -809,8 +815,6 @@
+ "task/updateable_sequenced_task_runner.h",
+ "test/scoped_logging_settings.h",
+ "test/spin_wait.h",
- "third_party/nspr/prtime.cc",
- "third_party/nspr/prtime.h",
- "third_party/superfasthash/superfasthash.c",
"thread_annotations.h",
"threading/hang_watcher.cc",
+ "threading/hang_watcher.h",
diff --git a/base/time/pr_time_unittest.cc b/base/time/pr_time_unittest.cc
--- a/base/time/pr_time_unittest.cc
+++ b/base/time/pr_time_unittest.cc
@@ -43,12 +43,12 @@ diff --git a/base/time/pr_time_unittest.cc b/base/time/pr_time_unittest.cc
diff --git a/base/time/time.cc b/base/time/time.cc
--- a/base/time/time.cc
+++ b/base/time/time.cc
-@@ -21,7 +21,7 @@
- #include <utility>
-
+@@ -15,7 +15,7 @@
+ #include "base/check.h"
+ #include "base/format_macros.h"
#include "base/strings/stringprintf.h"
-#include "base/third_party/nspr/prtime.h"
+#include <nspr/prtime.h>
#include "base/time/time_override.h"
#include "build/build_config.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
+
diff --git a/gnu/packages/patches/ungoogled-chromium-unbundle-icu-target.patch b/gnu/packages/patches/ungoogled-chromium-unbundle-icu-target.patch
new file mode 100644
index 0000000000..618750f13f
--- /dev/null
+++ b/gnu/packages/patches/ungoogled-chromium-unbundle-icu-target.patch
@@ -0,0 +1,21 @@
+From a665875b4013eed997bd042326a038e24f3296e7 Mon Sep 17 00:00:00 2001
+From: Matt Jolly <kangie@gentoo.org>
+Date: Thu, 10 Oct 2024 14:36:51 +1000
+Subject: [PATCH] unbundle: add missing icu target
+
+--- a/build/linux/unbundle/icu.gn
++++ b/build/linux/unbundle/icu.gn
+@@ -65,6 +65,10 @@ group("icuuc_public") {
+ public_deps = [ ":icuuc" ]
+ }
+
++group("icui18n_hidden_visibility") {
++ public_deps = [ ":icuuc" ]
++}
++
+ shim_headers("icui18n_shim") {
+ root_path = "source/i18n"
+ headers = [
+--
+2.46.2
+
diff --git a/gnu/packages/patches/vagrant-Support-system-installed-plugins.patch b/gnu/packages/patches/vagrant-Support-system-installed-plugins.patch
new file mode 100644
index 0000000000..3d57993921
--- /dev/null
+++ b/gnu/packages/patches/vagrant-Support-system-installed-plugins.patch
@@ -0,0 +1,172 @@
+From: Hartmut Goebel <h.goebel@crazy-compilers.com>
+Date: Mon, 07 Aug 2023 18:09:09 +0200
+Subject: Support system-installed plugins
+
+Plugins must be installed as regular Ruby libraries, and they must
+contain share/vagrant-plugins/plugins.d/$PLUGINNAME.json with the
+following content:
+
+{
+ "${PLUGINNAME}": {
+ "ruby_version":"$(ruby -e 'puts RUBY_VERSION')",
+ "vagrant_version":"$(cat /usr/share/vagrant/version.txt)",
+ "gem_version":"",
+ "require":"",
+ "sources":[]
+ }
+}
+
+This patch was based on the respective patch from Debian, anyhow heavily
+adjusted to Guix and to support GUIX_VAGRANT_PLUGINS_PATH.
+
+Orignal-Author: Antonio Terceiro <terceiro@debian.org>
+Co-authored-by: Antonio Terceiro <terceiro@debian.org>
+---
+ bin/vagrant | 15 +++++++++++++++
+ lib/vagrant/bundler.rb | 2 +-
+ lib/vagrant/plugin/manager.rb | 4 ++--
+ lib/vagrant/plugin/state_file.rb | 30 ++++++++++++++++++++++++++++--
+ lib/vagrant/shared_helpers.rb | 8 ++++++++
+ 5 files changed, 54 insertions(+), 5 deletions(-)
+
+diff --git a/bin/vagrant b/bin/vagrant
+index d3f4ea6..cc00efa 100755
+--- a/bin/vagrant
++++ b/bin/vagrant
+@@ -86,6 +86,21 @@ $stderr.sync = true
+ # so we can provide correct resolutions later
+ builtin_specs = []
+
++# Add the gem paths of vagrant plugins to the Gem search path
++# TODO: find a better way to add paths to the Gem search path
++gempath = []
++if ENV['GEM_PATH']
++ gempath.append(ENV['GEM_PATH'])
++end
++ENV['GUIX_VAGRANT_PLUGINS_PATH'].split(File::PATH_SEPARATOR).each do |pluginsdir|
++ gemdir = File.absolute_path(File.join(pluginsdir, "../../lib/ruby/vendor_ruby"))
++ gempath.append(gemdir)
++end
++ENV['GEM_PATH'] = gempath.join(':')
++gemdir = nil
++gempath = nil
++Gem.clear_paths() # make GEM_PATH be reevaluated
++
+ vagrant_spec = Gem::Specification.find_all_by_name("vagrant").detect do |spec|
+ spec.version == Gem::Version.new(Vagrant::VERSION)
+ end
+diff --git a/lib/vagrant/bundler.rb b/lib/vagrant/bundler.rb
+index 46ef69f..27979b9 100644
+--- a/lib/vagrant/bundler.rb
++++ b/lib/vagrant/bundler.rb
+@@ -665,7 +665,7 @@ module Vagrant
+ spec_dir = Gem::Specification.default_specifications_dir
+ end
+ directories = [spec_dir]
+- if Vagrant.in_bundler?
++ if Vagrant.in_bundler? || Vagrant.in_guix_package?
+ Gem::Specification.find_all{true}.each do |spec|
+ list[spec.full_name] = spec
+ end
+diff --git a/lib/vagrant/plugin/manager.rb b/lib/vagrant/plugin/manager.rb
+index b73f07f..94cd609 100644
+--- a/lib/vagrant/plugin/manager.rb
++++ b/lib/vagrant/plugin/manager.rb
+@@ -18,7 +18,7 @@ module Vagrant
+
+ # Returns the path to the [StateFile] for system plugins.
+ def self.system_plugins_file
+- dir = Vagrant.installer_embedded_dir
++ dir = nil
+ return nil if !dir
+ Pathname.new(dir).join("plugins.json")
+ end
+@@ -38,7 +38,7 @@ module Vagrant
+
+ system_path = self.class.system_plugins_file
+ @system_file = nil
+- @system_file = StateFile.new(system_path) if system_path && system_path.file?
++ @system_file = StateFile.new(system_path, true) #if system_path && system_path.file?
+
+ @local_file = nil
+ @globalized = @localized = false
+diff --git a/lib/vagrant/plugin/state_file.rb b/lib/vagrant/plugin/state_file.rb
+index c6872d4..b927fd8 100644
+--- a/lib/vagrant/plugin/state_file.rb
++++ b/lib/vagrant/plugin/state_file.rb
+@@ -11,11 +11,17 @@ module Vagrant
+ # @return [Pathname] path to file
+ attr_reader :path
+
+- def initialize(path)
++ def initialize(path, system = false)
+ @path = path
++ @system = system
+
+ @data = {}
+- if @path.exist?
++ if system
++ if ENV.has_key?('GUIX_VAGRANT_PLUGINS_PATH')
++ @data["installed"] = {}
++ load_system_plugins
++ end
++ elsif @path.exist?
+ begin
+ @data = JSON.parse(@path.read)
+ rescue JSON::ParserError => e
+@@ -30,6 +36,22 @@ module Vagrant
+ @data["installed"] ||= {}
+ end
+
++ def load_system_plugins
++ ENV['GUIX_VAGRANT_PLUGINS_PATH'].split(File::PATH_SEPARATOR).each do |pluginsdir|
++ extra_plugins = Dir.glob(File.join(pluginsdir, 'plugins.d', '*.json'))
++ extra_plugins.each do |filename|
++ json = File.read(filename)
++ begin
++ plugin_data = JSON.parse(json)
++ @data["installed"].merge!(plugin_data)
++ rescue JSON::ParserError => e
++ raise Vagrant::Errors::PluginStateFileParseError,
++ path: filename, message: e.message
++ end
++ end
++ end
++ end
++
+ # Add a plugin that is installed to the state file.
+ #
+ # @param [String] name The name of the plugin
+@@ -107,6 +129,10 @@ module Vagrant
+ f.close
+ FileUtils.mv(f.path, @path)
+ end
++ rescue Errno::EACCES
++ # Ignore permission denied against system-installed plugins; regular
++ # users are not supposed to write there.
++ raise unless @system
+ end
+
+ protected
+diff --git a/lib/vagrant/shared_helpers.rb b/lib/vagrant/shared_helpers.rb
+index 7b0b87c..eb9a21e 100644
+--- a/lib/vagrant/shared_helpers.rb
++++ b/lib/vagrant/shared_helpers.rb
+@@ -43,6 +43,14 @@ module Vagrant
+ !defined?(::Bundler).nil?
+ end
+
++ # This returns a true/false if we are running from a Guix package
++ #
++ # @return [Boolean]
++ def self.in_guix_package?
++ # FIXME write a proper check if this ever goes upstream
++ true
++ end
++
+ # Returns the path to the embedded directory of the Vagrant installer,
+ # if there is one (if we're running in an installer).
+ #
+--
+2.30.9
+
diff --git a/gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch b/gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch
new file mode 100644
index 0000000000..f55d28df9b
--- /dev/null
+++ b/gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch
@@ -0,0 +1,119 @@
+From: Antonio Terceiro <terceiro@debian.org>
+Date: Wed, 22 Oct 2014 09:40:14 -0200
+Subject: Use a private temporary directory that is cleanup up on exit
+
+This avoids vagrant from cluttering $TMPDIR with dozens of even hundreds
+of temporary files (~4 per vagrant invocation).
+---
+ lib/vagrant/box.rb | 3 ++-
+ lib/vagrant/util.rb | 1 +
+ lib/vagrant/util/caps.rb | 2 +-
+ lib/vagrant/util/platform.rb | 2 +-
+ lib/vagrant/util/tempfile.rb | 39 +++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 44 insertions(+), 3 deletions(-)
+ create mode 100644 lib/vagrant/util/tempfile.rb
+
+diff --git a/lib/vagrant/box.rb b/lib/vagrant/box.rb
+index 90dc69d..4ee79b9 100644
+--- a/lib/vagrant/box.rb
++++ b/lib/vagrant/box.rb
+@@ -12,6 +12,7 @@ require "vagrant/util/downloader"
+ require "vagrant/util/platform"
+ require "vagrant/util/safe_chdir"
+ require "vagrant/util/subprocess"
++# require "vagrant/util/tempfile"
+
+ module Vagrant
+ # Represents a "box," which is a package Vagrant environment that is used
+@@ -153,7 +154,7 @@ module Vagrant
+ # @param [Hash] download_options Options to pass to the downloader.
+ # @return [BoxMetadata]
+ def load_metadata(download_options={})
+- tf = Tempfile.new("vagrant-load-metadata")
++ tf = Util::Tempfile.new("vagrant-load-metadata")
+ tf.close
+
+ url = @metadata_url
+diff --git a/lib/vagrant/util.rb b/lib/vagrant/util.rb
+index 4b3e0ff..36eb671 100644
+--- a/lib/vagrant/util.rb
++++ b/lib/vagrant/util.rb
+@@ -57,6 +57,7 @@ module Vagrant
+ autoload :SilenceWarnings, 'vagrant/util/silence_warnings'
+ autoload :SSH, 'vagrant/util/ssh'
+ autoload :StackedProcRunner, 'vagrant/util/stacked_proc_runner'
++ autoload :Tempfile, 'vagrant/util/tempfile'
+ autoload :StringBlockEditor, 'vagrant/util/string_block_editor'
+ autoload :Subprocess, 'vagrant/util/subprocess'
+ autoload :TemplateRenderer, 'vagrant/util/template_renderer'
+diff --git a/lib/vagrant/util/caps.rb b/lib/vagrant/util/caps.rb
+index 310add3..55afc49 100644
+--- a/lib/vagrant/util/caps.rb
++++ b/lib/vagrant/util/caps.rb
+@@ -31,7 +31,7 @@ module Vagrant
+
+ def ensure_output_iso(file_destination)
+ if file_destination.nil?
+- tmpfile = Tempfile.new(["vagrant", ".iso"])
++ tmpfile = Util::Tempfile.new(["vagrant", ".iso"])
+ file_destination = Pathname.new(tmpfile.path)
+ tmpfile.close
+ tmpfile.unlink
+diff --git a/lib/vagrant/util/platform.rb b/lib/vagrant/util/platform.rb
+index c8658e1..0421c70 100644
+--- a/lib/vagrant/util/platform.rb
++++ b/lib/vagrant/util/platform.rb
+@@ -388,7 +388,7 @@ module Vagrant
+
+ if wsl?
+ # Mark our filesystem with a temporary file having an unique name.
+- marker = Tempfile.new(Time.now.to_i.to_s)
++ marker = Util::Tempfile.new(Time.now.to_i.to_s)
+ logger = Log4r::Logger.new("vagrant::util::platform::wsl")
+
+ # Check for lxrun installation first
+diff --git a/lib/vagrant/util/tempfile.rb b/lib/vagrant/util/tempfile.rb
+new file mode 100644
+index 0000000..0cbbb53
+--- /dev/null
++++ b/lib/vagrant/util/tempfile.rb
+@@ -0,0 +1,39 @@
++require 'fileutils'
++require 'tmpdir'
++
++module Vagrant
++ module Util
++ class Tempfile < ::Tempfile
++
++ def initialize(basename)
++ super(basename, private_tmpdir)
++ end
++
++ def private_tmpdir
++ self.class.private_tmpdir
++ end
++
++ def self.private_tmpdir
++ @private_tmpdir ||=
++ begin
++ user = Etc.getpwuid.name
++ pid = Process.pid
++ tmpdir = File.join(Dir.tmpdir, "vagrant-#{user}-#{pid}")
++ FileUtils.mkdir_p(tmpdir)
++ FileUtils.chmod(0700, tmpdir)
++ tmpdir
++ end
++ end
++
++ def self.mktmpdir(prefix_suffix)
++ Dir.mktmpdir(prefix_suffix, private_tmpdir)
++ end
++
++
++ end
++ end
++end
++
++at_exit do
++ FileUtils.rm_rf(Vagrant::Util::Tempfile.private_tmpdir)
++end
diff --git a/gnu/packages/patches/vagrant-bin-vagrant-silence-warning-about-installer.patch b/gnu/packages/patches/vagrant-bin-vagrant-silence-warning-about-installer.patch
new file mode 100644
index 0000000000..4d4fed273c
--- /dev/null
+++ b/gnu/packages/patches/vagrant-bin-vagrant-silence-warning-about-installer.patch
@@ -0,0 +1,24 @@
+From: Antonio Terceiro <terceiro@debian.org>
+Date: Sat, 11 Oct 2014 16:54:58 -0300
+Subject: bin/vagrant: silence warning about installer
+
+---
+ bin/vagrant | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/bin/vagrant b/bin/vagrant
+index 7ca30b3..d3f4ea6 100755
+--- a/bin/vagrant
++++ b/bin/vagrant
+@@ -221,11 +221,6 @@ begin
+ end
+ end
+
+- if !Vagrant.in_installer? && !Vagrant.very_quiet?
+- # If we're not in the installer, warn.
+- env.ui.warn(I18n.t("vagrant.general.not_in_installer") + "\n", prefix: false)
+- end
+-
+ # Acceptable experimental flag values include:
+ #
+ # Unset - Disables experimental features
diff --git a/gnu/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch b/gnu/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch
deleted file mode 100644
index 548c3c2a1d..0000000000
--- a/gnu/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-This patch disables build targets that contain pre-built Java archives that
-would be copied to the build's output.
-
-Patch by Roel Janssen <roel@gnu.org>
-*** a-virtuoso-opensource-7.2.9/binsrc/Makefile.am 1970-01-01 01:00:01.000000000 +0100
---- b-virtuoso-opensource-7.2.9/binsrc/Makefile.am 2023-03-05 13:05:37.946449855 +0100
-***************
-*** 19,25 ****
- #
- #
-
-! SUBDIRS = dav mono virtuoso tests rdf_mappers driver maildrop sqldoc hosting graphql bpel fct tutorial conductor samples vsp ws sync vspx vad cached_resources virtodbc virtoledb virtuoso_sink xddl VirtuosoClient.Net oat isparql jena jena2 jena3 jena4 sesame sesame2 sesame3 sesame4 redland hibernate dbpedia rdb2rdf rdf4j rdf4j_4 websocket
-
-
- # ----------------------------------------------------------------------
---- 19,25 ----
- #
- #
-
-! SUBDIRS = dav mono virtuoso tests rdf_mappers driver maildrop sqldoc hosting graphql bpel fct tutorial conductor samples vsp ws sync vspx vad cached_resources virtodbc virtoledb virtuoso_sink xddl VirtuosoClient.Net oat isparql redland dbpedia rdb2rdf websocket
-
-
- # ----------------------------------------------------------------------
-*** a-virtuoso-opensource-7.2.9/configure.ac 1970-01-01 01:00:01.000000000 +0100
---- b-virtuoso-opensource-7.2.9/configure.ac 2023-03-05 13:03:01.302629421 +0100
-***************
-*** 57,63 ****
- dnl AM_INIT_AUTOMAKE([1.8])
- dnl AM_INIT_AUTOMAKE([1.9 tar-ustar])
- dnl
-! AM_INIT_AUTOMAKE([1.9 tar-ustar])
-
- AM_MAINTAINER_MODE
-
---- 57,63 ----
- dnl AM_INIT_AUTOMAKE([1.8])
- dnl AM_INIT_AUTOMAKE([1.9 tar-ustar])
- dnl
-! AM_INIT_AUTOMAKE([1.9 tar-ustar subdir-objects])
-
- AM_MAINTAINER_MODE
-
-***************
-*** 3210,3216 ****
- binsrc/driver/Makefile
- binsrc/fct/Makefile
- binsrc/graphql/Makefile
-- binsrc/hibernate/Makefile
- binsrc/hosting/Makefile
- binsrc/hosting/mono/Makefile
- binsrc/hosting/mono/tests/Makefile
---- 3210,3215 ----
-***************
-*** 3222,3238 ****
- binsrc/hosting/ruby/Makefile
- binsrc/hosting/shapefileio/Makefile
- binsrc/isparql/Makefile
-- binsrc/jena/Makefile
-- binsrc/jena2/Makefile
-- binsrc/jena3/Makefile
-- binsrc/jena4/Makefile
- binsrc/maildrop/Makefile
- binsrc/mono/Makefile
- binsrc/oat/Makefile
- binsrc/rdf_mappers/Makefile
- binsrc/rdb2rdf/Makefile
-- binsrc/rdf4j/Makefile
-- binsrc/rdf4j_4/Makefile
- binsrc/redland/Makefile
- binsrc/samples/demo/Makefile
- binsrc/samples/hslookup/Makefile
---- 3221,3231 ----
-***************
-*** 3245,3254 ****
- binsrc/samples/webapp/Makefile
- binsrc/samples/xpath/Makefile
- binsrc/samples/xquery/Makefile
-- binsrc/sesame/Makefile
-- binsrc/sesame2/Makefile
-- binsrc/sesame3/Makefile
-- binsrc/sesame4/Makefile
- binsrc/sqldoc/Makefile
- binsrc/sync/Makefile
- binsrc/tests/biftest/Makefile
---- 3238,3243 ----
-***************
-*** 3291,3300 ****
- docsrc/stylesheets/Makefile
- docsrc/xmlsource/Makefile
- libsrc/Dk/Makefile
-- libsrc/JDBCDriverType4/Makefile
-- libsrc/JDBCDriverType4/testsuite_4.0/Makefile
-- libsrc/JDBCDriverType4/virtuoso/jdbc/Makefile
-- libsrc/JDBCDriverType4/virtuoso/Makefile
- libsrc/langfunc/Makefile
- libsrc/odbcsdk/Makefile
- libsrc/plugin/Makefile
---- 3280,3285 ----
-*** a-virtuoso-opensource-7.2.9/libsrc/Makefile.am 1970-01-01 01:00:01.000000000 +0100
---- b-virtuoso-opensource-7.2.9/libsrc/Makefile.am 2023-03-05 13:03:17.616027294 +0100
-***************
-*** 19,25 ****
- #
- #
-
-! SUBDIRS = util zlib odbcsdk Dk Thread langfunc Wi plugin Tidy Xml.new JDBCDriverType4
-
- noinst_HEADERS = Dk.h libutil.h
-
---- 19,25 ----
- #
- #
-
-! SUBDIRS = util zlib odbcsdk Dk Thread langfunc Wi plugin Tidy Xml.new
-
- noinst_HEADERS = Dk.h libutil.h
-
diff --git a/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch b/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
new file mode 100644
index 0000000000..5e120ef630
--- /dev/null
+++ b/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch
@@ -0,0 +1,191 @@
+This patch is taken from yabridge project:
+https://github.com/robbert-vdh/yabridge/tree/master/tools/vst3-sdk-patches.
+
+Submodule base contains modified content
+diff --git a/base/source/fdebug.cpp b/base/source/fdebug.cpp
+index b1d1dcc..9093022 100644
+--- a/base/source/fdebug.cpp
++++ b/base/source/fdebug.cpp
+@@ -117,8 +117,6 @@ bool AmIBeingDebugged ()
+ #if _MSC_VER
+ #include <intrin.h>
+ #endif
+-#define vsnprintf _vsnprintf
+-#define snprintf _snprintf
+
+ #elif SMTG_OS_MACOS
+ #include <errno.h>
+Submodule pluginterfaces contains modified content
+diff --git a/pluginterfaces/base/fstrdefs.h b/pluginterfaces/base/fstrdefs.h
+index 848e8ee..8846d31 100644
+--- a/pluginterfaces/base/fstrdefs.h
++++ b/pluginterfaces/base/fstrdefs.h
+@@ -22,6 +22,16 @@
+ /** string methods defines unicode / ASCII */
+ //----------------------------------------------------------------------------
+
++// We can use most of the VST3 SDK's Windows UTF-16 functionality by just
++// creating aliases for equivalent Linux functions
++#if __WINE__
++#define wcsicmp wcscasecmp
++#define wcsnicmp wcsncasecmp
++#define _vsnwprintf vswprintf
++#define stricmp strcasecmp
++#define strnicmp strncasecmp
++#endif
++
+ // 16 bit string operations
+ #if SMTG_CPP11 // if c++11 unicode string literals
+ #define SMTG_CPP11_CAT_PRIVATE_DONT_USE(a,b) a ## b
+diff --git a/pluginterfaces/base/ftypes.h b/pluginterfaces/base/ftypes.h
+index 133dbba..33ecae3 100644
+--- a/pluginterfaces/base/ftypes.h
++++ b/pluginterfaces/base/ftypes.h
+@@ -154,7 +154,7 @@ namespace Steinberg
+ // always inline macros (only when RELEASE is 1)
+ //----------------------------------------------------------------------------
+ #if RELEASE
+- #if SMTG_OS_MACOS || SMTG_OS_LINUX || defined(__MINGW32__)
++ #if SMTG_OS_MACOS || SMTG_OS_LINUX || defined(__WINE__)
+ #define SMTG_ALWAYS_INLINE __inline__ __attribute__((__always_inline__))
+ #define SMTG_NEVER_INLINE __attribute__((noinline))
+ #elif SMTG_OS_WINDOWS
+diff --git a/pluginterfaces/base/ustring.cpp b/pluginterfaces/base/ustring.cpp
+index 24a412f..8e631c9 100644
+--- a/pluginterfaces/base/ustring.cpp
++++ b/pluginterfaces/base/ustring.cpp
+@@ -38,6 +38,10 @@
+
+ #endif
+
++#ifdef __WINE__
++#include <wchar.h>
++#endif
++
+ //------------------------------------------------------------------------
+ namespace Steinberg {
+
+@@ -173,7 +177,7 @@ bool UString::scanFloat (double& value) const
+ bool UString::printFloat (double value, int32 precision)
+ {
+ #if SMTG_OS_WINDOWS
+- return swprintf ((wchar_t*)thisBuffer, L"%.*lf", precision, value) != -1;
++ return swprintf ((wchar_t*)thisBuffer, thisSize, L"%.*lf", precision, value) != -1;
+ #elif SMTG_OS_MACOS
+ bool result = false;
+ CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR("%.*lf"), precision, value);
+@@ -238,7 +242,7 @@ bool UString::scanInt (int64& value) const
+ bool UString::printInt (int64 value)
+ {
+ #if SMTG_OS_WINDOWS
+- return swprintf ((wchar_t*)thisBuffer, L"%I64d", value) != -1;
++ return swprintf ((wchar_t*)thisBuffer, thisSize, L"%I64d", value) != -1;
+
+ #elif SMTG_OS_MACOS
+ CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR("%lld"), value);
+Submodule public.sdk contains modified content
+diff --git a/public.sdk/source/common/systemclipboard_win32.cpp b/public.sdk/source/common/systemclipboard_win32.cpp
+index c5cb2b8..2ee3d65 100644
+--- a/public.sdk/source/common/systemclipboard_win32.cpp
++++ b/public.sdk/source/common/systemclipboard_win32.cpp
+@@ -111,7 +111,7 @@ bool copyTextToClipboard (const std::string& text)
+ {
+ if (auto* data = static_cast<WCHAR*> (GlobalLock (memory)))
+ {
+-#if defined(__MINGW32__)
++#if defined(__WINE__)
+ memcpy (data, wideStr.data (), byteSize);
+ #else
+ memcpy_s (data, byteSize, wideStr.data (), byteSize);
+diff --git a/public.sdk/source/vst/hosting/module_win32.cpp b/public.sdk/source/vst/hosting/module_win32.cpp
+index 2ba9319..ab6d72a 100644
+--- a/public.sdk/source/vst/hosting/module_win32.cpp
++++ b/public.sdk/source/vst/hosting/module_win32.cpp
+@@ -44,35 +44,10 @@
+ #include <algorithm>
+ #include <iostream>
+
+-#if SMTG_CPP17
+-
+-#if __has_include(<filesystem>)
+-#define USE_FILESYSTEM 1
+-#elif __has_include(<experimental/filesystem>)
+-#define USE_FILESYSTEM 0
+-#endif
+-
+-#else // !SMTG_CPP17
+-
+-#define USE_FILESYSTEM 0
+-
+-#endif // SMTG_CPP17
+-
+-#if USE_FILESYSTEM == 1
+-
+-#include <filesystem>
+-namespace filesystem = std::filesystem;
+-
+-#else // USE_FILESYSTEM == 0
+-
+-// The <experimental/filesystem> header is deprecated. It is superseded by the C++17 <filesystem>
+-// header. You can define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING to silence the
+-// warning, otherwise the build will fail in VS2019 16.3.0
+-#define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING
+-#include <experimental/filesystem>
+-namespace filesystem = std::experimental::filesystem;
+-
+-#endif // USE_FILESYSTEM
++// `std::filesystem` doesn't work correctly with wineg++, resulting in weird
++// memory errors. This library is a drop-in replacement.
++#include <ghc/filesystem.hpp>
++namespace filesystem = ghc::filesystem;
+
+ #pragma comment(lib, "Shell32")
+
+@@ -320,7 +295,7 @@ VST3::Optional<filesystem::path> resolveShellLink (const filesystem::path& p)
+ #elif USE_OLE
+ Ole::instance ();
+
+- IShellLink* shellLink = nullptr;
++ IShellLinkW* shellLink = nullptr;
+ if (!SUCCEEDED (CoCreateInstance (CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER,
+ IID_IShellLink, reinterpret_cast<LPVOID*> (&shellLink))))
+ return {};
+@@ -405,13 +380,13 @@ void findFilesWithExt (const filesystem::path& path, const std::string& ext,
+ filesystem::path result;
+ if (checkVST3Package (p, &result))
+ {
+- pathList.push_back (result.generic_u8string ());
++ pathList.push_back (result.generic_string ());
+ continue;
+ }
+ findFilesWithExt (cp, ext, pathList, recursive);
+ }
+ else
+- pathList.push_back (cp.generic_u8string ());
++ pathList.push_back (cp.generic_string ());
+ }
+ else if (recursive)
+ {
+@@ -431,18 +406,18 @@ void findFilesWithExt (const filesystem::path& path, const std::string& ext,
+ filesystem::path result;
+ if (checkVST3Package (*resolvedLink, &result))
+ {
+- pathList.push_back (result.generic_u8string ());
++ pathList.push_back (result.generic_string ());
+ continue;
+ }
+ findFilesWithExt (*resolvedLink, ext, pathList, recursive);
+ }
+ else
+- pathList.push_back (resolvedLink->generic_u8string ());
++ pathList.push_back (resolvedLink->generic_string ());
+ }
+ else if (filesystem::is_directory (*resolvedLink))
+ {
+- const auto& str = resolvedLink->generic_u8string ();
+- if (cp.generic_u8string ().compare (0, str.size (), str.data (),
++ const auto& str = resolvedLink->generic_string ();
++ if (cp.generic_string ().compare (0, str.size (), str.data (),
+ str.size ()) != 0)
+ findFilesWithExt (*resolvedLink, ext, pathList, recursive);
+ }
diff --git a/gnu/packages/patches/vulkan-tools-wayland-1.24.patch b/gnu/packages/patches/vulkan-tools-wayland-1.24.patch
new file mode 100644
index 0000000000..7d440c09ca
--- /dev/null
+++ b/gnu/packages/patches/vulkan-tools-wayland-1.24.patch
@@ -0,0 +1,100 @@
+From f546743016f5301c063f2c50af0ea43dd2485ef4 Mon Sep 17 00:00:00 2001
+From: Charles Giessen <charles@lunarg.com>
+Date: Thu, 17 Jul 2025 09:56:40 -0500
+Subject: [PATCH] build: Remove pkg-config provided library names
+
+The library names of Xcb, Xlib, and Wayland do not need to be queried from pkg-config,
+instead they can be hardcoded to use the fallback names.
+
+The intent of querying the library names was to prevent issues where the hardcoded name
+was not the platform-appropriate name. But because <library>_LINK_LIBRARIES can have
+more than one library name, the logic to assign <library>_LINK_LIBRARIES into a compile
+definition breaks horribly. While it is possible to handle this in CMake, the dlopen code would
+also have to handle it which is much more error prone.
+---
+ cube/CMakeLists.txt | 20 --------------------
+ cube/wayland_loader.h | 3 ---
+ cube/xcb_loader.h | 3 ---
+ cube/xlib_loader.h | 3 ---
+ 4 files changed, 29 deletions(-)
+
+diff --git a/cube/CMakeLists.txt b/cube/CMakeLists.txt
+index 7e135e79b..dac6bfed9 100644
+--- a/cube/CMakeLists.txt
++++ b/cube/CMakeLists.txt
+@@ -307,16 +307,6 @@ if (ANDROID)
+ return()
+ endif()
+
+-if (XCB_LINK_LIBRARIES)
+- target_compile_definitions(vkcube PRIVATE "XCB_LIBRARY=\"${XCB_LINK_LIBRARIES}\"")
+-endif()
+-if (X11_LINK_LIBRARIES)
+- target_compile_definitions(vkcube PRIVATE "XLIB_LIBRARY=\"${X11_LINK_LIBRARIES}\"")
+-endif()
+-if (WAYLAND_CLIENT_LINK_LIBRARIES)
+- target_compile_definitions(vkcube PRIVATE "WAYLAND_LIBRARY=\"${WAYLAND_CLIENT_LINK_LIBRARIES}\"")
+-endif()
+-
+ # ----------------------------------------------------------------------------
+ # vkcubepp
+
+@@ -360,16 +350,6 @@ target_include_directories(vkcubepp PRIVATE .)
+ target_compile_definitions(vkcubepp PRIVATE ${ENABLED_CUBE_PLATFORMS})
+ target_link_libraries(vkcubepp ${CMAKE_DL_LIBS} Vulkan::Headers)
+
+-if (XCB_LINK_LIBRARIES )
+- target_compile_definitions(vkcubepp PUBLIC "XCB_LIBRARY=\"${XCB_LINK_LIBRARIES}\"")
+-endif()
+-if (X11_LINK_LIBRARIES)
+- target_compile_definitions(vkcubepp PUBLIC "XLIB_LIBRARY=\"${X11_LINK_LIBRARIES}\"")
+-endif()
+-if (WAYLAND_CLIENT_LINK_LIBRARIES)
+- target_compile_definitions(vkcubepp PUBLIC "WAYLAND_LIBRARY=\"${WAYLAND_CLIENT_LINK_LIBRARIES}\"")
+-endif()
+-
+ if(APPLE)
+ install(
+ TARGETS vkcubepp
+diff --git a/cube/wayland_loader.h b/cube/wayland_loader.h
+index 2afab6e97..7d7d91412 100644
+--- a/cube/wayland_loader.h
++++ b/cube/wayland_loader.h
+@@ -80,9 +80,6 @@ static PFN_wl_display_disconnect cube_wl_display_disconnect = NULL;
+
+ static inline void *initialize_wayland() {
+ void *wayland_library = NULL;
+-#if defined(WAYLAND_LIBRARY)
+- wayland_library = dlopen(WAYLAND_LIBRARY, RTLD_NOW | RTLD_LOCAL);
+-#endif
+ if (NULL == wayland_library) {
+ wayland_library = dlopen("libwayland-client.so.0", RTLD_NOW | RTLD_LOCAL);
+ }
+diff --git a/cube/xcb_loader.h b/cube/xcb_loader.h
+index a94d5ab56..cecd25402 100644
+--- a/cube/xcb_loader.h
++++ b/cube/xcb_loader.h
+@@ -88,9 +88,6 @@ static PFN_xcb_screen_next cube_xcb_screen_next = NULL;
+
+ void *initialize_xcb() {
+ void *xcb_library = NULL;
+-#if defined(XCB_LIBRARY)
+- xcb_library = dlopen(XCB_LIBRARY, RTLD_NOW | RTLD_LOCAL);
+-#endif
+ if (NULL == xcb_library) {
+ xcb_library = dlopen("libxcb.so.1", RTLD_NOW | RTLD_LOCAL);
+ }
+diff --git a/cube/xlib_loader.h b/cube/xlib_loader.h
+index c7874d0e7..881789f18 100644
+--- a/cube/xlib_loader.h
++++ b/cube/xlib_loader.h
+@@ -72,9 +72,6 @@ static PFN_XFlush cube_XFlush = NULL;
+
+ void* initialize_xlib() {
+ void* xlib_library = NULL;
+-#if defined(XLIB_LIBRARY)
+- xlib_library = dlopen(XLIB_LIBRARY, RTLD_NOW | RTLD_LOCAL);
+-#endif
+ if (NULL == xlib_library) {
+ xlib_library = dlopen("libX11.so.6", RTLD_NOW | RTLD_LOCAL);
+ }
diff --git a/gnu/packages/patches/warzone2100-unbundle-libs.patch b/gnu/packages/patches/warzone2100-unbundle-libs.patch
new file mode 100644
index 0000000000..6752cc609c
--- /dev/null
+++ b/gnu/packages/patches/warzone2100-unbundle-libs.patch
@@ -0,0 +1,324 @@
+diff -ru a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt
+--- a/3rdparty/CMakeLists.txt 2025-09-16 11:41:32.000000000 -0500
++++ b/3rdparty/CMakeLists.txt 2025-09-18 14:00:25.296819724 -0500
+@@ -1,67 +1,47 @@
+ cmake_minimum_required (VERSION 3.16...3.31)
+-
++find_package(PkgConfig QUIET)
+ include(CheckCompilerFlagsOutput)
+
+-SET(UTF8PROC_INSTALL OFF CACHE BOOL "Enable installation of utf8proc" FORCE)
+-add_subdirectory(utf8proc EXCLUDE_FROM_ALL)
+-set_property(TARGET utf8proc PROPERTY FOLDER "3rdparty")
+-if(NOT MSVC)
+- set(_supported_utf8proc_cxx_compiler_flags "")
+-
+- # -Wassign-enum
+- check_compiler_flags_output("-Werror -Wno-assign-enum -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-assign-enum" OUTPUT_VARIABLE _supported_utf8proc_cxx_compiler_flags APPEND)
+-
+- if (NOT _supported_utf8proc_cxx_compiler_flags STREQUAL "")
+- string(REPLACE " " ";" _supported_utf8proc_cxx_compiler_flags "${_supported_utf8proc_cxx_compiler_flags}")
+- target_compile_options(utf8proc PRIVATE ${_supported_utf8proc_cxx_compiler_flags})
+- endif()
+-endif()
++pkg_check_modules(UTF8PROC REQUIRED libutf8proc)
++add_library(utf8proc UNKNOWN IMPORTED)
++set_target_properties(utf8proc PROPERTIES
++ IMPORTED_LOCATION ${UTF8PROC_LIBRARIES}
++ INTERFACE_INCLUDE_DIRECTORIES ${UTF8PROC_INCLUDE_DIRS}
++ INTERFACE_LINK_LIBRARIES ${UTF8PROC_LINK_LIBRARIES}
++)
+
+ add_subdirectory(launchinfo EXCLUDE_FROM_ALL)
+ set_property(TARGET launchinfo PROPERTY FOLDER "3rdparty")
+
+-SET(FMT_INSTALL OFF CACHE BOOL "Generate the install target" FORCE)
+-SET(FMT_SYSTEM_HEADERS ON CACHE BOOL "Expose headers with marking them as system." FORCE)
+-add_subdirectory(fmt EXCLUDE_FROM_ALL)
+-set_property(TARGET fmt PROPERTY FOLDER "3rdparty")
+-# Define a custom inline namespace for the fmt used by WZ, to prevent ODR violations if static linking to any libraries that themselves embed (a different version of) fmt
+-target_compile_definitions(fmt PUBLIC "FMT_BEGIN_NAMESPACE=namespace fmt { inline namespace v11_wz2100 {")
+-target_compile_definitions(fmt PUBLIC "FMT_END_NAMESPACE=}}")
+-
++pkg_check_modules(FMT REQUIRED fmt)
++add_library(fmt UNKNOWN IMPORTED)
++set_target_properties(fmt PROPERTIES
++ IMPORTED_LOCATION ${FMT_LIBRARIES}
++ INTERFACE_INCLUDE_DIRECTORIES ${FMT_INCLUDE_DIRS}
++ INTERFACE_LINK_LIBRARIES ${FMT_LINK_LIBRARIES}
++)
+
+ # inih library
+-add_library(inih STATIC "inih/ini.h" "inih/ini.c")
+-set_property(TARGET inih PROPERTY FOLDER "3rdparty")
+-target_include_directories(inih PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
+-target_compile_definitions(inih PRIVATE
+- "-DINI_API="
+- "-DINI_ALLOW_MULTILINE=0"
+- "-DINI_ALLOW_BOM=1"
+- "-DINI_ALLOW_INLINE_COMMENTS=0"
+- "-DINI_MAX_LINE=1024"
+- "-DINI_ALLOW_REALLOC=1"
+- "-DINI_INITIAL_ALLOC=1024"
++pkg_check_modules(INIH REQUIRED inih)
++add_library(inih UNKNOWN IMPORTED)
++set_target_properties(inih PROPERTIES
++ IMPORTED_LOCATION ${INIH_LIBRARIES}
++ INTERFACE_INCLUDE_DIRECTORIES ${INIH_INCLUDE_DIRS}
++ INTERFACE_LINK_LIBRARIES ${INIH_LINK_LIBRARIES}
+ )
+
+ # re2
+-SET(RE2_BUILD_TESTING OFF CACHE BOOL "enable testing for RE2" FORCE)
+-add_subdirectory(re2 EXCLUDE_FROM_ALL)
+-target_include_directories(re2 PUBLIC
+- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/re2>
++pkg_check_modules(RE2 REQUIRED re2)
++add_library(re2 UNKNOWN IMPORTED)
++set_target_properties(re2 PROPERTIES
++ IMPORTED_LOCATION ${RE2_LIBRARIES}
++ INTERFACE_INCLUDE_DIRECTORIES ${RE2_INCLUDE_DIRS}
++ INTERFACE_LINK_LIBRARIES ${RE2_LINK_LIBRARIES}
+ )
+-set_property(TARGET re2 PROPERTY FOLDER "3rdparty")
+-set_property(TARGET re2 PROPERTY XCODE_ATTRIBUTE_GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS NO) # -Wmissing-field-initializers
+-set_property(TARGET re2 PROPERTY XCODE_ATTRIBUTE_GCC_WARN_SHADOW NO) # -Wshadow
+-set_property(TARGET re2 PROPERTY XCODE_ATTRIBUTE_WARNING_CFLAGS "-Wno-missing-field-initializers -Wno-shadow")
+
+ add_subdirectory(EmbeddedJSONSignature EXCLUDE_FROM_ALL)
+ set_property(TARGET EmbeddedJSONSignature PROPERTY FOLDER "3rdparty")
+
+-if(ENABLE_DISCORD)
+- add_subdirectory(discord-rpc EXCLUDE_FROM_ALL)
+- set_property(TARGET discord-rpc PROPERTY FOLDER "3rdparty")
+-endif()
+-
+ find_package(SQLite3 3.14 REQUIRED)
+ set(SQLITECPP_USE_STATIC_RUNTIME OFF CACHE BOOL "Use static runtime" FORCE)
+ set(SQLITE_HAS_CODEC OFF CACHE BOOL "Enable database encryption API. Not available in the public release of SQLite." FORCE)
+@@ -111,52 +91,7 @@
+ if (WZ_ENABLE_BASIS_UNIVERSAL AND NOT WZ_CI_DISABLE_BASIS_COMPRESS_TEXTURES)
+
+ # basis-universal
+- set(_ORIGINAL_CMAKE_PROGRAM_PATH "${CMAKE_PROGRAM_PATH}")
+- if(DEFINED VCPKG_INSTALLED_DIR AND DEFINED VCPKG_HOST_TRIPLET)
+- # Partial workaround for: https://github.com/microsoft/vcpkg/issues/17001
+- # Explicitly add the HOST_TRIPLET paths to CMAKE_PROGRAM_PATH
+- list(APPEND CMAKE_PROGRAM_PATH "${VCPKG_INSTALLED_DIR}/${VCPKG_HOST_TRIPLET}")
+- endif()
+- find_program(BASIS_UNIVERSAL_CLI NAMES basisu PATH_SUFFIXES "tools/basisu" NO_CACHE)
+- set(CMAKE_PROGRAM_PATH "${_ORIGINAL_CMAKE_PROGRAM_PATH}")
+- if(NOT BASIS_UNIVERSAL_CLI)
+- message(STATUS "Pre-installed basisu tool not found - attempting to build for host system")
+-
+- # Build the tool for the host system at configure time
+- set(BASISU_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/basis_universal_host_tool/")
+- execute_process(
+- COMMAND ${CMAKE_COMMAND} -E make_directory "${BASISU_BINARY_DIR}"
+- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/basis_universal_host_build"
+- RESULT_VARIABLE _basis_result
+- )
+- if(NOT _basis_result EQUAL 0)
+- message(FATAL_ERROR "Failed to create directory for basis_universal_host_build")
+- endif()
+- execute_process(
+- COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release "${CMAKE_CURRENT_SOURCE_DIR}/basis_universal_host_build"
+- WORKING_DIRECTORY "${BASISU_BINARY_DIR}"
+- RESULT_VARIABLE _basis_result
+- )
+- if(NOT _basis_result EQUAL 0)
+- message(FATAL_ERROR "Failed to configure basis_universal_host_build")
+- endif()
+- execute_process(
+- COMMAND ${CMAKE_COMMAND} --build "${BASISU_BINARY_DIR}" --config Release
+- WORKING_DIRECTORY "${BASISU_BINARY_DIR}"
+- RESULT_VARIABLE _basis_result
+- )
+- if(NOT _basis_result EQUAL 0)
+- message(FATAL_ERROR "Basis-Universal host tool build failed")
+- endif()
+- message(STATUS "Basis-Universal Host Tool Built")
+-
+- find_program(BASIS_UNIVERSAL_CLI NAMES basisu PATHS "${BASISU_BINARY_DIR}/basis_install/bin" NO_CACHE NO_DEFAULT_PATH)
+- if(NOT BASIS_UNIVERSAL_CLI)
+- message(FATAL_ERROR "Built basisu CLI tool not found!")
+- endif()
+- else()
+- message(STATUS "Pre-installed basisu tool found: ${BASIS_UNIVERSAL_CLI}")
+- endif()
++ find_program(BASIS_UNIVERSAL_CLI NAMES basisu REQUIRED)
+
+ # Test basisu -version
+ execute_process(
+@@ -174,86 +109,6 @@
+
+ endif()
+
+-if (WZ_ENABLE_BASIS_UNIVERSAL)
+-
+- # basis-universal transcoder
+-
+- add_library(basis_transcoder STATIC "${CMAKE_CURRENT_SOURCE_DIR}/basis_universal/transcoder/basisu_transcoder.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/basis_universal/transcoder/basisu_transcoder.h" "${CMAKE_CURRENT_SOURCE_DIR}/basis_universal/zstd/zstddeclib.c")
+- set_property(TARGET basis_transcoder PROPERTY FOLDER "3rdparty")
+- target_include_directories(basis_transcoder SYSTEM PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/basis_universal/transcoder")
+-
+- if(NOT MSVC)
+- set(_supported_basistranscoder_cxx_compiler_flags "")
+-
+- # -fno-strict-aliasing (GCC, Clang)
+- check_compiler_flags_output("-Werror -fno-strict-aliasing -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-fno-strict-aliasing" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND)
+-
+- # -Wcast-align (GCC 3.4+, Clang 3.2+)
+- check_compiler_flags_output("-Werror -Wno-cast-align -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-cast-align" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND)
+-
+- # -Wdeprecated-declarations
+- check_compiler_flags_output("-Werror -Wno-deprecated-declarations -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-deprecated-declarations" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND)
+-
+- # -Wunused-but-set-variable
+- check_compiler_flags_output("-Werror -Wno-unused-but-set-variable -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-unused-but-set-variable" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND)
+-
+- # -Wunused-function
+- check_compiler_flags_output("-Werror -Wno-unused-function -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-unused-function" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND)
+-
+- # -Wunused-const-variable
+- check_compiler_flags_output("-Werror -Wno-unused-const-variable -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-unused-const-variable" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND)
+-
+- # -Wunknown-warning-option
+- check_compiler_flags_output("-Werror -Wno-unknown-warning-option -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-unknown-warning-option" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND)
+-
+- # -Wnontrivial-memcall
+- check_compiler_flags_output("-Werror -Wno-nontrivial-memcall -Wno-error=cpp" COMPILER_TYPE CXX OUTPUT_FLAGS "-Wno-nontrivial-memcall" OUTPUT_VARIABLE _supported_basistranscoder_cxx_compiler_flags APPEND)
+-
+- if (NOT _supported_basistranscoder_cxx_compiler_flags STREQUAL "")
+- string(REPLACE " " ";" _supported_basistranscoder_cxx_compiler_flags "${_supported_basistranscoder_cxx_compiler_flags}")
+- target_compile_options(basis_transcoder PRIVATE ${_supported_basistranscoder_cxx_compiler_flags})
+- endif()
+- endif()
+-
+- # Must also set BASISD_IS_BIG_ENDIAN if the target platform is big-endian!
+- if (NOT DEFINED CMAKE_CXX_BYTE_ORDER AND CMAKE_VERSION VERSION_LESS 3.20)
+- # CMake < 3.20 does not have CMAKE_<LANG>_BYTE_ORDER
+- # Instead, use the older TestBigEndian module (although this may not work for cross-compilation)
+- if (NOT CMAKE_CROSSCOMPILING)
+- include(TestBigEndian)
+- test_big_endian(IS_BIGENDIAN)
+- if (IS_BIGENDIAN)
+- set(CMAKE_CXX_BYTE_ORDER "BIG_ENDIAN")
+- endif()
+- else()
+- message(WARNING "Unable to determine endianness for target architecture. Either upgrade to CMake 3.20+, or - if big endian - manually set the CMAKE_CXX_BYTE_ORDER cache variable to \"BIG_ENDIAN\". Otherwise, assuming little endian.")
+- endif()
+- endif()
+- if (DEFINED CMAKE_CXX_BYTE_ORDER AND CMAKE_CXX_BYTE_ORDER STREQUAL "BIG_ENDIAN")
+- message(STATUS "Defining BASISD_IS_BIG_ENDIAN=1")
+- target_compile_definitions(basis_transcoder PRIVATE "-DBASISD_IS_BIG_ENDIAN=1")
+- endif()
+-
+- # Must set BASISU_HAVE_STD_TRIVIALLY_COPYABLE if the target supports std::is_trivially_copyable
+- include(CheckCXXSourceCompiles)
+- check_cxx_source_compiles("
+- #include <type_traits>
+- const bool val = std::is_trivially_copyable<bool>::value;
+- int main()
+- {
+- return 0;
+- }"
+- HAVE_STD_IS_TRIVIALLY_COPYABLE
+- )
+- if (HAVE_STD_IS_TRIVIALLY_COPYABLE)
+- target_compile_definitions(basis_transcoder PUBLIC "-DBASISU_HAVE_STD_TRIVIALLY_COPYABLE")
+- endif()
+-
+- # Disable certain transcoder formats
+- target_compile_definitions(basis_transcoder PRIVATE "-DBASISD_SUPPORT_ATC=0" "-DBASISD_SUPPORT_PVRTC1=0" "-DBASISD_SUPPORT_PVRTC2=0")
+-
+-endif(WZ_ENABLE_BASIS_UNIVERSAL)
+-
+ if (WZ_PROFILING_NVTX)
+ include(FetchContent)
+ FetchContent_Declare(
+diff -ru a/lib/framework/wzstring.cpp b/lib/framework/wzstring.cpp
+--- a/lib/framework/wzstring.cpp 2025-09-16 11:41:32.000000000 -0500
++++ b/lib/framework/wzstring.cpp 2025-09-18 13:37:23.686668245 -0500
+@@ -24,8 +24,8 @@
+ #include <sstream>
+ #include <iomanip>
+ #include <limits>
+-#include <utfcpp/source/utf8.h>
+-#include <utf8proc/utf8proc.h>
++#include <utf8cpp/utf8.h>
++#include <utf8proc.h>
+
+ WzUniCodepoint WzUniCodepoint::fromASCII(unsigned char charLiteral)
+ {
+diff -ru a/lib/ivis_opengl/CMakeLists.txt b/lib/ivis_opengl/CMakeLists.txt
+--- a/lib/ivis_opengl/CMakeLists.txt 2025-09-16 11:41:32.000000000 -0500
++++ b/lib/ivis_opengl/CMakeLists.txt 2025-09-18 14:00:13.716771596 -0500
+@@ -88,7 +88,7 @@
+ include(WZTargetConfiguration)
+ WZ_TARGET_CONFIGURATION(ivis-opengl)
+
+-target_link_libraries(ivis-opengl PRIVATE framework launchinfo fmt::fmt)
++target_link_libraries(ivis-opengl PRIVATE framework launchinfo fmt)
+ if(CMAKE_SYSTEM_NAME MATCHES "Emscripten")
+ # We should be using the Emscripten port linker flags for FreeType & Harfbuzz
+ else()
+@@ -116,8 +116,11 @@
+ target_link_libraries(ivis-opengl PRIVATE etcpak)
+ target_compile_definitions(ivis-opengl PRIVATE "-DETCPAK_ENABLED")
+ endif()
+-if(WZ_ENABLE_BASIS_UNIVERSAL AND TARGET basis_transcoder)
+- target_link_libraries(ivis-opengl PRIVATE basis_transcoder)
++if(WZ_ENABLE_BASIS_UNIVERSAL)
++ find_package(PkgConfig QUIET)
++ pkg_check_modules(BASIS REQUIRED basisu_encoder)
++ target_include_directories(ivis-opengl PUBLIC ${BASIS_INCLUDE_DIRS})
++ target_link_libraries(ivis-opengl PRIVATE ${BASIS_LINK_LIBRARIES})
+ target_compile_definitions(ivis-opengl PRIVATE "-DBASIS_ENABLED")
+ else()
+ message(WARNING "Basis-universal support is disabled")
+diff -ru a/lib/netplay/CMakeLists.txt b/lib/netplay/CMakeLists.txt
+--- a/lib/netplay/CMakeLists.txt 2025-09-16 11:41:32.000000000 -0500
++++ b/lib/netplay/CMakeLists.txt 2025-09-18 13:37:23.686969530 -0500
+@@ -108,7 +108,7 @@
+ include(WZTargetConfiguration)
+ WZ_TARGET_CONFIGURATION(netplay)
+ target_link_libraries(netplay
+- PRIVATE framework re2::re2 nlohmann_json plum-static Threads::Threads ZLIB::ZLIB fmt::fmt
++ PRIVATE framework re2 nlohmann_json plum-static Threads::Threads ZLIB::ZLIB fmt
+ PUBLIC tl::expected)
+
+ if(WZ_USE_IMPORTED_MINIUPNPC)
+diff -ru a/src/3rdparty/INIReaderWriter.cpp b/src/3rdparty/INIReaderWriter.cpp
+--- a/src/3rdparty/INIReaderWriter.cpp 2025-09-16 11:41:32.000000000 -0500
++++ b/src/3rdparty/INIReaderWriter.cpp 2025-09-18 13:37:23.687094584 -0500
+@@ -13,7 +13,7 @@
+ #ifndef INI_API
+ # define INI_API
+ #endif
+-#include <inih/ini.h>
++#include <ini.h>
+ #include "INIReaderWriter.h"
+
+ using std::string;
+diff -ru a/src/CMakeLists.txt b/src/CMakeLists.txt
+--- a/src/CMakeLists.txt 2025-09-16 11:41:32.000000000 -0500
++++ b/src/CMakeLists.txt 2025-09-18 13:37:23.687282446 -0500
+@@ -130,7 +130,7 @@
+
+ target_link_libraries(warzone2100 exception-handler gamelib wzmaplib ZipIOProvider ivis-opengl netplay sdl-backend framework sequence sound widget)
+ target_link_libraries(warzone2100 launchinfo EmbeddedJSONSignature)
+-target_link_libraries(warzone2100 fmt::fmt)
++target_link_libraries(warzone2100 fmt)
+ if(ENABLE_NLS)
+ target_link_libraries(warzone2100 ${Intl_LIBRARIES})
+ endif()
+@@ -146,7 +146,7 @@
+ include(IncludeFindCurl)
+ target_link_libraries(warzone2100 CURL::libcurl)
+ endif()
+-target_link_libraries(warzone2100 re2::re2)
++target_link_libraries(warzone2100 re2)
+
+ find_package(SQLite3 3.14 REQUIRED)
+ target_link_libraries(warzone2100 SQLite::SQLite3)
diff --git a/gnu/packages/patches/xinit-startx-mcookie-path.patch b/gnu/packages/patches/xinit-startx-mcookie-path.patch
deleted file mode 100644
index 050603433b..0000000000
--- a/gnu/packages/patches/xinit-startx-mcookie-path.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-This patch fixes two bugs in upstream mcookie detection: 1) If mcookie is not
-detected, we still need to set HAS_COOKIE_HANDLER and MK_COOKIE, and 2) the
-value for MK_COOKIE must be a string in order to disallow further preprocessor
-expansions.
-
-In particular for 2, if we fail to surround the path in quotes, our path
-contains the token "linux", which gcc further expands, creating an invalid
-path.
-
---- a/configure.ac 2025-03-08 16:48:34.476791744 +0900
-+++ b/configure.ac 2025-03-08 16:48:30.208791623 +0900
-@@ -157,8 +157,10 @@
- fi
- fi
- if test "x$MCOOKIE" != x ; then
-- STARTX_COOKIE_FLAGS='-DHAS_COOKIE_MAKER -DMK_COOKIE="$(MCOOKIE)"'
-+ STARTX_COOKIE_FLAGS='-DHAS_COOKIE_MAKER -DMK_COOKIE="'"'"'$(MCOOKIE)'"'"'"'
- AC_MSG_NOTICE([startx will depend on "$MCOOKIE" to generate xauth cookies])
-+else
-+ STARTX_COOKIE_FLAGS='-DHAS_COOKIE_MAKER -DMK_COOKIE='
- fi
- AC_SUBST(STARTX_COOKIE_FLAGS)
-
diff --git a/gnu/packages/patches/xiphos-glib.patch b/gnu/packages/patches/xiphos-glib.patch
new file mode 100644
index 0000000000..4fdb09fa63
--- /dev/null
+++ b/gnu/packages/patches/xiphos-glib.patch
@@ -0,0 +1,43 @@
+This patch has already been upstreamed, see: <https://github.com/crosswire/xiphos/pull/1103>.
+It should be removed once Xiphos updates.
+
+From 0e9e686c902935c0f00afdf9d0d45f9635995988 Mon Sep 17 00:00:00 2001
+From: Jan Tojnar <jtojnar@gmail.com>
+Date: Sat, 15 Jan 2022 05:00:37 +0100
+Subject: [PATCH] Add dbus-glib dependency to main
+
+It is required through the ipc header and the build will fail without it on Nix:
+
+ In file included from /build/source/src/main/search_sidebar.cc:48:
+ /build/source/src/gui/ipc.h:26:10: fatal error: dbus/dbus-glib.h: No such file or directory
+ 26 | #include <dbus/dbus-glib.h>
+ | ^~~~~~~~~~~~~~~~~~
+ compilation terminated.
+---
+ src/main/CMakeLists.txt | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/src/main/CMakeLists.txt b/src/main/CMakeLists.txt
+index 49b86371..bb8e4bb6 100644
+--- a/src/main/CMakeLists.txt
++++ b/src/main/CMakeLists.txt
+@@ -75,7 +75,18 @@ target_link_libraries(main
+ PkgConfig::Soup
+ PkgConfig::Sword
+ PkgConfig::Biblesync
+- )
++)
++
++IF (DBUS)
++ target_include_directories (main
++ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
++ PkgConfig::DBus
++ )
++ target_link_libraries(main
++ PRIVATE
++ PkgConfig::DBus
++ )
++ENDIF (DBUS)
+
+ if(WK_FOUND)
+ target_compile_definitions(main \ No newline at end of file
diff --git a/gnu/packages/patches/xsane-fix-memory-leak.patch b/gnu/packages/patches/xsane-fix-memory-leak.patch
deleted file mode 100644
index 4e03e57e13..0000000000
--- a/gnu/packages/patches/xsane-fix-memory-leak.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From bbd54510f0297afa2d1a81927db060cb0b791f14 Mon Sep 17 00:00:00 2001
-From: Ralph Little <littlesincanada@yahoo.co.uk>
-Date: Sun, 1 Sep 2019 17:34:19 -0700
-Subject: [PATCH] Apply opensuse upstream patch xsane_memory_leak
-
-Removes completely redundant memory allocation.
----
- src/xsane-batch-scan.c | 3 ---
- 1 file changed, 3 deletions(-)
-
-diff --git a/src/xsane-batch-scan.c b/src/xsane-batch-scan.c
-index 90cc0e0..e77caca 100644
---- a/src/xsane-batch-scan.c
-+++ b/src/xsane-batch-scan.c
-@@ -680,7 +680,6 @@ static GtkWidget *xsane_batch_scan_create_list_entry(Batch_Scan_Parameters *para
- GtkWidget *list_item;
- GtkWidget *hbox;
- int size = 120;
-- char *data;
-
- list_item = gtk_list_item_new();
-
-@@ -688,8 +687,6 @@ static GtkWidget *xsane_batch_scan_create_list_entry(Batch_Scan_Parameters *para
- gtk_container_add(GTK_CONTAINER(list_item), hbox);
- gtk_widget_show(hbox);
-
-- data = calloc(size, size);
--
- parameters->gtk_preview = gtk_preview_new(GTK_PREVIEW_COLOR);
- gtk_preview_size(GTK_PREVIEW(parameters->gtk_preview), size, size);
- gtk_box_pack_start(GTK_BOX(hbox), parameters->gtk_preview, FALSE, FALSE, 0);
---
-2.22.0
-
diff --git a/gnu/packages/patches/xsane-fix-pdf-floats.patch b/gnu/packages/patches/xsane-fix-pdf-floats.patch
deleted file mode 100644
index 5f26fa140b..0000000000
--- a/gnu/packages/patches/xsane-fix-pdf-floats.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From c126eea11c4ee39cbe9c0c76f920626b618b6ee9 Mon Sep 17 00:00:00 2001
-From: Ralph Little <littlesincanada@yahoo.co.uk>
-Date: Sun, 1 Sep 2019 17:03:44 -0700
-Subject: [PATCH] Apply debian upstream patch 0135-fix_pdf_floats
-
-Original patch commentary:
-
-Description: Fix floats in PDF and PostScript
- Set LC_NUMERIC to POSIX before printing floats when building
- PostScript or PDF output.
-Author: Julien BLACHE <jblache@debian.org>
-Forwarded: yes
-
-------------
-Looks like float printing format is affected by the current locale.
-Ensures that we always get POSIX formatting of floats.
----
- src/xsane-save.c | 19 +++++++++++++++++++
- 1 file changed, 19 insertions(+)
-
-diff --git a/src/xsane-save.c b/src/xsane-save.c
-index f14df05..63550cc 100644
---- a/src/xsane-save.c
-+++ b/src/xsane-save.c
-@@ -26,6 +26,8 @@
- #include "xsane-back-gtk.h"
- #include "xsane-front-gtk.h"
- #include "xsane-save.h"
-+#include <locale.h>
-+#include <string.h>
- #include <time.h>
- #include <sys/wait.h>
-
-@@ -2425,6 +2427,7 @@ static void xsane_save_ps_create_image_header(FILE *outfile,
- int flatedecode)
- {
- int depth;
-+ char *save_locale;
-
- depth = image_info->depth;
-
-@@ -2442,8 +2445,15 @@ static void xsane_save_ps_create_image_header(FILE *outfile,
-
- fprintf(outfile, "%d rotate\n", degree);
- fprintf(outfile, "%d %d translate\n", position_left, position_bottom);
-+
-+ save_locale = strdup(setlocale(LC_NUMERIC, NULL));
-+ setlocale(LC_NUMERIC, "POSIX");
-+
- fprintf(outfile, "%f %f scale\n", width, height);
-
-+ setlocale(LC_NUMERIC, save_locale);
-+ free(save_locale);
-+
- fprintf(outfile, "<<\n");
- fprintf(outfile, " /ImageType 1\n");
- fprintf(outfile, " /Width %d\n", image_info->image_width);
-@@ -3921,6 +3931,7 @@ static void xsane_save_pdf_create_page_header(FILE *outfile, struct pdf_xref *xr
- int position_left, position_bottom, box_left, box_bottom, box_right, box_top, depth;
- int left, bottom;
- float rad;
-+ char *save_locale;
-
- DBG(DBG_proc, "xsane_save_pdf_create_page_header\n");
-
-@@ -4035,8 +4046,16 @@ static void xsane_save_pdf_create_page_header(FILE *outfile, struct pdf_xref *xr
-
- fprintf(outfile, "q\n");
- fprintf(outfile, "1 0 0 1 %d %d cm\n", position_left, position_bottom); /* translate */
-+
-+ save_locale = strdup(setlocale(LC_NUMERIC, NULL));
-+ setlocale(LC_NUMERIC, "POSIX");
-+
- fprintf(outfile, "%f %f -%f %f 0 0 cm\n", cos(rad), sin(rad), sin(rad), cos(rad)); /* rotate */
- fprintf(outfile, "%f 0 0 %f 0 0 cm\n", width, height); /* scale */
-+
-+ setlocale(LC_NUMERIC, save_locale);
-+ free(save_locale);
-+
- fprintf(outfile, "BI\n");
- fprintf(outfile, " /W %d\n", image_info->image_width);
- fprintf(outfile, " /H %d\n", image_info->image_height);
---
-2.22.0
-
diff --git a/gnu/packages/patches/xsane-fix-snprintf-buffer-length.patch b/gnu/packages/patches/xsane-fix-snprintf-buffer-length.patch
deleted file mode 100644
index 412e127f5a..0000000000
--- a/gnu/packages/patches/xsane-fix-snprintf-buffer-length.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 893a5ce1f75e5eea7c8d383038ff92a150819c9c Mon Sep 17 00:00:00 2001
-From: Ralph Little <littlesincanada@yahoo.co.uk>
-Date: Thu, 19 Sep 2019 22:02:33 -0700
-Subject: [PATCH] xsane-*-project.c - reduced snprintf format pad to silence
- warning about too long constrant string for buffer.
-
----
- src/xsane-email-project.c | 4 ++--
- src/xsane-fax-project.c | 4 ++--
- src/xsane-multipage-project.c | 2 +-
- 3 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/src/xsane-email-project.c b/src/xsane-email-project.c
-index f20cb12..ac93fc2 100644
---- a/src/xsane-email-project.c
-+++ b/src/xsane-email-project.c
-@@ -896,7 +896,7 @@ static void xsane_email_project_update_project_status()
- snprintf(filename, sizeof(filename), "%s/xsane-mail-list", preferences.email_project);
- projectfile = fopen(filename, "r+b"); /* r+ = read and write, position = start of file */
-
-- snprintf(buf, 32, "%s@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", xsane.email_status); /* fill 32 characters status line */
-+ snprintf(buf, 33, "%s@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", xsane.email_status); /* fill 32 characters status line */
- fprintf(projectfile, "%s\n", buf); /* first line is status of email */
-
- fclose(projectfile);
-@@ -936,7 +936,7 @@ void xsane_email_project_save()
- {
- char buf[TEXTBUFSIZE];
-
-- snprintf(buf, 32, "%s@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", xsane.email_status); /* fill 32 characters status line */
-+ snprintf(buf, 33, "%s@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", xsane.email_status); /* fill 32 characters status line */
- fprintf(projectfile, "%s\n", buf); /* first line is status of email */
- gtk_progress_set_format_string(GTK_PROGRESS(xsane.project_progress_bar), _(xsane.email_status));
- xsane_progress_bar_set_fraction(GTK_PROGRESS_BAR(xsane.project_progress_bar), 0.0);
-diff --git a/src/xsane-fax-project.c b/src/xsane-fax-project.c
-index f263313..0c60a97 100644
---- a/src/xsane-fax-project.c
-+++ b/src/xsane-fax-project.c
-@@ -452,7 +452,7 @@ static void xsane_fax_project_update_project_status()
- snprintf(filename, sizeof(filename), "%s/xsane-fax-list", preferences.fax_project);
- projectfile = fopen(filename, "r+b"); /* r+ = read and write, position = start of file */
-
-- snprintf(buf, 32, "%s@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", xsane.fax_status); /* fill 32 characters status line */
-+ snprintf(buf, 33, "%s@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", xsane.fax_status); /* fill 32 characters status line */
- fprintf(projectfile, "%s\n", buf); /* first line is status of mail */
-
- fclose(projectfile);
-@@ -498,7 +498,7 @@ void xsane_fax_project_save()
- {
- char buf[TEXTBUFSIZE];
-
-- snprintf(buf, 32, "%s@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", xsane.fax_status); /* fill 32 characters status line */
-+ snprintf(buf, 33, "%s@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", xsane.fax_status); /* fill 32 characters status line */
- fprintf(projectfile, "%s\n", buf); /* first line is status of mail */
- gtk_progress_set_format_string(GTK_PROGRESS(xsane.project_progress_bar), _(xsane.fax_status));
- xsane_progress_bar_set_fraction(GTK_PROGRESS_BAR(xsane.project_progress_bar), 0.0);
-diff --git a/src/xsane-multipage-project.c b/src/xsane-multipage-project.c
-index f23e5f8..9392e00 100644
---- a/src/xsane-multipage-project.c
-+++ b/src/xsane-multipage-project.c
-@@ -522,7 +522,7 @@ void xsane_multipage_project_save()
- {
- char buf[TEXTBUFSIZE];
-
-- snprintf(buf, 32, "%s@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", xsane.multipage_status); /* fill 32 characters status line */
-+ snprintf(buf, 33, "%s@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", xsane.multipage_status); /* fill 32 characters status line */
- fprintf(projectfile, "%s\n", buf); /* first line is status of multipage */
- gtk_progress_set_format_string(GTK_PROGRESS(xsane.project_progress_bar), _(xsane.multipage_status));
- xsane_progress_bar_set_fraction(GTK_PROGRESS_BAR(xsane.project_progress_bar), 0.0);
---
-2.23.0
-
diff --git a/gnu/packages/patches/xsane-support-ipv6.patch b/gnu/packages/patches/xsane-support-ipv6.patch
deleted file mode 100644
index 4e3bb87a1a..0000000000
--- a/gnu/packages/patches/xsane-support-ipv6.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From 62d9c172f258769e3a7540fe710e013bb39a704f Mon Sep 17 00:00:00 2001
-From: Ralph Little <littlesincanada@yahoo.co.uk>
-Date: Sat, 7 Sep 2019 12:39:45 -0700
-Subject: [PATCH] Apply opensuse upstream patch 004-ipv6-support
-
-Appears to be related to this:
-https://bugzilla.redhat.com/show_bug.cgi?id=198422
-
------
-Changes email socket connection code to use more IP version agnostic
-calls. It appears to only be used by the scan email option and
-originally comes from the RedHat IPv6 awareness program mentioned
-in the bug report.
-
-In practice, I'm not sure how practical the implementation for emailing
-scans in xsane is as it does not look to support encryption, pretty
-much a given in today's world.
----
- src/xsane-save.c | 96 +++++++++++++++++++++++++++++++-----------------
- 1 file changed, 62 insertions(+), 34 deletions(-)
-
-diff --git a/src/xsane-save.c b/src/xsane-save.c
-index 63550cc..ff3c459 100644
---- a/src/xsane-save.c
-+++ b/src/xsane-save.c
-@@ -31,6 +31,8 @@
- #include <time.h>
- #include <sys/wait.h>
-
-+#include <glib.h>
-+
- /* the following test is always false */
- #ifdef _native_WIN32
- # include <winsock.h>
-@@ -7540,55 +7542,81 @@ void write_email_attach_file(int fd_socket, char *boundary, FILE *infile, char *
- /* returns fd_socket if sucessfull, < 0 when error occured */
- int open_socket(char *server, int port)
- {
-- int fd_socket;
-- struct sockaddr_in sin;
-- struct hostent *he;
-+ int fd_socket, e;
-+
-+ struct addrinfo *ai_list, *ai;
-+ struct addrinfo hints;
-+ gchar *port_s;
-+ gint connected;
-+
-+ memset(&hints, '\0', sizeof(hints));
-+ hints.ai_flags = AI_ADDRCONFIG;
-+ hints.ai_socktype = SOCK_STREAM;
-+
-+ port_s = g_strdup_printf("%d", port);
-+ e = getaddrinfo(server, port_s, &hints, &ai_list);
-+ g_free(port_s);
-
-- he = gethostbyname(server);
-- if (!he)
-+ if (e != 0)
- {
-- DBG(DBG_error, "open_socket: Could not get hostname of \"%s\"\n", server);
-+ DBG(DBG_error, "open_socket: Could not lookup \"%s\"\n", server);
- return -1;
- }
-- else
-+
-+ connected = 0;
-+ for (ai = ai_list; ai != NULL && !connected; ai = ai->ai_next)
- {
-- DBG(DBG_info, "open_socket: connecting to \"%s\" = %d.%d.%d.%d\n",
-- he->h_name,
-- (unsigned char) he->h_addr_list[0][0],
-- (unsigned char) he->h_addr_list[0][1],
-- (unsigned char) he->h_addr_list[0][2],
-- (unsigned char) he->h_addr_list[0][3]);
-- }
-+ gchar hostname[NI_MAXHOST];
-+ gchar hostaddr[NI_MAXHOST];
-+
-+ /* If all else fails */
-+ strncpy(hostname, "(unknown name)", NI_MAXHOST-1);
-+ strncpy(hostaddr, "(unknown address)", NI_MAXHOST-1);
-+
-+ /* Determine canonical name and IPv4/IPv6 address */
-+ (void) getnameinfo(ai->ai_addr, ai->ai_addrlen, hostname, sizeof(hostname),
-+ NULL, 0, 0);
-+ (void) getnameinfo(ai->ai_addr, ai->ai_addrlen, hostaddr, sizeof(hostaddr),
-+ NULL, 0, NI_NUMERICHOST);
-+
-+ DBG(DBG_info, "open_socket: connecting to \"%s\" (\"%s\"): %s\n",
-+ server, hostname, hostaddr);
-
-- if (he->h_addrtype != AF_INET)
-- {
-- DBG(DBG_error, "open_socket: Unknown address family: %d\n", he->h_addrtype);
-- return -1;
-- }
-+ if ((ai->ai_family != AF_INET) && (ai->ai_family != AF_INET6))
-+ {
-+ DBG(DBG_error, "open_socket: Unknown address family: %d\n", ai->ai_family);
-+ continue;
-+ }
-
-- fd_socket = socket(AF_INET, SOCK_STREAM, 0);
-+ fd_socket = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
-
-- if (fd_socket < 0)
-- {
-- DBG(DBG_error, "open_socket: Could not create socket: %s\n", strerror(errno));
-- return -1;
-- }
-+ if (fd_socket < 0)
-+ {
-+ DBG(DBG_error, "open_socket: Could not create socket: %s\n", strerror(errno));
-+ continue;
-+ }
-
--/* setsockopt (dev->ctl, level, TCP_NODELAY, &on, sizeof (on)); */
-+ /* setsockopt (dev->ctl, level, TCP_NODELAY, &on, sizeof (on)); */
-
-- sin.sin_port = htons(port);
-- sin.sin_family = AF_INET;
-- memcpy(&sin.sin_addr, he->h_addr_list[0], he->h_length);
-+ if (connect(fd_socket, ai->ai_addr, ai->ai_addrlen) != 0)
-+ {
-+ DBG(DBG_error, "open_socket: Could not connect with port %d of socket: %s\n", port, strerror(errno));
-+ continue;
-+ }
-+
-+ /* All went well */
-+ connected = 1;
-+ }
-
-- if (connect(fd_socket, &sin, sizeof(sin)))
-+ if (!connected)
- {
-- DBG(DBG_error, "open_socket: Could not connect with port %d of socket: %s\n", ntohs(sin.sin_port), strerror(errno));
-- return -1;
-+ DBG(DBG_info, "open_socket: Could not connect to any address");
-+ return -1;
- }
-
-- DBG(DBG_info, "open_socket: Connected with port %d\n", ntohs(sin.sin_port));
-+ DBG(DBG_info, "open_socket: Connected with port %d\n", port);
-
-- return fd_socket;
-+ return fd_socket;
- }
-
- /* ---------------------------------------------------------------------------------------------------------------------- */
---
-2.22.0
-
diff --git a/gnu/packages/patches/xsane-tighten-default-umask.patch b/gnu/packages/patches/xsane-tighten-default-umask.patch
deleted file mode 100644
index 5ee5fdfd37..0000000000
--- a/gnu/packages/patches/xsane-tighten-default-umask.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 5dc1e301a165709c60c435f00ec9bb6d7d5f21f3 Mon Sep 17 00:00:00 2001
-From: Ralph Little <littlesincanada@yahoo.co.uk>
-Date: Tue, 27 Aug 2019 21:40:02 -0700
-Subject: [PATCH] Apply debian upstream patch 0160-fix_tighten_default_umask
-
-Original patch commentary:
-
-Description: Change default XSane umask from 0007 to 0077
- A default umask of 0007 can be mildly insecure in a multiuser environment,
- so tighten things up a bit and go with 0077 instead.
-Author: Adrien Thebo
-Bug-Debian: http://bugs.debian.org/592972
-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/xsane/+bug/611950
-
-----
-As above.
----
- src/xsane.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/xsane.h b/src/xsane.h
-index 67f06d4..fa04418 100644
---- a/src/xsane.h
-+++ b/src/xsane.h
-@@ -104,7 +104,7 @@
- #define XSANE_DEBUG_ENVIRONMENT "XSANE_DEBUG"
-
- #define XSANE_PROGRESS_BAR_MIN_DELTA_PERCENT 0.025
--#define XSANE_DEFAULT_UMASK 0007
-+#define XSANE_DEFAULT_UMASK 0077
- #define XSANE_HOLD_TIME 200
- #define XSANE_CONTINUOUS_HOLD_TIME 10
- #define XSANE_DEFAULT_DEVICE "SANE_DEFAULT_DEVICE"
---
-2.22.0
-
diff --git a/gnu/packages/patches/zig-0.15-fix-runpath.patch b/gnu/packages/patches/zig-0.15-fix-runpath.patch
new file mode 100644
index 0000000000..7216c97b57
--- /dev/null
+++ b/gnu/packages/patches/zig-0.15-fix-runpath.patch
@@ -0,0 +1,122 @@
+From d35c341322f6e84607350058007bd5be3d1d294a Mon Sep 17 00:00:00 2001
+From: Hilton Chain <hako@ultrarare.space>
+Date: Fri, 29 Nov 2024 14:13:46 +0800
+Subject: [PATCH] Fix RUNPATH issue.
+
+Add needed libraries and libc to RUNPATH when CROSS_LIBRARY_PATH or LIBRARY_PATH
+is set.
+---
+ lib/std/Build/Step/Compile.zig | 2 ++
+ src/link/Elf.zig | 7 +++++++
+ src/link/Lld.zig | 7 +++++++
+ src/main.zig | 34 +++++++++++++++++++++++++++++++++-
+ 4 files changed, 49 insertions(+), 1 deletion(-)
+
+diff --git a/lib/std/Build/Step/Compile.zig b/lib/std/Build/Step/Compile.zig
+index 79d3694c02..7f6bddbea6 100644
+--- a/lib/std/Build/Step/Compile.zig
++++ b/lib/std/Build/Step/Compile.zig
+@@ -794,6 +794,8 @@ fn runPkgConfig(compile: *Compile, lib_name: []const u8) !PkgConfigResult {
+ try zig_cflags.append(arg);
+ } else if (mem.startsWith(u8, arg, wl_rpath_prefix)) {
+ try zig_cflags.appendSlice(&[_][]const u8{ "-rpath", arg[wl_rpath_prefix.len..] });
++ } else if (mem.startsWith(u8, arg, "-Wl,-rpath=")) {
++ try zig_libs.appendSlice(&[_][]const u8{ "-L", arg["-Wl,-rpath=".len..] });
+ } else if (b.debug_pkg_config) {
+ return compile.step.fail("unknown pkg-config flag '{s}'", .{arg});
+ }
+diff --git a/src/link/Elf.zig b/src/link/Elf.zig
+index 99d0ad71b0..8017f4c088 100644
+--- a/src/link/Elf.zig
++++ b/src/link/Elf.zig
+@@ -988,6 +988,13 @@ fn dumpArgvInit(self: *Elf, arena: Allocator) !void {
+ try argv.appendSlice(gpa, &.{ "-rpath", rpath });
+ }
+
++ if (std.zig.system.NativePaths.isGuix(arena) and comp.config.link_libc and comp.config.link_mode == .dynamic) {
++ if (self.base.comp.libc_installation) |libc_installation| {
++ try argv.append(gpa, "-rpath");
++ try argv.append(gpa, libc_installation.crt_dir.?);
++ }
++ }
++
+ try argv.appendSlice(gpa, &.{
+ "-z",
+ try std.fmt.allocPrint(arena, "stack-size={d}", .{self.base.stack_size}),
+diff --git a/src/link/Lld.zig b/src/link/Lld.zig
+index 48872f7077..814f661692 100644
+--- a/src/link/Lld.zig
++++ b/src/link/Lld.zig
+@@ -1071,6 +1071,13 @@ fn elfLink(lld: *Lld, arena: Allocator) !void {
+ }
+ }
+
++ if (std.zig.system.NativePaths.isGuix(arena) and comp.config.link_libc and link_mode == .dynamic) {
++ if (comp.libc_installation) |libc_installation| {
++ try argv.append("-rpath");
++ try argv.append(libc_installation.crt_dir.?);
++ }
++ }
++
+ if (have_dynamic_linker and
+ (comp.config.link_libc or comp.root_mod.resolved_target.is_explicit_dynamic_linker))
+ {
+diff --git a/src/main.zig b/src/main.zig
+index 02b1b8f84b..ddc4ae8014 100644
+--- a/src/main.zig
++++ b/src/main.zig
+@@ -3910,7 +3910,7 @@ fn createModule(
+ create_module.want_native_include_dirs = true;
+ }
+
+- if (create_module.each_lib_rpath orelse resolved_target.is_native_os) {
++ if (create_module.each_lib_rpath orelse false) {
+ try create_module.rpath_list.ensureUnusedCapacity(arena, create_module.lib_directories.items.len);
+ for (create_module.lib_directories.items) |lib_directory| {
+ create_module.rpath_list.appendAssumeCapacity(lib_directory.path.?);
+@@ -3982,6 +3982,28 @@ fn createModule(
+ else => {},
+ };
+
++ if (std.zig.system.NativePaths.isGuix(arena)) {
++ for (create_module.link_inputs.items) |link_input| {
++ if (link_input.path()) |lib| {
++ const lib_name = lib.sub_path;
++ if (Compilation.classifyFileExt(lib_name) == .shared_library) {
++ if (fs.path.isAbsolute(lib_name)) {
++ const lib_dir_path = fs.path.dirname(lib_name).?;
++ try create_module.rpath_list.append(arena, lib_dir_path);
++ continue;
++ }
++ for (create_module.lib_directories.items) |lib_dir| {
++ const lib_dir_path = lib_dir.path.?;
++ if (try libPathExists(arena, lib_dir_path, lib_name)) {
++ try create_module.rpath_list.append(arena, lib_dir_path);
++ break;
++ }
++ }
++ }
++ }
++ }
++ }
++
+ create_module.resolved_options = Compilation.Config.resolve(create_module.opts) catch |err| switch (err) {
+ error.WasiExecModelRequiresWasi => fatal("only WASI OS targets support execution model", .{}),
+ error.SharedMemoryIsWasmOnly => fatal("only WebAssembly CPU targets support shared memory", .{}),
+@@ -7633,3 +7655,13 @@ fn addLibDirectoryWarn2(
+ .path = path,
+ });
+ }
++
++fn libPathExists(arena: Allocator, lib_dir_path: []const u8, lib_name: []const u8) !bool {
++ const lib_path = try std.fmt.allocPrint(arena, "{s}{s}{s}", .{
++ lib_dir_path,
++ fs.path.sep_str,
++ lib_name,
++ });
++ fs.cwd().access(lib_path, .{}) catch return false;
++ return true;
++}
+--
+2.50.1
+
diff --git a/gnu/packages/patches/zynaddsubfx-3.0.6-include-cstdint.patch b/gnu/packages/patches/zynaddsubfx-3.0.6-include-cstdint.patch
new file mode 100644
index 0000000000..a1a0444aa8
--- /dev/null
+++ b/gnu/packages/patches/zynaddsubfx-3.0.6-include-cstdint.patch
@@ -0,0 +1,24 @@
+This patch fixes the compilation error: "uint8_t’ has not been declared".
+
+diff '--color=auto' -ruN zynaddsubfx-3.0.6-a/src/Misc/Bank.h zynaddsubfx-3.0.6-b/src/Misc/Bank.h
+--- zynaddsubfx-3.0.6-a/src/Misc/Bank.h 1970-01-01 05:30:01.000000000 +0530
++++ zynaddsubfx-3.0.6-b/src/Misc/Bank.h 2025-08-18 14:16:56.928347291 +0530
+@@ -18,6 +18,7 @@
+ #include <vector>
+ #include "../globals.h"
+ #include "Config.h"
++#include <cstdint>
+
+ //entries in a bank
+ #define BANK_SIZE 160
+diff '--color=auto' -ruN zynaddsubfx-3.0.6-a/src/Nio/MidiIn.h zynaddsubfx-3.0.6-b/src/Nio/MidiIn.h
+--- zynaddsubfx-3.0.6-a/src/Nio/MidiIn.h 1970-01-01 05:30:01.000000000 +0530
++++ zynaddsubfx-3.0.6-b/src/Nio/MidiIn.h 2025-08-18 14:04:01.993278682 +0530
+@@ -17,6 +17,7 @@
+ #define MIDI_IN_H
+
+ #include "Engine.h"
++#include <cstdint>
+
+ namespace zyn {
+
diff --git a/gnu/packages/patches/zynaddsubfx-3.0.6-system-rtosc.patch b/gnu/packages/patches/zynaddsubfx-3.0.6-system-rtosc.patch
new file mode 100644
index 0000000000..3ed8a7c495
--- /dev/null
+++ b/gnu/packages/patches/zynaddsubfx-3.0.6-system-rtosc.patch
@@ -0,0 +1,106 @@
+Adding the option ZYN_SYSTEM_RTOSC to let the use of the system provided RtOSC
+instead of using the bundled one.
+
+--- a/CMakeLists.txt 2022-01-22 02:46:21.000000000 +0100
++++ b/CMakeLists.txt 2023-05-03 23:17:58.411667901 +0200
+@@ -10,24 +10,34 @@
+ add_definitions(-DZYN_DATADIR="${ZYN_DATADIR}")
+ endif()
+
++option(ZYN_SYSTEM_RTOSC "Use system provided librtosc and librtosc-cpp" OFF)
++
+ #Include RTOSC
+-if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/rtosc/CMakeLists.txt")
+- message(STATUS "RTOSC NOT FOUND")
+- message(STATUS "Attempting to checkout submodule")
+- find_package(Git REQUIRED)
+- execute_process(COMMAND git submodule update --init --recursive)
++if(ZYN_SYSTEM_RTOSC)
++ include(FindPkgConfig)
++ pkg_check_modules(RTOSC REQUIRED librtosc)
++ pkg_check_modules(RTOSC_CPP REQUIRED librtosc-cpp)
++ include_directories(${RTOSC_INCLUDE_DIR})
++ message(STATUS "Found system provided librtosc and librtosc-cpp...")
++else()
+ if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/rtosc/CMakeLists.txt")
+- message(FATAL_ERROR "FAILED TO CHECKOUT RTOSC\n"
+- "please check file permissions and your network")
++ message(STATUS "RTOSC NOT FOUND")
++ message(STATUS "Attempting to checkout submodule")
++ find_package(Git REQUIRED)
++ execute_process(COMMAND git submodule update --init --recursive)
++ if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/rtosc/CMakeLists.txt")
++ message(FATAL_ERROR "FAILED TO CHECKOUT RTOSC\n"
++ "please check file permissions and your network")
++ endif()
++ else()
++ message(STATUS "Found Rtosc Submodule...")
+ endif()
+-else()
+- message(STATUS "Found Rtosc Submodule...")
+-endif()
+
+-set(RTOSC_NO_INSTALL TRUE)
+-include("rtosc/cmake/ColorMessage.cmake")
+-add_subdirectory(rtosc)
+-include_directories(rtosc/include)
++ set(RTOSC_NO_INSTALL TRUE)
++ include("rtosc/cmake/ColorMessage.cmake")
++ add_subdirectory(rtosc)
++ include_directories(rtosc/include)
++endif()
+
+ enable_testing()
+ include(CTestConfig.cmake)
+--- a/src/CMakeLists.txt 2022-01-22 02:46:21.000000000 +0100
++++ b/src/CMakeLists.txt 2023-05-03 23:17:58.411667901 +0200
+@@ -575,13 +575,27 @@
+ set(PTHREAD_LIBRARY pthread)
+ endif()
+
+-target_link_libraries(zynaddsubfx_core
+- ${ZLIB_LIBRARIES}
+- ${FFTW3F_LIBRARIES}
+- ${MXML_LIBRARIES}
+- ${OS_LIBRARIES}
+- ${PTHREAD_LIBRARY}
+- rtosc rtosc-cpp)
++if(ZYN_SYSTEM_RTOSC)
++ target_link_libraries(zynaddsubfx_core
++ ${ZLIB_LIBRARIES}
++ ${FFTW3F_LIBRARIES}
++ ${MXML_LIBRARIES}
++ ${OS_LIBRARIES}
++ ${PTHREAD_LIBRARY}
++ ${RTOSC_LIBRARIES}
++ ${RTOSC_CPP_LIBRARIES}
++ )
++else()
++ target_link_libraries(zynaddsubfx_core
++ ${ZLIB_LIBRARIES}
++ ${FFTW3F_LIBRARIES}
++ ${MXML_LIBRARIES}
++ ${OS_LIBRARIES}
++ ${PTHREAD_LIBRARY}
++ rtosc
++ rtosc-cpp
++ )
++endif()
+
+ if(IwyuErr)
+ message (STATUS "Include what you use: ${IwyuErr}")
+
+
+When ZYN_SYSTEM_RTOSC is ON, port-checker file is not available and the test
+fails.
+
+--- a/src/Tests/CMakeLists.txt 2022-01-22 02:46:21.000000000 +0100
++++ b/src/Tests/CMakeLists.txt 2023-05-04 00:19:01.635383149 +0200
+@@ -65,7 +65,6 @@
+
+ if(LIBLO_FOUND)
+ cp_script(check-ports.rb)
+- add_test(PortChecker check-ports.rb)
+ endif()
+ add_executable(save-osc SaveOSC.cpp)
+ target_link_libraries(save-osc