Add a standalone Bazel build

Now that we can generate build files, we can actually maintain a Bazel
build in HEAD, without synthesizing a separate "-with-bazel" branch.
(Though we'll still need both for a transition, and until all the other
build modes have migrated.) Note this has a slightly different directory
structure than the old -with-bazel branch. But the targets are the same
and #include <openssl/whatever.h> still works, so hopefully it's
compatible.

For now, I'm only setting this up with the new bzlmod scheme. Also since
pulling in googletest is much less tedious with bzlmod, I've wired up
tests and everything.

https://bazel.build/external/overview#bzlmod

To build, run commands like:

   bazelisk build ...
   bazelisk test ...
   bazelisk run :bssl

The thinking is we can also go add this to CI and whatnot.

This is also intended to replace the boringssl module in the
bazel-central-registry which someone else set up already. To ease the
transition, I've seeded the compatibility_level value with theirs. (I
think we want to never bump it. Although we don't do SemVer, I think
bzlmod's MVS version selection scheme is generally reasonable. Bumping
it just introduces hiccups into the update process where projects need
to coordinate updates, and we do not want that.)

I wasn't clear on what to put in the version field in the tree, so I
just went with 0.0.0-dev so we don't have to change it, but it's still
vaguely analogous to the versions already in there.

As part of this, I've added support for Bazel's runfiles mechanism in
crypto/test/test_data.cc. This is completely undocumented and I had to
figure out how it works by guessing, but I believe this is the
officially supported way to make cc_test(data = ...) work? The official
documentation says to use devtools_build::GetDataDependencyFilepath, but
that API does not exist in the first place. I've also made it build with
C++17 for now, so we can build libpki, but C++14 consumers should still
be able to use this module, just not build libpki.

To that end, one difference between this and the old module is that we
no longer specify the C++ version in the build. From what I can tell,
Bazel does *not* want libraries to set the C/C++ version and prefers it
only come from the root. Unfortunately, they provide zero tools to
effectively manage this. I've followed this pattern for C++ versions, as
we can assume that Bazel projects are very aware of their C++ version,
but I've explicitly ignored it for the C version. Projects tend not to
change ABIs by C version, so it should be fine to set it internally.

For context when reviewing, the unreadable MODULE.bazel.lock is
automatically generated. I think the idea is that subsequent diffs will
be more readable??

Bug: 542
Change-Id: I88f68b2602a75f58cc6d18832a956f01dc054f58
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/67301
Auto-Submit: David Benjamin <davidben@google.com>
Commit-Queue: Bob Beck <bbe@google.com>
Reviewed-by: Bob Beck <bbe@google.com>
diff --git a/.bazelignore b/.bazelignore
new file mode 100644
index 0000000..9dad64c
--- /dev/null
+++ b/.bazelignore
@@ -0,0 +1,2 @@
+third_party/googletest
+util/bazel-example
diff --git a/.bazelrc b/.bazelrc
new file mode 100644
index 0000000..20e0dad
--- /dev/null
+++ b/.bazelrc
@@ -0,0 +1,44 @@
+# Copyright (c) 2024, Google Inc.
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+# This is a bazelrc file, documented in https://bazel.build/run/bazelrc and
+# specifies default flags when BoringSSL is the root project. It has no effect
+# on downstream projects, which define their own toolchains and configs.
+
+# See https://bazel.build/run/bazelrc#enable_platform_specific_config.
+# This expands to --config=osname which, in turn, expands to the options
+# specified below.
+build --enable_platform_specific_config
+
+# Enable additional checks.
+build --features=layering_check
+build --features=parse_headers
+
+# Bazel has no abstractions for setting C++ versions and expects the root
+# project to use the compiler-specific options for their toolchains. (Bazel only
+# wants the root to set the C++ version for the sake of projects like Abseil
+# whose ABI depends on the C++ version.)
+build:linux --cxxopt=-std=c++17
+build:macos --cxxopt=-std=c++17
+build:windows --cxxopt=/std:c++17
+
+# Without setting a minimum macOS version, std::optional does not work.
+build:macos --cxxopt=-mmacosx-version-min=10.15
+
+# Without /Zc:__cplusplus, MSVC does not define the right value for
+# __cplusplus. See https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
+build:windows --cxxopt=/Zc:__cplusplus
+
+# https://bazel.build/configure/best-practices#bazelrc-file
+try-import %workspace%/user.bazelrc
diff --git a/.gitignore b/.gitignore
index 439b6aa..1565352 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+/bazel-*
 /build
 /build32
 /build64
@@ -10,6 +11,10 @@
 /rust/Cargo.lock
 /rust/bssl-crypto/Cargo.lock
 /rust/target
+/user.bazelrc
+
+/util/bazel-example/bazel-*
+/util/bazel-example/MODULE.bazel.lock
 
 /util/bot/android_ndk
 /util/bot/android_sdk/public
diff --git a/BUILD.bazel b/BUILD.bazel
new file mode 100644
index 0000000..d3b66ee
--- /dev/null
+++ b/BUILD.bazel
@@ -0,0 +1,183 @@
+# Copyright (c) 2024, Google Inc.
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+load(
+    ":gen/sources.bzl",
+    "bcm_internal_headers",
+    "bcm_sources",
+    "bcm_sources_asm",
+    "bssl_internal_headers",
+    "bssl_sources",
+    "crypto_headers",
+    "crypto_internal_headers",
+    "crypto_sources",
+    "crypto_sources_asm",
+    "crypto_test_data",
+    "crypto_test_sources",
+    "decrepit_internal_headers",
+    "decrepit_sources",
+    "decrepit_test_sources",
+    "pki_headers",
+    "pki_internal_headers",
+    "pki_sources",
+    "pki_test_data",
+    "pki_test_sources",
+    "ssl_headers",
+    "ssl_internal_headers",
+    "ssl_sources",
+    "ssl_test_sources",
+    "test_support_internal_headers",
+    "test_support_sources",
+    "test_support_sources_asm",
+    "urandom_test_sources",
+)
+load(":util/util.bzl", "bssl_cc_binary", "bssl_cc_library", "bssl_cc_test")
+
+licenses(["notice"])
+
+exports_files(["LICENSE"])
+
+bssl_cc_library(
+    name = "crypto",
+    srcs = bcm_sources + crypto_sources,
+    hdrs = crypto_headers,
+    asm_srcs = bcm_sources_asm + crypto_sources_asm,
+    copts = ["-DBORINGSSL_IMPLEMENTATION"],
+    includes = ["include"],
+    internal_hdrs = bcm_internal_headers + crypto_internal_headers,
+    linkopts = select({
+        "@platforms//os:windows": [
+            "-defaultlib:advapi32.lib",
+            "-defaultlib:ws2_32.lib",
+        ],
+        "//conditions:default": ["-pthread"],
+    }),
+    visibility = ["//visibility:public"],
+)
+
+bssl_cc_library(
+    name = "ssl",
+    srcs = ssl_sources,
+    hdrs = ssl_headers,
+    copts = ["-DBORINGSSL_IMPLEMENTATION"],
+    internal_hdrs = ssl_internal_headers,
+    visibility = ["//visibility:public"],
+    deps = [":crypto_internal"],
+)
+
+bssl_cc_library(
+    name = "test_support",
+    testonly = True,
+    srcs = test_support_sources,
+    asm_srcs = test_support_sources_asm,
+    copts = ["-DBORINGSSL_USE_BAZEL_RUNFILES"],
+    internal_hdrs = test_support_internal_headers,
+    deps = [
+        ":crypto_internal",
+        "@bazel_tools//tools/cpp/runfiles",
+        "@googletest//:gtest",
+    ],
+)
+
+bssl_cc_test(
+    name = "crypto_test",
+    size = "large",
+    srcs = crypto_test_sources,
+    data = crypto_test_data,
+    # crypto_test references assembly symbols directly and thus must be linked
+    # statically.
+    linkstatic = True,
+    shard_count = 32,
+    deps = [
+        ":crypto_internal",
+        ":test_support",
+        "@googletest//:gtest",
+    ],
+)
+
+bssl_cc_test(
+    name = "urandom_test",
+    srcs = urandom_test_sources,
+    deps = [
+        ":crypto_internal",
+        ":test_support",
+        "@googletest//:gtest",
+    ],
+)
+
+bssl_cc_test(
+    name = "ssl_test",
+    srcs = ssl_test_sources,
+    deps = [
+        ":crypto_internal",
+        ":ssl_internal",
+        ":test_support",
+        "@googletest//:gtest",
+    ],
+)
+
+bssl_cc_binary(
+    name = "bssl",
+    srcs = bssl_sources + bssl_internal_headers,
+    visibility = ["//visibility:public"],
+    deps = [
+        ":crypto_internal",
+        ":ssl_internal",
+    ],
+)
+
+# Build, but do not export libdecrepit.
+bssl_cc_library(
+    name = "decrepit",
+    srcs = decrepit_sources,
+    copts = ["-DBORINGSSL_IMPLEMENTATION"],
+    internal_hdrs = decrepit_internal_headers,
+    deps = [
+        ":crypto_internal",
+        ":ssl_internal",
+    ],
+)
+
+bssl_cc_test(
+    name = "decrepit_test",
+    srcs = decrepit_test_sources,
+    deps = [
+        ":crypto_internal",
+        ":decrepit",
+        ":test_support",
+        "@googletest//:gtest",
+    ],
+)
+
+# Build, but do not (yet) export libpki.
+bssl_cc_library(
+    name = "pki",
+    srcs = pki_sources,
+    hdrs = pki_headers,
+    copts = ["-DBORINGSSL_IMPLEMENTATION"],
+    internal_hdrs = pki_internal_headers,
+    deps = [":crypto"],
+)
+
+bssl_cc_test(
+    name = "pki_test",
+    srcs = pki_test_sources,
+    data = pki_test_data,
+    deps = [
+        ":crypto_internal",
+        ":pki",
+        ":test_support",
+        "@googletest//:gtest",
+    ],
+)
diff --git a/MODULE.bazel b/MODULE.bazel
new file mode 100644
index 0000000..b40ca9f
--- /dev/null
+++ b/MODULE.bazel
@@ -0,0 +1,26 @@
+# Copyright (c) 2024, Google Inc.
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+# When publishing to BCR, replace the version field below with
+# 0.0.0-YYYYMMDD-HASH, e.g. "0.0.0-20240126-22d349c".
+module(
+    name = "boringssl",
+    version = "0.0.0-dev",
+    compatibility_level = 2,
+)
+
+bazel_dep(name = "googletest", version = "1.14.0.bcr.1", dev_dependency = True)
+
+bazel_dep(name = "platforms", version = "0.0.9")
+bazel_dep(name = "rules_cc", version = "0.0.9")
diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock
new file mode 100644
index 0000000..4d065c0
--- /dev/null
+++ b/MODULE.bazel.lock
@@ -0,0 +1,2332 @@
+{
+  "lockFileVersion": 6,
+  "moduleFileHash": "a4101ffdbea48850b26e5a4dd65cfa325c0de62c7625c1a240289146ff90ea54",
+  "flags": {
+    "cmdRegistries": [
+      "https://bcr.bazel.build/"
+    ],
+    "cmdModuleOverrides": {},
+    "allowedYankedVersions": [],
+    "envVarAllowedYankedVersions": "",
+    "ignoreDevDependency": false,
+    "directDependenciesMode": "WARNING",
+    "compatibilityMode": "ERROR"
+  },
+  "localOverrideHashes": {
+    "bazel_tools": "1ae69322ac3823527337acf02016e8ee95813d8d356f47060255b8956fa642f0"
+  },
+  "moduleDepGraph": {
+    "<root>": {
+      "name": "boringssl",
+      "version": "0.0.0-dev",
+      "key": "<root>",
+      "repoName": "boringssl",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "googletest": "googletest@1.14.0.bcr.1",
+        "platforms": "platforms@0.0.9",
+        "rules_cc": "rules_cc@0.0.9",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      }
+    },
+    "googletest@1.14.0.bcr.1": {
+      "name": "googletest",
+      "version": "1.14.0.bcr.1",
+      "key": "googletest@1.14.0.bcr.1",
+      "repoName": "googletest",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "com_google_absl": "abseil-cpp@20230802.0",
+        "platforms": "platforms@0.0.9",
+        "rules_cc": "rules_cc@0.0.9",
+        "com_googlesource_code_re2": "re2@2023-09-01",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/google/googletest/archive/refs/tags/v1.14.0.tar.gz"
+          ],
+          "integrity": "sha256-itWYxzrXluDYKAsILOvYKmMNc+c808cAV5OKZQG7pdc=",
+          "strip_prefix": "googletest-1.14.0",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/patches/module_dot_bazel.patch": "sha256-jijctisPYOzP4X4cl0K7neRh/kqJB+yODNHf8V8heCE="
+          },
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "platforms@0.0.9": {
+      "name": "platforms",
+      "version": "0.0.9",
+      "key": "platforms@0.0.9",
+      "repoName": "platforms",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [
+        {
+          "extensionBzlFile": "@platforms//host:extension.bzl",
+          "extensionName": "host_platform",
+          "usingModule": "platforms@0.0.9",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel",
+            "line": 9,
+            "column": 30
+          },
+          "imports": {
+            "host_platform": "host_platform"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        }
+      ],
+      "deps": {
+        "rules_license": "rules_license@0.0.7",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/bazelbuild/platforms/releases/download/0.0.9/platforms-0.0.9.tar.gz"
+          ],
+          "integrity": "sha256-XtpTnIQSZQMcL4LYrno6ZJC9YhduDAOPxGnqv5H2FJs=",
+          "strip_prefix": "",
+          "remote_patches": {},
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "rules_cc@0.0.9": {
+      "name": "rules_cc",
+      "version": "0.0.9",
+      "key": "rules_cc@0.0.9",
+      "repoName": "rules_cc",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [
+        "@local_config_cc_toolchains//:all"
+      ],
+      "extensionUsages": [
+        {
+          "extensionBzlFile": "@bazel_tools//tools/cpp:cc_configure.bzl",
+          "extensionName": "cc_configure_extension",
+          "usingModule": "rules_cc@0.0.9",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel",
+            "line": 9,
+            "column": 29
+          },
+          "imports": {
+            "local_config_cc_toolchains": "local_config_cc_toolchains"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        }
+      ],
+      "deps": {
+        "platforms": "platforms@0.0.9",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/bazelbuild/rules_cc/releases/download/0.0.9/rules_cc-0.0.9.tar.gz"
+          ],
+          "integrity": "sha256-IDeHW5pEVtzkp50RKorohbvEqtlo5lh9ym5k86CQDN8=",
+          "strip_prefix": "rules_cc-0.0.9",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/rules_cc/0.0.9/patches/module_dot_bazel_version.patch": "sha256-mM+qzOI0SgAdaJBlWOSMwMPKpaA9b7R37Hj/tp5bb4g="
+          },
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "bazel_tools@_": {
+      "name": "bazel_tools",
+      "version": "",
+      "key": "bazel_tools@_",
+      "repoName": "bazel_tools",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [
+        "@local_config_cc_toolchains//:all",
+        "@local_config_sh//:local_sh_toolchain"
+      ],
+      "extensionUsages": [
+        {
+          "extensionBzlFile": "@bazel_tools//tools/cpp:cc_configure.bzl",
+          "extensionName": "cc_configure_extension",
+          "usingModule": "bazel_tools@_",
+          "location": {
+            "file": "@@bazel_tools//:MODULE.bazel",
+            "line": 18,
+            "column": 29
+          },
+          "imports": {
+            "local_config_cc": "local_config_cc",
+            "local_config_cc_toolchains": "local_config_cc_toolchains"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        },
+        {
+          "extensionBzlFile": "@bazel_tools//tools/osx:xcode_configure.bzl",
+          "extensionName": "xcode_configure_extension",
+          "usingModule": "bazel_tools@_",
+          "location": {
+            "file": "@@bazel_tools//:MODULE.bazel",
+            "line": 22,
+            "column": 32
+          },
+          "imports": {
+            "local_config_xcode": "local_config_xcode"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        },
+        {
+          "extensionBzlFile": "@rules_java//java:extensions.bzl",
+          "extensionName": "toolchains",
+          "usingModule": "bazel_tools@_",
+          "location": {
+            "file": "@@bazel_tools//:MODULE.bazel",
+            "line": 25,
+            "column": 32
+          },
+          "imports": {
+            "local_jdk": "local_jdk",
+            "remote_java_tools": "remote_java_tools",
+            "remote_java_tools_linux": "remote_java_tools_linux",
+            "remote_java_tools_windows": "remote_java_tools_windows",
+            "remote_java_tools_darwin_x86_64": "remote_java_tools_darwin_x86_64",
+            "remote_java_tools_darwin_arm64": "remote_java_tools_darwin_arm64"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        },
+        {
+          "extensionBzlFile": "@bazel_tools//tools/sh:sh_configure.bzl",
+          "extensionName": "sh_configure_extension",
+          "usingModule": "bazel_tools@_",
+          "location": {
+            "file": "@@bazel_tools//:MODULE.bazel",
+            "line": 36,
+            "column": 39
+          },
+          "imports": {
+            "local_config_sh": "local_config_sh"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        },
+        {
+          "extensionBzlFile": "@bazel_tools//tools/test:extensions.bzl",
+          "extensionName": "remote_coverage_tools_extension",
+          "usingModule": "bazel_tools@_",
+          "location": {
+            "file": "@@bazel_tools//:MODULE.bazel",
+            "line": 40,
+            "column": 48
+          },
+          "imports": {
+            "remote_coverage_tools": "remote_coverage_tools"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        },
+        {
+          "extensionBzlFile": "@bazel_tools//tools/android:android_extensions.bzl",
+          "extensionName": "remote_android_tools_extensions",
+          "usingModule": "bazel_tools@_",
+          "location": {
+            "file": "@@bazel_tools//:MODULE.bazel",
+            "line": 43,
+            "column": 42
+          },
+          "imports": {
+            "android_gmaven_r8": "android_gmaven_r8",
+            "android_tools": "android_tools"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        },
+        {
+          "extensionBzlFile": "@buildozer//:buildozer_binary.bzl",
+          "extensionName": "buildozer_binary",
+          "usingModule": "bazel_tools@_",
+          "location": {
+            "file": "@@bazel_tools//:MODULE.bazel",
+            "line": 47,
+            "column": 33
+          },
+          "imports": {
+            "buildozer_binary": "buildozer_binary"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        }
+      ],
+      "deps": {
+        "rules_cc": "rules_cc@0.0.9",
+        "rules_java": "rules_java@7.4.0",
+        "rules_license": "rules_license@0.0.7",
+        "rules_proto": "rules_proto@5.3.0-21.7",
+        "rules_python": "rules_python@0.25.0",
+        "buildozer": "buildozer@6.4.0.2",
+        "platforms": "platforms@0.0.9",
+        "com_google_protobuf": "protobuf@21.7",
+        "zlib": "zlib@1.3",
+        "build_bazel_apple_support": "apple_support@1.5.0",
+        "local_config_platform": "local_config_platform@_"
+      }
+    },
+    "local_config_platform@_": {
+      "name": "local_config_platform",
+      "version": "",
+      "key": "local_config_platform@_",
+      "repoName": "local_config_platform",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "platforms": "platforms@0.0.9",
+        "bazel_tools": "bazel_tools@_"
+      }
+    },
+    "abseil-cpp@20230802.0": {
+      "name": "abseil-cpp",
+      "version": "20230802.0",
+      "key": "abseil-cpp@20230802.0",
+      "repoName": "abseil-cpp",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "rules_cc": "rules_cc@0.0.9",
+        "platforms": "platforms@0.0.9",
+        "bazel_skylib": "bazel_skylib@1.4.1",
+        "com_google_googletest": "googletest@1.14.0.bcr.1",
+        "com_github_google_benchmark": "google_benchmark@1.8.2",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/abseil/abseil-cpp/archive/refs/tags/20230802.0.tar.gz"
+          ],
+          "integrity": "sha256-WdKXavnW7PABqBo1dJpuVRozW5SdNJGM+t4Hc3udk8U=",
+          "strip_prefix": "abseil-cpp-20230802.0",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/patches/module_dot_bazel.patch": "sha256-tppa7eDWtr2QUqOhIzKmHL5DEqUqfMFQIH7tkhFDY8E="
+          },
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "re2@2023-09-01": {
+      "name": "re2",
+      "version": "2023-09-01",
+      "key": "re2@2023-09-01",
+      "repoName": "re2",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [
+        {
+          "extensionBzlFile": "@pybind11_bazel//:python_configure.bzl",
+          "extensionName": "extension",
+          "usingModule": "re2@2023-09-01",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel",
+            "line": 22,
+            "column": 33
+          },
+          "imports": {
+            "local_config_python": "local_config_python",
+            "pybind11": "pybind11"
+          },
+          "devImports": [],
+          "tags": [
+            {
+              "tagName": "toolchain",
+              "attributeValues": {
+                "python_version": "3"
+              },
+              "devDependency": false,
+              "location": {
+                "file": "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel",
+                "line": 23,
+                "column": 27
+              }
+            }
+          ],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        }
+      ],
+      "deps": {
+        "platforms": "platforms@0.0.9",
+        "rules_cc": "rules_cc@0.0.9",
+        "com_google_absl": "abseil-cpp@20230802.0",
+        "rules_python": "rules_python@0.25.0",
+        "pybind11_bazel": "pybind11_bazel@2.11.1",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/google/re2/releases/download/2023-09-01/re2-2023-09-01.zip"
+          ],
+          "integrity": "sha256-IkuDUdxGM7EBLb2EdWTgYKRr5goioUY9S1uZP9S/Wcw=",
+          "strip_prefix": "re2-2023-09-01",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/re2/2023-09-01/patches/module_dot_bazel.patch": "sha256-MUQkRNgPJ0lbYqOXoBu2m2vLH7IuKEbK/VWTw7WWrnA="
+          },
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "rules_license@0.0.7": {
+      "name": "rules_license",
+      "version": "0.0.7",
+      "key": "rules_license@0.0.7",
+      "repoName": "rules_license",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/bazelbuild/rules_license/releases/download/0.0.7/rules_license-0.0.7.tar.gz"
+          ],
+          "integrity": "sha256-RTHezLkTY5ww5cdRKgVNXYdWmNrrddjPkPKEN1/nw2A=",
+          "strip_prefix": "",
+          "remote_patches": {},
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "rules_java@7.4.0": {
+      "name": "rules_java",
+      "version": "7.4.0",
+      "key": "rules_java@7.4.0",
+      "repoName": "rules_java",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [
+        "//toolchains:all",
+        "@local_jdk//:runtime_toolchain_definition",
+        "@local_jdk//:bootstrap_runtime_toolchain_definition",
+        "@remotejdk11_linux_toolchain_config_repo//:all",
+        "@remotejdk11_linux_aarch64_toolchain_config_repo//:all",
+        "@remotejdk11_linux_ppc64le_toolchain_config_repo//:all",
+        "@remotejdk11_linux_s390x_toolchain_config_repo//:all",
+        "@remotejdk11_macos_toolchain_config_repo//:all",
+        "@remotejdk11_macos_aarch64_toolchain_config_repo//:all",
+        "@remotejdk11_win_toolchain_config_repo//:all",
+        "@remotejdk11_win_arm64_toolchain_config_repo//:all",
+        "@remotejdk17_linux_toolchain_config_repo//:all",
+        "@remotejdk17_linux_aarch64_toolchain_config_repo//:all",
+        "@remotejdk17_linux_ppc64le_toolchain_config_repo//:all",
+        "@remotejdk17_linux_s390x_toolchain_config_repo//:all",
+        "@remotejdk17_macos_toolchain_config_repo//:all",
+        "@remotejdk17_macos_aarch64_toolchain_config_repo//:all",
+        "@remotejdk17_win_toolchain_config_repo//:all",
+        "@remotejdk17_win_arm64_toolchain_config_repo//:all",
+        "@remotejdk21_linux_toolchain_config_repo//:all",
+        "@remotejdk21_linux_aarch64_toolchain_config_repo//:all",
+        "@remotejdk21_macos_toolchain_config_repo//:all",
+        "@remotejdk21_macos_aarch64_toolchain_config_repo//:all",
+        "@remotejdk21_win_toolchain_config_repo//:all"
+      ],
+      "extensionUsages": [
+        {
+          "extensionBzlFile": "@rules_java//java:extensions.bzl",
+          "extensionName": "toolchains",
+          "usingModule": "rules_java@7.4.0",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/rules_java/7.4.0/MODULE.bazel",
+            "line": 19,
+            "column": 27
+          },
+          "imports": {
+            "remote_java_tools": "remote_java_tools",
+            "remote_java_tools_linux": "remote_java_tools_linux",
+            "remote_java_tools_windows": "remote_java_tools_windows",
+            "remote_java_tools_darwin_x86_64": "remote_java_tools_darwin_x86_64",
+            "remote_java_tools_darwin_arm64": "remote_java_tools_darwin_arm64",
+            "local_jdk": "local_jdk",
+            "remotejdk11_linux_toolchain_config_repo": "remotejdk11_linux_toolchain_config_repo",
+            "remotejdk11_linux_aarch64_toolchain_config_repo": "remotejdk11_linux_aarch64_toolchain_config_repo",
+            "remotejdk11_linux_ppc64le_toolchain_config_repo": "remotejdk11_linux_ppc64le_toolchain_config_repo",
+            "remotejdk11_linux_s390x_toolchain_config_repo": "remotejdk11_linux_s390x_toolchain_config_repo",
+            "remotejdk11_macos_toolchain_config_repo": "remotejdk11_macos_toolchain_config_repo",
+            "remotejdk11_macos_aarch64_toolchain_config_repo": "remotejdk11_macos_aarch64_toolchain_config_repo",
+            "remotejdk11_win_toolchain_config_repo": "remotejdk11_win_toolchain_config_repo",
+            "remotejdk11_win_arm64_toolchain_config_repo": "remotejdk11_win_arm64_toolchain_config_repo",
+            "remotejdk17_linux_toolchain_config_repo": "remotejdk17_linux_toolchain_config_repo",
+            "remotejdk17_linux_aarch64_toolchain_config_repo": "remotejdk17_linux_aarch64_toolchain_config_repo",
+            "remotejdk17_linux_ppc64le_toolchain_config_repo": "remotejdk17_linux_ppc64le_toolchain_config_repo",
+            "remotejdk17_linux_s390x_toolchain_config_repo": "remotejdk17_linux_s390x_toolchain_config_repo",
+            "remotejdk17_macos_toolchain_config_repo": "remotejdk17_macos_toolchain_config_repo",
+            "remotejdk17_macos_aarch64_toolchain_config_repo": "remotejdk17_macos_aarch64_toolchain_config_repo",
+            "remotejdk17_win_toolchain_config_repo": "remotejdk17_win_toolchain_config_repo",
+            "remotejdk17_win_arm64_toolchain_config_repo": "remotejdk17_win_arm64_toolchain_config_repo",
+            "remotejdk21_linux_toolchain_config_repo": "remotejdk21_linux_toolchain_config_repo",
+            "remotejdk21_linux_aarch64_toolchain_config_repo": "remotejdk21_linux_aarch64_toolchain_config_repo",
+            "remotejdk21_macos_toolchain_config_repo": "remotejdk21_macos_toolchain_config_repo",
+            "remotejdk21_macos_aarch64_toolchain_config_repo": "remotejdk21_macos_aarch64_toolchain_config_repo",
+            "remotejdk21_win_toolchain_config_repo": "remotejdk21_win_toolchain_config_repo"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        }
+      ],
+      "deps": {
+        "platforms": "platforms@0.0.9",
+        "rules_cc": "rules_cc@0.0.9",
+        "bazel_skylib": "bazel_skylib@1.4.1",
+        "rules_proto": "rules_proto@5.3.0-21.7",
+        "rules_license": "rules_license@0.0.7",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/bazelbuild/rules_java/releases/download/7.4.0/rules_java-7.4.0.tar.gz"
+          ],
+          "integrity": "sha256-l27wi0nJKXQfIBeQ5Z44B8cq2B9CjIvJU82+/1/tFes=",
+          "strip_prefix": "",
+          "remote_patches": {},
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "rules_proto@5.3.0-21.7": {
+      "name": "rules_proto",
+      "version": "5.3.0-21.7",
+      "key": "rules_proto@5.3.0-21.7",
+      "repoName": "rules_proto",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "bazel_skylib": "bazel_skylib@1.4.1",
+        "com_google_protobuf": "protobuf@21.7",
+        "rules_cc": "rules_cc@0.0.9",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/bazelbuild/rules_proto/archive/refs/tags/5.3.0-21.7.tar.gz"
+          ],
+          "integrity": "sha256-3D+yBqLLNEG0heseQjFlsjEjWh6psDG0Qzz3vB+kYN0=",
+          "strip_prefix": "rules_proto-5.3.0-21.7",
+          "remote_patches": {},
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "rules_python@0.25.0": {
+      "name": "rules_python",
+      "version": "0.25.0",
+      "key": "rules_python@0.25.0",
+      "repoName": "rules_python",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [
+        "@pythons_hub//:all"
+      ],
+      "extensionUsages": [
+        {
+          "extensionBzlFile": "@rules_python//python/extensions/private:internal_deps.bzl",
+          "extensionName": "internal_deps",
+          "usingModule": "rules_python@0.25.0",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel",
+            "line": 14,
+            "column": 30
+          },
+          "imports": {
+            "pypi__build": "pypi__build",
+            "pypi__click": "pypi__click",
+            "pypi__colorama": "pypi__colorama",
+            "pypi__importlib_metadata": "pypi__importlib_metadata",
+            "pypi__installer": "pypi__installer",
+            "pypi__more_itertools": "pypi__more_itertools",
+            "pypi__packaging": "pypi__packaging",
+            "pypi__pep517": "pypi__pep517",
+            "pypi__pip": "pypi__pip",
+            "pypi__pip_tools": "pypi__pip_tools",
+            "pypi__setuptools": "pypi__setuptools",
+            "pypi__tomli": "pypi__tomli",
+            "pypi__wheel": "pypi__wheel",
+            "pypi__zipp": "pypi__zipp"
+          },
+          "devImports": [],
+          "tags": [
+            {
+              "tagName": "install",
+              "attributeValues": {},
+              "devDependency": false,
+              "location": {
+                "file": "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel",
+                "line": 15,
+                "column": 22
+              }
+            }
+          ],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        },
+        {
+          "extensionBzlFile": "@rules_python//python/extensions:python.bzl",
+          "extensionName": "python",
+          "usingModule": "rules_python@0.25.0",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel",
+            "line": 38,
+            "column": 23
+          },
+          "imports": {
+            "pythons_hub": "pythons_hub"
+          },
+          "devImports": [],
+          "tags": [
+            {
+              "tagName": "toolchain",
+              "attributeValues": {
+                "is_default": true,
+                "python_version": "3.11"
+              },
+              "devDependency": false,
+              "location": {
+                "file": "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel",
+                "line": 44,
+                "column": 17
+              }
+            }
+          ],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        }
+      ],
+      "deps": {
+        "platforms": "platforms@0.0.9",
+        "bazel_skylib": "bazel_skylib@1.4.1",
+        "rules_proto": "rules_proto@5.3.0-21.7",
+        "com_google_protobuf": "protobuf@21.7",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/bazelbuild/rules_python/releases/download/0.25.0/rules_python-0.25.0.tar.gz"
+          ],
+          "integrity": "sha256-WGjnMQeo6F2PMjgG5gytcoPzSzIWPqb/ECDPJ6vvYDY=",
+          "strip_prefix": "rules_python-0.25.0",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/rules_python/0.25.0/patches/module_dot_bazel_version.patch": "sha256-6c8MrjTxYoqUpI8Y1QlmPps5p+N2RaZ5V+iXOrSHkwI="
+          },
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "buildozer@6.4.0.2": {
+      "name": "buildozer",
+      "version": "6.4.0.2",
+      "key": "buildozer@6.4.0.2",
+      "repoName": "buildozer",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [
+        {
+          "extensionBzlFile": "@buildozer//:buildozer_binary.bzl",
+          "extensionName": "buildozer_binary",
+          "usingModule": "buildozer@6.4.0.2",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/buildozer/6.4.0.2/MODULE.bazel",
+            "line": 7,
+            "column": 33
+          },
+          "imports": {
+            "buildozer_binary": "buildozer_binary"
+          },
+          "devImports": [],
+          "tags": [
+            {
+              "tagName": "buildozer",
+              "attributeValues": {
+                "sha256": {
+                  "darwin-amd64": "d29e347ecd6b5673d72cb1a8de05bf1b06178dd229ff5eb67fad5100c840cc8e",
+                  "darwin-arm64": "9b9e71bdbec5e7223871e913b65d12f6d8fa026684daf991f00e52ed36a6978d",
+                  "linux-amd64": "8dfd6345da4e9042daa738d7fdf34f699c5dfce4632f7207956fceedd8494119",
+                  "linux-arm64": "6559558fded658c8fa7432a9d011f7c4dcbac6b738feae73d2d5c352e5f605fa",
+                  "windows-amd64": "e7f05bf847f7c3689dd28926460ce6e1097ae97380ac8e6ae7147b7b706ba19b"
+                },
+                "version": "6.4.0"
+              },
+              "devDependency": false,
+              "location": {
+                "file": "https://bcr.bazel.build/modules/buildozer/6.4.0.2/MODULE.bazel",
+                "line": 8,
+                "column": 27
+              }
+            }
+          ],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        }
+      ],
+      "deps": {
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/fmeum/buildozer/releases/download/v6.4.0.2/buildozer-v6.4.0.2.tar.gz"
+          ],
+          "integrity": "sha256-k7tFKQMR2AygxpmZfH0yEPnQmF3efFgD9rBPkj+Yz/8=",
+          "strip_prefix": "buildozer-6.4.0.2",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/buildozer/6.4.0.2/patches/module_dot_bazel_version.patch": "sha256-gKANF2HMilj7bWmuXs4lbBIAAansuWC4IhWGB/CerjU="
+          },
+          "remote_patch_strip": 1
+        }
+      }
+    },
+    "protobuf@21.7": {
+      "name": "protobuf",
+      "version": "21.7",
+      "key": "protobuf@21.7",
+      "repoName": "protobuf",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [
+        {
+          "extensionBzlFile": "@rules_jvm_external//:extensions.bzl",
+          "extensionName": "maven",
+          "usingModule": "protobuf@21.7",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel",
+            "line": 22,
+            "column": 22
+          },
+          "imports": {
+            "maven": "maven"
+          },
+          "devImports": [],
+          "tags": [
+            {
+              "tagName": "install",
+              "attributeValues": {
+                "name": "maven",
+                "artifacts": [
+                  "com.google.code.findbugs:jsr305:3.0.2",
+                  "com.google.code.gson:gson:2.8.9",
+                  "com.google.errorprone:error_prone_annotations:2.3.2",
+                  "com.google.j2objc:j2objc-annotations:1.3",
+                  "com.google.guava:guava:31.1-jre",
+                  "com.google.guava:guava-testlib:31.1-jre",
+                  "com.google.truth:truth:1.1.2",
+                  "junit:junit:4.13.2",
+                  "org.mockito:mockito-core:4.3.1"
+                ]
+              },
+              "devDependency": false,
+              "location": {
+                "file": "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel",
+                "line": 24,
+                "column": 14
+              }
+            }
+          ],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        }
+      ],
+      "deps": {
+        "bazel_skylib": "bazel_skylib@1.4.1",
+        "rules_python": "rules_python@0.25.0",
+        "rules_cc": "rules_cc@0.0.9",
+        "rules_proto": "rules_proto@5.3.0-21.7",
+        "rules_java": "rules_java@7.4.0",
+        "rules_pkg": "rules_pkg@0.7.0",
+        "com_google_abseil": "abseil-cpp@20230802.0",
+        "zlib": "zlib@1.3",
+        "upb": "upb@0.0.0-20220923-a547704",
+        "rules_jvm_external": "rules_jvm_external@4.4.2",
+        "com_google_googletest": "googletest@1.14.0.bcr.1",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/protocolbuffers/protobuf/releases/download/v21.7/protobuf-all-21.7.zip"
+          ],
+          "integrity": "sha256-VJOiH17T/FAuZv7GuUScBqVRztYwAvpIkDxA36jeeko=",
+          "strip_prefix": "protobuf-21.7",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/protobuf/21.7/patches/add_module_dot_bazel.patch": "sha256-q3V2+eq0v2XF0z8z+V+QF4cynD6JvHI1y3kI/+rzl5s=",
+            "https://bcr.bazel.build/modules/protobuf/21.7/patches/add_module_dot_bazel_for_examples.patch": "sha256-O7YP6s3lo/1opUiO0jqXYORNHdZ/2q3hjz1QGy8QdIU=",
+            "https://bcr.bazel.build/modules/protobuf/21.7/patches/relative_repo_names.patch": "sha256-RK9RjW8T5UJNG7flIrnFiNE9vKwWB+8uWWtJqXYT0w4=",
+            "https://bcr.bazel.build/modules/protobuf/21.7/patches/add_missing_files.patch": "sha256-Hyne4DG2u5bXcWHNxNMirA2QFAe/2Cl8oMm1XJdkQIY="
+          },
+          "remote_patch_strip": 1
+        }
+      }
+    },
+    "zlib@1.3": {
+      "name": "zlib",
+      "version": "1.3",
+      "key": "zlib@1.3",
+      "repoName": "zlib",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "platforms": "platforms@0.0.9",
+        "rules_cc": "rules_cc@0.0.9",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/madler/zlib/releases/download/v1.3/zlib-1.3.tar.gz"
+          ],
+          "integrity": "sha256-/wukwpIBPbwnUws6geH5qBPNOd4Byl4Pi/NVcC76WT4=",
+          "strip_prefix": "zlib-1.3",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/zlib/1.3/patches/add_build_file.patch": "sha256-Ei+FYaaOo7A3jTKunMEodTI0Uw5NXQyZEcboMC8JskY=",
+            "https://bcr.bazel.build/modules/zlib/1.3/patches/module_dot_bazel.patch": "sha256-fPWLM+2xaF/kuy+kZc1YTfW6hNjrkG400Ho7gckuyJk="
+          },
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "apple_support@1.5.0": {
+      "name": "apple_support",
+      "version": "1.5.0",
+      "key": "apple_support@1.5.0",
+      "repoName": "build_bazel_apple_support",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [
+        "@local_config_apple_cc_toolchains//:all"
+      ],
+      "extensionUsages": [
+        {
+          "extensionBzlFile": "@build_bazel_apple_support//crosstool:setup.bzl",
+          "extensionName": "apple_cc_configure_extension",
+          "usingModule": "apple_support@1.5.0",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel",
+            "line": 17,
+            "column": 35
+          },
+          "imports": {
+            "local_config_apple_cc": "local_config_apple_cc",
+            "local_config_apple_cc_toolchains": "local_config_apple_cc_toolchains"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        }
+      ],
+      "deps": {
+        "bazel_skylib": "bazel_skylib@1.4.1",
+        "platforms": "platforms@0.0.9",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/bazelbuild/apple_support/releases/download/1.5.0/apple_support.1.5.0.tar.gz"
+          ],
+          "integrity": "sha256-miM41vja0yRPgj8txghKA+TQ+7J8qJLclw5okNW0gYQ=",
+          "strip_prefix": "",
+          "remote_patches": {},
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "bazel_skylib@1.4.1": {
+      "name": "bazel_skylib",
+      "version": "1.4.1",
+      "key": "bazel_skylib@1.4.1",
+      "repoName": "bazel_skylib",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [
+        "//toolchains/unittest:cmd_toolchain",
+        "//toolchains/unittest:bash_toolchain"
+      ],
+      "extensionUsages": [],
+      "deps": {
+        "platforms": "platforms@0.0.9",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/bazelbuild/bazel-skylib/releases/download/1.4.1/bazel-skylib-1.4.1.tar.gz"
+          ],
+          "integrity": "sha256-uKFSeQF3QYCvx5iusoxGNL3M8ZxNmOe90c550f6aqtc=",
+          "strip_prefix": "",
+          "remote_patches": {},
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "google_benchmark@1.8.2": {
+      "name": "google_benchmark",
+      "version": "1.8.2",
+      "key": "google_benchmark@1.8.2",
+      "repoName": "google_benchmark",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "bazel_skylib": "bazel_skylib@1.4.1",
+        "platforms": "platforms@0.0.9",
+        "rules_foreign_cc": "rules_foreign_cc@0.9.0",
+        "rules_cc": "rules_cc@0.0.9",
+        "libpfm": "libpfm@4.11.0",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/google/benchmark/archive/refs/tags/v1.8.2.tar.gz"
+          ],
+          "integrity": "sha256-KqspgNA3YTf5adkoSPu2gharsHYzA0U0/IxlzE56DpM=",
+          "strip_prefix": "benchmark-1.8.2",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/google_benchmark/1.8.2/patches/module_dot_bazel.patch": "sha256-703OrC3OH7pk9qrGkAMbvp/8yEoHiesDKHNVIKVJB/M="
+          },
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "pybind11_bazel@2.11.1": {
+      "name": "pybind11_bazel",
+      "version": "2.11.1",
+      "key": "pybind11_bazel@2.11.1",
+      "repoName": "pybind11_bazel",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "platforms": "platforms@0.0.9",
+        "rules_cc": "rules_cc@0.0.9",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/pybind/pybind11_bazel/releases/download/v2.11.1/pybind11_bazel-2.11.1.zip"
+          ],
+          "integrity": "sha256-LEZsmzzKeFK0fgeFADEomE/PDV1hoaLkxazu/ZNawiA=",
+          "strip_prefix": "pybind11_bazel-2.11.1",
+          "remote_patches": {},
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "rules_pkg@0.7.0": {
+      "name": "rules_pkg",
+      "version": "0.7.0",
+      "key": "rules_pkg@0.7.0",
+      "repoName": "rules_pkg",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "rules_python": "rules_python@0.25.0",
+        "bazel_skylib": "bazel_skylib@1.4.1",
+        "rules_license": "rules_license@0.0.7",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/bazelbuild/rules_pkg/releases/download/0.7.0/rules_pkg-0.7.0.tar.gz"
+          ],
+          "integrity": "sha256-iimOgydi7aGDBZfWT+fbWBeKqEzVkm121bdE1lWJQcI=",
+          "strip_prefix": "",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/rules_pkg/0.7.0/patches/module_dot_bazel.patch": "sha256-4OaEPZwYF6iC71ZTDg6MJ7LLqX7ZA0/kK4mT+4xKqiE="
+          },
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "upb@0.0.0-20220923-a547704": {
+      "name": "upb",
+      "version": "0.0.0-20220923-a547704",
+      "key": "upb@0.0.0-20220923-a547704",
+      "repoName": "upb",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "bazel_skylib": "bazel_skylib@1.4.1",
+        "rules_proto": "rules_proto@5.3.0-21.7",
+        "com_google_protobuf": "protobuf@21.7",
+        "com_google_absl": "abseil-cpp@20230802.0",
+        "platforms": "platforms@0.0.9",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/protocolbuffers/upb/archive/a5477045acaa34586420942098f5fecd3570f577.tar.gz"
+          ],
+          "integrity": "sha256-z39x6v+QskwaKLSWRan/A6mmwecTQpHOcJActj5zZLU=",
+          "strip_prefix": "upb-a5477045acaa34586420942098f5fecd3570f577",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/patches/module_dot_bazel.patch": "sha256-wH4mNS6ZYy+8uC0HoAft/c7SDsq2Kxf+J8dUakXhaB0="
+          },
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "rules_jvm_external@4.4.2": {
+      "name": "rules_jvm_external",
+      "version": "4.4.2",
+      "key": "rules_jvm_external@4.4.2",
+      "repoName": "rules_jvm_external",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [
+        {
+          "extensionBzlFile": "@rules_jvm_external//:non-module-deps.bzl",
+          "extensionName": "non_module_deps",
+          "usingModule": "rules_jvm_external@4.4.2",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel",
+            "line": 9,
+            "column": 32
+          },
+          "imports": {
+            "io_bazel_rules_kotlin": "io_bazel_rules_kotlin"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        },
+        {
+          "extensionBzlFile": "@rules_jvm_external//:extensions.bzl",
+          "extensionName": "maven",
+          "usingModule": "rules_jvm_external@4.4.2",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel",
+            "line": 16,
+            "column": 22
+          },
+          "imports": {
+            "rules_jvm_external_deps": "rules_jvm_external_deps"
+          },
+          "devImports": [],
+          "tags": [
+            {
+              "tagName": "install",
+              "attributeValues": {
+                "name": "rules_jvm_external_deps",
+                "artifacts": [
+                  "com.google.cloud:google-cloud-core:1.93.10",
+                  "com.google.cloud:google-cloud-storage:1.113.4",
+                  "com.google.code.gson:gson:2.9.0",
+                  "org.apache.maven:maven-artifact:3.8.6",
+                  "software.amazon.awssdk:s3:2.17.183"
+                ],
+                "lock_file": "@rules_jvm_external//:rules_jvm_external_deps_install.json"
+              },
+              "devDependency": false,
+              "location": {
+                "file": "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel",
+                "line": 18,
+                "column": 14
+              }
+            }
+          ],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        }
+      ],
+      "deps": {
+        "bazel_skylib": "bazel_skylib@1.4.1",
+        "io_bazel_stardoc": "stardoc@0.5.1",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/bazelbuild/rules_jvm_external/archive/refs/tags/4.4.2.zip"
+          ],
+          "integrity": "sha256-c1YC9QgT6y6pPKP15DsZWb2AshO4NqB6YqKddXZwt3s=",
+          "strip_prefix": "rules_jvm_external-4.4.2",
+          "remote_patches": {},
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "rules_foreign_cc@0.9.0": {
+      "name": "rules_foreign_cc",
+      "version": "0.9.0",
+      "key": "rules_foreign_cc@0.9.0",
+      "repoName": "rules_foreign_cc",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [
+        "@rules_foreign_cc_framework_toolchain_freebsd//:toolchain",
+        "@rules_foreign_cc_framework_toolchain_linux//:toolchain",
+        "@rules_foreign_cc_framework_toolchain_macos//:toolchain",
+        "@rules_foreign_cc_framework_toolchain_windows//:toolchain",
+        "@rules_foreign_cc//toolchains:built_make_toolchain",
+        "@rules_foreign_cc//toolchains:preinstalled_autoconf_toolchain",
+        "@rules_foreign_cc//toolchains:preinstalled_automake_toolchain",
+        "@rules_foreign_cc//toolchains:preinstalled_m4_toolchain",
+        "@rules_foreign_cc//toolchains:preinstalled_pkgconfig_toolchain",
+        "@cmake_3.23.2_toolchains//:all",
+        "@ninja_1.11.0_toolchains//:all"
+      ],
+      "extensionUsages": [
+        {
+          "extensionBzlFile": "@rules_foreign_cc//foreign_cc:extensions.bzl",
+          "extensionName": "ext",
+          "usingModule": "rules_foreign_cc@0.9.0",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel",
+            "line": 13,
+            "column": 20
+          },
+          "imports": {
+            "cmake_3.23.2_toolchains": "cmake_3.23.2_toolchains",
+            "rules_foreign_cc_framework_toolchain_freebsd": "rules_foreign_cc_framework_toolchain_freebsd",
+            "rules_foreign_cc_framework_toolchain_linux": "rules_foreign_cc_framework_toolchain_linux",
+            "rules_foreign_cc_framework_toolchain_macos": "rules_foreign_cc_framework_toolchain_macos",
+            "rules_foreign_cc_framework_toolchain_windows": "rules_foreign_cc_framework_toolchain_windows",
+            "cmake_src": "cmake_src",
+            "gnumake_src": "gnumake_src",
+            "ninja_build_src": "ninja_build_src",
+            "ninja_1.11.0_toolchains": "ninja_1.11.0_toolchains"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        }
+      ],
+      "deps": {
+        "bazel_skylib": "bazel_skylib@1.4.1",
+        "platforms": "platforms@0.0.9",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/bazelbuild/rules_foreign_cc/archive/refs/tags/0.9.0.tar.gz"
+          ],
+          "integrity": "sha256-Kk0HzWSwcZs5p8EiGKPlB2crgql7mMaonThWWJTPfFE=",
+          "strip_prefix": "rules_foreign_cc-0.9.0",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/patches/examples.patch": "sha256-RxT7rVHxO30W350sYu7ybi4rStwoB8b8mr34ZU9ciIk=",
+            "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/patches/module_dot_bazel.patch": "sha256-VTNnq8ySdeo9pI4rrJ+EXa/9ZACgQQ4baUwoQpljzCM="
+          },
+          "remote_patch_strip": 1
+        }
+      }
+    },
+    "libpfm@4.11.0": {
+      "name": "libpfm",
+      "version": "4.11.0",
+      "key": "libpfm@4.11.0",
+      "repoName": "libpfm",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "platforms": "platforms@0.0.9",
+        "rules_foreign_cc": "rules_foreign_cc@0.9.0",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://sourceforge.net/projects/perfmon2/files/libpfm4/libpfm-4.11.0.tar.gz"
+          ],
+          "integrity": "sha256-XaX4hyveFLNjTJaI2YD2i9ootRAmhyPMEpc+7bq5/sw=",
+          "strip_prefix": "libpfm-4.11.0",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/libpfm/4.11.0/patches/module_dot_bazel.patch": "sha256-G0wQJ2mVEoW/L5LGzmbNfuZaxI2+9NDuWJtqvCpM1pc=",
+            "https://bcr.bazel.build/modules/libpfm/4.11.0/patches/add_build_file.patch": "sha256-E61d/qQgmeOcUliWaveHPp1EZoOjkvZJsqhGhHofqUg="
+          },
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "stardoc@0.5.1": {
+      "name": "stardoc",
+      "version": "0.5.1",
+      "key": "stardoc@0.5.1",
+      "repoName": "stardoc",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "bazel_skylib": "bazel_skylib@1.4.1",
+        "rules_java": "rules_java@7.4.0",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "urls": [
+            "https://github.com/bazelbuild/stardoc/releases/download/0.5.1/stardoc-0.5.1.tar.gz"
+          ],
+          "integrity": "sha256-qoFNrgrEALurLoiB+ZFcb0fElmS/CHxAmhX5BDjSwj4=",
+          "strip_prefix": "",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/stardoc/0.5.1/patches/module_dot_bazel.patch": "sha256-UAULCuTpJE7SG0YrR9XLjMfxMRmbP+za3uW9ONZ5rjI="
+          },
+          "remote_patch_strip": 0
+        }
+      }
+    }
+  },
+  "moduleExtensions": {
+    "@@apple_support~//crosstool:setup.bzl%apple_cc_configure_extension": {
+      "general": {
+        "bzlTransitiveDigest": "pMLFCYaRPkgXPQ8vtuNkMfiHfPmRBy6QJfnid4sWfv0=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "local_config_apple_cc": {
+            "bzlFile": "@@apple_support~//crosstool:setup.bzl",
+            "ruleClassName": "_apple_cc_autoconf",
+            "attributes": {}
+          },
+          "local_config_apple_cc_toolchains": {
+            "bzlFile": "@@apple_support~//crosstool:setup.bzl",
+            "ruleClassName": "_apple_cc_autoconf_toolchains",
+            "attributes": {}
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "apple_support~",
+            "bazel_tools",
+            "bazel_tools"
+          ]
+        ]
+      }
+    },
+    "@@bazel_tools//tools/cpp:cc_configure.bzl%cc_configure_extension": {
+      "general": {
+        "bzlTransitiveDigest": "PHpT2yqMGms2U4L3E/aZ+WcQalmZWm+ILdP3yiLsDhA=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "local_config_cc": {
+            "bzlFile": "@@bazel_tools//tools/cpp:cc_configure.bzl",
+            "ruleClassName": "cc_autoconf",
+            "attributes": {}
+          },
+          "local_config_cc_toolchains": {
+            "bzlFile": "@@bazel_tools//tools/cpp:cc_configure.bzl",
+            "ruleClassName": "cc_autoconf_toolchains",
+            "attributes": {}
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "bazel_tools",
+            "bazel_tools",
+            "bazel_tools"
+          ]
+        ]
+      }
+    },
+    "@@bazel_tools//tools/osx:xcode_configure.bzl%xcode_configure_extension": {
+      "general": {
+        "bzlTransitiveDigest": "Qh2bWTU6QW6wkrd87qrU4YeY+SG37Nvw3A0PR4Y0L2Y=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "local_config_xcode": {
+            "bzlFile": "@@bazel_tools//tools/osx:xcode_configure.bzl",
+            "ruleClassName": "xcode_autoconf",
+            "attributes": {
+              "xcode_locator": "@bazel_tools//tools/osx:xcode_locator.m",
+              "remote_xcode": ""
+            }
+          }
+        },
+        "recordedRepoMappingEntries": []
+      }
+    },
+    "@@bazel_tools//tools/sh:sh_configure.bzl%sh_configure_extension": {
+      "general": {
+        "bzlTransitiveDigest": "hp4NgmNjEg5+xgvzfh6L83bt9/aiiWETuNpwNuF1MSU=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "local_config_sh": {
+            "bzlFile": "@@bazel_tools//tools/sh:sh_configure.bzl",
+            "ruleClassName": "sh_config",
+            "attributes": {}
+          }
+        },
+        "recordedRepoMappingEntries": []
+      }
+    },
+    "@@rules_foreign_cc~//foreign_cc:extensions.bzl%ext": {
+      "general": {
+        "bzlTransitiveDigest": "QbxK92//k6c63fpMer2Lkk6224s9gwYoVFFS6mdkucI=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "cmake-3.23.2-linux-aarch64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-linux-aarch64.tar.gz"
+              ],
+              "sha256": "f2654bf780b53f170bbbec44d8ac67d401d24788e590faa53036a89476efa91e",
+              "strip_prefix": "cmake-3.23.2-linux-aarch64",
+              "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n    name = \"cmake_data\",\n    srcs = glob(\n        [\n            \"**\",\n        ],\n        exclude = [\n            \"WORKSPACE\",\n            \"WORKSPACE.bazel\",\n            \"BUILD\",\n            \"BUILD.bazel\",\n        ],\n    ),\n)\n\nnative_tool_toolchain(\n    name = \"cmake_tool\",\n    path = \"bin/cmake\",\n    target = \":cmake_data\",\n)\n"
+            }
+          },
+          "rules_foreign_cc_framework_toolchain_macos": {
+            "bzlFile": "@@rules_foreign_cc~//foreign_cc/private/framework:toolchain.bzl",
+            "ruleClassName": "framework_toolchain_repository",
+            "attributes": {
+              "commands_src": "@rules_foreign_cc//foreign_cc/private/framework/toolchains:macos_commands.bzl",
+              "exec_compatible_with": [
+                "@platforms//os:macos"
+              ],
+              "target_compatible_with": []
+            }
+          },
+          "ninja_1.11.0_linux": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/ninja-build/ninja/releases/download/v1.11.0/ninja-linux.zip"
+              ],
+              "sha256": "9726e730d5b8599f82654dc80265e64a10a8a817552c34153361ed0c017f9f02",
+              "strip_prefix": "",
+              "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n    name = \"ninja_bin\",\n    srcs = [\"ninja\"],\n)\n\nnative_tool_toolchain(\n    name = \"ninja_tool\",\n    env = {\"NINJA\": \"$(execpath :ninja_bin)\"},\n    path = \"$(execpath :ninja_bin)\",\n    target = \":ninja_bin\",\n)\n"
+            }
+          },
+          "gnumake_src": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "filegroup(\n    name = \"all_srcs\",\n    srcs = glob([\"**\"]),\n    visibility = [\"//visibility:public\"],\n)\n",
+              "patches": [
+                "@@rules_foreign_cc~//toolchains:make-reproducible-bootstrap.patch"
+              ],
+              "sha256": "e05fdde47c5f7ca45cb697e973894ff4f5d79e13b750ed57d7b66d8defc78e19",
+              "strip_prefix": "make-4.3",
+              "urls": [
+                "https://mirror.bazel.build/ftpmirror.gnu.org/gnu/make/make-4.3.tar.gz",
+                "http://ftpmirror.gnu.org/gnu/make/make-4.3.tar.gz"
+              ]
+            }
+          },
+          "ninja_1.11.0_win": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/ninja-build/ninja/releases/download/v1.11.0/ninja-win.zip"
+              ],
+              "sha256": "d0ee3da143211aa447e750085876c9b9d7bcdd637ab5b2c5b41349c617f22f3b",
+              "strip_prefix": "",
+              "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n    name = \"ninja_bin\",\n    srcs = [\"ninja.exe\"],\n)\n\nnative_tool_toolchain(\n    name = \"ninja_tool\",\n    env = {\"NINJA\": \"$(execpath :ninja_bin)\"},\n    path = \"$(execpath :ninja_bin)\",\n    target = \":ninja_bin\",\n)\n"
+            }
+          },
+          "cmake_3.23.2_toolchains": {
+            "bzlFile": "@@rules_foreign_cc~//toolchains:prebuilt_toolchains_repository.bzl",
+            "ruleClassName": "prebuilt_toolchains_repository",
+            "attributes": {
+              "repos": {
+                "cmake-3.23.2-linux-aarch64": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:linux"
+                ],
+                "cmake-3.23.2-linux-x86_64": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:linux"
+                ],
+                "cmake-3.23.2-macos-universal": [
+                  "@platforms//os:macos"
+                ],
+                "cmake-3.23.2-windows-i386": [
+                  "@platforms//cpu:x86_32",
+                  "@platforms//os:windows"
+                ],
+                "cmake-3.23.2-windows-x86_64": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:windows"
+                ]
+              },
+              "tool": "cmake"
+            }
+          },
+          "cmake_src": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "filegroup(\n    name = \"all_srcs\",\n    srcs = glob([\"**\"]),\n    visibility = [\"//visibility:public\"],\n)\n",
+              "sha256": "f316b40053466f9a416adf981efda41b160ca859e97f6a484b447ea299ff26aa",
+              "strip_prefix": "cmake-3.23.2",
+              "urls": [
+                "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2.tar.gz"
+              ]
+            }
+          },
+          "bazel_skylib": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "urls": [
+                "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.2.1/bazel-skylib-1.2.1.tar.gz",
+                "https://github.com/bazelbuild/bazel-skylib/releases/download/1.2.1/bazel-skylib-1.2.1.tar.gz"
+              ],
+              "sha256": "f7be3474d42aae265405a592bb7da8e171919d74c16f082a5457840f06054728"
+            }
+          },
+          "cmake-3.23.2-macos-universal": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-macos-universal.tar.gz"
+              ],
+              "sha256": "853a0f9af148c5ef47282ffffee06c4c9f257be2635936755f39ca13c3286c88",
+              "strip_prefix": "cmake-3.23.2-macos-universal/CMake.app/Contents",
+              "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n    name = \"cmake_data\",\n    srcs = glob(\n        [\n            \"**\",\n        ],\n        exclude = [\n            \"WORKSPACE\",\n            \"WORKSPACE.bazel\",\n            \"BUILD\",\n            \"BUILD.bazel\",\n        ],\n    ),\n)\n\nnative_tool_toolchain(\n    name = \"cmake_tool\",\n    path = \"bin/cmake\",\n    target = \":cmake_data\",\n)\n"
+            }
+          },
+          "rules_foreign_cc_framework_toolchain_freebsd": {
+            "bzlFile": "@@rules_foreign_cc~//foreign_cc/private/framework:toolchain.bzl",
+            "ruleClassName": "framework_toolchain_repository",
+            "attributes": {
+              "commands_src": "@rules_foreign_cc//foreign_cc/private/framework/toolchains:freebsd_commands.bzl",
+              "exec_compatible_with": [
+                "@platforms//os:freebsd"
+              ],
+              "target_compatible_with": []
+            }
+          },
+          "rules_foreign_cc_framework_toolchain_linux": {
+            "bzlFile": "@@rules_foreign_cc~//foreign_cc/private/framework:toolchain.bzl",
+            "ruleClassName": "framework_toolchain_repository",
+            "attributes": {
+              "commands_src": "@rules_foreign_cc//foreign_cc/private/framework/toolchains:linux_commands.bzl",
+              "exec_compatible_with": [
+                "@platforms//os:linux"
+              ],
+              "target_compatible_with": []
+            }
+          },
+          "rules_python": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "sha256": "5fa3c738d33acca3b97622a13a741129f67ef43f5fdfcec63b29374cc0574c29",
+              "strip_prefix": "rules_python-0.9.0",
+              "url": "https://github.com/bazelbuild/rules_python/archive/refs/tags/0.9.0.tar.gz"
+            }
+          },
+          "ninja_1.11.0_mac": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/ninja-build/ninja/releases/download/v1.11.0/ninja-mac.zip"
+              ],
+              "sha256": "21915277db59756bfc61f6f281c1f5e3897760b63776fd3d360f77dd7364137f",
+              "strip_prefix": "",
+              "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n    name = \"ninja_bin\",\n    srcs = [\"ninja\"],\n)\n\nnative_tool_toolchain(\n    name = \"ninja_tool\",\n    env = {\"NINJA\": \"$(execpath :ninja_bin)\"},\n    path = \"$(execpath :ninja_bin)\",\n    target = \":ninja_bin\",\n)\n"
+            }
+          },
+          "ninja_build_src": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "filegroup(\n    name = \"all_srcs\",\n    srcs = glob([\"**\"]),\n    visibility = [\"//visibility:public\"],\n)\n",
+              "sha256": "3c6ba2e66400fe3f1ae83deb4b235faf3137ec20bd5b08c29bfc368db143e4c6",
+              "strip_prefix": "ninja-1.11.0",
+              "urls": [
+                "https://github.com/ninja-build/ninja/archive/v1.11.0.tar.gz"
+              ]
+            }
+          },
+          "cmake-3.23.2-windows-i386": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-windows-i386.zip"
+              ],
+              "sha256": "6a4fcd6a2315b93cb23c93507efccacc30c449c2bf98f14d6032bb226c582e07",
+              "strip_prefix": "cmake-3.23.2-windows-i386",
+              "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n    name = \"cmake_data\",\n    srcs = glob(\n        [\n            \"**\",\n        ],\n        exclude = [\n            \"WORKSPACE\",\n            \"WORKSPACE.bazel\",\n            \"BUILD\",\n            \"BUILD.bazel\",\n        ],\n    ),\n)\n\nnative_tool_toolchain(\n    name = \"cmake_tool\",\n    path = \"bin/cmake.exe\",\n    target = \":cmake_data\",\n)\n"
+            }
+          },
+          "cmake-3.23.2-linux-x86_64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-linux-x86_64.tar.gz"
+              ],
+              "sha256": "aaced6f745b86ce853661a595bdac6c5314a60f8181b6912a0a4920acfa32708",
+              "strip_prefix": "cmake-3.23.2-linux-x86_64",
+              "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n    name = \"cmake_data\",\n    srcs = glob(\n        [\n            \"**\",\n        ],\n        exclude = [\n            \"WORKSPACE\",\n            \"WORKSPACE.bazel\",\n            \"BUILD\",\n            \"BUILD.bazel\",\n        ],\n    ),\n)\n\nnative_tool_toolchain(\n    name = \"cmake_tool\",\n    path = \"bin/cmake\",\n    target = \":cmake_data\",\n)\n"
+            }
+          },
+          "cmake-3.23.2-windows-x86_64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-windows-x86_64.zip"
+              ],
+              "sha256": "2329387f3166b84c25091c86389fb891193967740c9bcf01e7f6d3306f7ffda0",
+              "strip_prefix": "cmake-3.23.2-windows-x86_64",
+              "build_file_content": "load(\"@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl\", \"native_tool_toolchain\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nfilegroup(\n    name = \"cmake_data\",\n    srcs = glob(\n        [\n            \"**\",\n        ],\n        exclude = [\n            \"WORKSPACE\",\n            \"WORKSPACE.bazel\",\n            \"BUILD\",\n            \"BUILD.bazel\",\n        ],\n    ),\n)\n\nnative_tool_toolchain(\n    name = \"cmake_tool\",\n    path = \"bin/cmake.exe\",\n    target = \":cmake_data\",\n)\n"
+            }
+          },
+          "rules_foreign_cc_framework_toolchain_windows": {
+            "bzlFile": "@@rules_foreign_cc~//foreign_cc/private/framework:toolchain.bzl",
+            "ruleClassName": "framework_toolchain_repository",
+            "attributes": {
+              "commands_src": "@rules_foreign_cc//foreign_cc/private/framework/toolchains:windows_commands.bzl",
+              "exec_compatible_with": [
+                "@platforms//os:windows"
+              ],
+              "target_compatible_with": []
+            }
+          },
+          "ninja_1.11.0_toolchains": {
+            "bzlFile": "@@rules_foreign_cc~//toolchains:prebuilt_toolchains_repository.bzl",
+            "ruleClassName": "prebuilt_toolchains_repository",
+            "attributes": {
+              "repos": {
+                "ninja_1.11.0_linux": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:linux"
+                ],
+                "ninja_1.11.0_mac": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:macos"
+                ],
+                "ninja_1.11.0_win": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:windows"
+                ]
+              },
+              "tool": "ninja"
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_foreign_cc~",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "rules_foreign_cc~",
+            "rules_foreign_cc",
+            "rules_foreign_cc~"
+          ]
+        ]
+      }
+    },
+    "@@rules_java~//java:extensions.bzl%toolchains": {
+      "general": {
+        "bzlTransitiveDigest": "tJHbmWnq7m+9eUBnUdv7jZziQ26FmcGL9C5/hU3Q9UQ=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "remotejdk21_linux_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_21\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"21\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_linux//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_linux//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk17_linux_s390x_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:s390x\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_s390x//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:s390x\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_s390x//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk17_macos_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_macos//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_macos//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk21_macos_aarch64_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_21\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"21\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_macos_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_macos_aarch64//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk17_linux_aarch64_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_aarch64//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk21_macos_aarch64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 21,\n)\n",
+              "sha256": "e8260516de8b60661422a725f1df2c36ef888f6fb35393566b00e7325db3d04e",
+              "strip_prefix": "zulu21.32.17-ca-jdk21.0.2-macosx_aarch64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.32.17-ca-jdk21.0.2-macosx_aarch64.tar.gz",
+                "https://cdn.azul.com/zulu/bin/zulu21.32.17-ca-jdk21.0.2-macosx_aarch64.tar.gz"
+              ]
+            }
+          },
+          "remotejdk17_linux_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk17_macos_aarch64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
+              "sha256": "314b04568ec0ae9b36ba03c9cbd42adc9e1265f74678923b19297d66eb84dcca",
+              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-macosx_aarch64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-macosx_aarch64.tar.gz",
+                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-macosx_aarch64.tar.gz"
+              ]
+            }
+          },
+          "remote_java_tools_windows": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "sha256": "fe2f88169696d6c6fc6e90ba61bb46be7d0ae3693cbafdf336041bf56679e8d1",
+              "urls": [
+                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.4/java_tools_windows-v13.4.zip",
+                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.4/java_tools_windows-v13.4.zip"
+              ]
+            }
+          },
+          "remotejdk11_win": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
+              "sha256": "43408193ce2fa0862819495b5ae8541085b95660153f2adcf91a52d3a1710e83",
+              "strip_prefix": "zulu11.66.15-ca-jdk11.0.20-win_x64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-win_x64.zip",
+                "https://cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-win_x64.zip"
+              ]
+            }
+          },
+          "remotejdk11_win_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_win//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_win//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk11_linux_aarch64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
+              "sha256": "54174439f2b3fddd11f1048c397fe7bb45d4c9d66d452d6889b013d04d21c4de",
+              "strip_prefix": "zulu11.66.15-ca-jdk11.0.20-linux_aarch64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-linux_aarch64.tar.gz",
+                "https://cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-linux_aarch64.tar.gz"
+              ]
+            }
+          },
+          "remotejdk17_linux": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
+              "sha256": "b9482f2304a1a68a614dfacddcf29569a72f0fac32e6c74f83dc1b9a157b8340",
+              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-linux_x64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-linux_x64.tar.gz",
+                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-linux_x64.tar.gz"
+              ]
+            }
+          },
+          "remotejdk11_linux_s390x_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:s390x\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_s390x//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:s390x\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_s390x//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk11_linux_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk11_macos": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
+              "sha256": "bcaab11cfe586fae7583c6d9d311c64384354fb2638eb9a012eca4c3f1a1d9fd",
+              "strip_prefix": "zulu11.66.15-ca-jdk11.0.20-macosx_x64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-macosx_x64.tar.gz",
+                "https://cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-macosx_x64.tar.gz"
+              ]
+            }
+          },
+          "remotejdk11_win_arm64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
+              "sha256": "b8a28e6e767d90acf793ea6f5bed0bb595ba0ba5ebdf8b99f395266161e53ec2",
+              "strip_prefix": "jdk-11.0.13+8",
+              "urls": [
+                "https://mirror.bazel.build/aka.ms/download-jdk/microsoft-jdk-11.0.13.8.1-windows-aarch64.zip"
+              ]
+            }
+          },
+          "remotejdk17_macos": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
+              "sha256": "640453e8afe8ffe0fb4dceb4535fb50db9c283c64665eebb0ba68b19e65f4b1f",
+              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-macosx_x64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-macosx_x64.tar.gz",
+                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-macosx_x64.tar.gz"
+              ]
+            }
+          },
+          "remotejdk21_macos": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 21,\n)\n",
+              "sha256": "3ad8fe288eb57d975c2786ae453a036aa46e47ab2ac3d81538ebae2a54d3c025",
+              "strip_prefix": "zulu21.32.17-ca-jdk21.0.2-macosx_x64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.32.17-ca-jdk21.0.2-macosx_x64.tar.gz",
+                "https://cdn.azul.com/zulu/bin/zulu21.32.17-ca-jdk21.0.2-macosx_x64.tar.gz"
+              ]
+            }
+          },
+          "remotejdk21_macos_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_21\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"21\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_macos//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_macos//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk17_macos_aarch64_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_macos_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_macos_aarch64//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk17_win": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
+              "sha256": "192f2afca57701de6ec496234f7e45d971bf623ff66b8ee4a5c81582054e5637",
+              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-win_x64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-win_x64.zip",
+                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-win_x64.zip"
+              ]
+            }
+          },
+          "remotejdk11_macos_aarch64_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_macos_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_macos_aarch64//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk11_linux_ppc64le_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:ppc\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_ppc64le//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:ppc\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_ppc64le//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk21_linux": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 21,\n)\n",
+              "sha256": "5ad730fbee6bb49bfff10bf39e84392e728d89103d3474a7e5def0fd134b300a",
+              "strip_prefix": "zulu21.32.17-ca-jdk21.0.2-linux_x64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.32.17-ca-jdk21.0.2-linux_x64.tar.gz",
+                "https://cdn.azul.com/zulu/bin/zulu21.32.17-ca-jdk21.0.2-linux_x64.tar.gz"
+              ]
+            }
+          },
+          "remote_java_tools_linux": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "sha256": "ba10f09a138cf185d04cbc807d67a3da42ab13d618c5d1ce20d776e199c33a39",
+              "urls": [
+                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.4/java_tools_linux-v13.4.zip",
+                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.4/java_tools_linux-v13.4.zip"
+              ]
+            }
+          },
+          "remotejdk21_win": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 21,\n)\n",
+              "sha256": "f7cc15ca17295e69c907402dfe8db240db446e75d3b150da7bf67243cded93de",
+              "strip_prefix": "zulu21.32.17-ca-jdk21.0.2-win_x64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.32.17-ca-jdk21.0.2-win_x64.zip",
+                "https://cdn.azul.com/zulu/bin/zulu21.32.17-ca-jdk21.0.2-win_x64.zip"
+              ]
+            }
+          },
+          "remotejdk21_linux_aarch64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 21,\n)\n",
+              "sha256": "ce7df1af5d44a9f455617c4b8891443fbe3e4b269c777d8b82ed66f77167cfe0",
+              "strip_prefix": "zulu21.32.17-ca-jdk21.0.2-linux_aarch64",
+              "urls": [
+                "https://cdn.azul.com/zulu/bin/zulu21.32.17-ca-jdk21.0.2-linux_aarch64.tar.gz",
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.32.17-ca-jdk21.0.2-linux_aarch64.tar.gz"
+              ]
+            }
+          },
+          "remotejdk11_linux_aarch64_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_linux_aarch64//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk11_linux_s390x": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
+              "sha256": "a58fc0361966af0a5d5a31a2d8a208e3c9bb0f54f345596fd80b99ea9a39788b",
+              "strip_prefix": "jdk-11.0.15+10",
+              "urls": [
+                "https://mirror.bazel.build/github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.15_10.tar.gz",
+                "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.15_10.tar.gz"
+              ]
+            }
+          },
+          "remotejdk17_linux_aarch64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
+              "sha256": "6531cef61e416d5a7b691555c8cf2bdff689201b8a001ff45ab6740062b44313",
+              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-linux_aarch64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-linux_aarch64.tar.gz",
+                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-linux_aarch64.tar.gz"
+              ]
+            }
+          },
+          "remotejdk17_win_arm64_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:arm64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_win_arm64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:arm64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_win_arm64//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk11_linux": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
+              "sha256": "a34b404f87a08a61148b38e1416d837189e1df7a040d949e743633daf4695a3c",
+              "strip_prefix": "zulu11.66.15-ca-jdk11.0.20-linux_x64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-linux_x64.tar.gz",
+                "https://cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-linux_x64.tar.gz"
+              ]
+            }
+          },
+          "remotejdk11_macos_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_macos//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:macos\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_macos//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk17_linux_ppc64le_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:ppc\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_ppc64le//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:ppc\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_linux_ppc64le//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk17_win_arm64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
+              "sha256": "6802c99eae0d788e21f52d03cab2e2b3bf42bc334ca03cbf19f71eb70ee19f85",
+              "strip_prefix": "zulu17.44.53-ca-jdk17.0.8.1-win_aarch64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-win_aarch64.zip",
+                "https://cdn.azul.com/zulu/bin/zulu17.44.53-ca-jdk17.0.8.1-win_aarch64.zip"
+              ]
+            }
+          },
+          "remote_java_tools_darwin_arm64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "sha256": "076a7e198ad077f8c7d997986ef5102427fae6bbfce7a7852d2e080ed8767528",
+              "urls": [
+                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.4/java_tools_darwin_arm64-v13.4.zip",
+                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.4/java_tools_darwin_arm64-v13.4.zip"
+              ]
+            }
+          },
+          "remotejdk17_linux_ppc64le": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
+              "sha256": "00a4c07603d0218cd678461b5b3b7e25b3253102da4022d31fc35907f21a2efd",
+              "strip_prefix": "jdk-17.0.8.1+1",
+              "urls": [
+                "https://mirror.bazel.build/github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8.1%2B1/OpenJDK17U-jdk_ppc64le_linux_hotspot_17.0.8.1_1.tar.gz",
+                "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8.1%2B1/OpenJDK17U-jdk_ppc64le_linux_hotspot_17.0.8.1_1.tar.gz"
+              ]
+            }
+          },
+          "remotejdk21_linux_aarch64_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_21\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"21\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_linux_aarch64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:linux\", \"@platforms//cpu:aarch64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_linux_aarch64//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk11_win_arm64_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_11\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"11\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:arm64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_win_arm64//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:arm64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk11_win_arm64//:jdk\",\n)\n"
+            }
+          },
+          "local_jdk": {
+            "bzlFile": "@@rules_java~//toolchains:local_java_repository.bzl",
+            "ruleClassName": "_local_java_repository_rule",
+            "attributes": {
+              "java_home": "",
+              "version": "",
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = {RUNTIME_VERSION},\n)\n"
+            }
+          },
+          "remote_java_tools_darwin_x86_64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "sha256": "4523aec4d09c587091a2dae6f5c9bc6922c220f3b6030e5aba9c8f015913cc65",
+              "urls": [
+                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.4/java_tools_darwin_x86_64-v13.4.zip",
+                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.4/java_tools_darwin_x86_64-v13.4.zip"
+              ]
+            }
+          },
+          "remote_java_tools": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "sha256": "e025fd260ac39b47c111f5212d64ec0d00d85dec16e49368aae82fc626a940cf",
+              "urls": [
+                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.4/java_tools-v13.4.zip",
+                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.4/java_tools-v13.4.zip"
+              ]
+            }
+          },
+          "remotejdk17_linux_s390x": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 17,\n)\n",
+              "sha256": "ffacba69c6843d7ca70d572489d6cc7ab7ae52c60f0852cedf4cf0d248b6fc37",
+              "strip_prefix": "jdk-17.0.8.1+1",
+              "urls": [
+                "https://mirror.bazel.build/github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8.1%2B1/OpenJDK17U-jdk_s390x_linux_hotspot_17.0.8.1_1.tar.gz",
+                "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8.1%2B1/OpenJDK17U-jdk_s390x_linux_hotspot_17.0.8.1_1.tar.gz"
+              ]
+            }
+          },
+          "remotejdk17_win_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_17\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"17\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_win//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk17_win//:jdk\",\n)\n"
+            }
+          },
+          "remotejdk11_linux_ppc64le": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
+              "sha256": "a8fba686f6eb8ae1d1a9566821dbd5a85a1108b96ad857fdbac5c1e4649fc56f",
+              "strip_prefix": "jdk-11.0.15+10",
+              "urls": [
+                "https://mirror.bazel.build/github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.15_10.tar.gz",
+                "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15+10/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.15_10.tar.gz"
+              ]
+            }
+          },
+          "remotejdk11_macos_aarch64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "build_file_content": "load(\"@rules_java//java:defs.bzl\", \"java_runtime\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files([\"WORKSPACE\", \"BUILD.bazel\"])\n\nfilegroup(\n    name = \"jre\",\n    srcs = glob(\n        [\n            \"jre/bin/**\",\n            \"jre/lib/**\",\n        ],\n        allow_empty = True,\n        # In some configurations, Java browser plugin is considered harmful and\n        # common antivirus software blocks access to npjp2.dll interfering with Bazel,\n        # so do not include it in JRE on Windows.\n        exclude = [\"jre/bin/plugin2/**\"],\n    ),\n)\n\nfilegroup(\n    name = \"jdk-bin\",\n    srcs = glob(\n        [\"bin/**\"],\n        # The JDK on Windows sometimes contains a directory called\n        # \"%systemroot%\", which is not a valid label.\n        exclude = [\"**/*%*/**\"],\n    ),\n)\n\n# This folder holds security policies.\nfilegroup(\n    name = \"jdk-conf\",\n    srcs = glob(\n        [\"conf/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-include\",\n    srcs = glob(\n        [\"include/**\"],\n        allow_empty = True,\n    ),\n)\n\nfilegroup(\n    name = \"jdk-lib\",\n    srcs = glob(\n        [\"lib/**\", \"release\"],\n        allow_empty = True,\n        exclude = [\n            \"lib/missioncontrol/**\",\n            \"lib/visualvm/**\",\n        ],\n    ),\n)\n\njava_runtime(\n    name = \"jdk\",\n    srcs = [\n        \":jdk-bin\",\n        \":jdk-conf\",\n        \":jdk-include\",\n        \":jdk-lib\",\n        \":jre\",\n    ],\n    # Provide the 'java` binary explicitly so that the correct path is used by\n    # Bazel even when the host platform differs from the execution platform.\n    # Exactly one of the two globs will be empty depending on the host platform.\n    # When --incompatible_disallow_empty_glob is enabled, each individual empty\n    # glob will fail without allow_empty = True, even if the overall result is\n    # non-empty.\n    java = glob([\"bin/java.exe\", \"bin/java\"], allow_empty = True)[0],\n    version = 11,\n)\n",
+              "sha256": "7632bc29f8a4b7d492b93f3bc75a7b61630894db85d136456035ab2a24d38885",
+              "strip_prefix": "zulu11.66.15-ca-jdk11.0.20-macosx_aarch64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-macosx_aarch64.tar.gz",
+                "https://cdn.azul.com/zulu/bin/zulu11.66.15-ca-jdk11.0.20-macosx_aarch64.tar.gz"
+              ]
+            }
+          },
+          "remotejdk21_win_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "build_file": "\nconfig_setting(\n    name = \"prefix_version_setting\",\n    values = {\"java_runtime_version\": \"remotejdk_21\"},\n    visibility = [\"//visibility:private\"],\n)\nconfig_setting(\n    name = \"version_setting\",\n    values = {\"java_runtime_version\": \"21\"},\n    visibility = [\"//visibility:private\"],\n)\nalias(\n    name = \"version_or_prefix_version_setting\",\n    actual = select({\n        \":version_setting\": \":version_setting\",\n        \"//conditions:default\": \":prefix_version_setting\",\n    }),\n    visibility = [\"//visibility:private\"],\n)\ntoolchain(\n    name = \"toolchain\",\n    target_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_win//:jdk\",\n)\ntoolchain(\n    name = \"bootstrap_runtime_toolchain\",\n    # These constraints are not required for correctness, but prevent fetches of remote JDK for\n    # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n    # the same configuration, this constraint will not result in toolchain resolution failures.\n    exec_compatible_with = [\"@platforms//os:windows\", \"@platforms//cpu:x86_64\"],\n    target_settings = [\":version_or_prefix_version_setting\"],\n    toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n    toolchain = \"@remotejdk21_win//:jdk\",\n)\n"
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_java~",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "rules_java~",
+            "remote_java_tools",
+            "rules_java~~toolchains~remote_java_tools"
+          ]
+        ]
+      }
+    },
+    "@@rules_python~//python/extensions:python.bzl%python": {
+      "general": {
+        "bzlTransitiveDigest": "o0WIKfdQRSZd/9+sY+LDTrUuYozMBFuYsL85uwJYKk8=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "python_3_11_s390x-unknown-linux-gnu": {
+            "bzlFile": "@@rules_python~//python:repositories.bzl",
+            "ruleClassName": "python_repository",
+            "attributes": {
+              "sha256": "e477f0749161f9aa7887964f089d9460a539f6b4a8fdab5166f898210e1a87a4",
+              "patches": [],
+              "platform": "s390x-unknown-linux-gnu",
+              "python_version": "3.11.4",
+              "release_filename": "20230726/cpython-3.11.4+20230726-s390x-unknown-linux-gnu-install_only.tar.gz",
+              "urls": [
+                "https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-s390x-unknown-linux-gnu-install_only.tar.gz"
+              ],
+              "distutils_content": "",
+              "strip_prefix": "python",
+              "coverage_tool": "",
+              "ignore_root_user_error": false
+            }
+          },
+          "python_3_11": {
+            "bzlFile": "@@rules_python~//python/private:toolchains_repo.bzl",
+            "ruleClassName": "toolchain_aliases",
+            "attributes": {
+              "python_version": "3.11.4",
+              "user_repository_name": "python_3_11"
+            }
+          },
+          "python_3_11_aarch64-unknown-linux-gnu": {
+            "bzlFile": "@@rules_python~//python:repositories.bzl",
+            "ruleClassName": "python_repository",
+            "attributes": {
+              "sha256": "2e84fc53f4e90e11963281c5c871f593abcb24fc796a50337fa516be99af02fb",
+              "patches": [],
+              "platform": "aarch64-unknown-linux-gnu",
+              "python_version": "3.11.4",
+              "release_filename": "20230726/cpython-3.11.4+20230726-aarch64-unknown-linux-gnu-install_only.tar.gz",
+              "urls": [
+                "https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-aarch64-unknown-linux-gnu-install_only.tar.gz"
+              ],
+              "distutils_content": "",
+              "strip_prefix": "python",
+              "coverage_tool": "",
+              "ignore_root_user_error": false
+            }
+          },
+          "python_3_11_aarch64-apple-darwin": {
+            "bzlFile": "@@rules_python~//python:repositories.bzl",
+            "ruleClassName": "python_repository",
+            "attributes": {
+              "sha256": "cb6d2948384a857321f2aa40fa67744cd9676a330f08b6dad7070bda0b6120a4",
+              "patches": [],
+              "platform": "aarch64-apple-darwin",
+              "python_version": "3.11.4",
+              "release_filename": "20230726/cpython-3.11.4+20230726-aarch64-apple-darwin-install_only.tar.gz",
+              "urls": [
+                "https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-aarch64-apple-darwin-install_only.tar.gz"
+              ],
+              "distutils_content": "",
+              "strip_prefix": "python",
+              "coverage_tool": "",
+              "ignore_root_user_error": false
+            }
+          },
+          "python_3_11_ppc64le-unknown-linux-gnu": {
+            "bzlFile": "@@rules_python~//python:repositories.bzl",
+            "ruleClassName": "python_repository",
+            "attributes": {
+              "sha256": "df7b92ed9cec96b3bb658fb586be947722ecd8e420fb23cee13d2e90abcfcf25",
+              "patches": [],
+              "platform": "ppc64le-unknown-linux-gnu",
+              "python_version": "3.11.4",
+              "release_filename": "20230726/cpython-3.11.4+20230726-ppc64le-unknown-linux-gnu-install_only.tar.gz",
+              "urls": [
+                "https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-ppc64le-unknown-linux-gnu-install_only.tar.gz"
+              ],
+              "distutils_content": "",
+              "strip_prefix": "python",
+              "coverage_tool": "",
+              "ignore_root_user_error": false
+            }
+          },
+          "python_3_11_x86_64-apple-darwin": {
+            "bzlFile": "@@rules_python~//python:repositories.bzl",
+            "ruleClassName": "python_repository",
+            "attributes": {
+              "sha256": "47e1557d93a42585972772e82661047ca5f608293158acb2778dccf120eabb00",
+              "patches": [],
+              "platform": "x86_64-apple-darwin",
+              "python_version": "3.11.4",
+              "release_filename": "20230726/cpython-3.11.4+20230726-x86_64-apple-darwin-install_only.tar.gz",
+              "urls": [
+                "https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-x86_64-apple-darwin-install_only.tar.gz"
+              ],
+              "distutils_content": "",
+              "strip_prefix": "python",
+              "coverage_tool": "",
+              "ignore_root_user_error": false
+            }
+          },
+          "pythons_hub": {
+            "bzlFile": "@@rules_python~//python/extensions/private:pythons_hub.bzl",
+            "ruleClassName": "hub_repo",
+            "attributes": {
+              "default_python_version": "3.11",
+              "toolchain_prefixes": [
+                "_0000_python_3_11_"
+              ],
+              "toolchain_python_versions": [
+                "3.11"
+              ],
+              "toolchain_set_python_version_constraints": [
+                "False"
+              ],
+              "toolchain_user_repository_names": [
+                "python_3_11"
+              ]
+            }
+          },
+          "python_versions": {
+            "bzlFile": "@@rules_python~//python/private:toolchains_repo.bzl",
+            "ruleClassName": "multi_toolchain_aliases",
+            "attributes": {
+              "python_versions": {
+                "3.11": "python_3_11"
+              }
+            }
+          },
+          "python_3_11_x86_64-pc-windows-msvc": {
+            "bzlFile": "@@rules_python~//python:repositories.bzl",
+            "ruleClassName": "python_repository",
+            "attributes": {
+              "sha256": "878614c03ea38538ae2f758e36c85d2c0eb1eaaca86cd400ff8c76693ee0b3e1",
+              "patches": [],
+              "platform": "x86_64-pc-windows-msvc",
+              "python_version": "3.11.4",
+              "release_filename": "20230726/cpython-3.11.4+20230726-x86_64-pc-windows-msvc-shared-install_only.tar.gz",
+              "urls": [
+                "https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-x86_64-pc-windows-msvc-shared-install_only.tar.gz"
+              ],
+              "distutils_content": "",
+              "strip_prefix": "python",
+              "coverage_tool": "",
+              "ignore_root_user_error": false
+            }
+          },
+          "python_3_11_x86_64-unknown-linux-gnu": {
+            "bzlFile": "@@rules_python~//python:repositories.bzl",
+            "ruleClassName": "python_repository",
+            "attributes": {
+              "sha256": "e26247302bc8e9083a43ce9e8dd94905b40d464745b1603041f7bc9a93c65d05",
+              "patches": [],
+              "platform": "x86_64-unknown-linux-gnu",
+              "python_version": "3.11.4",
+              "release_filename": "20230726/cpython-3.11.4+20230726-x86_64-unknown-linux-gnu-install_only.tar.gz",
+              "urls": [
+                "https://github.com/indygreg/python-build-standalone/releases/download/20230726/cpython-3.11.4+20230726-x86_64-unknown-linux-gnu-install_only.tar.gz"
+              ],
+              "distutils_content": "",
+              "strip_prefix": "python",
+              "coverage_tool": "",
+              "ignore_root_user_error": false
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_python~",
+            "bazel_tools",
+            "bazel_tools"
+          ]
+        ]
+      }
+    }
+  }
+}
diff --git a/build.json b/build.json
index a431f6a..1169344 100644
--- a/build.json
+++ b/build.json
@@ -726,6 +726,10 @@
             "decrepit/ssl/ssl_decrepit.c",
             "decrepit/x509/x509_decrepit.c",
             "decrepit/xts/xts.c"
+        ],
+        "internal_hdrs": [
+            "decrepit/cast/internal.h",
+            "decrepit/macros.h"
         ]
     },
     "test_support": {
diff --git a/crypto/test/test_data.cc b/crypto/test/test_data.cc
index 9fe2aaa..9db2019 100644
--- a/crypto/test/test_data.cc
+++ b/crypto/test/test_data.cc
@@ -19,14 +19,35 @@
 
 #include "file_util.h"
 
+#if defined(BORINGSSL_USE_BAZEL_RUNFILES)
+#include "tools/cpp/runfiles/runfiles.h"
+
+using bazel::tools::cpp::runfiles::Runfiles;
+#endif
+
 #if !defined(BORINGSSL_CUSTOM_GET_TEST_DATA)
 std::string GetTestData(const char *path) {
+#if defined(BORINGSSL_USE_BAZEL_RUNFILES)
+  std::string error;
+  std::unique_ptr<Runfiles> runfiles(Runfiles::CreateForTest(&error));
+  if (runfiles == nullptr) {
+    fprintf(stderr, "Could not initialize runfiles: %s\n", error.c_str());
+    abort();
+  }
+
+  std::string full_path = runfiles->Rlocation(std::string("boringssl/") + path);
+  if (full_path.empty()) {
+    fprintf(stderr, "Could not find runfile '%s'.\n", path);
+    abort();
+  }
+#else
   const char *root = getenv("BORINGSSL_TEST_DATA_ROOT");
   root = root != nullptr ? root : ".";
 
   std::string full_path = root;
   full_path.push_back('/');
   full_path.append(path);
+#endif
 
   ScopedFILE file(fopen(full_path.c_str(), "rb"));
   if (file == nullptr) {
diff --git a/crypto/test/test_data.h b/crypto/test/test_data.h
index b3f4b6a..ac5ad74 100644
--- a/crypto/test/test_data.h
+++ b/crypto/test/test_data.h
@@ -26,6 +26,9 @@
 // Callers with more complex needs can build with
 // BORINGSSL_CUSTOM_GET_TEST_DATA and then link in an alternate implementation
 // of this function.
+//
+// Callers running from Bazel can define BORINGSSL_USE_BAZEL_RUNFILES to use
+// the Bazel runfiles library.
 std::string GetTestData(const char *path);
 
 #endif  // OPENSSL_HEADER_CRYPTO_TEST_TEST_DATA_H
diff --git a/gen/sources.bzl b/gen/sources.bzl
new file mode 100644
index 0000000..7717b76
--- /dev/null
+++ b/gen/sources.bzl
@@ -0,0 +1,2668 @@
+# Copyright (c) 2024, Google Inc.
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# Generated by go ./util/pregenerate. Do not edit manually.
+
+bcm_sources = [
+  "crypto/fipsmodule/bcm.c",
+]
+
+bcm_internal_headers = [
+  "crypto/fipsmodule/aes/aes.c",
+  "crypto/fipsmodule/aes/aes_nohw.c",
+  "crypto/fipsmodule/aes/key_wrap.c",
+  "crypto/fipsmodule/aes/mode_wrappers.c",
+  "crypto/fipsmodule/bn/add.c",
+  "crypto/fipsmodule/bn/asm/x86_64-gcc.c",
+  "crypto/fipsmodule/bn/bn.c",
+  "crypto/fipsmodule/bn/bytes.c",
+  "crypto/fipsmodule/bn/cmp.c",
+  "crypto/fipsmodule/bn/ctx.c",
+  "crypto/fipsmodule/bn/div.c",
+  "crypto/fipsmodule/bn/div_extra.c",
+  "crypto/fipsmodule/bn/exponentiation.c",
+  "crypto/fipsmodule/bn/gcd.c",
+  "crypto/fipsmodule/bn/gcd_extra.c",
+  "crypto/fipsmodule/bn/generic.c",
+  "crypto/fipsmodule/bn/jacobi.c",
+  "crypto/fipsmodule/bn/montgomery.c",
+  "crypto/fipsmodule/bn/montgomery_inv.c",
+  "crypto/fipsmodule/bn/mul.c",
+  "crypto/fipsmodule/bn/prime.c",
+  "crypto/fipsmodule/bn/random.c",
+  "crypto/fipsmodule/bn/rsaz_exp.c",
+  "crypto/fipsmodule/bn/shift.c",
+  "crypto/fipsmodule/bn/sqrt.c",
+  "crypto/fipsmodule/cipher/aead.c",
+  "crypto/fipsmodule/cipher/cipher.c",
+  "crypto/fipsmodule/cipher/e_aes.c",
+  "crypto/fipsmodule/cipher/e_aesccm.c",
+  "crypto/fipsmodule/cmac/cmac.c",
+  "crypto/fipsmodule/dh/check.c",
+  "crypto/fipsmodule/dh/dh.c",
+  "crypto/fipsmodule/digest/digest.c",
+  "crypto/fipsmodule/digest/digests.c",
+  "crypto/fipsmodule/digestsign/digestsign.c",
+  "crypto/fipsmodule/ec/ec.c",
+  "crypto/fipsmodule/ec/ec_key.c",
+  "crypto/fipsmodule/ec/ec_montgomery.c",
+  "crypto/fipsmodule/ec/felem.c",
+  "crypto/fipsmodule/ec/oct.c",
+  "crypto/fipsmodule/ec/p224-64.c",
+  "crypto/fipsmodule/ec/p256-nistz.c",
+  "crypto/fipsmodule/ec/p256.c",
+  "crypto/fipsmodule/ec/scalar.c",
+  "crypto/fipsmodule/ec/simple.c",
+  "crypto/fipsmodule/ec/simple_mul.c",
+  "crypto/fipsmodule/ec/util.c",
+  "crypto/fipsmodule/ec/wnaf.c",
+  "crypto/fipsmodule/ecdh/ecdh.c",
+  "crypto/fipsmodule/ecdsa/ecdsa.c",
+  "crypto/fipsmodule/hkdf/hkdf.c",
+  "crypto/fipsmodule/hmac/hmac.c",
+  "crypto/fipsmodule/md4/md4.c",
+  "crypto/fipsmodule/md5/md5.c",
+  "crypto/fipsmodule/modes/cbc.c",
+  "crypto/fipsmodule/modes/cfb.c",
+  "crypto/fipsmodule/modes/ctr.c",
+  "crypto/fipsmodule/modes/gcm.c",
+  "crypto/fipsmodule/modes/gcm_nohw.c",
+  "crypto/fipsmodule/modes/ofb.c",
+  "crypto/fipsmodule/modes/polyval.c",
+  "crypto/fipsmodule/rand/ctrdrbg.c",
+  "crypto/fipsmodule/rand/fork_detect.c",
+  "crypto/fipsmodule/rand/rand.c",
+  "crypto/fipsmodule/rand/urandom.c",
+  "crypto/fipsmodule/rsa/blinding.c",
+  "crypto/fipsmodule/rsa/padding.c",
+  "crypto/fipsmodule/rsa/rsa.c",
+  "crypto/fipsmodule/rsa/rsa_impl.c",
+  "crypto/fipsmodule/self_check/fips.c",
+  "crypto/fipsmodule/self_check/self_check.c",
+  "crypto/fipsmodule/service_indicator/service_indicator.c",
+  "crypto/fipsmodule/sha/sha1.c",
+  "crypto/fipsmodule/sha/sha256.c",
+  "crypto/fipsmodule/sha/sha512.c",
+  "crypto/fipsmodule/tls/kdf.c",
+]
+
+bcm_sources_asm = [
+  "gen/bcm/aesni-gcm-x86_64-apple.S",
+  "gen/bcm/aesni-gcm-x86_64-linux.S",
+  "gen/bcm/aesni-x86-apple.S",
+  "gen/bcm/aesni-x86-linux.S",
+  "gen/bcm/aesni-x86_64-apple.S",
+  "gen/bcm/aesni-x86_64-linux.S",
+  "gen/bcm/aesv8-armv7-linux.S",
+  "gen/bcm/aesv8-armv8-apple.S",
+  "gen/bcm/aesv8-armv8-linux.S",
+  "gen/bcm/aesv8-armv8-win.S",
+  "gen/bcm/aesv8-gcm-armv8-apple.S",
+  "gen/bcm/aesv8-gcm-armv8-linux.S",
+  "gen/bcm/aesv8-gcm-armv8-win.S",
+  "gen/bcm/armv4-mont-linux.S",
+  "gen/bcm/armv8-mont-apple.S",
+  "gen/bcm/armv8-mont-linux.S",
+  "gen/bcm/armv8-mont-win.S",
+  "gen/bcm/bn-586-apple.S",
+  "gen/bcm/bn-586-linux.S",
+  "gen/bcm/bn-armv8-apple.S",
+  "gen/bcm/bn-armv8-linux.S",
+  "gen/bcm/bn-armv8-win.S",
+  "gen/bcm/bsaes-armv7-linux.S",
+  "gen/bcm/co-586-apple.S",
+  "gen/bcm/co-586-linux.S",
+  "gen/bcm/ghash-armv4-linux.S",
+  "gen/bcm/ghash-neon-armv8-apple.S",
+  "gen/bcm/ghash-neon-armv8-linux.S",
+  "gen/bcm/ghash-neon-armv8-win.S",
+  "gen/bcm/ghash-ssse3-x86-apple.S",
+  "gen/bcm/ghash-ssse3-x86-linux.S",
+  "gen/bcm/ghash-ssse3-x86_64-apple.S",
+  "gen/bcm/ghash-ssse3-x86_64-linux.S",
+  "gen/bcm/ghash-x86-apple.S",
+  "gen/bcm/ghash-x86-linux.S",
+  "gen/bcm/ghash-x86_64-apple.S",
+  "gen/bcm/ghash-x86_64-linux.S",
+  "gen/bcm/ghashv8-armv7-linux.S",
+  "gen/bcm/ghashv8-armv8-apple.S",
+  "gen/bcm/ghashv8-armv8-linux.S",
+  "gen/bcm/ghashv8-armv8-win.S",
+  "gen/bcm/md5-586-apple.S",
+  "gen/bcm/md5-586-linux.S",
+  "gen/bcm/md5-x86_64-apple.S",
+  "gen/bcm/md5-x86_64-linux.S",
+  "gen/bcm/p256-armv8-asm-apple.S",
+  "gen/bcm/p256-armv8-asm-linux.S",
+  "gen/bcm/p256-armv8-asm-win.S",
+  "gen/bcm/p256-x86_64-asm-apple.S",
+  "gen/bcm/p256-x86_64-asm-linux.S",
+  "gen/bcm/p256_beeu-armv8-asm-apple.S",
+  "gen/bcm/p256_beeu-armv8-asm-linux.S",
+  "gen/bcm/p256_beeu-armv8-asm-win.S",
+  "gen/bcm/p256_beeu-x86_64-asm-apple.S",
+  "gen/bcm/p256_beeu-x86_64-asm-linux.S",
+  "gen/bcm/rdrand-x86_64-apple.S",
+  "gen/bcm/rdrand-x86_64-linux.S",
+  "gen/bcm/rsaz-avx2-apple.S",
+  "gen/bcm/rsaz-avx2-linux.S",
+  "gen/bcm/sha1-586-apple.S",
+  "gen/bcm/sha1-586-linux.S",
+  "gen/bcm/sha1-armv4-large-linux.S",
+  "gen/bcm/sha1-armv8-apple.S",
+  "gen/bcm/sha1-armv8-linux.S",
+  "gen/bcm/sha1-armv8-win.S",
+  "gen/bcm/sha1-x86_64-apple.S",
+  "gen/bcm/sha1-x86_64-linux.S",
+  "gen/bcm/sha256-586-apple.S",
+  "gen/bcm/sha256-586-linux.S",
+  "gen/bcm/sha256-armv4-linux.S",
+  "gen/bcm/sha256-armv8-apple.S",
+  "gen/bcm/sha256-armv8-linux.S",
+  "gen/bcm/sha256-armv8-win.S",
+  "gen/bcm/sha256-x86_64-apple.S",
+  "gen/bcm/sha256-x86_64-linux.S",
+  "gen/bcm/sha512-586-apple.S",
+  "gen/bcm/sha512-586-linux.S",
+  "gen/bcm/sha512-armv4-linux.S",
+  "gen/bcm/sha512-armv8-apple.S",
+  "gen/bcm/sha512-armv8-linux.S",
+  "gen/bcm/sha512-armv8-win.S",
+  "gen/bcm/sha512-x86_64-apple.S",
+  "gen/bcm/sha512-x86_64-linux.S",
+  "gen/bcm/vpaes-armv7-linux.S",
+  "gen/bcm/vpaes-armv8-apple.S",
+  "gen/bcm/vpaes-armv8-linux.S",
+  "gen/bcm/vpaes-armv8-win.S",
+  "gen/bcm/vpaes-x86-apple.S",
+  "gen/bcm/vpaes-x86-linux.S",
+  "gen/bcm/vpaes-x86_64-apple.S",
+  "gen/bcm/vpaes-x86_64-linux.S",
+  "gen/bcm/x86-mont-apple.S",
+  "gen/bcm/x86-mont-linux.S",
+  "gen/bcm/x86_64-mont-apple.S",
+  "gen/bcm/x86_64-mont-linux.S",
+  "gen/bcm/x86_64-mont5-apple.S",
+  "gen/bcm/x86_64-mont5-linux.S",
+]
+
+bcm_sources_nasm = [
+  "gen/bcm/aesni-gcm-x86_64-win.asm",
+  "gen/bcm/aesni-x86-win.asm",
+  "gen/bcm/aesni-x86_64-win.asm",
+  "gen/bcm/bn-586-win.asm",
+  "gen/bcm/co-586-win.asm",
+  "gen/bcm/ghash-ssse3-x86-win.asm",
+  "gen/bcm/ghash-ssse3-x86_64-win.asm",
+  "gen/bcm/ghash-x86-win.asm",
+  "gen/bcm/ghash-x86_64-win.asm",
+  "gen/bcm/md5-586-win.asm",
+  "gen/bcm/md5-x86_64-win.asm",
+  "gen/bcm/p256-x86_64-asm-win.asm",
+  "gen/bcm/p256_beeu-x86_64-asm-win.asm",
+  "gen/bcm/rdrand-x86_64-win.asm",
+  "gen/bcm/rsaz-avx2-win.asm",
+  "gen/bcm/sha1-586-win.asm",
+  "gen/bcm/sha1-x86_64-win.asm",
+  "gen/bcm/sha256-586-win.asm",
+  "gen/bcm/sha256-x86_64-win.asm",
+  "gen/bcm/sha512-586-win.asm",
+  "gen/bcm/sha512-x86_64-win.asm",
+  "gen/bcm/vpaes-x86-win.asm",
+  "gen/bcm/vpaes-x86_64-win.asm",
+  "gen/bcm/x86-mont-win.asm",
+  "gen/bcm/x86_64-mont-win.asm",
+  "gen/bcm/x86_64-mont5-win.asm",
+]
+
+bssl_sources = [
+  "tool/args.cc",
+  "tool/ciphers.cc",
+  "tool/client.cc",
+  "tool/const.cc",
+  "tool/digest.cc",
+  "tool/fd.cc",
+  "tool/file.cc",
+  "tool/generate_ech.cc",
+  "tool/generate_ed25519.cc",
+  "tool/genrsa.cc",
+  "tool/pkcs12.cc",
+  "tool/rand.cc",
+  "tool/server.cc",
+  "tool/sign.cc",
+  "tool/speed.cc",
+  "tool/tool.cc",
+  "tool/transport_common.cc",
+]
+
+bssl_internal_headers = [
+  "tool/internal.h",
+  "tool/transport_common.h",
+]
+
+crypto_sources = [
+  "crypto/asn1/a_bitstr.c",
+  "crypto/asn1/a_bool.c",
+  "crypto/asn1/a_d2i_fp.c",
+  "crypto/asn1/a_dup.c",
+  "crypto/asn1/a_gentm.c",
+  "crypto/asn1/a_i2d_fp.c",
+  "crypto/asn1/a_int.c",
+  "crypto/asn1/a_mbstr.c",
+  "crypto/asn1/a_object.c",
+  "crypto/asn1/a_octet.c",
+  "crypto/asn1/a_strex.c",
+  "crypto/asn1/a_strnid.c",
+  "crypto/asn1/a_time.c",
+  "crypto/asn1/a_type.c",
+  "crypto/asn1/a_utctm.c",
+  "crypto/asn1/asn1_lib.c",
+  "crypto/asn1/asn1_par.c",
+  "crypto/asn1/asn_pack.c",
+  "crypto/asn1/f_int.c",
+  "crypto/asn1/f_string.c",
+  "crypto/asn1/posix_time.c",
+  "crypto/asn1/tasn_dec.c",
+  "crypto/asn1/tasn_enc.c",
+  "crypto/asn1/tasn_fre.c",
+  "crypto/asn1/tasn_new.c",
+  "crypto/asn1/tasn_typ.c",
+  "crypto/asn1/tasn_utl.c",
+  "crypto/base64/base64.c",
+  "crypto/bio/bio.c",
+  "crypto/bio/bio_mem.c",
+  "crypto/bio/connect.c",
+  "crypto/bio/errno.c",
+  "crypto/bio/fd.c",
+  "crypto/bio/file.c",
+  "crypto/bio/hexdump.c",
+  "crypto/bio/pair.c",
+  "crypto/bio/printf.c",
+  "crypto/bio/socket.c",
+  "crypto/bio/socket_helper.c",
+  "crypto/blake2/blake2.c",
+  "crypto/bn_extra/bn_asn1.c",
+  "crypto/bn_extra/convert.c",
+  "crypto/buf/buf.c",
+  "crypto/bytestring/asn1_compat.c",
+  "crypto/bytestring/ber.c",
+  "crypto/bytestring/cbb.c",
+  "crypto/bytestring/cbs.c",
+  "crypto/bytestring/unicode.c",
+  "crypto/chacha/chacha.c",
+  "crypto/cipher_extra/cipher_extra.c",
+  "crypto/cipher_extra/derive_key.c",
+  "crypto/cipher_extra/e_aesctrhmac.c",
+  "crypto/cipher_extra/e_aesgcmsiv.c",
+  "crypto/cipher_extra/e_chacha20poly1305.c",
+  "crypto/cipher_extra/e_des.c",
+  "crypto/cipher_extra/e_null.c",
+  "crypto/cipher_extra/e_rc2.c",
+  "crypto/cipher_extra/e_rc4.c",
+  "crypto/cipher_extra/e_tls.c",
+  "crypto/cipher_extra/tls_cbc.c",
+  "crypto/conf/conf.c",
+  "crypto/cpu_aarch64_apple.c",
+  "crypto/cpu_aarch64_fuchsia.c",
+  "crypto/cpu_aarch64_linux.c",
+  "crypto/cpu_aarch64_openbsd.c",
+  "crypto/cpu_aarch64_sysreg.c",
+  "crypto/cpu_aarch64_win.c",
+  "crypto/cpu_arm_freebsd.c",
+  "crypto/cpu_arm_linux.c",
+  "crypto/cpu_intel.c",
+  "crypto/crypto.c",
+  "crypto/curve25519/curve25519.c",
+  "crypto/curve25519/curve25519_64_adx.c",
+  "crypto/curve25519/spake25519.c",
+  "crypto/des/des.c",
+  "crypto/dh_extra/dh_asn1.c",
+  "crypto/dh_extra/params.c",
+  "crypto/digest_extra/digest_extra.c",
+  "crypto/dsa/dsa.c",
+  "crypto/dsa/dsa_asn1.c",
+  "crypto/ec_extra/ec_asn1.c",
+  "crypto/ec_extra/ec_derive.c",
+  "crypto/ec_extra/hash_to_curve.c",
+  "crypto/ecdh_extra/ecdh_extra.c",
+  "crypto/ecdsa_extra/ecdsa_asn1.c",
+  "crypto/engine/engine.c",
+  "crypto/err/err.c",
+  "crypto/evp/evp.c",
+  "crypto/evp/evp_asn1.c",
+  "crypto/evp/evp_ctx.c",
+  "crypto/evp/p_dh.c",
+  "crypto/evp/p_dh_asn1.c",
+  "crypto/evp/p_dsa_asn1.c",
+  "crypto/evp/p_ec.c",
+  "crypto/evp/p_ec_asn1.c",
+  "crypto/evp/p_ed25519.c",
+  "crypto/evp/p_ed25519_asn1.c",
+  "crypto/evp/p_hkdf.c",
+  "crypto/evp/p_rsa.c",
+  "crypto/evp/p_rsa_asn1.c",
+  "crypto/evp/p_x25519.c",
+  "crypto/evp/p_x25519_asn1.c",
+  "crypto/evp/pbkdf.c",
+  "crypto/evp/print.c",
+  "crypto/evp/scrypt.c",
+  "crypto/evp/sign.c",
+  "crypto/ex_data.c",
+  "crypto/fipsmodule/fips_shared_support.c",
+  "crypto/hpke/hpke.c",
+  "crypto/hrss/hrss.c",
+  "crypto/keccak/keccak.c",
+  "crypto/kyber/kyber.c",
+  "crypto/lhash/lhash.c",
+  "crypto/mem.c",
+  "crypto/obj/obj.c",
+  "crypto/obj/obj_xref.c",
+  "crypto/pem/pem_all.c",
+  "crypto/pem/pem_info.c",
+  "crypto/pem/pem_lib.c",
+  "crypto/pem/pem_oth.c",
+  "crypto/pem/pem_pk8.c",
+  "crypto/pem/pem_pkey.c",
+  "crypto/pem/pem_x509.c",
+  "crypto/pem/pem_xaux.c",
+  "crypto/pkcs7/pkcs7.c",
+  "crypto/pkcs7/pkcs7_x509.c",
+  "crypto/pkcs8/p5_pbev2.c",
+  "crypto/pkcs8/pkcs8.c",
+  "crypto/pkcs8/pkcs8_x509.c",
+  "crypto/poly1305/poly1305.c",
+  "crypto/poly1305/poly1305_arm.c",
+  "crypto/poly1305/poly1305_vec.c",
+  "crypto/pool/pool.c",
+  "crypto/rand_extra/deterministic.c",
+  "crypto/rand_extra/forkunsafe.c",
+  "crypto/rand_extra/getentropy.c",
+  "crypto/rand_extra/ios.c",
+  "crypto/rand_extra/passive.c",
+  "crypto/rand_extra/rand_extra.c",
+  "crypto/rand_extra/trusty.c",
+  "crypto/rand_extra/windows.c",
+  "crypto/rc4/rc4.c",
+  "crypto/refcount.c",
+  "crypto/rsa_extra/rsa_asn1.c",
+  "crypto/rsa_extra/rsa_crypt.c",
+  "crypto/rsa_extra/rsa_print.c",
+  "crypto/siphash/siphash.c",
+  "crypto/spx/address.c",
+  "crypto/spx/fors.c",
+  "crypto/spx/merkle.c",
+  "crypto/spx/spx.c",
+  "crypto/spx/spx_util.c",
+  "crypto/spx/thash.c",
+  "crypto/spx/wots.c",
+  "crypto/stack/stack.c",
+  "crypto/thread.c",
+  "crypto/thread_none.c",
+  "crypto/thread_pthread.c",
+  "crypto/thread_win.c",
+  "crypto/trust_token/pmbtoken.c",
+  "crypto/trust_token/trust_token.c",
+  "crypto/trust_token/voprf.c",
+  "crypto/x509/a_digest.c",
+  "crypto/x509/a_sign.c",
+  "crypto/x509/a_verify.c",
+  "crypto/x509/algorithm.c",
+  "crypto/x509/asn1_gen.c",
+  "crypto/x509/by_dir.c",
+  "crypto/x509/by_file.c",
+  "crypto/x509/i2d_pr.c",
+  "crypto/x509/name_print.c",
+  "crypto/x509/policy.c",
+  "crypto/x509/rsa_pss.c",
+  "crypto/x509/t_crl.c",
+  "crypto/x509/t_req.c",
+  "crypto/x509/t_x509.c",
+  "crypto/x509/t_x509a.c",
+  "crypto/x509/v3_akey.c",
+  "crypto/x509/v3_akeya.c",
+  "crypto/x509/v3_alt.c",
+  "crypto/x509/v3_bcons.c",
+  "crypto/x509/v3_bitst.c",
+  "crypto/x509/v3_conf.c",
+  "crypto/x509/v3_cpols.c",
+  "crypto/x509/v3_crld.c",
+  "crypto/x509/v3_enum.c",
+  "crypto/x509/v3_extku.c",
+  "crypto/x509/v3_genn.c",
+  "crypto/x509/v3_ia5.c",
+  "crypto/x509/v3_info.c",
+  "crypto/x509/v3_int.c",
+  "crypto/x509/v3_lib.c",
+  "crypto/x509/v3_ncons.c",
+  "crypto/x509/v3_ocsp.c",
+  "crypto/x509/v3_pcons.c",
+  "crypto/x509/v3_pmaps.c",
+  "crypto/x509/v3_prn.c",
+  "crypto/x509/v3_purp.c",
+  "crypto/x509/v3_skey.c",
+  "crypto/x509/v3_utl.c",
+  "crypto/x509/x509.c",
+  "crypto/x509/x509_att.c",
+  "crypto/x509/x509_cmp.c",
+  "crypto/x509/x509_d2.c",
+  "crypto/x509/x509_def.c",
+  "crypto/x509/x509_ext.c",
+  "crypto/x509/x509_lu.c",
+  "crypto/x509/x509_obj.c",
+  "crypto/x509/x509_req.c",
+  "crypto/x509/x509_set.c",
+  "crypto/x509/x509_trs.c",
+  "crypto/x509/x509_txt.c",
+  "crypto/x509/x509_v3.c",
+  "crypto/x509/x509_vfy.c",
+  "crypto/x509/x509_vpm.c",
+  "crypto/x509/x509cset.c",
+  "crypto/x509/x509name.c",
+  "crypto/x509/x509rset.c",
+  "crypto/x509/x509spki.c",
+  "crypto/x509/x_algor.c",
+  "crypto/x509/x_all.c",
+  "crypto/x509/x_attrib.c",
+  "crypto/x509/x_crl.c",
+  "crypto/x509/x_exten.c",
+  "crypto/x509/x_name.c",
+  "crypto/x509/x_pubkey.c",
+  "crypto/x509/x_req.c",
+  "crypto/x509/x_sig.c",
+  "crypto/x509/x_spki.c",
+  "crypto/x509/x_val.c",
+  "crypto/x509/x_x509.c",
+  "crypto/x509/x_x509a.c",
+  "gen/crypto/err_data.c",
+]
+
+crypto_headers = [
+  "include/openssl/aead.h",
+  "include/openssl/aes.h",
+  "include/openssl/arm_arch.h",
+  "include/openssl/asm_base.h",
+  "include/openssl/asn1.h",
+  "include/openssl/asn1_mac.h",
+  "include/openssl/asn1t.h",
+  "include/openssl/base.h",
+  "include/openssl/base64.h",
+  "include/openssl/bio.h",
+  "include/openssl/blake2.h",
+  "include/openssl/blowfish.h",
+  "include/openssl/bn.h",
+  "include/openssl/buf.h",
+  "include/openssl/buffer.h",
+  "include/openssl/bytestring.h",
+  "include/openssl/cast.h",
+  "include/openssl/chacha.h",
+  "include/openssl/cipher.h",
+  "include/openssl/cmac.h",
+  "include/openssl/conf.h",
+  "include/openssl/cpu.h",
+  "include/openssl/crypto.h",
+  "include/openssl/ctrdrbg.h",
+  "include/openssl/curve25519.h",
+  "include/openssl/des.h",
+  "include/openssl/dh.h",
+  "include/openssl/digest.h",
+  "include/openssl/dsa.h",
+  "include/openssl/e_os2.h",
+  "include/openssl/ec.h",
+  "include/openssl/ec_key.h",
+  "include/openssl/ecdh.h",
+  "include/openssl/ecdsa.h",
+  "include/openssl/engine.h",
+  "include/openssl/err.h",
+  "include/openssl/evp.h",
+  "include/openssl/evp_errors.h",
+  "include/openssl/ex_data.h",
+  "include/openssl/experimental/kyber.h",
+  "include/openssl/experimental/spx.h",
+  "include/openssl/hkdf.h",
+  "include/openssl/hmac.h",
+  "include/openssl/hpke.h",
+  "include/openssl/hrss.h",
+  "include/openssl/is_boringssl.h",
+  "include/openssl/kdf.h",
+  "include/openssl/lhash.h",
+  "include/openssl/md4.h",
+  "include/openssl/md5.h",
+  "include/openssl/mem.h",
+  "include/openssl/nid.h",
+  "include/openssl/obj.h",
+  "include/openssl/obj_mac.h",
+  "include/openssl/objects.h",
+  "include/openssl/opensslconf.h",
+  "include/openssl/opensslv.h",
+  "include/openssl/ossl_typ.h",
+  "include/openssl/pem.h",
+  "include/openssl/pkcs12.h",
+  "include/openssl/pkcs7.h",
+  "include/openssl/pkcs8.h",
+  "include/openssl/poly1305.h",
+  "include/openssl/pool.h",
+  "include/openssl/posix_time.h",
+  "include/openssl/rand.h",
+  "include/openssl/rc4.h",
+  "include/openssl/ripemd.h",
+  "include/openssl/rsa.h",
+  "include/openssl/safestack.h",
+  "include/openssl/service_indicator.h",
+  "include/openssl/sha.h",
+  "include/openssl/siphash.h",
+  "include/openssl/span.h",
+  "include/openssl/stack.h",
+  "include/openssl/target.h",
+  "include/openssl/thread.h",
+  "include/openssl/time.h",
+  "include/openssl/trust_token.h",
+  "include/openssl/type_check.h",
+  "include/openssl/x509.h",
+  "include/openssl/x509_vfy.h",
+  "include/openssl/x509v3.h",
+  "include/openssl/x509v3_errors.h",
+]
+
+crypto_internal_headers = [
+  "crypto/asn1/internal.h",
+  "crypto/bio/internal.h",
+  "crypto/bytestring/internal.h",
+  "crypto/chacha/internal.h",
+  "crypto/cipher_extra/internal.h",
+  "crypto/conf/conf_def.h",
+  "crypto/conf/internal.h",
+  "crypto/cpu_arm_linux.h",
+  "crypto/curve25519/curve25519_tables.h",
+  "crypto/curve25519/internal.h",
+  "crypto/des/internal.h",
+  "crypto/dsa/internal.h",
+  "crypto/ec_extra/internal.h",
+  "crypto/err/internal.h",
+  "crypto/evp/internal.h",
+  "crypto/fipsmodule/aes/internal.h",
+  "crypto/fipsmodule/bn/internal.h",
+  "crypto/fipsmodule/bn/rsaz_exp.h",
+  "crypto/fipsmodule/cipher/internal.h",
+  "crypto/fipsmodule/delocate.h",
+  "crypto/fipsmodule/dh/internal.h",
+  "crypto/fipsmodule/digest/internal.h",
+  "crypto/fipsmodule/digest/md32_common.h",
+  "crypto/fipsmodule/ec/builtin_curves.h",
+  "crypto/fipsmodule/ec/internal.h",
+  "crypto/fipsmodule/ec/p256-nistz-table.h",
+  "crypto/fipsmodule/ec/p256-nistz.h",
+  "crypto/fipsmodule/ec/p256_table.h",
+  "crypto/fipsmodule/ecdsa/internal.h",
+  "crypto/fipsmodule/md5/internal.h",
+  "crypto/fipsmodule/modes/internal.h",
+  "crypto/fipsmodule/rand/fork_detect.h",
+  "crypto/fipsmodule/rand/getrandom_fillin.h",
+  "crypto/fipsmodule/rand/internal.h",
+  "crypto/fipsmodule/rsa/internal.h",
+  "crypto/fipsmodule/service_indicator/internal.h",
+  "crypto/fipsmodule/sha/internal.h",
+  "crypto/fipsmodule/tls/internal.h",
+  "crypto/hrss/internal.h",
+  "crypto/internal.h",
+  "crypto/keccak/internal.h",
+  "crypto/kyber/internal.h",
+  "crypto/lhash/internal.h",
+  "crypto/obj/obj_dat.h",
+  "crypto/pkcs7/internal.h",
+  "crypto/pkcs8/internal.h",
+  "crypto/poly1305/internal.h",
+  "crypto/pool/internal.h",
+  "crypto/rsa_extra/internal.h",
+  "crypto/spx/address.h",
+  "crypto/spx/fors.h",
+  "crypto/spx/merkle.h",
+  "crypto/spx/params.h",
+  "crypto/spx/spx_util.h",
+  "crypto/spx/thash.h",
+  "crypto/spx/wots.h",
+  "crypto/trust_token/internal.h",
+  "crypto/x509/ext_dat.h",
+  "crypto/x509/internal.h",
+  "third_party/fiat/curve25519_32.h",
+  "third_party/fiat/curve25519_64.h",
+  "third_party/fiat/curve25519_64_adx.h",
+  "third_party/fiat/curve25519_64_msvc.h",
+  "third_party/fiat/p256_32.h",
+  "third_party/fiat/p256_64.h",
+  "third_party/fiat/p256_64_msvc.h",
+]
+
+crypto_sources_asm = [
+  "crypto/curve25519/asm/x25519-asm-arm.S",
+  "crypto/hrss/asm/poly_rq_mul.S",
+  "crypto/poly1305/poly1305_arm_asm.S",
+  "gen/crypto/aes128gcmsiv-x86_64-apple.S",
+  "gen/crypto/aes128gcmsiv-x86_64-linux.S",
+  "gen/crypto/chacha-armv4-linux.S",
+  "gen/crypto/chacha-armv8-apple.S",
+  "gen/crypto/chacha-armv8-linux.S",
+  "gen/crypto/chacha-armv8-win.S",
+  "gen/crypto/chacha-x86-apple.S",
+  "gen/crypto/chacha-x86-linux.S",
+  "gen/crypto/chacha-x86_64-apple.S",
+  "gen/crypto/chacha-x86_64-linux.S",
+  "gen/crypto/chacha20_poly1305_armv8-apple.S",
+  "gen/crypto/chacha20_poly1305_armv8-linux.S",
+  "gen/crypto/chacha20_poly1305_armv8-win.S",
+  "gen/crypto/chacha20_poly1305_x86_64-apple.S",
+  "gen/crypto/chacha20_poly1305_x86_64-linux.S",
+  "third_party/fiat/asm/fiat_curve25519_adx_mul.S",
+  "third_party/fiat/asm/fiat_curve25519_adx_square.S",
+  "third_party/fiat/asm/fiat_p256_adx_mul.S",
+  "third_party/fiat/asm/fiat_p256_adx_sqr.S",
+]
+
+crypto_sources_nasm = [
+  "gen/crypto/aes128gcmsiv-x86_64-win.asm",
+  "gen/crypto/chacha-x86-win.asm",
+  "gen/crypto/chacha-x86_64-win.asm",
+  "gen/crypto/chacha20_poly1305_x86_64-win.asm",
+]
+
+crypto_test_sources = [
+  "crypto/abi_self_test.cc",
+  "crypto/asn1/asn1_test.cc",
+  "crypto/base64/base64_test.cc",
+  "crypto/bio/bio_test.cc",
+  "crypto/blake2/blake2_test.cc",
+  "crypto/buf/buf_test.cc",
+  "crypto/bytestring/bytestring_test.cc",
+  "crypto/chacha/chacha_test.cc",
+  "crypto/cipher_extra/aead_test.cc",
+  "crypto/cipher_extra/cipher_test.cc",
+  "crypto/compiler_test.cc",
+  "crypto/conf/conf_test.cc",
+  "crypto/constant_time_test.cc",
+  "crypto/cpu_arm_linux_test.cc",
+  "crypto/crypto_test.cc",
+  "crypto/curve25519/ed25519_test.cc",
+  "crypto/curve25519/spake25519_test.cc",
+  "crypto/curve25519/x25519_test.cc",
+  "crypto/dh_extra/dh_test.cc",
+  "crypto/digest_extra/digest_test.cc",
+  "crypto/dsa/dsa_test.cc",
+  "crypto/ecdh_extra/ecdh_test.cc",
+  "crypto/err/err_test.cc",
+  "crypto/evp/evp_extra_test.cc",
+  "crypto/evp/evp_test.cc",
+  "crypto/evp/pbkdf_test.cc",
+  "crypto/evp/scrypt_test.cc",
+  "crypto/fipsmodule/aes/aes_test.cc",
+  "crypto/fipsmodule/bn/bn_test.cc",
+  "crypto/fipsmodule/cmac/cmac_test.cc",
+  "crypto/fipsmodule/ec/ec_test.cc",
+  "crypto/fipsmodule/ec/p256-nistz_test.cc",
+  "crypto/fipsmodule/ec/p256_test.cc",
+  "crypto/fipsmodule/ecdsa/ecdsa_test.cc",
+  "crypto/fipsmodule/hkdf/hkdf_test.cc",
+  "crypto/fipsmodule/md5/md5_test.cc",
+  "crypto/fipsmodule/modes/gcm_test.cc",
+  "crypto/fipsmodule/rand/ctrdrbg_test.cc",
+  "crypto/fipsmodule/rand/fork_detect_test.cc",
+  "crypto/fipsmodule/service_indicator/service_indicator_test.cc",
+  "crypto/fipsmodule/sha/sha_test.cc",
+  "crypto/hmac_extra/hmac_test.cc",
+  "crypto/hpke/hpke_test.cc",
+  "crypto/hrss/hrss_test.cc",
+  "crypto/impl_dispatch_test.cc",
+  "crypto/keccak/keccak_test.cc",
+  "crypto/kyber/kyber_test.cc",
+  "crypto/lhash/lhash_test.cc",
+  "crypto/obj/obj_test.cc",
+  "crypto/pem/pem_test.cc",
+  "crypto/pkcs7/pkcs7_test.cc",
+  "crypto/pkcs8/pkcs12_test.cc",
+  "crypto/pkcs8/pkcs8_test.cc",
+  "crypto/poly1305/poly1305_test.cc",
+  "crypto/pool/pool_test.cc",
+  "crypto/rand_extra/getentropy_test.cc",
+  "crypto/rand_extra/rand_test.cc",
+  "crypto/refcount_test.cc",
+  "crypto/rsa_extra/rsa_test.cc",
+  "crypto/self_test.cc",
+  "crypto/siphash/siphash_test.cc",
+  "crypto/spx/spx_test.cc",
+  "crypto/stack/stack_test.cc",
+  "crypto/test/gtest_main.cc",
+  "crypto/thread_test.cc",
+  "crypto/trust_token/trust_token_test.cc",
+  "crypto/x509/tab_test.cc",
+  "crypto/x509/x509_test.cc",
+  "crypto/x509/x509_time_test.cc",
+]
+
+crypto_test_data = [
+  "crypto/blake2/blake2b256_tests.txt",
+  "crypto/cipher_extra/test/aes_128_cbc_sha1_tls_implicit_iv_tests.txt",
+  "crypto/cipher_extra/test/aes_128_cbc_sha1_tls_tests.txt",
+  "crypto/cipher_extra/test/aes_128_ccm_bluetooth_8_tests.txt",
+  "crypto/cipher_extra/test/aes_128_ccm_bluetooth_tests.txt",
+  "crypto/cipher_extra/test/aes_128_ccm_matter_tests.txt",
+  "crypto/cipher_extra/test/aes_128_ctr_hmac_sha256.txt",
+  "crypto/cipher_extra/test/aes_128_gcm_randnonce_tests.txt",
+  "crypto/cipher_extra/test/aes_128_gcm_siv_tests.txt",
+  "crypto/cipher_extra/test/aes_128_gcm_tests.txt",
+  "crypto/cipher_extra/test/aes_192_gcm_tests.txt",
+  "crypto/cipher_extra/test/aes_256_cbc_sha1_tls_implicit_iv_tests.txt",
+  "crypto/cipher_extra/test/aes_256_cbc_sha1_tls_tests.txt",
+  "crypto/cipher_extra/test/aes_256_ctr_hmac_sha256.txt",
+  "crypto/cipher_extra/test/aes_256_gcm_randnonce_tests.txt",
+  "crypto/cipher_extra/test/aes_256_gcm_siv_tests.txt",
+  "crypto/cipher_extra/test/aes_256_gcm_tests.txt",
+  "crypto/cipher_extra/test/chacha20_poly1305_tests.txt",
+  "crypto/cipher_extra/test/cipher_tests.txt",
+  "crypto/cipher_extra/test/des_ede3_cbc_sha1_tls_implicit_iv_tests.txt",
+  "crypto/cipher_extra/test/des_ede3_cbc_sha1_tls_tests.txt",
+  "crypto/cipher_extra/test/nist_cavp/aes_128_cbc.txt",
+  "crypto/cipher_extra/test/nist_cavp/aes_128_ctr.txt",
+  "crypto/cipher_extra/test/nist_cavp/aes_128_gcm.txt",
+  "crypto/cipher_extra/test/nist_cavp/aes_192_cbc.txt",
+  "crypto/cipher_extra/test/nist_cavp/aes_192_ctr.txt",
+  "crypto/cipher_extra/test/nist_cavp/aes_256_cbc.txt",
+  "crypto/cipher_extra/test/nist_cavp/aes_256_ctr.txt",
+  "crypto/cipher_extra/test/nist_cavp/aes_256_gcm.txt",
+  "crypto/cipher_extra/test/nist_cavp/tdes_cbc.txt",
+  "crypto/cipher_extra/test/nist_cavp/tdes_ecb.txt",
+  "crypto/cipher_extra/test/xchacha20_poly1305_tests.txt",
+  "crypto/curve25519/ed25519_tests.txt",
+  "crypto/ecdh_extra/ecdh_tests.txt",
+  "crypto/evp/evp_tests.txt",
+  "crypto/evp/scrypt_tests.txt",
+  "crypto/fipsmodule/aes/aes_tests.txt",
+  "crypto/fipsmodule/bn/test/exp_tests.txt",
+  "crypto/fipsmodule/bn/test/gcd_tests.txt",
+  "crypto/fipsmodule/bn/test/miller_rabin_tests.txt",
+  "crypto/fipsmodule/bn/test/mod_exp_tests.txt",
+  "crypto/fipsmodule/bn/test/mod_inv_tests.txt",
+  "crypto/fipsmodule/bn/test/mod_mul_tests.txt",
+  "crypto/fipsmodule/bn/test/mod_sqrt_tests.txt",
+  "crypto/fipsmodule/bn/test/product_tests.txt",
+  "crypto/fipsmodule/bn/test/quotient_tests.txt",
+  "crypto/fipsmodule/bn/test/shift_tests.txt",
+  "crypto/fipsmodule/bn/test/sum_tests.txt",
+  "crypto/fipsmodule/cmac/cavp_3des_cmac_tests.txt",
+  "crypto/fipsmodule/cmac/cavp_aes128_cmac_tests.txt",
+  "crypto/fipsmodule/cmac/cavp_aes192_cmac_tests.txt",
+  "crypto/fipsmodule/cmac/cavp_aes256_cmac_tests.txt",
+  "crypto/fipsmodule/ec/ec_scalar_base_mult_tests.txt",
+  "crypto/fipsmodule/ec/p256-nistz_tests.txt",
+  "crypto/fipsmodule/ecdsa/ecdsa_sign_tests.txt",
+  "crypto/fipsmodule/ecdsa/ecdsa_verify_tests.txt",
+  "crypto/fipsmodule/modes/gcm_tests.txt",
+  "crypto/fipsmodule/rand/ctrdrbg_vectors.txt",
+  "crypto/hmac_extra/hmac_tests.txt",
+  "crypto/hpke/hpke_test_vectors.txt",
+  "crypto/keccak/keccak_tests.txt",
+  "crypto/kyber/kyber_tests.txt",
+  "crypto/pkcs8/test/bad1.p12",
+  "crypto/pkcs8/test/bad2.p12",
+  "crypto/pkcs8/test/bad3.p12",
+  "crypto/pkcs8/test/empty_password.p12",
+  "crypto/pkcs8/test/empty_password_ber.p12",
+  "crypto/pkcs8/test/empty_password_ber_nested.p12",
+  "crypto/pkcs8/test/no_encryption.p12",
+  "crypto/pkcs8/test/nss.p12",
+  "crypto/pkcs8/test/null_password.p12",
+  "crypto/pkcs8/test/openssl.p12",
+  "crypto/pkcs8/test/pbes2_sha1.p12",
+  "crypto/pkcs8/test/pbes2_sha256.p12",
+  "crypto/pkcs8/test/unicode_password.p12",
+  "crypto/pkcs8/test/windows.p12",
+  "crypto/poly1305/poly1305_tests.txt",
+  "crypto/siphash/siphash_tests.txt",
+  "crypto/spx/spx_tests.txt",
+  "crypto/spx/spx_tests_deterministic.txt",
+  "crypto/x509/test/basic_constraints_ca.pem",
+  "crypto/x509/test/basic_constraints_ca_pathlen_0.pem",
+  "crypto/x509/test/basic_constraints_ca_pathlen_1.pem",
+  "crypto/x509/test/basic_constraints_ca_pathlen_10.pem",
+  "crypto/x509/test/basic_constraints_leaf.pem",
+  "crypto/x509/test/basic_constraints_none.pem",
+  "crypto/x509/test/invalid_extension_intermediate.pem",
+  "crypto/x509/test/invalid_extension_intermediate_authority_key_identifier.pem",
+  "crypto/x509/test/invalid_extension_intermediate_basic_constraints.pem",
+  "crypto/x509/test/invalid_extension_intermediate_ext_key_usage.pem",
+  "crypto/x509/test/invalid_extension_intermediate_key_usage.pem",
+  "crypto/x509/test/invalid_extension_intermediate_name_constraints.pem",
+  "crypto/x509/test/invalid_extension_intermediate_subject_alt_name.pem",
+  "crypto/x509/test/invalid_extension_intermediate_subject_key_identifier.pem",
+  "crypto/x509/test/invalid_extension_leaf.pem",
+  "crypto/x509/test/invalid_extension_leaf_authority_key_identifier.pem",
+  "crypto/x509/test/invalid_extension_leaf_basic_constraints.pem",
+  "crypto/x509/test/invalid_extension_leaf_ext_key_usage.pem",
+  "crypto/x509/test/invalid_extension_leaf_key_usage.pem",
+  "crypto/x509/test/invalid_extension_leaf_name_constraints.pem",
+  "crypto/x509/test/invalid_extension_leaf_subject_alt_name.pem",
+  "crypto/x509/test/invalid_extension_leaf_subject_key_identifier.pem",
+  "crypto/x509/test/invalid_extension_root.pem",
+  "crypto/x509/test/invalid_extension_root_authority_key_identifier.pem",
+  "crypto/x509/test/invalid_extension_root_basic_constraints.pem",
+  "crypto/x509/test/invalid_extension_root_ext_key_usage.pem",
+  "crypto/x509/test/invalid_extension_root_key_usage.pem",
+  "crypto/x509/test/invalid_extension_root_name_constraints.pem",
+  "crypto/x509/test/invalid_extension_root_subject_alt_name.pem",
+  "crypto/x509/test/invalid_extension_root_subject_key_identifier.pem",
+  "crypto/x509/test/many_constraints.pem",
+  "crypto/x509/test/many_names1.pem",
+  "crypto/x509/test/many_names2.pem",
+  "crypto/x509/test/many_names3.pem",
+  "crypto/x509/test/policy_intermediate.pem",
+  "crypto/x509/test/policy_intermediate_any.pem",
+  "crypto/x509/test/policy_intermediate_duplicate.pem",
+  "crypto/x509/test/policy_intermediate_invalid.pem",
+  "crypto/x509/test/policy_intermediate_mapped.pem",
+  "crypto/x509/test/policy_intermediate_mapped_any.pem",
+  "crypto/x509/test/policy_intermediate_mapped_oid3.pem",
+  "crypto/x509/test/policy_intermediate_require.pem",
+  "crypto/x509/test/policy_intermediate_require1.pem",
+  "crypto/x509/test/policy_intermediate_require2.pem",
+  "crypto/x509/test/policy_intermediate_require_duplicate.pem",
+  "crypto/x509/test/policy_intermediate_require_no_policies.pem",
+  "crypto/x509/test/policy_leaf.pem",
+  "crypto/x509/test/policy_leaf_any.pem",
+  "crypto/x509/test/policy_leaf_duplicate.pem",
+  "crypto/x509/test/policy_leaf_invalid.pem",
+  "crypto/x509/test/policy_leaf_none.pem",
+  "crypto/x509/test/policy_leaf_oid1.pem",
+  "crypto/x509/test/policy_leaf_oid2.pem",
+  "crypto/x509/test/policy_leaf_oid3.pem",
+  "crypto/x509/test/policy_leaf_oid4.pem",
+  "crypto/x509/test/policy_leaf_oid5.pem",
+  "crypto/x509/test/policy_leaf_require.pem",
+  "crypto/x509/test/policy_leaf_require1.pem",
+  "crypto/x509/test/policy_root.pem",
+  "crypto/x509/test/policy_root2.pem",
+  "crypto/x509/test/policy_root_cross_inhibit_mapping.pem",
+  "crypto/x509/test/pss_sha1.pem",
+  "crypto/x509/test/pss_sha1_explicit.pem",
+  "crypto/x509/test/pss_sha1_mgf1_syntax_error.pem",
+  "crypto/x509/test/pss_sha224.pem",
+  "crypto/x509/test/pss_sha256.pem",
+  "crypto/x509/test/pss_sha256_explicit_trailer.pem",
+  "crypto/x509/test/pss_sha256_mgf1_sha384.pem",
+  "crypto/x509/test/pss_sha256_mgf1_syntax_error.pem",
+  "crypto/x509/test/pss_sha256_omit_nulls.pem",
+  "crypto/x509/test/pss_sha256_salt31.pem",
+  "crypto/x509/test/pss_sha256_salt_overflow.pem",
+  "crypto/x509/test/pss_sha256_unknown_mgf.pem",
+  "crypto/x509/test/pss_sha256_wrong_trailer.pem",
+  "crypto/x509/test/pss_sha384.pem",
+  "crypto/x509/test/pss_sha512.pem",
+  "crypto/x509/test/some_names1.pem",
+  "crypto/x509/test/some_names2.pem",
+  "crypto/x509/test/some_names3.pem",
+  "crypto/x509/test/trailing_data_leaf_authority_key_identifier.pem",
+  "crypto/x509/test/trailing_data_leaf_basic_constraints.pem",
+  "crypto/x509/test/trailing_data_leaf_ext_key_usage.pem",
+  "crypto/x509/test/trailing_data_leaf_key_usage.pem",
+  "crypto/x509/test/trailing_data_leaf_name_constraints.pem",
+  "crypto/x509/test/trailing_data_leaf_subject_alt_name.pem",
+  "crypto/x509/test/trailing_data_leaf_subject_key_identifier.pem",
+  "third_party/wycheproof_testvectors/aes_cbc_pkcs5_test.txt",
+  "third_party/wycheproof_testvectors/aes_cmac_test.txt",
+  "third_party/wycheproof_testvectors/aes_gcm_siv_test.txt",
+  "third_party/wycheproof_testvectors/aes_gcm_test.txt",
+  "third_party/wycheproof_testvectors/chacha20_poly1305_test.txt",
+  "third_party/wycheproof_testvectors/dsa_test.txt",
+  "third_party/wycheproof_testvectors/ecdh_secp224r1_test.txt",
+  "third_party/wycheproof_testvectors/ecdh_secp256r1_test.txt",
+  "third_party/wycheproof_testvectors/ecdh_secp384r1_test.txt",
+  "third_party/wycheproof_testvectors/ecdh_secp521r1_test.txt",
+  "third_party/wycheproof_testvectors/ecdsa_secp224r1_sha224_test.txt",
+  "third_party/wycheproof_testvectors/ecdsa_secp224r1_sha256_test.txt",
+  "third_party/wycheproof_testvectors/ecdsa_secp224r1_sha512_test.txt",
+  "third_party/wycheproof_testvectors/ecdsa_secp256r1_sha256_test.txt",
+  "third_party/wycheproof_testvectors/ecdsa_secp256r1_sha512_test.txt",
+  "third_party/wycheproof_testvectors/ecdsa_secp384r1_sha384_test.txt",
+  "third_party/wycheproof_testvectors/ecdsa_secp384r1_sha512_test.txt",
+  "third_party/wycheproof_testvectors/ecdsa_secp521r1_sha512_test.txt",
+  "third_party/wycheproof_testvectors/eddsa_test.txt",
+  "third_party/wycheproof_testvectors/hkdf_sha1_test.txt",
+  "third_party/wycheproof_testvectors/hkdf_sha256_test.txt",
+  "third_party/wycheproof_testvectors/hkdf_sha384_test.txt",
+  "third_party/wycheproof_testvectors/hkdf_sha512_test.txt",
+  "third_party/wycheproof_testvectors/hmac_sha1_test.txt",
+  "third_party/wycheproof_testvectors/hmac_sha224_test.txt",
+  "third_party/wycheproof_testvectors/hmac_sha256_test.txt",
+  "third_party/wycheproof_testvectors/hmac_sha384_test.txt",
+  "third_party/wycheproof_testvectors/hmac_sha512_test.txt",
+  "third_party/wycheproof_testvectors/kw_test.txt",
+  "third_party/wycheproof_testvectors/kwp_test.txt",
+  "third_party/wycheproof_testvectors/primality_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_2048_sha1_mgf1sha1_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_2048_sha224_mgf1sha1_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_2048_sha224_mgf1sha224_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_2048_sha256_mgf1sha1_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_2048_sha256_mgf1sha256_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_2048_sha384_mgf1sha1_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_2048_sha384_mgf1sha384_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_2048_sha512_mgf1sha1_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_2048_sha512_mgf1sha512_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_3072_sha256_mgf1sha1_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_3072_sha256_mgf1sha256_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_3072_sha512_mgf1sha1_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_3072_sha512_mgf1sha512_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_4096_sha256_mgf1sha1_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_4096_sha256_mgf1sha256_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_4096_sha512_mgf1sha1_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_4096_sha512_mgf1sha512_test.txt",
+  "third_party/wycheproof_testvectors/rsa_oaep_misc_test.txt",
+  "third_party/wycheproof_testvectors/rsa_pkcs1_2048_test.txt",
+  "third_party/wycheproof_testvectors/rsa_pkcs1_3072_test.txt",
+  "third_party/wycheproof_testvectors/rsa_pkcs1_4096_test.txt",
+  "third_party/wycheproof_testvectors/rsa_pss_2048_sha1_mgf1_20_test.txt",
+  "third_party/wycheproof_testvectors/rsa_pss_2048_sha256_mgf1_0_test.txt",
+  "third_party/wycheproof_testvectors/rsa_pss_2048_sha256_mgf1_32_test.txt",
+  "third_party/wycheproof_testvectors/rsa_pss_3072_sha256_mgf1_32_test.txt",
+  "third_party/wycheproof_testvectors/rsa_pss_4096_sha256_mgf1_32_test.txt",
+  "third_party/wycheproof_testvectors/rsa_pss_4096_sha512_mgf1_32_test.txt",
+  "third_party/wycheproof_testvectors/rsa_pss_misc_test.txt",
+  "third_party/wycheproof_testvectors/rsa_sig_gen_misc_test.txt",
+  "third_party/wycheproof_testvectors/rsa_signature_2048_sha224_test.txt",
+  "third_party/wycheproof_testvectors/rsa_signature_2048_sha256_test.txt",
+  "third_party/wycheproof_testvectors/rsa_signature_2048_sha384_test.txt",
+  "third_party/wycheproof_testvectors/rsa_signature_2048_sha512_test.txt",
+  "third_party/wycheproof_testvectors/rsa_signature_3072_sha256_test.txt",
+  "third_party/wycheproof_testvectors/rsa_signature_3072_sha384_test.txt",
+  "third_party/wycheproof_testvectors/rsa_signature_3072_sha512_test.txt",
+  "third_party/wycheproof_testvectors/rsa_signature_4096_sha384_test.txt",
+  "third_party/wycheproof_testvectors/rsa_signature_4096_sha512_test.txt",
+  "third_party/wycheproof_testvectors/rsa_signature_test.txt",
+  "third_party/wycheproof_testvectors/x25519_test.txt",
+  "third_party/wycheproof_testvectors/xchacha20_poly1305_test.txt",
+]
+
+decrepit_sources = [
+  "decrepit/bio/base64_bio.c",
+  "decrepit/blowfish/blowfish.c",
+  "decrepit/cast/cast.c",
+  "decrepit/cast/cast_tables.c",
+  "decrepit/cfb/cfb.c",
+  "decrepit/des/cfb64ede.c",
+  "decrepit/dh/dh_decrepit.c",
+  "decrepit/dsa/dsa_decrepit.c",
+  "decrepit/evp/dss1.c",
+  "decrepit/evp/evp_do_all.c",
+  "decrepit/obj/obj_decrepit.c",
+  "decrepit/rc4/rc4_decrepit.c",
+  "decrepit/ripemd/ripemd.c",
+  "decrepit/rsa/rsa_decrepit.c",
+  "decrepit/ssl/ssl_decrepit.c",
+  "decrepit/x509/x509_decrepit.c",
+  "decrepit/xts/xts.c",
+]
+
+decrepit_internal_headers = [
+  "decrepit/cast/internal.h",
+  "decrepit/macros.h",
+]
+
+decrepit_test_sources = [
+  "crypto/test/gtest_main.cc",
+  "decrepit/blowfish/blowfish_test.cc",
+  "decrepit/cast/cast_test.cc",
+  "decrepit/cfb/cfb_test.cc",
+  "decrepit/des/des_test.cc",
+  "decrepit/evp/evp_test.cc",
+  "decrepit/ripemd/ripemd_test.cc",
+  "decrepit/xts/xts_test.cc",
+]
+
+pki_sources = [
+  "pki/cert_error_id.cc",
+  "pki/cert_error_params.cc",
+  "pki/cert_errors.cc",
+  "pki/cert_issuer_source_static.cc",
+  "pki/certificate.cc",
+  "pki/certificate_policies.cc",
+  "pki/common_cert_errors.cc",
+  "pki/crl.cc",
+  "pki/encode_values.cc",
+  "pki/extended_key_usage.cc",
+  "pki/general_names.cc",
+  "pki/input.cc",
+  "pki/ip_util.cc",
+  "pki/name_constraints.cc",
+  "pki/ocsp.cc",
+  "pki/ocsp_verify_result.cc",
+  "pki/parse_certificate.cc",
+  "pki/parse_name.cc",
+  "pki/parse_values.cc",
+  "pki/parsed_certificate.cc",
+  "pki/parser.cc",
+  "pki/path_builder.cc",
+  "pki/pem.cc",
+  "pki/revocation_util.cc",
+  "pki/signature_algorithm.cc",
+  "pki/simple_path_builder_delegate.cc",
+  "pki/string_util.cc",
+  "pki/trust_store.cc",
+  "pki/trust_store_collection.cc",
+  "pki/trust_store_in_memory.cc",
+  "pki/verify_certificate_chain.cc",
+  "pki/verify_error.cc",
+  "pki/verify_name_match.cc",
+  "pki/verify_signed_data.cc",
+]
+
+pki_headers = [
+  "include/openssl/pki/certificate.h",
+  "include/openssl/pki/signature_verify_cache.h",
+  "include/openssl/pki/verify_error.h",
+]
+
+pki_internal_headers = [
+  "pki/cert_error_id.h",
+  "pki/cert_error_params.h",
+  "pki/cert_errors.h",
+  "pki/cert_issuer_source.h",
+  "pki/cert_issuer_source_static.h",
+  "pki/cert_issuer_source_sync_unittest.h",
+  "pki/certificate_policies.h",
+  "pki/common_cert_errors.h",
+  "pki/crl.h",
+  "pki/encode_values.h",
+  "pki/extended_key_usage.h",
+  "pki/general_names.h",
+  "pki/input.h",
+  "pki/ip_util.h",
+  "pki/mock_signature_verify_cache.h",
+  "pki/name_constraints.h",
+  "pki/nist_pkits_unittest.h",
+  "pki/ocsp.h",
+  "pki/ocsp_revocation_status.h",
+  "pki/ocsp_verify_result.h",
+  "pki/parse_certificate.h",
+  "pki/parse_name.h",
+  "pki/parse_values.h",
+  "pki/parsed_certificate.h",
+  "pki/parser.h",
+  "pki/path_builder.h",
+  "pki/pem.h",
+  "pki/revocation_util.h",
+  "pki/signature_algorithm.h",
+  "pki/simple_path_builder_delegate.h",
+  "pki/string_util.h",
+  "pki/test_helpers.h",
+  "pki/testdata/nist-pkits/pkits_testcases-inl.h",
+  "pki/trust_store.h",
+  "pki/trust_store_collection.h",
+  "pki/trust_store_in_memory.h",
+  "pki/verify_certificate_chain.h",
+  "pki/verify_certificate_chain_typed_unittest.h",
+  "pki/verify_name_match.h",
+  "pki/verify_signed_data.h",
+]
+
+pki_test_sources = [
+  "crypto/test/gtest_main.cc",
+  "pki/cert_issuer_source_static_unittest.cc",
+  "pki/certificate_policies_unittest.cc",
+  "pki/certificate_unittest.cc",
+  "pki/crl_unittest.cc",
+  "pki/encode_values_unittest.cc",
+  "pki/extended_key_usage_unittest.cc",
+  "pki/general_names_unittest.cc",
+  "pki/input_unittest.cc",
+  "pki/ip_util_unittest.cc",
+  "pki/mock_signature_verify_cache.cc",
+  "pki/name_constraints_unittest.cc",
+  "pki/nist_pkits_unittest.cc",
+  "pki/ocsp_unittest.cc",
+  "pki/parse_certificate_unittest.cc",
+  "pki/parse_name_unittest.cc",
+  "pki/parse_values_unittest.cc",
+  "pki/parsed_certificate_unittest.cc",
+  "pki/parser_unittest.cc",
+  "pki/path_builder_pkits_unittest.cc",
+  "pki/path_builder_unittest.cc",
+  "pki/path_builder_verify_certificate_chain_unittest.cc",
+  "pki/pem_unittest.cc",
+  "pki/signature_algorithm_unittest.cc",
+  "pki/simple_path_builder_delegate_unittest.cc",
+  "pki/string_util_unittest.cc",
+  "pki/test_helpers.cc",
+  "pki/trust_store_collection_unittest.cc",
+  "pki/trust_store_in_memory_unittest.cc",
+  "pki/verify_certificate_chain_pkits_unittest.cc",
+  "pki/verify_certificate_chain_unittest.cc",
+  "pki/verify_name_match_unittest.cc",
+  "pki/verify_signed_data_unittest.cc",
+]
+
+pki_test_data = [
+  "pki/testdata/cert_issuer_source_static_unittest/c1.pem",
+  "pki/testdata/cert_issuer_source_static_unittest/c2.pem",
+  "pki/testdata/cert_issuer_source_static_unittest/d.pem",
+  "pki/testdata/cert_issuer_source_static_unittest/e1.pem",
+  "pki/testdata/cert_issuer_source_static_unittest/e2.pem",
+  "pki/testdata/cert_issuer_source_static_unittest/i1_1.pem",
+  "pki/testdata/cert_issuer_source_static_unittest/i1_2.pem",
+  "pki/testdata/cert_issuer_source_static_unittest/i2.pem",
+  "pki/testdata/cert_issuer_source_static_unittest/i3_1.pem",
+  "pki/testdata/cert_issuer_source_static_unittest/i3_2.pem",
+  "pki/testdata/cert_issuer_source_static_unittest/root.pem",
+  "pki/testdata/certificate_policies_unittest/anypolicy.pem",
+  "pki/testdata/certificate_policies_unittest/anypolicy_with_qualifier.pem",
+  "pki/testdata/certificate_policies_unittest/invalid-anypolicy_with_custom_qualifier.pem",
+  "pki/testdata/certificate_policies_unittest/invalid-empty.pem",
+  "pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_dupe.pem",
+  "pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_policyinformation_unconsumed_data.pem",
+  "pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_policyqualifierinfo_unconsumed_data.pem",
+  "pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_with_empty_qualifiers_sequence.pem",
+  "pki/testdata/certificate_policies_unittest/invalid-policy_identifier_not_oid.pem",
+  "pki/testdata/certificate_policies_unittest/policy_1_2_3.pem",
+  "pki/testdata/certificate_policies_unittest/policy_1_2_3_and_1_2_4.pem",
+  "pki/testdata/certificate_policies_unittest/policy_1_2_3_and_1_2_4_with_qualifiers.pem",
+  "pki/testdata/certificate_policies_unittest/policy_1_2_3_with_custom_qualifier.pem",
+  "pki/testdata/certificate_policies_unittest/policy_1_2_3_with_qualifier.pem",
+  "pki/testdata/crl_unittest/bad_crldp_has_crlissuer.pem",
+  "pki/testdata/crl_unittest/bad_fake_critical_crlentryextension.pem",
+  "pki/testdata/crl_unittest/bad_fake_critical_extension.pem",
+  "pki/testdata/crl_unittest/bad_idp_contains_wrong_uri.pem",
+  "pki/testdata/crl_unittest/bad_idp_indirectcrl.pem",
+  "pki/testdata/crl_unittest/bad_idp_onlycontainscacerts.pem",
+  "pki/testdata/crl_unittest/bad_idp_onlycontainscacerts_no_basic_constraints.pem",
+  "pki/testdata/crl_unittest/bad_idp_onlycontainsusercerts.pem",
+  "pki/testdata/crl_unittest/bad_idp_uri_and_onlycontainscacerts.pem",
+  "pki/testdata/crl_unittest/bad_idp_uri_and_onlycontainsusercerts.pem",
+  "pki/testdata/crl_unittest/bad_key_rollover_signature.pem",
+  "pki/testdata/crl_unittest/bad_nextupdate_too_old.pem",
+  "pki/testdata/crl_unittest/bad_signature.pem",
+  "pki/testdata/crl_unittest/bad_thisupdate_in_future.pem",
+  "pki/testdata/crl_unittest/bad_thisupdate_too_old.pem",
+  "pki/testdata/crl_unittest/bad_wrong_issuer.pem",
+  "pki/testdata/crl_unittest/good.pem",
+  "pki/testdata/crl_unittest/good_fake_extension.pem",
+  "pki/testdata/crl_unittest/good_fake_extension_no_nextupdate.pem",
+  "pki/testdata/crl_unittest/good_generalizedtime.pem",
+  "pki/testdata/crl_unittest/good_idp_contains_uri.pem",
+  "pki/testdata/crl_unittest/good_idp_onlycontainscacerts.pem",
+  "pki/testdata/crl_unittest/good_idp_onlycontainsusercerts.pem",
+  "pki/testdata/crl_unittest/good_idp_onlycontainsusercerts_no_basic_constraints.pem",
+  "pki/testdata/crl_unittest/good_idp_uri_and_onlycontainscacerts.pem",
+  "pki/testdata/crl_unittest/good_idp_uri_and_onlycontainsusercerts.pem",
+  "pki/testdata/crl_unittest/good_issuer_name_normalization.pem",
+  "pki/testdata/crl_unittest/good_issuer_no_keyusage.pem",
+  "pki/testdata/crl_unittest/good_key_rollover.pem",
+  "pki/testdata/crl_unittest/good_no_crldp.pem",
+  "pki/testdata/crl_unittest/good_no_nextupdate.pem",
+  "pki/testdata/crl_unittest/good_no_version.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_after_crlentryextensions.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_after_extensions.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_after_nextupdate.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_after_revocationdate.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_after_revokedcerts.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_after_signaturevalue.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_after_thisupdate.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_crlentry.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_issuer_name.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_revocationdate.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_revoked_serial_number.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_signaturealgorithm.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_signaturevalue.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_tbs_signature_algorithm.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_tbscertlist.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_thisupdate.pem",
+  "pki/testdata/crl_unittest/invalid_garbage_version.pem",
+  "pki/testdata/crl_unittest/invalid_idp_dpname_choice_extra_data.pem",
+  "pki/testdata/crl_unittest/invalid_idp_empty_sequence.pem",
+  "pki/testdata/crl_unittest/invalid_idp_onlycontains_user_and_ca_certs.pem",
+  "pki/testdata/crl_unittest/invalid_idp_onlycontainsusercerts_v1_leaf.pem",
+  "pki/testdata/crl_unittest/invalid_issuer_keyusage_no_crlsign.pem",
+  "pki/testdata/crl_unittest/invalid_key_rollover_issuer_keyusage_no_crlsign.pem",
+  "pki/testdata/crl_unittest/invalid_mismatched_signature_algorithm.pem",
+  "pki/testdata/crl_unittest/invalid_revoked_empty_sequence.pem",
+  "pki/testdata/crl_unittest/invalid_v1_explicit.pem",
+  "pki/testdata/crl_unittest/invalid_v1_with_crlentryextension.pem",
+  "pki/testdata/crl_unittest/invalid_v1_with_extension.pem",
+  "pki/testdata/crl_unittest/invalid_v3.pem",
+  "pki/testdata/crl_unittest/revoked.pem",
+  "pki/testdata/crl_unittest/revoked_fake_crlentryextension.pem",
+  "pki/testdata/crl_unittest/revoked_generalized_revocationdate.pem",
+  "pki/testdata/crl_unittest/revoked_key_rollover.pem",
+  "pki/testdata/crl_unittest/revoked_no_nextupdate.pem",
+  "pki/testdata/name_constraints_unittest/directoryname-excludeall.pem",
+  "pki/testdata/name_constraints_unittest/directoryname-excluded.pem",
+  "pki/testdata/name_constraints_unittest/directoryname.pem",
+  "pki/testdata/name_constraints_unittest/directoryname_and_dnsname.pem",
+  "pki/testdata/name_constraints_unittest/directoryname_and_dnsname_and_ipaddress.pem",
+  "pki/testdata/name_constraints_unittest/dnsname-exclude_dot.pem",
+  "pki/testdata/name_constraints_unittest/dnsname-excludeall.pem",
+  "pki/testdata/name_constraints_unittest/dnsname-excluded.pem",
+  "pki/testdata/name_constraints_unittest/dnsname-excluded_with_leading_dot.pem",
+  "pki/testdata/name_constraints_unittest/dnsname-permitted_two_dot.pem",
+  "pki/testdata/name_constraints_unittest/dnsname-permitted_with_leading_dot.pem",
+  "pki/testdata/name_constraints_unittest/dnsname-with_max.pem",
+  "pki/testdata/name_constraints_unittest/dnsname-with_min_0.pem",
+  "pki/testdata/name_constraints_unittest/dnsname-with_min_0_and_max.pem",
+  "pki/testdata/name_constraints_unittest/dnsname-with_min_1.pem",
+  "pki/testdata/name_constraints_unittest/dnsname-with_min_1_and_max.pem",
+  "pki/testdata/name_constraints_unittest/dnsname.pem",
+  "pki/testdata/name_constraints_unittest/dnsname2.pem",
+  "pki/testdata/name_constraints_unittest/edipartyname-excluded.pem",
+  "pki/testdata/name_constraints_unittest/edipartyname-permitted.pem",
+  "pki/testdata/name_constraints_unittest/invalid-empty_excluded_subtree.pem",
+  "pki/testdata/name_constraints_unittest/invalid-empty_permitted_subtree.pem",
+  "pki/testdata/name_constraints_unittest/invalid-no_subtrees.pem",
+  "pki/testdata/name_constraints_unittest/ipaddress-excludeall.pem",
+  "pki/testdata/name_constraints_unittest/ipaddress-excluded.pem",
+  "pki/testdata/name_constraints_unittest/ipaddress-invalid_addr.pem",
+  "pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_1.pem",
+  "pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_2.pem",
+  "pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_3.pem",
+  "pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_4.pem",
+  "pki/testdata/name_constraints_unittest/ipaddress-mapped_addrs.pem",
+  "pki/testdata/name_constraints_unittest/ipaddress-permit_all.pem",
+  "pki/testdata/name_constraints_unittest/ipaddress-permit_prefix1.pem",
+  "pki/testdata/name_constraints_unittest/ipaddress-permit_prefix31.pem",
+  "pki/testdata/name_constraints_unittest/ipaddress-permit_singlehost.pem",
+  "pki/testdata/name_constraints_unittest/ipaddress.pem",
+  "pki/testdata/name_constraints_unittest/name-ca.pem",
+  "pki/testdata/name_constraints_unittest/name-de.pem",
+  "pki/testdata/name_constraints_unittest/name-empty.pem",
+  "pki/testdata/name_constraints_unittest/name-jp-tokyo.pem",
+  "pki/testdata/name_constraints_unittest/name-jp.pem",
+  "pki/testdata/name_constraints_unittest/name-us-arizona-1.1.1.1.pem",
+  "pki/testdata/name_constraints_unittest/name-us-arizona-192.168.1.1.pem",
+  "pki/testdata/name_constraints_unittest/name-us-arizona-email-invalidstring.pem",
+  "pki/testdata/name_constraints_unittest/name-us-arizona-email-localpartcase.pem",
+  "pki/testdata/name_constraints_unittest/name-us-arizona-email-multiple.pem",
+  "pki/testdata/name_constraints_unittest/name-us-arizona-email.pem",
+  "pki/testdata/name_constraints_unittest/name-us-arizona-foo.com.pem",
+  "pki/testdata/name_constraints_unittest/name-us-arizona-ipv6.pem",
+  "pki/testdata/name_constraints_unittest/name-us-arizona-permitted.example.com.pem",
+  "pki/testdata/name_constraints_unittest/name-us-arizona.pem",
+  "pki/testdata/name_constraints_unittest/name-us-california-192.168.1.1.pem",
+  "pki/testdata/name_constraints_unittest/name-us-california-mountain_view.pem",
+  "pki/testdata/name_constraints_unittest/name-us-california-permitted.example.com.pem",
+  "pki/testdata/name_constraints_unittest/name-us-california.pem",
+  "pki/testdata/name_constraints_unittest/name-us.pem",
+  "pki/testdata/name_constraints_unittest/othername-excluded.pem",
+  "pki/testdata/name_constraints_unittest/othername-permitted.pem",
+  "pki/testdata/name_constraints_unittest/registeredid-excluded.pem",
+  "pki/testdata/name_constraints_unittest/registeredid-permitted.pem",
+  "pki/testdata/name_constraints_unittest/rfc822name-excluded-empty.pem",
+  "pki/testdata/name_constraints_unittest/rfc822name-excluded-hostname.pem",
+  "pki/testdata/name_constraints_unittest/rfc822name-excluded-hostnamewithat.pem",
+  "pki/testdata/name_constraints_unittest/rfc822name-excluded-ipv4.pem",
+  "pki/testdata/name_constraints_unittest/rfc822name-excluded-quoted.pem",
+  "pki/testdata/name_constraints_unittest/rfc822name-excluded-subdomains.pem",
+  "pki/testdata/name_constraints_unittest/rfc822name-excluded.pem",
+  "pki/testdata/name_constraints_unittest/rfc822name-permitted-empty.pem",
+  "pki/testdata/name_constraints_unittest/rfc822name-permitted-hostname.pem",
+  "pki/testdata/name_constraints_unittest/rfc822name-permitted-hostnamewithat.pem",
+  "pki/testdata/name_constraints_unittest/rfc822name-permitted-ipv4.pem",
+  "pki/testdata/name_constraints_unittest/rfc822name-permitted-quoted.pem",
+  "pki/testdata/name_constraints_unittest/rfc822name-permitted-subdomains.pem",
+  "pki/testdata/name_constraints_unittest/rfc822name-permitted.pem",
+  "pki/testdata/name_constraints_unittest/san-directoryname.pem",
+  "pki/testdata/name_constraints_unittest/san-dnsname.pem",
+  "pki/testdata/name_constraints_unittest/san-edipartyname.pem",
+  "pki/testdata/name_constraints_unittest/san-excluded-directoryname.pem",
+  "pki/testdata/name_constraints_unittest/san-excluded-dnsname.pem",
+  "pki/testdata/name_constraints_unittest/san-excluded-ipaddress.pem",
+  "pki/testdata/name_constraints_unittest/san-invalid-empty.pem",
+  "pki/testdata/name_constraints_unittest/san-invalid-ipaddress.pem",
+  "pki/testdata/name_constraints_unittest/san-ipaddress4.pem",
+  "pki/testdata/name_constraints_unittest/san-ipaddress6.pem",
+  "pki/testdata/name_constraints_unittest/san-othername.pem",
+  "pki/testdata/name_constraints_unittest/san-permitted.pem",
+  "pki/testdata/name_constraints_unittest/san-registeredid.pem",
+  "pki/testdata/name_constraints_unittest/san-rfc822name-domaincase.pem",
+  "pki/testdata/name_constraints_unittest/san-rfc822name-empty-localpart.pem",
+  "pki/testdata/name_constraints_unittest/san-rfc822name-empty.pem",
+  "pki/testdata/name_constraints_unittest/san-rfc822name-ipv4.pem",
+  "pki/testdata/name_constraints_unittest/san-rfc822name-localpartcase.pem",
+  "pki/testdata/name_constraints_unittest/san-rfc822name-multiple.pem",
+  "pki/testdata/name_constraints_unittest/san-rfc822name-no-at.pem",
+  "pki/testdata/name_constraints_unittest/san-rfc822name-quoted.pem",
+  "pki/testdata/name_constraints_unittest/san-rfc822name-subdomain-no-at.pem",
+  "pki/testdata/name_constraints_unittest/san-rfc822name-subdomain-two-ats.pem",
+  "pki/testdata/name_constraints_unittest/san-rfc822name-subdomain.pem",
+  "pki/testdata/name_constraints_unittest/san-rfc822name-subdomaincase.pem",
+  "pki/testdata/name_constraints_unittest/san-rfc822name-two-ats.pem",
+  "pki/testdata/name_constraints_unittest/san-rfc822name.pem",
+  "pki/testdata/name_constraints_unittest/san-uri.pem",
+  "pki/testdata/name_constraints_unittest/san-x400address.pem",
+  "pki/testdata/name_constraints_unittest/uri-excluded.pem",
+  "pki/testdata/name_constraints_unittest/uri-permitted.pem",
+  "pki/testdata/name_constraints_unittest/x400address-excluded.pem",
+  "pki/testdata/name_constraints_unittest/x400address-permitted.pem",
+  "pki/testdata/nist-pkits/certs/AllCertificatesNoPoliciesTest2EE.crt",
+  "pki/testdata/nist-pkits/certs/AllCertificatesSamePoliciesTest10EE.crt",
+  "pki/testdata/nist-pkits/certs/AllCertificatesSamePoliciesTest13EE.crt",
+  "pki/testdata/nist-pkits/certs/AllCertificatesanyPolicyTest11EE.crt",
+  "pki/testdata/nist-pkits/certs/AnyPolicyTest14EE.crt",
+  "pki/testdata/nist-pkits/certs/BadCRLIssuerNameCACert.crt",
+  "pki/testdata/nist-pkits/certs/BadCRLSignatureCACert.crt",
+  "pki/testdata/nist-pkits/certs/BadSignedCACert.crt",
+  "pki/testdata/nist-pkits/certs/BadnotAfterDateCACert.crt",
+  "pki/testdata/nist-pkits/certs/BadnotBeforeDateCACert.crt",
+  "pki/testdata/nist-pkits/certs/BasicSelfIssuedCRLSigningKeyCACert.crt",
+  "pki/testdata/nist-pkits/certs/BasicSelfIssuedCRLSigningKeyCRLCert.crt",
+  "pki/testdata/nist-pkits/certs/BasicSelfIssuedNewKeyCACert.crt",
+  "pki/testdata/nist-pkits/certs/BasicSelfIssuedNewKeyOldWithNewCACert.crt",
+  "pki/testdata/nist-pkits/certs/BasicSelfIssuedOldKeyCACert.crt",
+  "pki/testdata/nist-pkits/certs/BasicSelfIssuedOldKeyNewWithOldCACert.crt",
+  "pki/testdata/nist-pkits/certs/CPSPointerQualifierTest20EE.crt",
+  "pki/testdata/nist-pkits/certs/DSACACert.crt",
+  "pki/testdata/nist-pkits/certs/DSAParametersInheritedCACert.crt",
+  "pki/testdata/nist-pkits/certs/DifferentPoliciesTest12EE.crt",
+  "pki/testdata/nist-pkits/certs/DifferentPoliciesTest3EE.crt",
+  "pki/testdata/nist-pkits/certs/DifferentPoliciesTest4EE.crt",
+  "pki/testdata/nist-pkits/certs/DifferentPoliciesTest5EE.crt",
+  "pki/testdata/nist-pkits/certs/DifferentPoliciesTest7EE.crt",
+  "pki/testdata/nist-pkits/certs/DifferentPoliciesTest8EE.crt",
+  "pki/testdata/nist-pkits/certs/DifferentPoliciesTest9EE.crt",
+  "pki/testdata/nist-pkits/certs/GeneralizedTimeCRLnextUpdateCACert.crt",
+  "pki/testdata/nist-pkits/certs/GoodCACert.crt",
+  "pki/testdata/nist-pkits/certs/GoodsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/GoodsubCAPanyPolicyMapping1to2CACert.crt",
+  "pki/testdata/nist-pkits/certs/InvalidBadCRLIssuerNameTest5EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidBadCRLSignatureTest4EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedCRLSigningKeyTest7EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedCRLSigningKeyTest8EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedNewWithOldTest5EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedOldWithNewTest2EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidCASignatureTest2EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidCAnotAfterDateTest5EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidCAnotBeforeDateTest1EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNSnameConstraintsTest31EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNSnameConstraintsTest33EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNSnameConstraintsTest38EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNandRFC822nameConstraintsTest28EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNandRFC822nameConstraintsTest29EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest10EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest12EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest13EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest15EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest16EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest17EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest20EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest2EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest3EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest7EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest8EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest9EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidDSASignatureTest6EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidEESignatureTest3EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidEEnotAfterDateTest6EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidEEnotBeforeDateTest2EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidIDPwithindirectCRLTest23EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidIDPwithindirectCRLTest26EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidLongSerialNumberTest18EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidMappingFromanyPolicyTest7EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidMappingToanyPolicyTest8EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidMissingCRLTest1EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidMissingbasicConstraintsTest1EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidNameChainingOrderTest2EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidNameChainingTest1EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidNegativeSerialNumberTest15EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidOldCRLnextUpdateTest11EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidPolicyMappingTest10EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidPolicyMappingTest2EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidPolicyMappingTest4EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidRFC822nameConstraintsTest22EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidRFC822nameConstraintsTest24EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidRFC822nameConstraintsTest26EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidRevokedCATest2EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidRevokedEETest3EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitAnyPolicyTest10EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitAnyPolicyTest8EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest10EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest11EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest8EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest9EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidSelfIssuedpathLenConstraintTest16EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidSelfIssuedrequireExplicitPolicyTest7EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidSelfIssuedrequireExplicitPolicyTest8EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidSeparateCertificateandCRLKeysTest20EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidSeparateCertificateandCRLKeysTest21EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidURInameConstraintsTest35EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidURInameConstraintsTest37EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidUnknownCRLEntryExtensionTest8EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidUnknownCRLExtensionTest10EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidUnknownCRLExtensionTest9EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidUnknownCriticalCertificateExtensionTest2EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidWrongCRLTest6EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidcAFalseTest2EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidcAFalseTest3EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest27EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest31EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest32EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest34EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest35EE.crt",
+  "pki/testdata/nist-pkits/certs/InvaliddeltaCRLIndicatorNoBaseTest1EE.crt",
+  "pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest10EE.crt",
+  "pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest3EE.crt",
+  "pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest4EE.crt",
+  "pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest6EE.crt",
+  "pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest9EE.crt",
+  "pki/testdata/nist-pkits/certs/InvaliddistributionPointTest2EE.crt",
+  "pki/testdata/nist-pkits/certs/InvaliddistributionPointTest3EE.crt",
+  "pki/testdata/nist-pkits/certs/InvaliddistributionPointTest6EE.crt",
+  "pki/testdata/nist-pkits/certs/InvaliddistributionPointTest8EE.crt",
+  "pki/testdata/nist-pkits/certs/InvaliddistributionPointTest9EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest1EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest4EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest5EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest6EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest1EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest3EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest5EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest6EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidkeyUsageCriticalcRLSignFalseTest4EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidkeyUsageCriticalkeyCertSignFalseTest1EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidkeyUsageNotCriticalcRLSignFalseTest5EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidonlyContainsAttributeCertsTest14EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidonlyContainsCACertsTest12EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidonlyContainsUserCertsTest11EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest15EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest16EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest17EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest20EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest21EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest10EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest11EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest12EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest5EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest6EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest9EE.crt",
+  "pki/testdata/nist-pkits/certs/Invalidpre2000CRLnextUpdateTest12EE.crt",
+  "pki/testdata/nist-pkits/certs/Invalidpre2000UTCEEnotAfterDateTest7EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidrequireExplicitPolicyTest3EE.crt",
+  "pki/testdata/nist-pkits/certs/InvalidrequireExplicitPolicyTest5EE.crt",
+  "pki/testdata/nist-pkits/certs/LongSerialNumberCACert.crt",
+  "pki/testdata/nist-pkits/certs/Mapping1to2CACert.crt",
+  "pki/testdata/nist-pkits/certs/MappingFromanyPolicyCACert.crt",
+  "pki/testdata/nist-pkits/certs/MappingToanyPolicyCACert.crt",
+  "pki/testdata/nist-pkits/certs/MissingbasicConstraintsCACert.crt",
+  "pki/testdata/nist-pkits/certs/NameOrderingCACert.crt",
+  "pki/testdata/nist-pkits/certs/NegativeSerialNumberCACert.crt",
+  "pki/testdata/nist-pkits/certs/NoCRLCACert.crt",
+  "pki/testdata/nist-pkits/certs/NoPoliciesCACert.crt",
+  "pki/testdata/nist-pkits/certs/NoissuingDistributionPointCACert.crt",
+  "pki/testdata/nist-pkits/certs/OldCRLnextUpdateCACert.crt",
+  "pki/testdata/nist-pkits/certs/OverlappingPoliciesTest6EE.crt",
+  "pki/testdata/nist-pkits/certs/P12Mapping1to3CACert.crt",
+  "pki/testdata/nist-pkits/certs/P12Mapping1to3subCACert.crt",
+  "pki/testdata/nist-pkits/certs/P12Mapping1to3subsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/P1Mapping1to234CACert.crt",
+  "pki/testdata/nist-pkits/certs/P1Mapping1to234subCACert.crt",
+  "pki/testdata/nist-pkits/certs/P1anyPolicyMapping1to2CACert.crt",
+  "pki/testdata/nist-pkits/certs/PanyPolicyMapping1to2CACert.crt",
+  "pki/testdata/nist-pkits/certs/PoliciesP1234CACert.crt",
+  "pki/testdata/nist-pkits/certs/PoliciesP1234subCAP123Cert.crt",
+  "pki/testdata/nist-pkits/certs/PoliciesP1234subsubCAP123P12Cert.crt",
+  "pki/testdata/nist-pkits/certs/PoliciesP123CACert.crt",
+  "pki/testdata/nist-pkits/certs/PoliciesP123subCAP12Cert.crt",
+  "pki/testdata/nist-pkits/certs/PoliciesP123subsubCAP12P1Cert.crt",
+  "pki/testdata/nist-pkits/certs/PoliciesP123subsubCAP12P2Cert.crt",
+  "pki/testdata/nist-pkits/certs/PoliciesP123subsubsubCAP12P2P1Cert.crt",
+  "pki/testdata/nist-pkits/certs/PoliciesP12CACert.crt",
+  "pki/testdata/nist-pkits/certs/PoliciesP12subCAP1Cert.crt",
+  "pki/testdata/nist-pkits/certs/PoliciesP12subsubCAP1P2Cert.crt",
+  "pki/testdata/nist-pkits/certs/PoliciesP2subCA2Cert.crt",
+  "pki/testdata/nist-pkits/certs/PoliciesP2subCACert.crt",
+  "pki/testdata/nist-pkits/certs/PoliciesP3CACert.crt",
+  "pki/testdata/nist-pkits/certs/RFC3280MandatoryAttributeTypesCACert.crt",
+  "pki/testdata/nist-pkits/certs/RFC3280OptionalAttributeTypesCACert.crt",
+  "pki/testdata/nist-pkits/certs/RevokedsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/RolloverfromPrintableStringtoUTF8StringCACert.crt",
+  "pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCA2CRLSigningCert.crt",
+  "pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCA2CertificateSigningCACert.crt",
+  "pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCRLSigningCert.crt",
+  "pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCertificateSigningCACert.crt",
+  "pki/testdata/nist-pkits/certs/TrustAnchorRootCertificate.crt",
+  "pki/testdata/nist-pkits/certs/TwoCRLsCACert.crt",
+  "pki/testdata/nist-pkits/certs/UIDCACert.crt",
+  "pki/testdata/nist-pkits/certs/UTF8StringCaseInsensitiveMatchCACert.crt",
+  "pki/testdata/nist-pkits/certs/UTF8StringEncodedNamesCACert.crt",
+  "pki/testdata/nist-pkits/certs/UnknownCRLEntryExtensionCACert.crt",
+  "pki/testdata/nist-pkits/certs/UnknownCRLExtensionCACert.crt",
+  "pki/testdata/nist-pkits/certs/UserNoticeQualifierTest15EE.crt",
+  "pki/testdata/nist-pkits/certs/UserNoticeQualifierTest16EE.crt",
+  "pki/testdata/nist-pkits/certs/UserNoticeQualifierTest17EE.crt",
+  "pki/testdata/nist-pkits/certs/UserNoticeQualifierTest18EE.crt",
+  "pki/testdata/nist-pkits/certs/UserNoticeQualifierTest19EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedCRLSigningKeyTest6EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedNewWithOldTest3EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedNewWithOldTest4EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedOldWithNewTest1EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidCertificatePathTest1EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidDNSnameConstraintsTest30EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidDNSnameConstraintsTest32EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidDNandRFC822nameConstraintsTest27EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest11EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest14EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest18EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest19EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest1EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest4EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest5EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest6EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidDSAParameterInheritanceTest5EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidDSASignaturesTest4EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidGeneralizedTimeCRLnextUpdateTest13EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidGeneralizedTimenotAfterDateTest8EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidGeneralizedTimenotBeforeDateTest4EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidIDPwithindirectCRLTest22EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidIDPwithindirectCRLTest24EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidIDPwithindirectCRLTest25EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidLongSerialNumberTest16EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidLongSerialNumberTest17EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidNameChainingCapitalizationTest5EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidNameChainingWhitespaceTest3EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidNameChainingWhitespaceTest4EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidNameUIDsTest6EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidNegativeSerialNumberTest14EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidNoissuingDistributionPointTest10EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest11EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest12EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest13EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest14EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest1EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest3EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest5EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest6EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest9EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidRFC3280MandatoryAttributeTypesTest7EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidRFC3280OptionalAttributeTypesTest8EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidRFC822nameConstraintsTest21EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidRFC822nameConstraintsTest23EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidRFC822nameConstraintsTest25EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidRolloverfromPrintableStringtoUTF8StringTest10EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidSelfIssuedinhibitAnyPolicyTest7EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidSelfIssuedinhibitAnyPolicyTest9EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidSelfIssuedinhibitPolicyMappingTest7EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidSelfIssuedpathLenConstraintTest15EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidSelfIssuedpathLenConstraintTest17EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidSelfIssuedrequireExplicitPolicyTest6EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidSeparateCertificateandCRLKeysTest19EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidTwoCRLsTest7EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidURInameConstraintsTest34EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidURInameConstraintsTest36EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidUTF8StringCaseInsensitiveMatchTest11EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidUTF8StringEncodedNamesTest9EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidUnknownNotCriticalCertificateExtensionTest1EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidbasicConstraintsNotCriticalTest4EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidcRLIssuerTest28EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidcRLIssuerTest29EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidcRLIssuerTest30EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidcRLIssuerTest33EE.crt",
+  "pki/testdata/nist-pkits/certs/ValiddeltaCRLTest2EE.crt",
+  "pki/testdata/nist-pkits/certs/ValiddeltaCRLTest5EE.crt",
+  "pki/testdata/nist-pkits/certs/ValiddeltaCRLTest7EE.crt",
+  "pki/testdata/nist-pkits/certs/ValiddeltaCRLTest8EE.crt",
+  "pki/testdata/nist-pkits/certs/ValiddistributionPointTest1EE.crt",
+  "pki/testdata/nist-pkits/certs/ValiddistributionPointTest4EE.crt",
+  "pki/testdata/nist-pkits/certs/ValiddistributionPointTest5EE.crt",
+  "pki/testdata/nist-pkits/certs/ValiddistributionPointTest7EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidinhibitAnyPolicyTest2EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidinhibitPolicyMappingTest2EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidinhibitPolicyMappingTest4EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidkeyUsageNotCriticalTest3EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidonlyContainsCACertsTest13EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidonlySomeReasonsTest18EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidonlySomeReasonsTest19EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest13EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest14EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest7EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest8EE.crt",
+  "pki/testdata/nist-pkits/certs/Validpre2000UTCnotBeforeDateTest3EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidrequireExplicitPolicyTest1EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidrequireExplicitPolicyTest2EE.crt",
+  "pki/testdata/nist-pkits/certs/ValidrequireExplicitPolicyTest4EE.crt",
+  "pki/testdata/nist-pkits/certs/WrongCRLCACert.crt",
+  "pki/testdata/nist-pkits/certs/anyPolicyCACert.crt",
+  "pki/testdata/nist-pkits/certs/basicConstraintsCriticalcAFalseCACert.crt",
+  "pki/testdata/nist-pkits/certs/basicConstraintsNotCriticalCACert.crt",
+  "pki/testdata/nist-pkits/certs/basicConstraintsNotCriticalcAFalseCACert.crt",
+  "pki/testdata/nist-pkits/certs/deltaCRLCA1Cert.crt",
+  "pki/testdata/nist-pkits/certs/deltaCRLCA2Cert.crt",
+  "pki/testdata/nist-pkits/certs/deltaCRLCA3Cert.crt",
+  "pki/testdata/nist-pkits/certs/deltaCRLIndicatorNoBaseCACert.crt",
+  "pki/testdata/nist-pkits/certs/distributionPoint1CACert.crt",
+  "pki/testdata/nist-pkits/certs/distributionPoint2CACert.crt",
+  "pki/testdata/nist-pkits/certs/indirectCRLCA1Cert.crt",
+  "pki/testdata/nist-pkits/certs/indirectCRLCA2Cert.crt",
+  "pki/testdata/nist-pkits/certs/indirectCRLCA3Cert.crt",
+  "pki/testdata/nist-pkits/certs/indirectCRLCA3cRLIssuerCert.crt",
+  "pki/testdata/nist-pkits/certs/indirectCRLCA4Cert.crt",
+  "pki/testdata/nist-pkits/certs/indirectCRLCA4cRLIssuerCert.crt",
+  "pki/testdata/nist-pkits/certs/indirectCRLCA5Cert.crt",
+  "pki/testdata/nist-pkits/certs/indirectCRLCA6Cert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitAnyPolicy0CACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1CACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1SelfIssuedCACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1SelfIssuedsubCA2Cert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subCA1Cert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subCA2Cert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subCAIAP5Cert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subsubCA2Cert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitAnyPolicy5CACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitAnyPolicy5subCACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitAnyPolicy5subsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitAnyPolicyTest3EE.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping0CACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping0subCACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12CACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subCACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subCAIPM5Cert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subsubCAIPM5Cert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1CACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1SelfIssuedCACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1SelfIssuedsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1subCACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1subsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping5CACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping5subCACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping5subsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/inhibitPolicyMapping5subsubsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/keyUsageCriticalcRLSignFalseCACert.crt",
+  "pki/testdata/nist-pkits/certs/keyUsageCriticalkeyCertSignFalseCACert.crt",
+  "pki/testdata/nist-pkits/certs/keyUsageNotCriticalCACert.crt",
+  "pki/testdata/nist-pkits/certs/keyUsageNotCriticalcRLSignFalseCACert.crt",
+  "pki/testdata/nist-pkits/certs/keyUsageNotCriticalkeyCertSignFalseCACert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsDN1CACert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsDN1SelfIssuedCACert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsDN1subCA1Cert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsDN1subCA2Cert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsDN1subCA3Cert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsDN2CACert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsDN3CACert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsDN3subCA1Cert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsDN3subCA2Cert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsDN4CACert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsDN5CACert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsDNS1CACert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsDNS2CACert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsRFC822CA1Cert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsRFC822CA2Cert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsRFC822CA3Cert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsURI1CACert.crt",
+  "pki/testdata/nist-pkits/certs/nameConstraintsURI2CACert.crt",
+  "pki/testdata/nist-pkits/certs/onlyContainsAttributeCertsCACert.crt",
+  "pki/testdata/nist-pkits/certs/onlyContainsCACertsCACert.crt",
+  "pki/testdata/nist-pkits/certs/onlyContainsUserCertsCACert.crt",
+  "pki/testdata/nist-pkits/certs/onlySomeReasonsCA1Cert.crt",
+  "pki/testdata/nist-pkits/certs/onlySomeReasonsCA2Cert.crt",
+  "pki/testdata/nist-pkits/certs/onlySomeReasonsCA3Cert.crt",
+  "pki/testdata/nist-pkits/certs/onlySomeReasonsCA4Cert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint0CACert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint0SelfIssuedCACert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint0subCA2Cert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint0subCACert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint1CACert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint1SelfIssuedCACert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint1SelfIssuedsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint1subCACert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint6CACert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint6subCA0Cert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint6subCA1Cert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint6subCA4Cert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint6subsubCA00Cert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint6subsubCA11Cert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint6subsubCA41Cert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint6subsubsubCA11XCert.crt",
+  "pki/testdata/nist-pkits/certs/pathLenConstraint6subsubsubCA41XCert.crt",
+  "pki/testdata/nist-pkits/certs/pre2000CRLnextUpdateCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy0CACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy0subCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy0subsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy0subsubsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy10CACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy10subCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy10subsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy10subsubsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy2CACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy2SelfIssuedCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy2SelfIssuedsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy2subCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy4CACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy4subCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy4subsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy4subsubsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy5CACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy5subCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy5subsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy5subsubsubCACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy7CACert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy7subCARE2Cert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy7subsubCARE2RE4Cert.crt",
+  "pki/testdata/nist-pkits/certs/requireExplicitPolicy7subsubsubCARE2RE4Cert.crt",
+  "pki/testdata/nist-pkits/crls/BadCRLIssuerNameCACRL.crl",
+  "pki/testdata/nist-pkits/crls/BadCRLSignatureCACRL.crl",
+  "pki/testdata/nist-pkits/crls/BadSignedCACRL.crl",
+  "pki/testdata/nist-pkits/crls/BadnotAfterDateCACRL.crl",
+  "pki/testdata/nist-pkits/crls/BadnotBeforeDateCACRL.crl",
+  "pki/testdata/nist-pkits/crls/BasicSelfIssuedCRLSigningKeyCACRL.crl",
+  "pki/testdata/nist-pkits/crls/BasicSelfIssuedCRLSigningKeyCRLCertCRL.crl",
+  "pki/testdata/nist-pkits/crls/BasicSelfIssuedNewKeyCACRL.crl",
+  "pki/testdata/nist-pkits/crls/BasicSelfIssuedOldKeyCACRL.crl",
+  "pki/testdata/nist-pkits/crls/BasicSelfIssuedOldKeySelfIssuedCertCRL.crl",
+  "pki/testdata/nist-pkits/crls/DSACACRL.crl",
+  "pki/testdata/nist-pkits/crls/DSAParametersInheritedCACRL.crl",
+  "pki/testdata/nist-pkits/crls/GeneralizedTimeCRLnextUpdateCACRL.crl",
+  "pki/testdata/nist-pkits/crls/GoodCACRL.crl",
+  "pki/testdata/nist-pkits/crls/GoodsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/GoodsubCAPanyPolicyMapping1to2CACRL.crl",
+  "pki/testdata/nist-pkits/crls/LongSerialNumberCACRL.crl",
+  "pki/testdata/nist-pkits/crls/Mapping1to2CACRL.crl",
+  "pki/testdata/nist-pkits/crls/MappingFromanyPolicyCACRL.crl",
+  "pki/testdata/nist-pkits/crls/MappingToanyPolicyCACRL.crl",
+  "pki/testdata/nist-pkits/crls/MissingbasicConstraintsCACRL.crl",
+  "pki/testdata/nist-pkits/crls/NameOrderCACRL.crl",
+  "pki/testdata/nist-pkits/crls/NegativeSerialNumberCACRL.crl",
+  "pki/testdata/nist-pkits/crls/NoPoliciesCACRL.crl",
+  "pki/testdata/nist-pkits/crls/NoissuingDistributionPointCACRL.crl",
+  "pki/testdata/nist-pkits/crls/OldCRLnextUpdateCACRL.crl",
+  "pki/testdata/nist-pkits/crls/P12Mapping1to3CACRL.crl",
+  "pki/testdata/nist-pkits/crls/P12Mapping1to3subCACRL.crl",
+  "pki/testdata/nist-pkits/crls/P12Mapping1to3subsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/P1Mapping1to234CACRL.crl",
+  "pki/testdata/nist-pkits/crls/P1Mapping1to234subCACRL.crl",
+  "pki/testdata/nist-pkits/crls/P1anyPolicyMapping1to2CACRL.crl",
+  "pki/testdata/nist-pkits/crls/PanyPolicyMapping1to2CACRL.crl",
+  "pki/testdata/nist-pkits/crls/PoliciesP1234CACRL.crl",
+  "pki/testdata/nist-pkits/crls/PoliciesP1234subCAP123CRL.crl",
+  "pki/testdata/nist-pkits/crls/PoliciesP1234subsubCAP123P12CRL.crl",
+  "pki/testdata/nist-pkits/crls/PoliciesP123CACRL.crl",
+  "pki/testdata/nist-pkits/crls/PoliciesP123subCAP12CRL.crl",
+  "pki/testdata/nist-pkits/crls/PoliciesP123subsubCAP12P1CRL.crl",
+  "pki/testdata/nist-pkits/crls/PoliciesP123subsubCAP2P2CRL.crl",
+  "pki/testdata/nist-pkits/crls/PoliciesP123subsubsubCAP12P2P1CRL.crl",
+  "pki/testdata/nist-pkits/crls/PoliciesP12CACRL.crl",
+  "pki/testdata/nist-pkits/crls/PoliciesP12subCAP1CRL.crl",
+  "pki/testdata/nist-pkits/crls/PoliciesP12subsubCAP1P2CRL.crl",
+  "pki/testdata/nist-pkits/crls/PoliciesP2subCA2CRL.crl",
+  "pki/testdata/nist-pkits/crls/PoliciesP2subCACRL.crl",
+  "pki/testdata/nist-pkits/crls/PoliciesP3CACRL.crl",
+  "pki/testdata/nist-pkits/crls/RFC3280MandatoryAttributeTypesCACRL.crl",
+  "pki/testdata/nist-pkits/crls/RFC3280OptionalAttributeTypesCACRL.crl",
+  "pki/testdata/nist-pkits/crls/RevokedsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/RolloverfromPrintableStringtoUTF8StringCACRL.crl",
+  "pki/testdata/nist-pkits/crls/SeparateCertificateandCRLKeysCA2CRL.crl",
+  "pki/testdata/nist-pkits/crls/SeparateCertificateandCRLKeysCRL.crl",
+  "pki/testdata/nist-pkits/crls/TrustAnchorRootCRL.crl",
+  "pki/testdata/nist-pkits/crls/TwoCRLsCABadCRL.crl",
+  "pki/testdata/nist-pkits/crls/TwoCRLsCAGoodCRL.crl",
+  "pki/testdata/nist-pkits/crls/UIDCACRL.crl",
+  "pki/testdata/nist-pkits/crls/UTF8StringCaseInsensitiveMatchCACRL.crl",
+  "pki/testdata/nist-pkits/crls/UTF8StringEncodedNamesCACRL.crl",
+  "pki/testdata/nist-pkits/crls/UnknownCRLEntryExtensionCACRL.crl",
+  "pki/testdata/nist-pkits/crls/UnknownCRLExtensionCACRL.crl",
+  "pki/testdata/nist-pkits/crls/WrongCRLCACRL.crl",
+  "pki/testdata/nist-pkits/crls/anyPolicyCACRL.crl",
+  "pki/testdata/nist-pkits/crls/basicConstraintsCriticalcAFalseCACRL.crl",
+  "pki/testdata/nist-pkits/crls/basicConstraintsNotCriticalCACRL.crl",
+  "pki/testdata/nist-pkits/crls/basicConstraintsNotCriticalcAFalseCACRL.crl",
+  "pki/testdata/nist-pkits/crls/deltaCRLCA1CRL.crl",
+  "pki/testdata/nist-pkits/crls/deltaCRLCA1deltaCRL.crl",
+  "pki/testdata/nist-pkits/crls/deltaCRLCA2CRL.crl",
+  "pki/testdata/nist-pkits/crls/deltaCRLCA2deltaCRL.crl",
+  "pki/testdata/nist-pkits/crls/deltaCRLCA3CRL.crl",
+  "pki/testdata/nist-pkits/crls/deltaCRLCA3deltaCRL.crl",
+  "pki/testdata/nist-pkits/crls/deltaCRLIndicatorNoBaseCACRL.crl",
+  "pki/testdata/nist-pkits/crls/distributionPoint1CACRL.crl",
+  "pki/testdata/nist-pkits/crls/distributionPoint2CACRL.crl",
+  "pki/testdata/nist-pkits/crls/indirectCRLCA1CRL.crl",
+  "pki/testdata/nist-pkits/crls/indirectCRLCA3CRL.crl",
+  "pki/testdata/nist-pkits/crls/indirectCRLCA3cRLIssuerCRL.crl",
+  "pki/testdata/nist-pkits/crls/indirectCRLCA4cRLIssuerCRL.crl",
+  "pki/testdata/nist-pkits/crls/indirectCRLCA5CRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitAnyPolicy0CACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitAnyPolicy1CACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subCA1CRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subCA2CRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subCAIAP5CRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subsubCA2CRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitAnyPolicy5CACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitAnyPolicy5subCACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitAnyPolicy5subsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitPolicyMapping0CACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitPolicyMapping0subCACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12CACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subCACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subCAIPM5CRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subsubCAIPM5CRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P1CACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P1subCACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P1subsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitPolicyMapping5CACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitPolicyMapping5subCACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitPolicyMapping5subsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/inhibitPolicyMapping5subsubsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/keyUsageCriticalcRLSignFalseCACRL.crl",
+  "pki/testdata/nist-pkits/crls/keyUsageCriticalkeyCertSignFalseCACRL.crl",
+  "pki/testdata/nist-pkits/crls/keyUsageNotCriticalCACRL.crl",
+  "pki/testdata/nist-pkits/crls/keyUsageNotCriticalcRLSignFalseCACRL.crl",
+  "pki/testdata/nist-pkits/crls/keyUsageNotCriticalkeyCertSignFalseCACRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsDN1CACRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsDN1subCA1CRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsDN1subCA2CRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsDN1subCA3CRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsDN2CACRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsDN3CACRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsDN3subCA1CRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsDN3subCA2CRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsDN4CACRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsDN5CACRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsDNS1CACRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsDNS2CACRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsRFC822CA1CRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsRFC822CA2CRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsRFC822CA3CRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsURI1CACRL.crl",
+  "pki/testdata/nist-pkits/crls/nameConstraintsURI2CACRL.crl",
+  "pki/testdata/nist-pkits/crls/onlyContainsAttributeCertsCACRL.crl",
+  "pki/testdata/nist-pkits/crls/onlyContainsCACertsCACRL.crl",
+  "pki/testdata/nist-pkits/crls/onlyContainsUserCertsCACRL.crl",
+  "pki/testdata/nist-pkits/crls/onlySomeReasonsCA1compromiseCRL.crl",
+  "pki/testdata/nist-pkits/crls/onlySomeReasonsCA1otherreasonsCRL.crl",
+  "pki/testdata/nist-pkits/crls/onlySomeReasonsCA2CRL1.crl",
+  "pki/testdata/nist-pkits/crls/onlySomeReasonsCA2CRL2.crl",
+  "pki/testdata/nist-pkits/crls/onlySomeReasonsCA3compromiseCRL.crl",
+  "pki/testdata/nist-pkits/crls/onlySomeReasonsCA3otherreasonsCRL.crl",
+  "pki/testdata/nist-pkits/crls/onlySomeReasonsCA4compromiseCRL.crl",
+  "pki/testdata/nist-pkits/crls/onlySomeReasonsCA4otherreasonsCRL.crl",
+  "pki/testdata/nist-pkits/crls/pathLenConstraint0CACRL.crl",
+  "pki/testdata/nist-pkits/crls/pathLenConstraint0subCA2CRL.crl",
+  "pki/testdata/nist-pkits/crls/pathLenConstraint0subCACRL.crl",
+  "pki/testdata/nist-pkits/crls/pathLenConstraint1CACRL.crl",
+  "pki/testdata/nist-pkits/crls/pathLenConstraint1subCACRL.crl",
+  "pki/testdata/nist-pkits/crls/pathLenConstraint6CACRL.crl",
+  "pki/testdata/nist-pkits/crls/pathLenConstraint6subCA0CRL.crl",
+  "pki/testdata/nist-pkits/crls/pathLenConstraint6subCA1CRL.crl",
+  "pki/testdata/nist-pkits/crls/pathLenConstraint6subCA4CRL.crl",
+  "pki/testdata/nist-pkits/crls/pathLenConstraint6subsubCA00CRL.crl",
+  "pki/testdata/nist-pkits/crls/pathLenConstraint6subsubCA11CRL.crl",
+  "pki/testdata/nist-pkits/crls/pathLenConstraint6subsubCA41CRL.crl",
+  "pki/testdata/nist-pkits/crls/pathLenConstraint6subsubsubCA11XCRL.crl",
+  "pki/testdata/nist-pkits/crls/pathLenConstraint6subsubsubCA41XCRL.crl",
+  "pki/testdata/nist-pkits/crls/pre2000CRLnextUpdateCACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy0CACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy0subCACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy0subsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy0subsubsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy10CACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy10subCACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy10subsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy10subsubsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy2CACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy2subCACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy4CACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy4subCACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy4subsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy4subsubsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy5CACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy5subCACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy5subsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy5subsubsubCACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy7CACRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy7subCARE2CRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy7subsubCARE2RE4CRL.crl",
+  "pki/testdata/nist-pkits/crls/requireExplicitPolicy7subsubsubCARE2RE4CRL.crl",
+  "pki/testdata/ocsp_unittest/bad_ocsp_type.pem",
+  "pki/testdata/ocsp_unittest/bad_signature.pem",
+  "pki/testdata/ocsp_unittest/bad_status.pem",
+  "pki/testdata/ocsp_unittest/good_response.pem",
+  "pki/testdata/ocsp_unittest/good_response_next_update.pem",
+  "pki/testdata/ocsp_unittest/good_response_sha256.pem",
+  "pki/testdata/ocsp_unittest/has_critical_ct_extension.pem",
+  "pki/testdata/ocsp_unittest/has_critical_response_extension.pem",
+  "pki/testdata/ocsp_unittest/has_critical_single_extension.pem",
+  "pki/testdata/ocsp_unittest/has_extension.pem",
+  "pki/testdata/ocsp_unittest/has_single_extension.pem",
+  "pki/testdata/ocsp_unittest/has_version.pem",
+  "pki/testdata/ocsp_unittest/malformed_request.pem",
+  "pki/testdata/ocsp_unittest/missing_response.pem",
+  "pki/testdata/ocsp_unittest/multiple_response.pem",
+  "pki/testdata/ocsp_unittest/no_response.pem",
+  "pki/testdata/ocsp_unittest/ocsp_extra_certs.pem",
+  "pki/testdata/ocsp_unittest/ocsp_sign_bad_indirect.pem",
+  "pki/testdata/ocsp_unittest/ocsp_sign_direct.pem",
+  "pki/testdata/ocsp_unittest/ocsp_sign_indirect.pem",
+  "pki/testdata/ocsp_unittest/ocsp_sign_indirect_missing.pem",
+  "pki/testdata/ocsp_unittest/other_response.pem",
+  "pki/testdata/ocsp_unittest/responder_id.pem",
+  "pki/testdata/ocsp_unittest/responder_name.pem",
+  "pki/testdata/ocsp_unittest/revoke_response.pem",
+  "pki/testdata/ocsp_unittest/revoke_response_reason.pem",
+  "pki/testdata/ocsp_unittest/unknown_response.pem",
+  "pki/testdata/parse_certificate_unittest/authority_key_identifier/empty_sequence.pem",
+  "pki/testdata/parse_certificate_unittest/authority_key_identifier/extra_contents_after_extension_sequence.pem",
+  "pki/testdata/parse_certificate_unittest/authority_key_identifier/extra_contents_after_issuer_and_serial.pem",
+  "pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_contents.pem",
+  "pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_issuer.pem",
+  "pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_key_identifier.pem",
+  "pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_serial.pem",
+  "pki/testdata/parse_certificate_unittest/authority_key_identifier/issuer_and_serial.pem",
+  "pki/testdata/parse_certificate_unittest/authority_key_identifier/issuer_only.pem",
+  "pki/testdata/parse_certificate_unittest/authority_key_identifier/key_identifier.pem",
+  "pki/testdata/parse_certificate_unittest/authority_key_identifier/key_identifier_and_issuer_and_serial.pem",
+  "pki/testdata/parse_certificate_unittest/authority_key_identifier/serial_only.pem",
+  "pki/testdata/parse_certificate_unittest/authority_key_identifier/url_issuer_and_serial.pem",
+  "pki/testdata/parse_certificate_unittest/authority_key_identifier_not_sequence.pem",
+  "pki/testdata/parse_certificate_unittest/bad_key_usage.pem",
+  "pki/testdata/parse_certificate_unittest/bad_policy_qualifiers.pem",
+  "pki/testdata/parse_certificate_unittest/bad_signature_algorithm_oid.pem",
+  "pki/testdata/parse_certificate_unittest/bad_validity.pem",
+  "pki/testdata/parse_certificate_unittest/basic_constraints_ca_false.pem",
+  "pki/testdata/parse_certificate_unittest/basic_constraints_ca_no_path.pem",
+  "pki/testdata/parse_certificate_unittest/basic_constraints_ca_path_9.pem",
+  "pki/testdata/parse_certificate_unittest/basic_constraints_negative_path.pem",
+  "pki/testdata/parse_certificate_unittest/basic_constraints_not_ca.pem",
+  "pki/testdata/parse_certificate_unittest/basic_constraints_path_too_large.pem",
+  "pki/testdata/parse_certificate_unittest/basic_constraints_pathlen_255.pem",
+  "pki/testdata/parse_certificate_unittest/basic_constraints_pathlen_256.pem",
+  "pki/testdata/parse_certificate_unittest/basic_constraints_pathlen_not_ca.pem",
+  "pki/testdata/parse_certificate_unittest/basic_constraints_unconsumed_data.pem",
+  "pki/testdata/parse_certificate_unittest/cert_algorithm_not_sequence.pem",
+  "pki/testdata/parse_certificate_unittest/cert_data_after_signature.pem",
+  "pki/testdata/parse_certificate_unittest/cert_empty_sequence.pem",
+  "pki/testdata/parse_certificate_unittest/cert_missing_signature.pem",
+  "pki/testdata/parse_certificate_unittest/cert_not_sequence.pem",
+  "pki/testdata/parse_certificate_unittest/cert_signature_not_bit_string.pem",
+  "pki/testdata/parse_certificate_unittest/cert_skeleton.pem",
+  "pki/testdata/parse_certificate_unittest/cert_version3.pem",
+  "pki/testdata/parse_certificate_unittest/crldp_1uri_noissuer.pem",
+  "pki/testdata/parse_certificate_unittest/crldp_3uri_noissuer.pem",
+  "pki/testdata/parse_certificate_unittest/crldp_full_name_as_dirname.pem",
+  "pki/testdata/parse_certificate_unittest/crldp_issuer_as_dirname.pem",
+  "pki/testdata/parse_certificate_unittest/extended_key_usage.pem",
+  "pki/testdata/parse_certificate_unittest/extension_critical.pem",
+  "pki/testdata/parse_certificate_unittest/extension_critical_0.pem",
+  "pki/testdata/parse_certificate_unittest/extension_critical_3.pem",
+  "pki/testdata/parse_certificate_unittest/extension_not_critical.pem",
+  "pki/testdata/parse_certificate_unittest/extensions_data_after_sequence.pem",
+  "pki/testdata/parse_certificate_unittest/extensions_duplicate_key_usage.pem",
+  "pki/testdata/parse_certificate_unittest/extensions_empty_sequence.pem",
+  "pki/testdata/parse_certificate_unittest/extensions_not_sequence.pem",
+  "pki/testdata/parse_certificate_unittest/extensions_real.pem",
+  "pki/testdata/parse_certificate_unittest/failed_signature_algorithm.pem",
+  "pki/testdata/parse_certificate_unittest/inhibit_any_policy.pem",
+  "pki/testdata/parse_certificate_unittest/issuer_bad_printable_string.pem",
+  "pki/testdata/parse_certificate_unittest/key_usage.pem",
+  "pki/testdata/parse_certificate_unittest/name_constraints_bad_ip.pem",
+  "pki/testdata/parse_certificate_unittest/policies.pem",
+  "pki/testdata/parse_certificate_unittest/policy_constraints_empty.pem",
+  "pki/testdata/parse_certificate_unittest/policy_constraints_inhibit.pem",
+  "pki/testdata/parse_certificate_unittest/policy_constraints_inhibit_require.pem",
+  "pki/testdata/parse_certificate_unittest/policy_constraints_require.pem",
+  "pki/testdata/parse_certificate_unittest/policy_qualifiers_empty_sequence.pem",
+  "pki/testdata/parse_certificate_unittest/serial_37_bytes.pem",
+  "pki/testdata/parse_certificate_unittest/serial_negative.pem",
+  "pki/testdata/parse_certificate_unittest/serial_not_minimal.pem",
+  "pki/testdata/parse_certificate_unittest/serial_not_number.pem",
+  "pki/testdata/parse_certificate_unittest/serial_zero.pem",
+  "pki/testdata/parse_certificate_unittest/serial_zero_padded.pem",
+  "pki/testdata/parse_certificate_unittest/serial_zero_padded_21_bytes.pem",
+  "pki/testdata/parse_certificate_unittest/signature_algorithm_null.pem",
+  "pki/testdata/parse_certificate_unittest/subject_alt_name.pem",
+  "pki/testdata/parse_certificate_unittest/subject_blank_subjectaltname_not_critical.pem",
+  "pki/testdata/parse_certificate_unittest/subject_key_identifier_not_octet_string.pem",
+  "pki/testdata/parse_certificate_unittest/subject_not_ascii.pem",
+  "pki/testdata/parse_certificate_unittest/subject_not_printable_string.pem",
+  "pki/testdata/parse_certificate_unittest/subject_printable_string_containing_utf8_client_cert.pem",
+  "pki/testdata/parse_certificate_unittest/subject_t61string.pem",
+  "pki/testdata/parse_certificate_unittest/subject_t61string_1-32.pem",
+  "pki/testdata/parse_certificate_unittest/subject_t61string_126-160.pem",
+  "pki/testdata/parse_certificate_unittest/subject_t61string_actual.pem",
+  "pki/testdata/parse_certificate_unittest/subjectaltname_bad_ip.pem",
+  "pki/testdata/parse_certificate_unittest/subjectaltname_dns_not_ascii.pem",
+  "pki/testdata/parse_certificate_unittest/subjectaltname_general_names_empty_sequence.pem",
+  "pki/testdata/parse_certificate_unittest/subjectaltname_trailing_data.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_explicit_v1.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_v1.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_v1_extensions.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_v2_extensions.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_v2_issuer_and_subject_unique_id.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_v2_issuer_unique_id.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_v2_no_optionals.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_v3_all_optionals.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_v3_data_after_extensions.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_v3_extensions.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_v3_extensions_not_sequence.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_v3_no_optionals.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_v3_real.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_v4.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_validity_both_generalized_time.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_validity_both_utc_time.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_validity_generalized_time_and_utc_time.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_validity_relaxed.pem",
+  "pki/testdata/parse_certificate_unittest/tbs_validity_utc_time_and_generalized_time.pem",
+  "pki/testdata/parse_certificate_unittest/v1_explicit_version.pem",
+  "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/int_match_name_only.pem",
+  "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/int_matching.pem",
+  "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/int_mismatch.pem",
+  "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/root.pem",
+  "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/root2.pem",
+  "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/target.pem",
+  "pki/testdata/path_builder_unittest/key_id_prioritization/int_different_ski_a.pem",
+  "pki/testdata/path_builder_unittest/key_id_prioritization/int_different_ski_b.pem",
+  "pki/testdata/path_builder_unittest/key_id_prioritization/int_different_ski_c.pem",
+  "pki/testdata/path_builder_unittest/key_id_prioritization/int_matching_ski_a.pem",
+  "pki/testdata/path_builder_unittest/key_id_prioritization/int_matching_ski_b.pem",
+  "pki/testdata/path_builder_unittest/key_id_prioritization/int_matching_ski_c.pem",
+  "pki/testdata/path_builder_unittest/key_id_prioritization/int_no_ski_a.pem",
+  "pki/testdata/path_builder_unittest/key_id_prioritization/int_no_ski_b.pem",
+  "pki/testdata/path_builder_unittest/key_id_prioritization/int_no_ski_c.pem",
+  "pki/testdata/path_builder_unittest/key_id_prioritization/root.pem",
+  "pki/testdata/path_builder_unittest/key_id_prioritization/target.pem",
+  "pki/testdata/path_builder_unittest/multi-root-A-by-B.pem",
+  "pki/testdata/path_builder_unittest/multi-root-B-by-C.pem",
+  "pki/testdata/path_builder_unittest/multi-root-B-by-F.pem",
+  "pki/testdata/path_builder_unittest/multi-root-C-by-D.pem",
+  "pki/testdata/path_builder_unittest/multi-root-C-by-E.pem",
+  "pki/testdata/path_builder_unittest/multi-root-D-by-D.pem",
+  "pki/testdata/path_builder_unittest/multi-root-E-by-E.pem",
+  "pki/testdata/path_builder_unittest/multi-root-F-by-E.pem",
+  "pki/testdata/path_builder_unittest/precertificate/precertificate.pem",
+  "pki/testdata/path_builder_unittest/precertificate/root.pem",
+  "pki/testdata/path_builder_unittest/self_issued_prioritization/root1.pem",
+  "pki/testdata/path_builder_unittest/self_issued_prioritization/root1_cross.pem",
+  "pki/testdata/path_builder_unittest/self_issued_prioritization/root2.pem",
+  "pki/testdata/path_builder_unittest/self_issued_prioritization/target.pem",
+  "pki/testdata/path_builder_unittest/validity_date_prioritization/int_ac.pem",
+  "pki/testdata/path_builder_unittest/validity_date_prioritization/int_ad.pem",
+  "pki/testdata/path_builder_unittest/validity_date_prioritization/int_bc.pem",
+  "pki/testdata/path_builder_unittest/validity_date_prioritization/int_bd.pem",
+  "pki/testdata/path_builder_unittest/validity_date_prioritization/root.pem",
+  "pki/testdata/path_builder_unittest/validity_date_prioritization/target.pem",
+  "pki/testdata/verify_certificate_chain_unittest/basic-constraints-pathlen-0-self-issued/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/basic-constraints-pathlen-0-self-issued/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/expired-intermediate/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/expired-intermediate/not-after.test",
+  "pki/testdata/verify_certificate_chain_unittest/expired-intermediate/not-before.test",
+  "pki/testdata/verify_certificate_chain_unittest/expired-root/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/expired-root/not-after-ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/expired-root/not-after-ta-with-expiration-and-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/expired-root/not-after-ta-with-expiration.test",
+  "pki/testdata/verify_certificate_chain_unittest/expired-root/not-after.test",
+  "pki/testdata/verify_certificate_chain_unittest/expired-root/not-before-ta-with-expiration.test",
+  "pki/testdata/verify_certificate_chain_unittest/expired-root/not-before.test",
+  "pki/testdata/verify_certificate_chain_unittest/expired-target/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/expired-target/not-after.test",
+  "pki/testdata/verify_certificate_chain_unittest/expired-target/not-before.test",
+  "pki/testdata/verify_certificate_chain_unittest/incorrect-trust-anchor/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/incorrect-trust-anchor/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-and-target-wrong-signature/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-and-target-wrong-signature/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-ca-false/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-ca-false/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-not-critical/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-not-critical/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/any.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/clientauth-strict-leaf.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/clientauth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/clientauth.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/serverauth-strict-leaf.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/serverauth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/serverauth.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/any.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/clientauth-strict-leaf.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/clientauth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/clientauth.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/serverauth-strict-leaf.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/serverauth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/serverauth.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-any.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-clientAuth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-clientAuth.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-any.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-clientAuth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-clientAuth.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-invalid-spki/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-invalid-spki/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-basic-constraints/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-basic-constraints/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-signing-key-usage/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-signing-key-usage/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-signed-with-sha1/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-signed-with-sha1/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-critical-extension/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-critical-extension/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-non-critical-extension/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-non-critical-extension/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-wrong-signature-no-authority-key-identifier/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/intermediate-wrong-signature-no-authority-key-identifier/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/anchor.pem",
+  "pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/anchor.test",
+  "pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/target.pem",
+  "pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/target.test",
+  "pki/testdata/verify_certificate_chain_unittest/key-rollover/longrolloverchain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/key-rollover/longrolloverchain.test",
+  "pki/testdata/verify_certificate_chain_unittest/key-rollover/newchain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/key-rollover/newchain.test",
+  "pki/testdata/verify_certificate_chain_unittest/key-rollover/oldchain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/key-rollover/oldchain.test",
+  "pki/testdata/verify_certificate_chain_unittest/key-rollover/rolloverchain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/key-rollover/rolloverchain.test",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/ok-all-types.pem",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/ok-all-types.test",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-all-types.pem",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-all-types.test",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-excluded.pem",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-excluded.test",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-permitted.pem",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-permitted.test",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-excluded.pem",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-excluded.test",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-permitted.pem",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-permitted.test",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-excluded.pem",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-excluded.test",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-permitted.pem",
+  "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-permitted.test",
+  "pki/testdata/verify_certificate_chain_unittest/non-self-signed-root/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/non-self-signed-root/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/non-self-signed-root/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.2.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.3.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.4.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.5.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.6.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.1.2.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.1.3.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.10.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.13.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.2.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.3.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.4.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.5.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.6.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.7.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.8.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.1.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.10.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.11.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.3.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.5.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.6.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.8.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.9.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.1.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.10.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.3.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.4.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.5.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.6.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.8.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.10.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.12.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.13.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.15.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.16.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.17.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.2.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.20.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.21.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.22.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.23.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.24.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.25.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.26.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.27.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.28.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.29.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.3.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.31.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.33.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.34.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.35.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.36.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.37.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.38.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.7.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.8.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.9.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.16.2.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.1.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.2.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.5.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.6.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.7.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.3.1.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.3.2.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.1.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.10.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.11.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.12.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.16.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.2.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.3.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.5.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.6.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.9.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.7.1.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.7.2.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.1.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.12.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.14.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.2.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.3.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.4.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.5.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.6.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.7.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.8.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.9.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.3.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.5.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.7.txt",
+  "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.8.txt",
+  "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-fail/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-fail/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-fail/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-ok/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-ok/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-ok/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-fail/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-fail/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-fail/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-ok/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-ok/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-ok/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-ok/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/policies-ok/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-ok/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-on-root-ok/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/policies-on-root-ok/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-on-root-ok/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-on-root-wrong/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/policies-on-root-wrong/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-on-root-wrong/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-fail/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-fail/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-fail/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-ok/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-ok/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-ok/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-fail/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-fail/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-fail/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-ok/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-ok/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-ok/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/root-basic-constraints-ca-false/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/root-basic-constraints-ca-false/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/root-basic-constraints-ca-false/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-constraints-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-expiration-and-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-expiration.test",
+  "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth.test",
+  "pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/ta-with-constraints-require-basic-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/ta-with-require-basic-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/root-lacks-keycertsign-key-usage/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/root-lacks-keycertsign-key-usage/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/root-lacks-keycertsign-key-usage/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/distrusted-root-expired.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/distrusted-root.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/ta-with-constraints.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/ta-with-expiration.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/trusted_leaf-and-trust_anchor.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/trusted_leaf-root.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/unspecified-trust-root.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-any/any.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-any/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-any/clientauth-strict-leaf.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-any/clientauth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-any/clientauth.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-any/serverauth-strict-leaf.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-any/serverauth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-any/serverauth.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/any.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/clientauth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/clientauth.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/serverauth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/serverauth.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-many/any.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-many/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-many/clientauth-strict-leaf.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-many/clientauth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-many/clientauth.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-many/serverauth-strict-leaf.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-many/serverauth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-many/serverauth.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-none/any.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-none/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-none/clientauth-strict-leaf.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-none/clientauth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-none/clientauth.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-none/serverauth-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-eku-none/serverauth.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-has-512bit-rsa-key/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-has-512bit-rsa-key/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/target_only-trusted_leaf-strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/target_only-trusted_leaf.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/target_only.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-has-keycertsign-but-not-ca/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-has-keycertsign-but-not-ca/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-has-pathlen-but-not-ca/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-has-pathlen-but-not-ca/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-and-eku/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-and-eku/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-no-eku/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-no-eku/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/strict-leaf.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/strict.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-only/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_anchor.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf-and-trust_anchor.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf-not_after.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf-wrong_eku.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf_require_self_signed.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-selfissued/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_anchor.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_leaf-and-trust_anchor.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_leaf.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_leaf_require_self_signed.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf-and-trust_anchor.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf-not_after.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf-wrong_eku.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf_require_self_signed.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-decipherOnly.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-decipherOnly.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-digitalSignature.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-digitalSignature.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyAgreement.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyAgreement.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyEncipherment.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyEncipherment.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-decipherOnly.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-decipherOnly.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-digitalSignature.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-digitalSignature.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyAgreement.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyAgreement.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyEncipherment.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyEncipherment.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-signed-by-512bit-rsa/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-signed-by-512bit-rsa/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-signed-using-ecdsa/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-signed-using-ecdsa/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-signed-with-sha1/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-signed-with-sha1/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/target_only-trusted_leaf.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/target_only.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-wrong-signature-no-authority-key-identifier/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-wrong-signature-no-authority-key-identifier/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/target-wrong-signature/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/target-wrong-signature/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/violates-basic-constraints-pathlen-0/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/violates-basic-constraints-pathlen-0/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/violates-pathlen-1-from-root/chain.pem",
+  "pki/testdata/verify_certificate_chain_unittest/violates-pathlen-1-from-root/main.test",
+  "pki/testdata/verify_certificate_chain_unittest/violates-pathlen-1-from-root/ta-with-constraints.test",
+  "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap-dupe_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap-extra_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap-extra_rdn.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace-dupe_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace-extra_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace-extra_rdn.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled-dupe_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled-extra_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled-extra_rdn.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap-dupe_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap-extra_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap-extra_rdn.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace-dupe_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace-extra_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace-extra_rdn.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-rdn_sorting_1.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-rdn_sorting_2.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled-dupe_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled-extra_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled-extra_rdn.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap-dupe_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap-extra_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap-extra_rdn.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace-dupe_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace-extra_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace-extra_rdn.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled-dupe_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled-extra_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled-extra_rdn.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap-dupe_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap-extra_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap-extra_rdn.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace-dupe_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace-extra_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace-extra_rdn.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled-dupe_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled-extra_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled-extra_rdn.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap-dupe_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap-extra_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap-extra_rdn.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace-dupe_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace-extra_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace-extra_rdn.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled-dupe_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled-extra_attr.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled-extra_rdn.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-mixed-rdn_dupetype_sorting_1.pem",
+  "pki/testdata/verify_name_match_unittest/names/ascii-mixed-rdn_dupetype_sorting_2.pem",
+  "pki/testdata/verify_name_match_unittest/names/custom-custom-normalized.pem",
+  "pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-badAttributeType.pem",
+  "pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-empty.pem",
+  "pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-extradata.pem",
+  "pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-onlyOneElement.pem",
+  "pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-setNotSequence.pem",
+  "pki/testdata/verify_name_match_unittest/names/invalid-Name-setInsteadOfSequence.pem",
+  "pki/testdata/verify_name_match_unittest/names/invalid-RDN-empty.pem",
+  "pki/testdata/verify_name_match_unittest/names/invalid-RDN-sequenceInsteadOfSet.pem",
+  "pki/testdata/verify_name_match_unittest/names/unicode-mixed-normalized.pem",
+  "pki/testdata/verify_name_match_unittest/names/unicode-mixed-unnormalized.pem",
+  "pki/testdata/verify_name_match_unittest/names/unicode_bmp-BMPSTRING-unmangled.pem",
+  "pki/testdata/verify_name_match_unittest/names/unicode_bmp-UNIVERSALSTRING-unmangled.pem",
+  "pki/testdata/verify_name_match_unittest/names/unicode_bmp-UTF8-unmangled.pem",
+  "pki/testdata/verify_name_match_unittest/names/unicode_supplementary-UNIVERSALSTRING-unmangled.pem",
+  "pki/testdata/verify_name_match_unittest/names/unicode_supplementary-UTF8-unmangled.pem",
+  "pki/testdata/verify_name_match_unittest/names/valid-Name-empty.pem",
+  "pki/testdata/verify_name_match_unittest/names/valid-minimal.pem",
+  "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-spki-params-null.pem",
+  "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-unused-bits-signature.pem",
+  "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-using-ecdh-key.pem",
+  "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-using-ecmqv-key.pem",
+  "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-using-rsa-algorithm.pem",
+  "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-wrong-signature-format.pem",
+  "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512.pem",
+  "pki/testdata/verify_signed_data_unittest/ecdsa-secp384r1-sha256-corrupted-data.pem",
+  "pki/testdata/verify_signed_data_unittest/ecdsa-secp384r1-sha256.pem",
+  "pki/testdata/verify_signed_data_unittest/ecdsa-using-rsa-key.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-bad-key-der-length.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-bad-key-der-null.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-key-params-absent.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-using-pss-key-no-params.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-wrong-algorithm.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-key-encoded-ber.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-spki-non-null-params.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-using-ecdsa-algorithm.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-using-id-ea-rsa.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa-pss-sha256-using-pss-key-with-params.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa-pss-sha256-wrong-salt.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa-pss-sha256.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa-using-ec-key.pem",
+  "pki/testdata/verify_signed_data_unittest/rsa2048-pkcs1-sha512.pem",
+  "pki/testdata/verify_unittest/google-leaf.der",
+  "pki/testdata/verify_unittest/self-issued.pem",
+]
+
+ssl_sources = [
+  "ssl/bio_ssl.cc",
+  "ssl/d1_both.cc",
+  "ssl/d1_lib.cc",
+  "ssl/d1_pkt.cc",
+  "ssl/d1_srtp.cc",
+  "ssl/dtls_method.cc",
+  "ssl/dtls_record.cc",
+  "ssl/encrypted_client_hello.cc",
+  "ssl/extensions.cc",
+  "ssl/handoff.cc",
+  "ssl/handshake.cc",
+  "ssl/handshake_client.cc",
+  "ssl/handshake_server.cc",
+  "ssl/s3_both.cc",
+  "ssl/s3_lib.cc",
+  "ssl/s3_pkt.cc",
+  "ssl/ssl_aead_ctx.cc",
+  "ssl/ssl_asn1.cc",
+  "ssl/ssl_buffer.cc",
+  "ssl/ssl_cert.cc",
+  "ssl/ssl_cipher.cc",
+  "ssl/ssl_credential.cc",
+  "ssl/ssl_file.cc",
+  "ssl/ssl_key_share.cc",
+  "ssl/ssl_lib.cc",
+  "ssl/ssl_privkey.cc",
+  "ssl/ssl_session.cc",
+  "ssl/ssl_stat.cc",
+  "ssl/ssl_transcript.cc",
+  "ssl/ssl_versions.cc",
+  "ssl/ssl_x509.cc",
+  "ssl/t1_enc.cc",
+  "ssl/tls13_both.cc",
+  "ssl/tls13_client.cc",
+  "ssl/tls13_enc.cc",
+  "ssl/tls13_server.cc",
+  "ssl/tls_method.cc",
+  "ssl/tls_record.cc",
+]
+
+ssl_headers = [
+  "include/openssl/dtls1.h",
+  "include/openssl/srtp.h",
+  "include/openssl/ssl.h",
+  "include/openssl/ssl3.h",
+  "include/openssl/tls1.h",
+]
+
+ssl_internal_headers = [
+  "ssl/internal.h",
+]
+
+ssl_test_sources = [
+  "crypto/test/gtest_main.cc",
+  "ssl/span_test.cc",
+  "ssl/ssl_c_test.c",
+  "ssl/ssl_test.cc",
+]
+
+test_support_sources = [
+  "crypto/test/abi_test.cc",
+  "crypto/test/file_test.cc",
+  "crypto/test/file_test_gtest.cc",
+  "crypto/test/file_util.cc",
+  "crypto/test/test_data.cc",
+  "crypto/test/test_util.cc",
+  "crypto/test/wycheproof_util.cc",
+]
+
+test_support_internal_headers = [
+  "crypto/test/abi_test.h",
+  "crypto/test/file_test.h",
+  "crypto/test/file_util.h",
+  "crypto/test/gtest_main.h",
+  "crypto/test/test_data.h",
+  "crypto/test/test_util.h",
+  "crypto/test/wycheproof_util.h",
+  "ssl/test/async_bio.h",
+  "ssl/test/fuzzer.h",
+  "ssl/test/fuzzer_tags.h",
+  "ssl/test/handshake_util.h",
+  "ssl/test/mock_quic_transport.h",
+  "ssl/test/packeted_bio.h",
+  "ssl/test/settings_writer.h",
+  "ssl/test/test_config.h",
+  "ssl/test/test_state.h",
+]
+
+test_support_sources_asm = [
+  "gen/test_support/trampoline-armv4-linux.S",
+  "gen/test_support/trampoline-armv8-apple.S",
+  "gen/test_support/trampoline-armv8-linux.S",
+  "gen/test_support/trampoline-armv8-win.S",
+  "gen/test_support/trampoline-x86-apple.S",
+  "gen/test_support/trampoline-x86-linux.S",
+  "gen/test_support/trampoline-x86_64-apple.S",
+  "gen/test_support/trampoline-x86_64-linux.S",
+]
+
+test_support_sources_nasm = [
+  "gen/test_support/trampoline-x86-win.asm",
+  "gen/test_support/trampoline-x86_64-win.asm",
+]
+
+urandom_test_sources = [
+  "crypto/fipsmodule/rand/urandom_test.cc",
+]
diff --git a/gen/sources.cmake b/gen/sources.cmake
index 52dc5de..a050003 100644
--- a/gen/sources.cmake
+++ b/gen/sources.cmake
@@ -1037,6 +1037,13 @@
 )
 
 set(
+  DECREPIT_INTERNAL_HEADERS
+
+  decrepit/cast/internal.h
+  decrepit/macros.h
+)
+
+set(
   DECREPIT_TEST_SOURCES
 
   crypto/test/gtest_main.cc
diff --git a/gen/sources.json b/gen/sources.json
index 0f13f82..c77f70f 100644
--- a/gen/sources.json
+++ b/gen/sources.json
@@ -987,6 +987,10 @@
       "decrepit/ssl/ssl_decrepit.c",
       "decrepit/x509/x509_decrepit.c",
       "decrepit/xts/xts.c"
+    ],
+    "internal_hdrs": [
+      "decrepit/cast/internal.h",
+      "decrepit/macros.h"
     ]
   },
   "decrepit_test": {
diff --git a/util/bazel-example/BUILD.bazel b/util/bazel-example/BUILD.bazel
new file mode 100644
index 0000000..a38c3d5
--- /dev/null
+++ b/util/bazel-example/BUILD.bazel
@@ -0,0 +1,19 @@
+# Copyright (c) 2024, Google Inc.
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+cc_binary(
+    name = "example",
+    srcs = ["example.cc"],
+    deps = ["@boringssl//:crypto"],
+)
diff --git a/util/bazel-example/MODULE.bazel b/util/bazel-example/MODULE.bazel
new file mode 100644
index 0000000..c5f5ec5
--- /dev/null
+++ b/util/bazel-example/MODULE.bazel
@@ -0,0 +1,21 @@
+# Copyright (c) 2024, Google Inc.
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+module(name = "bazel-example")
+
+bazel_dep(name = "boringssl")
+local_path_override(
+    module_name = "boringssl",
+    path = "../..",
+)
diff --git a/util/bazel-example/README.md b/util/bazel-example/README.md
new file mode 100644
index 0000000..a09bdcd
--- /dev/null
+++ b/util/bazel-example/README.md
@@ -0,0 +1,5 @@
+# Test module
+
+This is a Bazel
+[test module](https://github.com/bazelbuild/bazel-central-registry/tree/main/docs#test-module)
+to confirm consuming the BoringSSL module works.
diff --git a/util/bazel-example/example.cc b/util/bazel-example/example.cc
new file mode 100644
index 0000000..cece0d0
--- /dev/null
+++ b/util/bazel-example/example.cc
@@ -0,0 +1,22 @@
+/* Copyright (c) 2024, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include <stdio.h>
+
+#include <openssl/crypto.h>
+
+int main() {
+  printf("Linked to %s\n", OpenSSL_version(OPENSSL_VERSION));
+  return 0;
+}
diff --git a/util/pregenerate/build.go b/util/pregenerate/build.go
index 192a1ea..4d8bbcd 100644
--- a/util/pregenerate/build.go
+++ b/util/pregenerate/build.go
@@ -306,6 +306,7 @@
 	// TODO(crbug.com/boringssl/542): Generate the build files for the other
 	// types as well.
 	return []Task{
+		buildVariablesTask(targets, "gen/sources.bzl", "#", writeBazelVariable),
 		buildVariablesTask(targets, "gen/sources.cmake", "#", writeCMakeVariable),
 		jsonTask(targets, "gen/sources.json"),
 	}
diff --git a/util/util.bzl b/util/util.bzl
new file mode 100644
index 0000000..434efc7
--- /dev/null
+++ b/util/util.bzl
@@ -0,0 +1,299 @@
+# Copyright (c) 2024, Google Inc.
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
+
+# Configure C, C++, and common flags for GCC-compatible toolchains.
+#
+# TODO(davidben): Can we remove some of these? In Bazel, are warnings the
+# toolchain or project's responsibility? -fno-common did not become default
+# until https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85678.
+gcc_copts = [
+    # This list of warnings should match those in the top-level CMakeLists.txt.
+    "-Wall",
+    "-Werror",
+    "-Wformat=2",
+    "-Wsign-compare",
+    "-Wmissing-field-initializers",
+    "-Wwrite-strings",
+    "-Wshadow",
+    "-fno-common",
+]
+
+gcc_copts_cxx = [
+    "-Wmissing-declarations",
+]
+
+gcc_copts_c = [
+    "-Wmissing-prototypes",
+    "-Wold-style-definition",
+    "-Wstrict-prototypes",
+]
+
+boringssl_copts_common = select({
+    # This condition and the asm_srcs_used one below must be kept in sync.
+    "@platforms//os:windows": ["-DOPENSSL_NO_ASM"],
+    "//conditions:default": [],
+}) + select({
+    # We assume that non-Windows builds use a GCC-compatible toolchain and that
+    # Windows builds do not.
+    #
+    # TODO(davidben): Should these be querying something in @bazel_tools?
+    # Unfortunately, @bazel_tools is undocumented. See
+    # https://github.com/bazelbuild/bazel/issues/14914
+    "@platforms//os:windows": [],
+    "//conditions:default": gcc_copts,
+}) + select({
+    # This is needed on glibc systems to get rwlock in pthreads, but it should
+    # not be set on Apple platforms or FreeBSD, where it instead disables APIs
+    # we use.
+    # See compat(5), sys/cdefs.h, and https://crbug.com/boringssl/471
+    "@platforms//os:linux": ["-D_XOPEN_SOURCE=700"],
+    # Without WIN32_LEAN_AND_MEAN, <windows.h> pulls in wincrypt.h, which
+    # conflicts with our <openssl/x509.h>.
+    "@platforms//os:windows": ["-DWIN32_LEAN_AND_MEAN", "-utf-8"],
+    "//conditions:default": [],
+})
+
+# We do not specify the C++ version here because Bazel expects C++ version
+# to come from the top-level toolchain. The concern is that different C++
+# versions may cause ABIs, notably Abseil's, to change.
+boringssl_copts_cxx = boringssl_copts_common + select({
+    "@platforms//os:windows": [],
+    "//conditions:default": gcc_copts_cxx,
+})
+
+# We specify the C version because Bazel projects often do not remember to
+# specify the C version. We do not expect ABIs to vary by C versions, at least
+# for our code or the headers we include, so configure the C version inside the
+# library. If Bazel's C/C++ version handling improves, we may reconsider this.
+boringssl_copts_c = boringssl_copts_common + select({
+    "@platforms//os:windows": ["/std:c11"],
+    "//conditions:default": ["-std=c11"] + gcc_copts_c,
+})
+
+def handle_mixed_c_cxx(
+        name,
+        copts,
+        deps,
+        internal_hdrs,
+        includes,
+        linkopts,
+        srcs,
+        testonly):
+    """
+    Works around https://github.com/bazelbuild/bazel/issues/22041. Determines
+    whether a target contains C, C++, or both. If the target is multi-language,
+    the C sources are split into a separate library. Returns a tuple of updated
+    (copts, deps, srcs) to apply.
+    """
+    has_c, has_cxx = False, False
+    for src in srcs:
+        if src.endswith(".c"):
+            has_c = True
+        elif src.endswith(".cc"):
+            has_cxx = True
+
+    # If a target has both C and C++, we need to split it in two.
+    if has_c and has_cxx:
+        srcs_c = [src for src in srcs if src.endswith(".c") or src.endswith(".h")]
+        name_c = name + "_c"
+        cc_library(
+            name = name_c,
+            srcs = srcs_c + internal_hdrs,
+            copts = copts + boringssl_copts_c,
+            includes = includes,
+            # This target only exists to be linked into the main library, so
+            # always link it statically.
+            linkstatic = True,
+            linkopts = linkopts,
+            deps = deps,
+            testonly = testonly,
+        )
+
+        # Build the remainder as a C++-only target.
+        deps += [":" + name_c]
+        srcs = [src for src in srcs if not src.endswith(".c")]
+        has_c = False
+
+    if has_c:
+        copts += boringssl_copts_c
+    else:
+        copts += boringssl_copts_cxx
+
+    return copts, deps, srcs
+
+def handle_asm_srcs(asm_srcs):
+    if not asm_srcs:
+        return []
+
+    # By default, the C files will expect assembly files, if any, to be linked
+    # in with the build. This default can be flipped with -DOPENSSL_NO_ASM. If
+    # building in a configuration where we have no assembly optimizations,
+    # -DOPENSSL_NO_ASM has no effect, and either value is fine.
+    #
+    # Like C files, assembly files are wrapped in #ifdef (or NASM equivalent),
+    # so it is safe to include a file for the wrong platform in the build. It
+    # will just output an empty object file. However, we need some platform
+    # selectors to distinguish between gas or NASM syntax.
+    #
+    # For all non-Windows platforms, we use gas assembly syntax and can assume
+    # any GCC-compatible toolchain includes a gas-compatible assembler.
+    #
+    # For Windows, we use NASM on x86 and x86_64 and gas, specifically
+    # clang-assembler, on aarch64. We have not yet added NASM support to this
+    # build, and would need to detect MSVC vs clang-cl for aarch64 so, for now,
+    # we just disable assembly on Windows across the board.
+    #
+    # This select and the corresponding one in boringssl_copts_common must be
+    # kept in sync.
+    #
+    # TODO(https://crbug.com/boringssl/531): Enable assembly for Windows.
+    return select({
+        "@platforms//os:windows": [],
+        "//conditions:default": asm_srcs,
+    })
+
+def linkstatic_kwargs(linkstatic):
+    # Although Bazel's documentation says linkstatic defaults to True or False
+    # for the various target types, this is not true. The defaults differ by
+    # platform non-Windows and True on Windows. There is now way to request the
+    # default except to omit the parameter, so we must use kwargs.
+    kwargs = {}
+    if linkstatic != None:
+        kwargs["linkstatic"] = linkstatic
+    return kwargs
+
+def bssl_cc_library(
+        name,
+        asm_srcs = [],
+        copts = [],
+        deps = [],
+        hdrs = [],
+        includes = [],
+        internal_hdrs = [],
+        linkopts = [],
+        linkstatic = None,
+        srcs = [],
+        testonly = False,
+        visibility = []):
+    copts, deps, srcs = handle_mixed_c_cxx(
+        name = name,
+        copts = copts,
+        deps = deps,
+        internal_hdrs = hdrs + internal_hdrs,
+        includes = includes,
+        linkopts = linkopts,
+        srcs = srcs,
+        testonly = testonly,
+    )
+
+    # BoringSSL's notion of internal headers are slightly different from
+    # Bazel's. libcrypto's internal headers may be used by libssl, but they
+    # cannot be used outside the library. To express this, we make separate
+    # internal and external targets. This impact's Bazel's layering check.
+    name_internal = name
+    if visibility:
+        name_internal = name + "_internal"
+
+    cc_library(
+        name = name_internal,
+        srcs = srcs + handle_asm_srcs(asm_srcs),
+        hdrs = hdrs + internal_hdrs,
+        copts = copts,
+        includes = includes,
+        linkopts = linkopts,
+        deps = deps,
+        testonly = testonly,
+        **linkstatic_kwargs(linkstatic)
+    )
+
+    if visibility:
+        cc_library(
+            name = name,
+            hdrs = hdrs,
+            deps = [":" + name_internal],
+            visibility = visibility,
+        )
+
+def bssl_cc_binary(
+        name,
+        srcs = [],
+        asm_srcs = [],
+        copts = [],
+        includes = [],
+        linkstatic = None,
+        linkopts = [],
+        deps = [],
+        testonly = False,
+        visibility = []):
+    copts, deps, srcs = handle_mixed_c_cxx(
+        name = name,
+        copts = copts,
+        deps = deps,
+        internal_hdrs = [],
+        includes = includes,
+        linkopts = linkopts,
+        srcs = srcs,
+        testonly = testonly,
+    )
+
+    cc_binary(
+        name = name,
+        srcs = srcs + handle_asm_srcs(asm_srcs),
+        copts = copts,
+        includes = includes,
+        linkopts = linkopts,
+        deps = deps,
+        testonly = testonly,
+        visibility = visibility,
+        **linkstatic_kwargs(linkstatic)
+    )
+
+def bssl_cc_test(
+        name,
+        srcs = [],
+        asm_srcs = [],
+        data = [],
+        size = "medium",
+        internal_hdrs = [],
+        copts = [],
+        includes = [],
+        linkopts = [],
+        linkstatic = None,
+        deps = [],
+        shard_count = None):
+    copts, deps, srcs = handle_mixed_c_cxx(
+        name = name,
+        copts = copts,
+        deps = deps,
+        internal_hdrs = [],
+        includes = includes,
+        linkopts = linkopts,
+        srcs = srcs,
+        testonly = True,
+    )
+
+    cc_test(
+        name = name,
+        data = data,
+        deps = deps,
+        srcs = srcs + handle_asm_srcs(asm_srcs),
+        copts = copts,
+        includes = includes,
+        linkopts = linkopts,
+        shard_count = shard_count,
+        size = size,
+        **linkstatic_kwargs(linkstatic)
+    )