Update cxx to latest master

* Update build to match upstream's use of edition 2021

Test: mmm
Change-Id: Iad58f8bb416050de4fb3f3087c051d680a2180e7
diff --git a/.bazelrc b/.bazelrc
index 5e3ff76..f6ec1ab 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -1,2 +1,4 @@
 build --enable_platform_specific_config
 build:linux --@rules_rust//:extra_rustc_flags=-Clink-arg=-fuse-ld=lld
+build:linux --cxxopt=-std=c++17
+build:macos --cxxopt=-std=c++17
diff --git a/.buckconfig b/.buckconfig
index bb3fda5..e081ba2 100644
--- a/.buckconfig
+++ b/.buckconfig
@@ -1,8 +1,11 @@
 [repositories]
-repo = .
+root = .
 prelude = tools/buck/prelude
 toolchains = tools/buck/toolchains
-config = tools/buck/prelude
+none = none
+
+[repository_aliases]
+config = prelude
 buck = none
 fbcode = none
 fbsource = none
@@ -11,7 +14,15 @@
 # Hide BUCK files under target/package/ from `buck build ...`. Otherwise:
 #   $ buck build ...
 #   //target/package/cxx-0.3.0/tests:ffi references non-existing file or directory 'target/package/cxx-0.3.0/tests/ffi/lib.rs'
-ignore = target
+#
+# Also hide some Bazel-managed directories that contain symlinks to the repo root.
+ignore = \
+    .git, \
+    bazel-bin, \
+    bazel-cxx, \
+    bazel-out, \
+    bazel-testlogs, \
+    target
 
 [parser]
-target_platform_detector_spec = target://...->config//platforms:default
+target_platform_detector_spec = target:root//...->prelude//platforms:default
diff --git a/.buckroot b/.buckroot
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.buckroot
diff --git a/.clippy.toml b/.clippy.toml
deleted file mode 100644
index 11d46a7..0000000
--- a/.clippy.toml
+++ /dev/null
@@ -1 +0,0 @@
-msrv = "1.48.0"
diff --git a/.github/workflows/buck2.yml b/.github/workflows/buck2.yml
new file mode 100644
index 0000000..f91ac3d
--- /dev/null
+++ b/.github/workflows/buck2.yml
@@ -0,0 +1,30 @@
+name: Buck2
+
+on:
+  push:
+  workflow_dispatch:
+  schedule: [cron: "40 1,13 * * *"]
+
+permissions:
+  contents: read
+
+jobs:
+  buck2:
+    name: Buck2 on ${{matrix.os == 'ubuntu' && 'Linux' || matrix.os == 'macos' && 'macOS' || matrix.os == 'windows' && 'Windows' || '???'}}
+    runs-on: ${{matrix.os}}-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [ubuntu, macos, windows]
+    timeout-minutes: 45
+    steps:
+      - uses: actions/checkout@v4
+      - uses: dtolnay/rust-toolchain@stable
+        with:
+          components: rust-src
+      - uses: dtolnay/install-buck2@latest
+        with:
+          prelude-submodule: tools/buck/prelude
+      - run: buck2 run demo
+      - run: buck2 build ...
+      - run: buck2 test ...
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 9b496eb..16ae9ab 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -26,11 +26,12 @@
           - rust: beta
           - rust: stable
           - rust: 1.60.0
-          - rust: 1.64.0
-          - name: macOS
+          - rust: 1.70.0
+          - rust: 1.74.0
+          - name: Cargo on macOS
             rust: nightly
             os: macos
-          - name: Windows (msvc)
+          - name: Cargo on Windows (msvc)
             rust: nightly-x86_64-pc-windows-msvc
             os: windows
             flags: /EHsc
@@ -42,10 +43,11 @@
       - name: Enable symlinks (windows)
         if: matrix.os == 'windows'
         run: git config --global core.symlinks true
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
       - uses: dtolnay/rust-toolchain@master
         with:
           toolchain: ${{matrix.rust}}
+          components: rust-src
       - name: Determine test suite subset
         # Our Windows and macOS jobs are the longest running, so exclude the
         # relatively slow compiletest from them to speed up end-to-end CI time,
@@ -55,13 +57,14 @@
         # builds.
         run: |
           echo RUSTFLAGS=$RUSTFLAGS >> $GITHUB_ENV
-          echo exclude=--exclude cxx-test-suite ${{matrix.rust == '1.60.0' && '--exclude cxxbridge-cmd' || ''}} >> $GITHUB_OUTPUT
+          echo exclude=--exclude cxx-test-suite ${{matrix.rust == '1.70.0' && '--exclude cxxbridge-cmd' || ''}} >> $GITHUB_OUTPUT
         env:
           RUSTFLAGS: ${{env.RUSTFLAGS}} ${{matrix.os && github.event_name != 'schedule' && '--cfg skip_ui_tests' || ''}}
         id: testsuite
         shell: bash
       - run: cargo run --manifest-path demo/Cargo.toml
       - run: cargo test --workspace ${{steps.testsuite.outputs.exclude}}
+        if: matrix.rust != '1.60.0'
       - run: cargo check --no-default-features --features alloc
         env:
           RUSTFLAGS: --cfg compile_error_if_std ${{env.RUSTFLAGS}}
@@ -69,47 +72,73 @@
         env:
           RUSTFLAGS: --cfg compile_error_if_alloc --cfg cxx_experimental_no_alloc ${{env.RUSTFLAGS}}
 
-  buck:
-    name: Buck
+  reindeer:
+    name: Reindeer
     runs-on: ubuntu-latest
     if: github.event_name != 'pull_request'
     timeout-minutes: 45
     steps:
-      - uses: actions/checkout@v3
-        with:
-          submodules: true
+      - uses: actions/checkout@v4
       - uses: dtolnay/rust-toolchain@stable
+        with:
+          components: rust-src
       - uses: dtolnay/install@reindeer
-      - uses: dtolnay/install@buck2
-      - name: Install lld
-        run: sudo apt-get install lld
-      - run: cargo vendor --versioned-dirs --locked
-        working-directory: third-party
       - run: reindeer buckify
         working-directory: third-party
       - name: Check reindeer-generated BUCK file up to date
         run: git diff --exit-code
-      - run: buck2 run demo
-      - run: buck2 build ...
-      - run: buck2 test ...
 
   bazel:
-    name: Bazel
-    runs-on: ubuntu-latest
+    name: Bazel on ${{matrix.os == 'ubuntu' && 'Linux' || matrix.os == 'macos' && 'macOS' || matrix.os == 'windows' && 'Windows' || '???'}}
+    runs-on: ${{matrix.os}}-latest
     if: github.event_name != 'pull_request'
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [ubuntu, macos, windows]
     timeout-minutes: 45
     steps:
-      - uses: actions/checkout@v3
-      - name: Install Bazel
-        run: |
-          wget -q -O install.sh https://github.com/bazelbuild/bazel/releases/download/6.0.0/bazel-6.0.0-installer-linux-x86_64.sh
-          chmod +x install.sh
-          ./install.sh --user
-          echo $HOME/bin >> $GITHUB_PATH
+      - uses: actions/checkout@v4
       - name: Install lld
         run: sudo apt-get install lld
-      - run: bazel run demo --verbose_failures --noshow_progress
-      - run: bazel test ... --verbose_failures --noshow_progress
+        if: matrix.os == 'ubuntu'
+      - run: bazel --version
+      - run: bazel run demo --verbose_failures --noshow_progress ${{matrix.os == 'macos' && '--xcode_version_config=tools/bazel:github_actions_xcodes' || ''}}
+        continue-on-error: ${{matrix.os == 'windows'}}  # https://github.com/bazelbuild/bazel/issues/18592
+      - run: bazel test ... --verbose_failures --noshow_progress ${{matrix.os == 'macos' && '--xcode_version_config=tools/bazel:github_actions_xcodes' || ''}}
+        continue-on-error: ${{matrix.os == 'windows'}}  # https://github.com/bazelbuild/bazel/issues/18592
+
+  minimal:
+    name: Minimal versions
+    needs: pre_ci
+    if: needs.pre_ci.outputs.continue
+    runs-on: ubuntu-latest
+    timeout-minutes: 45
+    steps:
+      - uses: actions/checkout@v4
+      - uses: dtolnay/rust-toolchain@nightly
+      - run: cargo generate-lockfile -Z minimal-versions
+      - run: cargo check --locked --workspace
+
+  doc:
+    name: Documentation
+    needs: pre_ci
+    if: needs.pre_ci.outputs.continue
+    runs-on: ubuntu-latest
+    timeout-minutes: 45
+    env:
+      RUSTDOCFLAGS: -Dwarnings
+    steps:
+      - uses: actions/checkout@v4
+      - uses: dtolnay/rust-toolchain@nightly
+        with:
+          components: rust-src
+      - uses: dtolnay/install@cargo-docs-rs
+      - run: cargo docs-rs
+      - run: cargo docs-rs -p cxx-build
+      - run: cargo docs-rs -p cxx-gen
+      - run: cargo docs-rs -p cxxbridge-flags
+      - run: cargo docs-rs -p cxxbridge-macro
 
   clippy:
     name: Clippy
@@ -117,9 +146,12 @@
     if: github.event_name != 'pull_request'
     timeout-minutes: 45
     steps:
-      - uses: actions/checkout@v3
-      - uses: dtolnay/rust-toolchain@clippy
-      - run: cargo clippy --workspace --tests -- -Dclippy::all
+      - uses: actions/checkout@v4
+      - uses: dtolnay/rust-toolchain@nightly
+        with:
+          components: clippy, rust-src
+      - run: cargo clippy --workspace --tests --exclude demo -- -Dclippy::all -Dclippy::pedantic
+      - run: cargo clippy --manifest-path demo/Cargo.toml -- -Dclippy::all
 
   clang-tidy:
     name: Clang Tidy
@@ -127,7 +159,7 @@
     if: github.event_name != 'pull_request'
     timeout-minutes: 45
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
       - name: Install clang-tidy
         run: sudo apt-get install clang-tidy-11
       - name: Run clang-tidy
@@ -139,6 +171,6 @@
     if: github.event_name != 'pull_request'
     timeout-minutes: 45
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
       - uses: dtolnay/install@cargo-outdated
       - run: cargo outdated --workspace --exit-code 1
diff --git a/.github/workflows/install.yml b/.github/workflows/install.yml
new file mode 100644
index 0000000..025fe23
--- /dev/null
+++ b/.github/workflows/install.yml
@@ -0,0 +1,18 @@
+name: Install
+
+on:
+  workflow_dispatch:
+  schedule: [cron: "40 1 * * *"]
+  push: {tags: ['*']}
+
+permissions: {}
+
+env:
+  RUSTFLAGS: -Dwarnings
+
+jobs:
+  install:
+    name: Install
+    uses: dtolnay/.github/.github/workflows/check_install.yml@master
+    with:
+      crate: cxxbridge-cmd
diff --git a/.github/workflows/site.yml b/.github/workflows/site.yml
index 1f9a695..555be19 100644
--- a/.github/workflows/site.yml
+++ b/.github/workflows/site.yml
@@ -17,15 +17,9 @@
       contents: write
     timeout-minutes: 30
     steps:
-      - uses: actions/checkout@v3
-
-      - name: Get mdBook
-        run: |
-          export MDBOOK_VERSION="dtolnay"
-          export MDBOOK_TARBALL="mdbook-${MDBOOK_VERSION}-x86_64-unknown-linux-gnu.tar.gz"
-          export MDBOOK_URL="https://github.com/dtolnay/mdBook/releases/download/cxx/${MDBOOK_TARBALL}"
-          curl -Lf "${MDBOOK_URL}" | tar -xzC book
-          book/mdbook --version
+      - uses: actions/checkout@v4
+      - uses: dtolnay/install@mdbook
+      - run: mdbook --version
 
       - name: Build
         run: book/build.sh
diff --git a/.gitmodules b/.gitmodules
index 208a58a..1f0249f 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
 [submodule "tools/buck/prelude"]
 	path = tools/buck/prelude
-	url = https://github.com/facebookincubator/buck2-prelude
+	url = https://github.com/facebook/buck2-prelude
diff --git a/Android.bp b/Android.bp
index 59e5561..764a8c0 100644
--- a/Android.bp
+++ b/Android.bp
@@ -38,7 +38,7 @@
     name: "libcxx",
     crate_name: "cxx",
     srcs: ["src/lib.rs"],
-    edition: "2018",
+    edition: "2021",
     features: [
         "alloc",
         "std",
diff --git a/BUCK b/BUCK
index f447d72..b93397e 100644
--- a/BUCK
+++ b/BUCK
@@ -4,7 +4,7 @@
     doc_deps = [
         ":cxx-build",
     ],
-    edition = "2018",
+    edition = "2021",
     features = [
         "alloc",
         "std",
@@ -28,7 +28,7 @@
         "gen/cmd/src/gen",
         "gen/cmd/src/syntax",
     ],
-    edition = "2018",
+    edition = "2021",
     deps = [
         "//third-party:clap",
         "//third-party:codespan-reporting",
@@ -44,8 +44,8 @@
     exported_headers = {
         "cxx.h": "include/cxx.h",
     },
-    exported_linker_flags = ["-lstdc++"],
     header_namespace = "rust",
+    preferred_linkage = "static",
     visibility = ["PUBLIC"],
 )
 
@@ -53,7 +53,7 @@
     name = "cxxbridge-macro",
     srcs = glob(["macro/src/**/*.rs"]) + ["macro/src/syntax"],
     doctests = False,
-    edition = "2018",
+    edition = "2021",
     proc_macro = True,
     deps = [
         "//third-party:proc-macro2",
@@ -69,7 +69,7 @@
         "gen/build/src/syntax",
     ],
     doctests = False,
-    edition = "2018",
+    edition = "2021",
     deps = [
         "//third-party:cc",
         "//third-party:codespan-reporting",
@@ -87,7 +87,7 @@
         "gen/lib/src/gen",
         "gen/lib/src/syntax",
     ],
-    edition = "2018",
+    edition = "2021",
     visibility = ["PUBLIC"],
     deps = [
         "//third-party:cc",
diff --git a/BUILD b/BUILD
index 787994b..b06d5be 100644
--- a/BUILD
+++ b/BUILD
@@ -8,7 +8,7 @@
         "alloc",
         "std",
     ],
-    edition = "2018",
+    edition = "2021",
     proc_macro_deps = [
         ":cxxbridge-macro",
     ],
@@ -26,7 +26,7 @@
     name = "cxxbridge",
     srcs = glob(["gen/cmd/src/**/*.rs"]),
     data = ["gen/cmd/src/gen/include/cxx.h"],
-    edition = "2018",
+    edition = "2021",
     deps = [
         "//third-party:clap",
         "//third-party:codespan-reporting",
@@ -53,7 +53,7 @@
 rust_proc_macro(
     name = "cxxbridge-macro",
     srcs = glob(["macro/src/**/*.rs"]),
-    edition = "2018",
+    edition = "2021",
     deps = [
         "//third-party:proc-macro2",
         "//third-party:quote",
@@ -65,7 +65,7 @@
     name = "cxx-build",
     srcs = glob(["gen/build/src/**/*.rs"]),
     data = ["gen/build/src/gen/include/cxx.h"],
-    edition = "2018",
+    edition = "2021",
     deps = [
         "//third-party:cc",
         "//third-party:codespan-reporting",
@@ -81,7 +81,7 @@
     name = "cxx-gen",
     srcs = glob(["gen/lib/src/**/*.rs"]),
     data = ["gen/lib/src/gen/include/cxx.h"],
-    edition = "2018",
+    edition = "2021",
     visibility = ["//visibility:public"],
     deps = [
         "//third-party:cc",
diff --git a/Cargo.toml b/Cargo.toml
index 5d42b0c..c180642 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,11 +1,11 @@
 [package]
 name = "cxx"
-version = "1.0.93" # remember to update html_root_url
+version = "1.0.119"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
 categories = ["development-tools::ffi", "api-bindings", "no-std"]
 description = "Safe interop between Rust and C++"
 documentation = "https://docs.rs/cxx"
-edition = "2018"
+edition = "2021"
 exclude = ["/demo", "/gen", "/syntax", "/third-party", "/tools/buck/prelude"]
 homepage = "https://cxx.rs"
 keywords = ["ffi", "c++"]
@@ -23,19 +23,19 @@
 std = ["alloc"]
 
 [dependencies]
-cxxbridge-macro = { version = "=1.0.93", path = "macro" }
-link-cplusplus = "1.0"
+cxxbridge-macro = { version = "=1.0.119", path = "macro" }
+link-cplusplus = "1.0.9"
 
 [build-dependencies]
-cc = "1.0.49"
-cxxbridge-flags = { version = "=1.0.93", path = "flags", default-features = false }
+cc = "1.0.83"
+cxxbridge-flags = { version = "=1.0.119", path = "flags", default-features = false }
 
 [dev-dependencies]
-cxx-build = { version = "=1.0.93", path = "gen/build" }
+cxx-build = { version = "=1.0.119", path = "gen/build" }
 cxx-gen = { version = "0.7", path = "gen/lib" }
 cxx-test-suite = { version = "0", path = "tests/ffi" }
-rustversion = "1.0"
-trybuild = { version = "1.0.66", features = ["diff"] }
+rustversion = "1.0.13"
+trybuild = { version = "1.0.81", features = ["diff"] }
 
 [lib]
 doc-scrape-examples = false
@@ -45,7 +45,24 @@
 
 [package.metadata.docs.rs]
 targets = ["x86_64-unknown-linux-gnu"]
-rustdoc-args = ["--cfg", "doc_cfg"]
+rustdoc-args = ["--cfg", "doc_cfg", "--generate-link-to-definition"]
+
+[package.metadata.bazel]
+additive_build_file_content = """
+cc_library(
+    name = "cxx_cc",
+    srcs = ["src/cxx.cc"],
+    hdrs = ["include/cxx.h"],
+    include_prefix = "rust",
+    includes = ["include"],
+    linkstatic = True,
+    strip_include_prefix = "include",
+    visibility = ["//visibility:public"],
+)
+"""
+deps = [":cxx_cc"]
+extra_aliased_targets = { cxx_cc = "cxx_cc" }
+gen_build_script = false
 
 [patch.crates-io]
 cxx = { path = "." }
diff --git a/MODULE.bazel b/MODULE.bazel
new file mode 100644
index 0000000..0ff7112
--- /dev/null
+++ b/MODULE.bazel
@@ -0,0 +1,25 @@
+module(name = "cxx.rs")
+
+bazel_dep(name = "bazel_skylib", version = "1.5.0")
+bazel_dep(name = "rules_rust", version = "0.40.0")
+
+rust = use_extension("@rules_rust//rust:extensions.bzl", "rust")
+rust.toolchain(
+    versions = ["1.76.0"],
+)
+use_repo(rust, "rust_toolchains")
+
+register_toolchains("@rust_toolchains//:all")
+
+crate_repositories = use_extension("//tools/bazel:extension.bzl", "crate_repositories")
+use_repo(
+    crate_repositories,
+    "vendor__cc-1.0.89",
+    "vendor__clap-4.5.1",
+    "vendor__codespan-reporting-0.11.1",
+    "vendor__once_cell-1.19.0",
+    "vendor__proc-macro2-1.0.78",
+    "vendor__quote-1.0.35",
+    "vendor__scratch-1.0.7",
+    "vendor__syn-2.0.52",
+)
diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock
new file mode 100644
index 0000000..9ae06d6
--- /dev/null
+++ b/MODULE.bazel.lock
@@ -0,0 +1,14230 @@
+{
+  "lockFileVersion": 3,
+  "moduleFileHash": "bcecd601fb039027d17c84b9fccd60ad766512723ff007dca6cdd7c824ad5b4b",
+  "flags": {
+    "cmdRegistries": [
+      "https://bcr.bazel.build/"
+    ],
+    "cmdModuleOverrides": {},
+    "allowedYankedVersions": [],
+    "envVarAllowedYankedVersions": "",
+    "ignoreDevDependency": false,
+    "directDependenciesMode": "WARNING",
+    "compatibilityMode": "ERROR"
+  },
+  "localOverrideHashes": {
+    "bazel_tools": "922ea6752dc9105de5af957f7a99a6933c0a6a712d23df6aad16a9c399f7e787"
+  },
+  "moduleDepGraph": {
+    "<root>": {
+      "name": "cxx.rs",
+      "version": "",
+      "key": "<root>",
+      "repoName": "cxx.rs",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [
+        "@rust_toolchains//:all"
+      ],
+      "extensionUsages": [
+        {
+          "extensionBzlFile": "@rules_rust//rust:extensions.bzl",
+          "extensionName": "rust",
+          "usingModule": "<root>",
+          "location": {
+            "file": "@@//:MODULE.bazel",
+            "line": 6,
+            "column": 21
+          },
+          "imports": {
+            "rust_toolchains": "rust_toolchains"
+          },
+          "devImports": [],
+          "tags": [
+            {
+              "tagName": "toolchain",
+              "attributeValues": {
+                "versions": [
+                  "1.76.0"
+                ]
+              },
+              "devDependency": false,
+              "location": {
+                "file": "@@//:MODULE.bazel",
+                "line": 7,
+                "column": 15
+              }
+            }
+          ],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        },
+        {
+          "extensionBzlFile": "@cxx.rs//tools/bazel:extension.bzl",
+          "extensionName": "crate_repositories",
+          "usingModule": "<root>",
+          "location": {
+            "file": "@@//:MODULE.bazel",
+            "line": 14,
+            "column": 35
+          },
+          "imports": {
+            "vendor__cc-1.0.89": "vendor__cc-1.0.89",
+            "vendor__clap-4.5.1": "vendor__clap-4.5.1",
+            "vendor__codespan-reporting-0.11.1": "vendor__codespan-reporting-0.11.1",
+            "vendor__once_cell-1.19.0": "vendor__once_cell-1.19.0",
+            "vendor__proc-macro2-1.0.78": "vendor__proc-macro2-1.0.78",
+            "vendor__quote-1.0.35": "vendor__quote-1.0.35",
+            "vendor__scratch-1.0.7": "vendor__scratch-1.0.7",
+            "vendor__syn-2.0.52": "vendor__syn-2.0.52"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        }
+      ],
+      "deps": {
+        "bazel_skylib": "bazel_skylib@1.5.0",
+        "rules_rust": "rules_rust@0.40.0",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      }
+    },
+    "bazel_skylib@1.5.0": {
+      "name": "bazel_skylib",
+      "version": "1.5.0",
+      "key": "bazel_skylib@1.5.0",
+      "repoName": "bazel_skylib",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [
+        "//toolchains/unittest:cmd_toolchain",
+        "//toolchains/unittest:bash_toolchain"
+      ],
+      "extensionUsages": [],
+      "deps": {
+        "platforms": "platforms@0.0.8",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "name": "bazel_skylib~1.5.0",
+          "urls": [
+            "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz"
+          ],
+          "integrity": "sha256-zVWgYudjuTSZIfD124w5MyiNyLpPdt2UFqrGis7jy5Q=",
+          "strip_prefix": "",
+          "remote_patches": {},
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "rules_rust@0.40.0": {
+      "name": "rules_rust",
+      "version": "0.40.0",
+      "key": "rules_rust@0.40.0",
+      "repoName": "rules_rust",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [
+        "@rust_toolchains//:all"
+      ],
+      "extensionUsages": [
+        {
+          "extensionBzlFile": "@rules_rust//rust/private:extensions.bzl",
+          "extensionName": "i",
+          "usingModule": "rules_rust@0.40.0",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/rules_rust/0.40.0/MODULE.bazel",
+            "line": 39,
+            "column": 30
+          },
+          "imports": {
+            "bazelci_rules": "bazelci_rules",
+            "cargo_bazel.buildifier-darwin-amd64": "cargo_bazel.buildifier-darwin-amd64",
+            "cargo_bazel.buildifier-darwin-arm64": "cargo_bazel.buildifier-darwin-arm64",
+            "cargo_bazel.buildifier-linux-amd64": "cargo_bazel.buildifier-linux-amd64",
+            "cargo_bazel.buildifier-linux-arm64": "cargo_bazel.buildifier-linux-arm64",
+            "cargo_bazel.buildifier-windows-amd64.exe": "cargo_bazel.buildifier-windows-amd64.exe",
+            "com_google_googleapis": "com_google_googleapis",
+            "cui": "cui",
+            "cui__anyhow-1.0.75": "cui__anyhow-1.0.75",
+            "cui__camino-1.1.6": "cui__camino-1.1.6",
+            "cui__cargo-lock-9.0.0": "cui__cargo-lock-9.0.0",
+            "cui__cargo-platform-0.1.4": "cui__cargo-platform-0.1.4",
+            "cui__cargo_metadata-0.18.1": "cui__cargo_metadata-0.18.1",
+            "cui__cargo_toml-0.17.1": "cui__cargo_toml-0.17.1",
+            "cui__cfg-expr-0.15.5": "cui__cfg-expr-0.15.5",
+            "cui__clap-4.3.11": "cui__clap-4.3.11",
+            "cui__crates-index-2.2.0": "cui__crates-index-2.2.0",
+            "cui__hex-0.4.3": "cui__hex-0.4.3",
+            "cui__indoc-2.0.4": "cui__indoc-2.0.4",
+            "cui__itertools-0.12.0": "cui__itertools-0.12.0",
+            "cui__maplit-1.0.2": "cui__maplit-1.0.2",
+            "cui__normpath-1.1.1": "cui__normpath-1.1.1",
+            "cui__pathdiff-0.2.1": "cui__pathdiff-0.2.1",
+            "cui__regex-1.10.2": "cui__regex-1.10.2",
+            "cui__semver-1.0.20": "cui__semver-1.0.20",
+            "cui__serde-1.0.190": "cui__serde-1.0.190",
+            "cui__serde_json-1.0.108": "cui__serde_json-1.0.108",
+            "cui__serde_starlark-0.1.14": "cui__serde_starlark-0.1.14",
+            "cui__sha2-0.10.8": "cui__sha2-0.10.8",
+            "cui__spdx-0.10.3": "cui__spdx-0.10.3",
+            "cui__spectral-0.6.0": "cui__spectral-0.6.0",
+            "cui__tempfile-3.8.1": "cui__tempfile-3.8.1",
+            "cui__tera-1.19.1": "cui__tera-1.19.1",
+            "cui__textwrap-0.16.0": "cui__textwrap-0.16.0",
+            "cui__toml-0.8.10": "cui__toml-0.8.10",
+            "cui__tracing-0.1.40": "cui__tracing-0.1.40",
+            "cui__tracing-subscriber-0.3.17": "cui__tracing-subscriber-0.3.17",
+            "generated_inputs_in_external_repo": "generated_inputs_in_external_repo",
+            "libc": "libc",
+            "llvm-raw": "llvm-raw",
+            "rrra__anyhow-1.0.71": "rrra__anyhow-1.0.71",
+            "rrra__clap-4.3.11": "rrra__clap-4.3.11",
+            "rrra__env_logger-0.10.0": "rrra__env_logger-0.10.0",
+            "rrra__itertools-0.11.0": "rrra__itertools-0.11.0",
+            "rrra__log-0.4.19": "rrra__log-0.4.19",
+            "rrra__serde-1.0.171": "rrra__serde-1.0.171",
+            "rrra__serde_json-1.0.102": "rrra__serde_json-1.0.102",
+            "rules_rust_bindgen__bindgen-0.69.1": "rules_rust_bindgen__bindgen-0.69.1",
+            "rules_rust_bindgen__bindgen-cli-0.69.1": "rules_rust_bindgen__bindgen-cli-0.69.1",
+            "rules_rust_bindgen__clang-sys-1.6.1": "rules_rust_bindgen__clang-sys-1.6.1",
+            "rules_rust_bindgen__clap-4.3.3": "rules_rust_bindgen__clap-4.3.3",
+            "rules_rust_bindgen__clap_complete-4.3.1": "rules_rust_bindgen__clap_complete-4.3.1",
+            "rules_rust_bindgen__env_logger-0.10.0": "rules_rust_bindgen__env_logger-0.10.0",
+            "rules_rust_prost": "rules_rust_prost",
+            "rules_rust_prost__h2-0.3.19": "rules_rust_prost__h2-0.3.19",
+            "rules_rust_prost__heck": "rules_rust_prost__heck",
+            "rules_rust_prost__prost-0.11.9": "rules_rust_prost__prost-0.11.9",
+            "rules_rust_prost__prost-types-0.11.9": "rules_rust_prost__prost-types-0.11.9",
+            "rules_rust_prost__protoc-gen-prost-0.2.2": "rules_rust_prost__protoc-gen-prost-0.2.2",
+            "rules_rust_prost__protoc-gen-tonic-0.2.2": "rules_rust_prost__protoc-gen-tonic-0.2.2",
+            "rules_rust_prost__tokio-1.28.2": "rules_rust_prost__tokio-1.28.2",
+            "rules_rust_prost__tokio-stream-0.1.14": "rules_rust_prost__tokio-stream-0.1.14",
+            "rules_rust_prost__tonic-0.9.2": "rules_rust_prost__tonic-0.9.2",
+            "rules_rust_test_load_arbitrary_tool": "rules_rust_test_load_arbitrary_tool",
+            "rules_rust_tinyjson": "rules_rust_tinyjson",
+            "rules_rust_toolchain_test_target_json": "rules_rust_toolchain_test_target_json",
+            "rules_rust_wasm_bindgen__anyhow-1.0.71": "rules_rust_wasm_bindgen__anyhow-1.0.71",
+            "rules_rust_wasm_bindgen__assert_cmd-1.0.8": "rules_rust_wasm_bindgen__assert_cmd-1.0.8",
+            "rules_rust_wasm_bindgen__diff-0.1.13": "rules_rust_wasm_bindgen__diff-0.1.13",
+            "rules_rust_wasm_bindgen__docopt-1.1.1": "rules_rust_wasm_bindgen__docopt-1.1.1",
+            "rules_rust_wasm_bindgen__env_logger-0.8.4": "rules_rust_wasm_bindgen__env_logger-0.8.4",
+            "rules_rust_wasm_bindgen__log-0.4.19": "rules_rust_wasm_bindgen__log-0.4.19",
+            "rules_rust_wasm_bindgen__predicates-1.0.8": "rules_rust_wasm_bindgen__predicates-1.0.8",
+            "rules_rust_wasm_bindgen__rayon-1.7.0": "rules_rust_wasm_bindgen__rayon-1.7.0",
+            "rules_rust_wasm_bindgen__rouille-3.6.2": "rules_rust_wasm_bindgen__rouille-3.6.2",
+            "rules_rust_wasm_bindgen__serde-1.0.171": "rules_rust_wasm_bindgen__serde-1.0.171",
+            "rules_rust_wasm_bindgen__serde_derive-1.0.171": "rules_rust_wasm_bindgen__serde_derive-1.0.171",
+            "rules_rust_wasm_bindgen__serde_json-1.0.102": "rules_rust_wasm_bindgen__serde_json-1.0.102",
+            "rules_rust_wasm_bindgen__tempfile-3.6.0": "rules_rust_wasm_bindgen__tempfile-3.6.0",
+            "rules_rust_wasm_bindgen__ureq-2.8.0": "rules_rust_wasm_bindgen__ureq-2.8.0",
+            "rules_rust_wasm_bindgen__walrus-0.20.3": "rules_rust_wasm_bindgen__walrus-0.20.3",
+            "rules_rust_wasm_bindgen__wasm-bindgen-0.2.91": "rules_rust_wasm_bindgen__wasm-bindgen-0.2.91",
+            "rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.91": "rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.91",
+            "rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91": "rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91",
+            "rules_rust_wasm_bindgen__wasmparser-0.102.0": "rules_rust_wasm_bindgen__wasmparser-0.102.0",
+            "rules_rust_wasm_bindgen__wasmprinter-0.2.60": "rules_rust_wasm_bindgen__wasmprinter-0.2.60",
+            "rules_rust_wasm_bindgen_cli": "rules_rust_wasm_bindgen_cli"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        },
+        {
+          "extensionBzlFile": "@rules_rust//rust:extensions.bzl",
+          "extensionName": "rust",
+          "usingModule": "rules_rust@0.40.0",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/rules_rust/0.40.0/MODULE.bazel",
+            "line": 131,
+            "column": 21
+          },
+          "imports": {
+            "rust_toolchains": "rust_toolchains",
+            "rust_host_tools": "rust_host_tools"
+          },
+          "devImports": [],
+          "tags": [
+            {
+              "tagName": "toolchain",
+              "attributeValues": {
+                "edition": "2021"
+              },
+              "devDependency": false,
+              "location": {
+                "file": "https://bcr.bazel.build/modules/rules_rust/0.40.0/MODULE.bazel",
+                "line": 132,
+                "column": 15
+              }
+            }
+          ],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        },
+        {
+          "extensionBzlFile": "@rules_rust//crate_universe/private/module_extensions:cargo_bazel_bootstrap.bzl",
+          "extensionName": "cargo_bazel_bootstrap",
+          "usingModule": "rules_rust@0.40.0",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/rules_rust/0.40.0/MODULE.bazel",
+            "line": 141,
+            "column": 38
+          },
+          "imports": {
+            "cargo_bazel_bootstrap": "cargo_bazel_bootstrap"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        }
+      ],
+      "deps": {
+        "bazel_skylib": "bazel_skylib@1.5.0",
+        "platforms": "platforms@0.0.8",
+        "rules_cc": "rules_cc@0.0.9",
+        "rules_license": "rules_license@0.0.8",
+        "rules_proto": "rules_proto@5.3.0-21.7",
+        "build_bazel_apple_support": "apple_support@1.13.0",
+        "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": {
+          "name": "rules_rust~0.40.0",
+          "urls": [
+            "https://github.com/bazelbuild/rules_rust/releases/download/0.40.0/rules_rust-v0.40.0.tar.gz"
+          ],
+          "integrity": "sha256-ww398ehv1QZQp26mRbOkXy8AZnsGGHpoXpVU4WfKl+4=",
+          "strip_prefix": "",
+          "remote_patches": {},
+          "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": 17,
+            "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": 21,
+            "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": 24,
+            "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": 35,
+            "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": 39,
+            "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": 42,
+            "column": 42
+          },
+          "imports": {
+            "android_gmaven_r8": "android_gmaven_r8",
+            "android_tools": "android_tools"
+          },
+          "devImports": [],
+          "tags": [],
+          "hasDevUseExtension": false,
+          "hasNonDevUseExtension": true
+        }
+      ],
+      "deps": {
+        "rules_cc": "rules_cc@0.0.9",
+        "rules_java": "rules_java@7.1.0",
+        "rules_license": "rules_license@0.0.8",
+        "rules_proto": "rules_proto@5.3.0-21.7",
+        "rules_python": "rules_python@0.10.2",
+        "platforms": "platforms@0.0.8",
+        "com_google_protobuf": "protobuf@21.7",
+        "zlib": "zlib@1.3",
+        "build_bazel_apple_support": "apple_support@1.13.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.8",
+        "bazel_tools": "bazel_tools@_"
+      }
+    },
+    "platforms@0.0.8": {
+      "name": "platforms",
+      "version": "0.0.8",
+      "key": "platforms@0.0.8",
+      "repoName": "platforms",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "rules_license": "rules_license@0.0.8",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "name": "platforms",
+          "urls": [
+            "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz"
+          ],
+          "integrity": "sha256-gVBAZgU4ns7LbaB8vLUJ1WN6OrmiS8abEQFTE2fYnXQ=",
+          "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.8",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "name": "rules_cc~0.0.9",
+          "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
+        }
+      }
+    },
+    "rules_license@0.0.8": {
+      "name": "rules_license",
+      "version": "0.0.8",
+      "key": "rules_license@0.0.8",
+      "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": {
+          "name": "rules_license~0.0.8",
+          "urls": [
+            "https://github.com/bazelbuild/rules_license/releases/download/0.0.8/rules_license-0.0.8.tar.gz"
+          ],
+          "integrity": "sha256-JBsG8wl/0Yb/RogyFQ1swUIkfcQqMqrvtW0AmYlf0ik=",
+          "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.5.0",
+        "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": {
+          "name": "rules_proto~5.3.0-21.7",
+          "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
+        }
+      }
+    },
+    "apple_support@1.13.0": {
+      "name": "apple_support",
+      "version": "1.13.0",
+      "key": "apple_support@1.13.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.13.0",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/apple_support/1.13.0/MODULE.bazel",
+            "line": 19,
+            "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.5.0",
+        "platforms": "platforms@0.0.8",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "name": "apple_support~1.13.0",
+          "urls": [
+            "https://github.com/bazelbuild/apple_support/releases/download/1.13.0/apple_support.1.13.0.tar.gz"
+          ],
+          "integrity": "sha256-HEAx5ytFagSNgXf1mlWBgIwHWF+p4lXG9f77h1KvfkA=",
+          "strip_prefix": "",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/apple_support/1.13.0/patches/module_dot_bazel_version.patch": "sha256-OqLgfAMNy6ZUF/WaVkNXzB/KcCYLlHLspYNk67mcASA="
+          },
+          "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.5.0",
+        "rules_python": "rules_python@0.10.2",
+        "rules_cc": "rules_cc@0.0.9",
+        "rules_proto": "rules_proto@5.3.0-21.7",
+        "rules_java": "rules_java@7.1.0",
+        "rules_pkg": "rules_pkg@0.7.0",
+        "com_google_abseil": "abseil-cpp@20211102.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.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": {
+          "name": "protobuf~21.7",
+          "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
+        }
+      }
+    },
+    "rules_java@7.1.0": {
+      "name": "rules_java",
+      "version": "7.1.0",
+      "key": "rules_java@7.1.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.1.0",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/rules_java/7.1.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.8",
+        "rules_cc": "rules_cc@0.0.9",
+        "bazel_skylib": "bazel_skylib@1.5.0",
+        "rules_proto": "rules_proto@5.3.0-21.7",
+        "rules_license": "rules_license@0.0.8",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "name": "rules_java~7.1.0",
+          "urls": [
+            "https://github.com/bazelbuild/rules_java/releases/download/7.1.0/rules_java-7.1.0.tar.gz"
+          ],
+          "integrity": "sha256-o3pOX2OrgnFuXdau75iO2EYcegC46TYnImKJn1h81OE=",
+          "strip_prefix": "",
+          "remote_patches": {},
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "rules_python@0.10.2": {
+      "name": "rules_python",
+      "version": "0.10.2",
+      "key": "rules_python@0.10.2",
+      "repoName": "rules_python",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [
+        "@bazel_tools//tools/python:autodetecting_toolchain"
+      ],
+      "extensionUsages": [
+        {
+          "extensionBzlFile": "@rules_python//python:extensions.bzl",
+          "extensionName": "pip_install",
+          "usingModule": "rules_python@0.10.2",
+          "location": {
+            "file": "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel",
+            "line": 7,
+            "column": 28
+          },
+          "imports": {
+            "pypi__click": "pypi__click",
+            "pypi__colorama": "pypi__colorama",
+            "pypi__installer": "pypi__installer",
+            "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"
+          },
+          "devImports": [],
+          "tags": [],
+          "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": {
+          "name": "rules_python~0.10.2",
+          "urls": [
+            "https://github.com/bazelbuild/rules_python/archive/refs/tags/0.10.2.tar.gz"
+          ],
+          "integrity": "sha256-o6bpn0l74In4HsCCiC5AJGv9Q19S9OgvN+iUSbBFc/Y=",
+          "strip_prefix": "rules_python-0.10.2",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/rules_python/0.10.2/patches/module_dot_bazel.patch": "sha256-TScILAmXmmMtjJIwhLrgNZgqGPs6G3OAzXaLXLDNFrA="
+          },
+          "remote_patch_strip": 0
+        }
+      }
+    },
+    "zlib@1.3": {
+      "name": "zlib",
+      "version": "1.3",
+      "key": "zlib@1.3",
+      "repoName": "zlib",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "platforms": "platforms@0.0.8",
+        "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": {
+          "name": "zlib~1.3",
+          "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
+        }
+      }
+    },
+    "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.10.2",
+        "bazel_skylib": "bazel_skylib@1.5.0",
+        "rules_license": "rules_license@0.0.8",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "name": "rules_pkg~0.7.0",
+          "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
+        }
+      }
+    },
+    "abseil-cpp@20211102.0": {
+      "name": "abseil-cpp",
+      "version": "20211102.0",
+      "key": "abseil-cpp@20211102.0",
+      "repoName": "abseil-cpp",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "rules_cc": "rules_cc@0.0.9",
+        "platforms": "platforms@0.0.8",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "name": "abseil-cpp~20211102.0",
+          "urls": [
+            "https://github.com/abseil/abseil-cpp/archive/refs/tags/20211102.0.tar.gz"
+          ],
+          "integrity": "sha256-3PcbnLqNwMqZQMSzFqDHlr6Pq0KwcLtrfKtitI8OZsQ=",
+          "strip_prefix": "abseil-cpp-20211102.0",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/patches/module_dot_bazel.patch": "sha256-4izqopgGCey4jVZzl/w3M2GVPNohjh2B5TmbThZNvPY="
+          },
+          "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.5.0",
+        "rules_proto": "rules_proto@5.3.0-21.7",
+        "com_google_protobuf": "protobuf@21.7",
+        "com_google_absl": "abseil-cpp@20211102.0",
+        "platforms": "platforms@0.0.8",
+        "bazel_tools": "bazel_tools@_",
+        "local_config_platform": "local_config_platform@_"
+      },
+      "repoSpec": {
+        "bzlFile": "@bazel_tools//tools/build_defs/repo:http.bzl",
+        "ruleClassName": "http_archive",
+        "attributes": {
+          "name": "upb~0.0.0-20220923-a547704",
+          "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": ":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.5.0",
+        "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": {
+          "name": "rules_jvm_external~4.4.2",
+          "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
+        }
+      }
+    },
+    "googletest@1.11.0": {
+      "name": "googletest",
+      "version": "1.11.0",
+      "key": "googletest@1.11.0",
+      "repoName": "googletest",
+      "executionPlatformsToRegister": [],
+      "toolchainsToRegister": [],
+      "extensionUsages": [],
+      "deps": {
+        "com_google_absl": "abseil-cpp@20211102.0",
+        "platforms": "platforms@0.0.8",
+        "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": {
+          "name": "googletest~1.11.0",
+          "urls": [
+            "https://github.com/google/googletest/archive/refs/tags/release-1.11.0.tar.gz"
+          ],
+          "integrity": "sha256-tIcL8SH/d5W6INILzdhie44Ijy0dqymaAxwQNO3ck9U=",
+          "strip_prefix": "googletest-release-1.11.0",
+          "remote_patches": {
+            "https://bcr.bazel.build/modules/googletest/1.11.0/patches/module_dot_bazel.patch": "sha256-HuahEdI/n8KCI071sN3CEziX+7qP/Ec77IWayYunLP0="
+          },
+          "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.5.0",
+        "rules_java": "rules_java@7.1.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": {
+          "name": "stardoc~0.5.1",
+          "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": {
+    "//tools/bazel:extension.bzl%crate_repositories": {
+      "general": {
+        "bzlTransitiveDigest": "TUyLx8JsEfCcGo2uLlh+HoPZ4KOk4GPMGIyySckpY+c=",
+        "accumulatedFileDigests": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "vendor__unicode-width-0.1.11": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__unicode-width-0.1.11",
+              "sha256": "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-width/0.1.11/download"
+              ],
+              "strip_prefix": "unicode-width-0.1.11",
+              "build_file": "@@//third-party/bazel:BUILD.unicode-width-0.1.11.bazel"
+            }
+          },
+          "vendor__once_cell-1.19.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__once_cell-1.19.0",
+              "sha256": "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/once_cell/1.19.0/download"
+              ],
+              "strip_prefix": "once_cell-1.19.0",
+              "build_file": "@@//third-party/bazel:BUILD.once_cell-1.19.0.bazel"
+            }
+          },
+          "vendor__termcolor-1.4.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__termcolor-1.4.1",
+              "sha256": "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/termcolor/1.4.1/download"
+              ],
+              "strip_prefix": "termcolor-1.4.1",
+              "build_file": "@@//third-party/bazel:BUILD.termcolor-1.4.1.bazel"
+            }
+          },
+          "vendor__quote-1.0.35": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__quote-1.0.35",
+              "sha256": "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/quote/1.0.35/download"
+              ],
+              "strip_prefix": "quote-1.0.35",
+              "build_file": "@@//third-party/bazel:BUILD.quote-1.0.35.bazel"
+            }
+          },
+          "vendor__winapi-x86_64-pc-windows-gnu-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__winapi-x86_64-pc-windows-gnu-0.4.0",
+              "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download"
+              ],
+              "strip_prefix": "winapi-x86_64-pc-windows-gnu-0.4.0",
+              "build_file": "@@//third-party/bazel:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel"
+            }
+          },
+          "vendor__clap_builder-4.5.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__clap_builder-4.5.1",
+              "sha256": "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap_builder/4.5.1/download"
+              ],
+              "strip_prefix": "clap_builder-4.5.1",
+              "build_file": "@@//third-party/bazel:BUILD.clap_builder-4.5.1.bazel"
+            }
+          },
+          "vendor__winapi-0.3.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__winapi-0.3.9",
+              "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi/0.3.9/download"
+              ],
+              "strip_prefix": "winapi-0.3.9",
+              "build_file": "@@//third-party/bazel:BUILD.winapi-0.3.9.bazel"
+            }
+          },
+          "vendor__anstyle-1.0.6": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__anstyle-1.0.6",
+              "sha256": "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstyle/1.0.6/download"
+              ],
+              "strip_prefix": "anstyle-1.0.6",
+              "build_file": "@@//third-party/bazel:BUILD.anstyle-1.0.6.bazel"
+            }
+          },
+          "vendor__winapi-i686-pc-windows-gnu-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__winapi-i686-pc-windows-gnu-0.4.0",
+              "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download"
+              ],
+              "strip_prefix": "winapi-i686-pc-windows-gnu-0.4.0",
+              "build_file": "@@//third-party/bazel:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel"
+            }
+          },
+          "vendor__cc-1.0.89": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__cc-1.0.89",
+              "sha256": "a0ba8f7aaa012f30d5b2861462f6708eccd49c3c39863fe083a308035f63d723",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cc/1.0.89/download"
+              ],
+              "strip_prefix": "cc-1.0.89",
+              "build_file": "@@//third-party/bazel:BUILD.cc-1.0.89.bazel"
+            }
+          },
+          "vendor__unicode-ident-1.0.12": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__unicode-ident-1.0.12",
+              "sha256": "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-ident/1.0.12/download"
+              ],
+              "strip_prefix": "unicode-ident-1.0.12",
+              "build_file": "@@//third-party/bazel:BUILD.unicode-ident-1.0.12.bazel"
+            }
+          },
+          "vendor__scratch-1.0.7": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__scratch-1.0.7",
+              "sha256": "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/scratch/1.0.7/download"
+              ],
+              "strip_prefix": "scratch-1.0.7",
+              "build_file": "@@//third-party/bazel:BUILD.scratch-1.0.7.bazel"
+            }
+          },
+          "vendor__clap-4.5.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__clap-4.5.1",
+              "sha256": "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap/4.5.1/download"
+              ],
+              "strip_prefix": "clap-4.5.1",
+              "build_file": "@@//third-party/bazel:BUILD.clap-4.5.1.bazel"
+            }
+          },
+          "vendor__syn-2.0.52": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__syn-2.0.52",
+              "sha256": "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/syn/2.0.52/download"
+              ],
+              "strip_prefix": "syn-2.0.52",
+              "build_file": "@@//third-party/bazel:BUILD.syn-2.0.52.bazel"
+            }
+          },
+          "vendor__codespan-reporting-0.11.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__codespan-reporting-0.11.1",
+              "sha256": "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/codespan-reporting/0.11.1/download"
+              ],
+              "strip_prefix": "codespan-reporting-0.11.1",
+              "build_file": "@@//third-party/bazel:BUILD.codespan-reporting-0.11.1.bazel"
+            }
+          },
+          "vendor__clap_lex-0.7.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__clap_lex-0.7.0",
+              "sha256": "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap_lex/0.7.0/download"
+              ],
+              "strip_prefix": "clap_lex-0.7.0",
+              "build_file": "@@//third-party/bazel:BUILD.clap_lex-0.7.0.bazel"
+            }
+          },
+          "vendor__winapi-util-0.1.6": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__winapi-util-0.1.6",
+              "sha256": "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-util/0.1.6/download"
+              ],
+              "strip_prefix": "winapi-util-0.1.6",
+              "build_file": "@@//third-party/bazel:BUILD.winapi-util-0.1.6.bazel"
+            }
+          },
+          "vendor__proc-macro2-1.0.78": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "_main~crate_repositories~vendor__proc-macro2-1.0.78",
+              "sha256": "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/proc-macro2/1.0.78/download"
+              ],
+              "strip_prefix": "proc-macro2-1.0.78",
+              "build_file": "@@//third-party/bazel:BUILD.proc-macro2-1.0.78.bazel"
+            }
+          }
+        },
+        "moduleExtensionMetadata": {
+          "explicitRootModuleDirectDeps": [
+            "vendor__cc-1.0.89",
+            "vendor__clap-4.5.1",
+            "vendor__codespan-reporting-0.11.1",
+            "vendor__once_cell-1.19.0",
+            "vendor__proc-macro2-1.0.78",
+            "vendor__quote-1.0.35",
+            "vendor__scratch-1.0.7",
+            "vendor__syn-2.0.52"
+          ],
+          "explicitRootModuleDirectDevDeps": [],
+          "useAllRepos": "NO"
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "",
+            "",
+            ""
+          ],
+          [
+            "",
+            "bazel_skylib",
+            "bazel_skylib~1.5.0"
+          ],
+          [
+            "",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "",
+            "vendor__cc-1.0.89",
+            "_main~crate_repositories~vendor__cc-1.0.89"
+          ],
+          [
+            "",
+            "vendor__clap-4.5.1",
+            "_main~crate_repositories~vendor__clap-4.5.1"
+          ],
+          [
+            "",
+            "vendor__codespan-reporting-0.11.1",
+            "_main~crate_repositories~vendor__codespan-reporting-0.11.1"
+          ],
+          [
+            "",
+            "vendor__once_cell-1.19.0",
+            "_main~crate_repositories~vendor__once_cell-1.19.0"
+          ],
+          [
+            "",
+            "vendor__proc-macro2-1.0.78",
+            "_main~crate_repositories~vendor__proc-macro2-1.0.78"
+          ],
+          [
+            "",
+            "vendor__quote-1.0.35",
+            "_main~crate_repositories~vendor__quote-1.0.35"
+          ],
+          [
+            "",
+            "vendor__scratch-1.0.7",
+            "_main~crate_repositories~vendor__scratch-1.0.7"
+          ],
+          [
+            "",
+            "vendor__syn-2.0.52",
+            "_main~crate_repositories~vendor__syn-2.0.52"
+          ]
+        ]
+      }
+    },
+    "@@apple_support~1.13.0//crosstool:setup.bzl%apple_cc_configure_extension": {
+      "general": {
+        "bzlTransitiveDigest": "TMkUP4/N3ZORvZrcDg9FxSoW9r/7+uDVH/SI2biRyJg=",
+        "accumulatedFileDigests": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "local_config_apple_cc": {
+            "bzlFile": "@@apple_support~1.13.0//crosstool:setup.bzl",
+            "ruleClassName": "_apple_cc_autoconf",
+            "attributes": {
+              "name": "apple_support~1.13.0~apple_cc_configure_extension~local_config_apple_cc"
+            }
+          },
+          "local_config_apple_cc_toolchains": {
+            "bzlFile": "@@apple_support~1.13.0//crosstool:setup.bzl",
+            "ruleClassName": "_apple_cc_autoconf_toolchains",
+            "attributes": {
+              "name": "apple_support~1.13.0~apple_cc_configure_extension~local_config_apple_cc_toolchains"
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "apple_support~1.13.0",
+            "bazel_tools",
+            "bazel_tools"
+          ]
+        ]
+      }
+    },
+    "@@bazel_tools//tools/cpp:cc_configure.bzl%cc_configure_extension": {
+      "general": {
+        "bzlTransitiveDigest": "mcsWHq3xORJexV5/4eCvNOLxFOQKV6eli3fkr+tEaqE=",
+        "accumulatedFileDigests": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "local_config_cc": {
+            "bzlFile": "@@bazel_tools//tools/cpp:cc_configure.bzl",
+            "ruleClassName": "cc_autoconf",
+            "attributes": {
+              "name": "bazel_tools~cc_configure_extension~local_config_cc"
+            }
+          },
+          "local_config_cc_toolchains": {
+            "bzlFile": "@@bazel_tools//tools/cpp:cc_configure.bzl",
+            "ruleClassName": "cc_autoconf_toolchains",
+            "attributes": {
+              "name": "bazel_tools~cc_configure_extension~local_config_cc_toolchains"
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "bazel_tools",
+            "bazel_tools",
+            "bazel_tools"
+          ]
+        ]
+      }
+    },
+    "@@bazel_tools//tools/osx:xcode_configure.bzl%xcode_configure_extension": {
+      "general": {
+        "bzlTransitiveDigest": "Qh2bWTU6QW6wkrd87qrU4YeY+SG37Nvw3A0PR4Y0L2Y=",
+        "accumulatedFileDigests": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "local_config_xcode": {
+            "bzlFile": "@@bazel_tools//tools/osx:xcode_configure.bzl",
+            "ruleClassName": "xcode_autoconf",
+            "attributes": {
+              "name": "bazel_tools~xcode_configure_extension~local_config_xcode",
+              "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=",
+        "accumulatedFileDigests": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "local_config_sh": {
+            "bzlFile": "@@bazel_tools//tools/sh:sh_configure.bzl",
+            "ruleClassName": "sh_config",
+            "attributes": {
+              "name": "bazel_tools~sh_configure_extension~local_config_sh"
+            }
+          }
+        },
+        "recordedRepoMappingEntries": []
+      }
+    },
+    "@@rules_java~7.1.0//java:extensions.bzl%toolchains": {
+      "general": {
+        "bzlTransitiveDigest": "D02GmifxnV/IhYgspsJMDZ/aE8HxAjXgek5gi6FSto4=",
+        "accumulatedFileDigests": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "remotejdk21_linux_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk21_linux_toolchain_config_repo",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_s390x_toolchain_config_repo",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_macos_toolchain_config_repo",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk21_macos_aarch64_toolchain_config_repo",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_aarch64_toolchain_config_repo",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk21_macos_aarch64",
+              "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": "2a7a99a3ea263dbd8d32a67d1e6e363ba8b25c645c826f5e167a02bbafaff1fa",
+              "strip_prefix": "zulu21.28.85-ca-jdk21.0.0-macosx_aarch64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-macosx_aarch64.tar.gz",
+                "https://cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-macosx_aarch64.tar.gz"
+              ]
+            }
+          },
+          "remotejdk17_linux_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_toolchain_config_repo",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_macos_aarch64",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remote_java_tools_windows",
+              "sha256": "c5c70c214a350f12cbf52da8270fa43ba629b795f3dd328028a38f8f0d39c2a1",
+              "urls": [
+                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.1/java_tools_windows-v13.1.zip",
+                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.1/java_tools_windows-v13.1.zip"
+              ]
+            }
+          },
+          "remotejdk11_win": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_win",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_win_toolchain_config_repo",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_aarch64",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_s390x_toolchain_config_repo",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_toolchain_config_repo",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_macos",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_win_arm64",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_macos",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk21_macos",
+              "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": "9639b87db586d0c89f7a9892ae47f421e442c64b97baebdff31788fbe23265bd",
+              "strip_prefix": "zulu21.28.85-ca-jdk21.0.0-macosx_x64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-macosx_x64.tar.gz",
+                "https://cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-macosx_x64.tar.gz"
+              ]
+            }
+          },
+          "remotejdk21_macos_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk21_macos_toolchain_config_repo",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_macos_aarch64_toolchain_config_repo",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_win",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_macos_aarch64_toolchain_config_repo",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_ppc64le_toolchain_config_repo",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk21_linux",
+              "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": "0c0eadfbdc47a7ca64aeab51b9c061f71b6e4d25d2d87674512e9b6387e9e3a6",
+              "strip_prefix": "zulu21.28.85-ca-jdk21.0.0-linux_x64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-linux_x64.tar.gz",
+                "https://cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-linux_x64.tar.gz"
+              ]
+            }
+          },
+          "remote_java_tools_linux": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remote_java_tools_linux",
+              "sha256": "d134da9b04c9023fb6e56a5d4bffccee73f7bc9572ddc4e747778dacccd7a5a7",
+              "urls": [
+                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.1/java_tools_linux-v13.1.zip",
+                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.1/java_tools_linux-v13.1.zip"
+              ]
+            }
+          },
+          "remotejdk21_win": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk21_win",
+              "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": "e9959d500a0d9a7694ac243baf657761479da132f0f94720cbffd092150bd802",
+              "strip_prefix": "zulu21.28.85-ca-jdk21.0.0-win_x64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-win_x64.zip",
+                "https://cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-win_x64.zip"
+              ]
+            }
+          },
+          "remotejdk21_linux_aarch64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk21_linux_aarch64",
+              "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": "1fb64b8036c5d463d8ab59af06bf5b6b006811e6012e3b0eb6bccf57f1c55835",
+              "strip_prefix": "zulu21.28.85-ca-jdk21.0.0-linux_aarch64",
+              "urls": [
+                "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-linux_aarch64.tar.gz",
+                "https://cdn.azul.com/zulu/bin/zulu21.28.85-ca-jdk21.0.0-linux_aarch64.tar.gz"
+              ]
+            }
+          },
+          "remotejdk11_linux_aarch64_toolchain_config_repo": {
+            "bzlFile": "@@rules_java~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_aarch64_toolchain_config_repo",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_s390x",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_aarch64",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_win_arm64_toolchain_config_repo",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_macos_toolchain_config_repo",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_ppc64le_toolchain_config_repo",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_win_arm64",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remote_java_tools_darwin_arm64",
+              "sha256": "dab5bb87ec43e980faea6e1cec14bafb217b8e2f5346f53aa784fd715929a930",
+              "urls": [
+                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.1/java_tools_darwin_arm64-v13.1.zip",
+                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.1/java_tools_darwin_arm64-v13.1.zip"
+              ]
+            }
+          },
+          "remotejdk17_linux_ppc64le": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_ppc64le",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk21_linux_aarch64_toolchain_config_repo",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_win_arm64_toolchain_config_repo",
+              "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~7.1.0//toolchains:local_java_repository.bzl",
+            "ruleClassName": "_local_java_repository_rule",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~local_jdk",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remote_java_tools_darwin_x86_64",
+              "sha256": "0db40d8505a2b65ef0ed46e4256757807db8162f7acff16225be57c1d5726dbc",
+              "urls": [
+                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.1/java_tools_darwin_x86_64-v13.1.zip",
+                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.1/java_tools_darwin_x86_64-v13.1.zip"
+              ]
+            }
+          },
+          "remote_java_tools": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remote_java_tools",
+              "sha256": "286bdbbd66e616fc4ed3f90101418729a73baa7e8c23a98ffbef558f74c0ad14",
+              "urls": [
+                "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.1/java_tools-v13.1.zip",
+                "https://github.com/bazelbuild/java_tools/releases/download/java_v13.1/java_tools-v13.1.zip"
+              ]
+            }
+          },
+          "remotejdk17_linux_s390x": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_linux_s390x",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk17_win_toolchain_config_repo",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_linux_ppc64le",
+              "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": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk11_macos_aarch64",
+              "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~7.1.0//toolchains:remote_java_repository.bzl",
+            "ruleClassName": "_toolchain_config",
+            "attributes": {
+              "name": "rules_java~7.1.0~toolchains~remotejdk21_win_toolchain_config_repo",
+              "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~7.1.0",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "rules_java~7.1.0",
+            "remote_java_tools",
+            "rules_java~7.1.0~toolchains~remote_java_tools"
+          ]
+        ]
+      }
+    },
+    "@@rules_rust~0.40.0//rust:extensions.bzl%rust": {
+      "general": {
+        "bzlTransitiveDigest": "I2ECWAfjTweoEwT+ulurWMJlNijPuXMqs3vBh+mgvd0=",
+        "accumulatedFileDigests": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "rust_windows_x86_64__wasm32-wasi__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_windows_x86_64__wasm32-wasi__stable_tools",
+              "exec_triple": "x86_64-pc-windows-msvc",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "wasm32-wasi",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_darwin_aarch64__wasm32-wasi__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_darwin_aarch64__wasm32-wasi__stable_tools",
+              "exec_triple": "aarch64-apple-darwin",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "wasm32-wasi",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_darwin_x86_64__wasm32-wasi__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_darwin_x86_64__wasm32-wasi__stable_tools",
+              "exec_triple": "x86_64-apple-darwin",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "wasm32-wasi",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_freebsd_x86_64__wasm32-unknown-unknown__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_freebsd_x86_64__wasm32-unknown-unknown__stable_tools",
+              "exec_triple": "x86_64-unknown-freebsd",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "wasm32-unknown-unknown",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_freebsd_x86_64__wasm32-wasi__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_freebsd_x86_64__wasm32-wasi__stable",
+              "toolchain": "@rust_freebsd_x86_64__wasm32-wasi__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:freebsd"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:wasm32",
+                "@platforms//os:wasi"
+              ]
+            }
+          },
+          "rust_linux_aarch64__aarch64-unknown-linux-gnu__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_linux_aarch64__aarch64-unknown-linux-gnu__stable_tools",
+              "exec_triple": "aarch64-unknown-linux-gnu",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "aarch64-unknown-linux-gnu",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_linux_aarch64__aarch64-unknown-linux-gnu__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_linux_aarch64__aarch64-unknown-linux-gnu__stable",
+              "toolchain": "@rust_linux_aarch64__aarch64-unknown-linux-gnu__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:aarch64",
+                "@platforms//os:linux"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:aarch64",
+                "@platforms//os:linux"
+              ]
+            }
+          },
+          "rustfmt_nightly-2024-02-08__aarch64-unknown-linux-gnu": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rustfmt_nightly-2024-02-08__aarch64-unknown-linux-gnu",
+              "toolchain": "@rustfmt_nightly-2024-02-08__aarch64-unknown-linux-gnu_tools//:rustfmt_toolchain",
+              "toolchain_type": "@rules_rust//rust/rustfmt:toolchain_type",
+              "target_settings": [],
+              "exec_compatible_with": [
+                "@platforms//cpu:aarch64",
+                "@platforms//os:linux"
+              ],
+              "target_compatible_with": []
+            }
+          },
+          "rust_windows_x86_64": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_set_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_windows_x86_64",
+              "toolchains": [
+                "@rust_windows_x86_64__x86_64-pc-windows-msvc__stable//:toolchain",
+                "@rust_windows_x86_64__wasm32-unknown-unknown__stable//:toolchain",
+                "@rust_windows_x86_64__wasm32-wasi__stable//:toolchain"
+              ]
+            }
+          },
+          "rust_linux_aarch64__wasm32-unknown-unknown__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_linux_aarch64__wasm32-unknown-unknown__stable",
+              "toolchain": "@rust_linux_aarch64__wasm32-unknown-unknown__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:aarch64",
+                "@platforms//os:linux"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:wasm32",
+                "@platforms//os:none"
+              ]
+            }
+          },
+          "rust_windows_aarch64__wasm32-wasi__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_windows_aarch64__wasm32-wasi__stable_tools",
+              "exec_triple": "aarch64-pc-windows-msvc",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "wasm32-wasi",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_linux_x86_64__x86_64-unknown-linux-gnu__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_linux_x86_64__x86_64-unknown-linux-gnu__stable_tools",
+              "exec_triple": "x86_64-unknown-linux-gnu",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "x86_64-unknown-linux-gnu",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_windows_aarch64__aarch64-pc-windows-msvc__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_windows_aarch64__aarch64-pc-windows-msvc__stable_tools",
+              "exec_triple": "aarch64-pc-windows-msvc",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "aarch64-pc-windows-msvc",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_windows_aarch64": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_set_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_windows_aarch64",
+              "toolchains": [
+                "@rust_windows_aarch64__aarch64-pc-windows-msvc__stable//:toolchain",
+                "@rust_windows_aarch64__wasm32-unknown-unknown__stable//:toolchain",
+                "@rust_windows_aarch64__wasm32-wasi__stable//:toolchain"
+              ]
+            }
+          },
+          "rustfmt_nightly-2024-02-08__x86_64-unknown-linux-gnu": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rustfmt_nightly-2024-02-08__x86_64-unknown-linux-gnu",
+              "toolchain": "@rustfmt_nightly-2024-02-08__x86_64-unknown-linux-gnu_tools//:rustfmt_toolchain",
+              "toolchain_type": "@rules_rust//rust/rustfmt:toolchain_type",
+              "target_settings": [],
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:linux"
+              ],
+              "target_compatible_with": []
+            }
+          },
+          "rust_linux_x86_64__wasm32-unknown-unknown__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_linux_x86_64__wasm32-unknown-unknown__stable",
+              "toolchain": "@rust_linux_x86_64__wasm32-unknown-unknown__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:linux"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:wasm32",
+                "@platforms//os:none"
+              ]
+            }
+          },
+          "rust_windows_x86_64__x86_64-pc-windows-msvc__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_windows_x86_64__x86_64-pc-windows-msvc__stable_tools",
+              "exec_triple": "x86_64-pc-windows-msvc",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "x86_64-pc-windows-msvc",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rustfmt_nightly-2024-02-08__x86_64-apple-darwin": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rustfmt_nightly-2024-02-08__x86_64-apple-darwin",
+              "toolchain": "@rustfmt_nightly-2024-02-08__x86_64-apple-darwin_tools//:rustfmt_toolchain",
+              "toolchain_type": "@rules_rust//rust/rustfmt:toolchain_type",
+              "target_settings": [],
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:osx"
+              ],
+              "target_compatible_with": []
+            }
+          },
+          "rust_analyzer_1.76.0_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_analyzer_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_analyzer_1.76.0_tools",
+              "version": "1.76.0",
+              "iso_date": "",
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_freebsd_x86_64__x86_64-unknown-freebsd__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_freebsd_x86_64__x86_64-unknown-freebsd__stable_tools",
+              "exec_triple": "x86_64-unknown-freebsd",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "x86_64-unknown-freebsd",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_darwin_x86_64__wasm32-unknown-unknown__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_darwin_x86_64__wasm32-unknown-unknown__stable",
+              "toolchain": "@rust_darwin_x86_64__wasm32-unknown-unknown__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:osx"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:wasm32",
+                "@platforms//os:none"
+              ]
+            }
+          },
+          "rust_darwin_aarch64__wasm32-unknown-unknown__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_darwin_aarch64__wasm32-unknown-unknown__stable",
+              "toolchain": "@rust_darwin_aarch64__wasm32-unknown-unknown__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:aarch64",
+                "@platforms//os:osx"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:wasm32",
+                "@platforms//os:none"
+              ]
+            }
+          },
+          "rust_darwin_aarch64__aarch64-apple-darwin__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_darwin_aarch64__aarch64-apple-darwin__stable",
+              "toolchain": "@rust_darwin_aarch64__aarch64-apple-darwin__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:aarch64",
+                "@platforms//os:osx"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:aarch64",
+                "@platforms//os:osx"
+              ]
+            }
+          },
+          "rust_windows_x86_64__wasm32-wasi__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_windows_x86_64__wasm32-wasi__stable",
+              "toolchain": "@rust_windows_x86_64__wasm32-wasi__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:windows"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:wasm32",
+                "@platforms//os:wasi"
+              ]
+            }
+          },
+          "rustfmt_nightly-2024-02-08__aarch64-apple-darwin_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rustfmt_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rustfmt_nightly-2024-02-08__aarch64-apple-darwin_tools",
+              "version": "nightly",
+              "iso_date": "2024-02-08",
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {},
+              "exec_triple": "aarch64-apple-darwin"
+            }
+          },
+          "rust_darwin_x86_64": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_set_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_darwin_x86_64",
+              "toolchains": [
+                "@rust_darwin_x86_64__x86_64-apple-darwin__stable//:toolchain",
+                "@rust_darwin_x86_64__wasm32-unknown-unknown__stable//:toolchain",
+                "@rust_darwin_x86_64__wasm32-wasi__stable//:toolchain"
+              ]
+            }
+          },
+          "rust_windows_aarch64__wasm32-wasi__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_windows_aarch64__wasm32-wasi__stable",
+              "toolchain": "@rust_windows_aarch64__wasm32-wasi__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:aarch64",
+                "@platforms//os:windows"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:wasm32",
+                "@platforms//os:wasi"
+              ]
+            }
+          },
+          "rust_darwin_x86_64__wasm32-unknown-unknown__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_darwin_x86_64__wasm32-unknown-unknown__stable_tools",
+              "exec_triple": "x86_64-apple-darwin",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "wasm32-unknown-unknown",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_darwin_aarch64__wasm32-unknown-unknown__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_darwin_aarch64__wasm32-unknown-unknown__stable_tools",
+              "exec_triple": "aarch64-apple-darwin",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "wasm32-unknown-unknown",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_windows_x86_64__wasm32-unknown-unknown__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_windows_x86_64__wasm32-unknown-unknown__stable_tools",
+              "exec_triple": "x86_64-pc-windows-msvc",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "wasm32-unknown-unknown",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rustfmt_nightly-2024-02-08__aarch64-apple-darwin": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rustfmt_nightly-2024-02-08__aarch64-apple-darwin",
+              "toolchain": "@rustfmt_nightly-2024-02-08__aarch64-apple-darwin_tools//:rustfmt_toolchain",
+              "toolchain_type": "@rules_rust//rust/rustfmt:toolchain_type",
+              "target_settings": [],
+              "exec_compatible_with": [
+                "@platforms//cpu:aarch64",
+                "@platforms//os:osx"
+              ],
+              "target_compatible_with": []
+            }
+          },
+          "rust_linux_aarch64__wasm32-wasi__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_linux_aarch64__wasm32-wasi__stable",
+              "toolchain": "@rust_linux_aarch64__wasm32-wasi__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:aarch64",
+                "@platforms//os:linux"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:wasm32",
+                "@platforms//os:wasi"
+              ]
+            }
+          },
+          "rust_darwin_aarch64": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_set_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_darwin_aarch64",
+              "toolchains": [
+                "@rust_darwin_aarch64__aarch64-apple-darwin__stable//:toolchain",
+                "@rust_darwin_aarch64__wasm32-unknown-unknown__stable//:toolchain",
+                "@rust_darwin_aarch64__wasm32-wasi__stable//:toolchain"
+              ]
+            }
+          },
+          "rustfmt_nightly-2024-02-08__x86_64-unknown-freebsd": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rustfmt_nightly-2024-02-08__x86_64-unknown-freebsd",
+              "toolchain": "@rustfmt_nightly-2024-02-08__x86_64-unknown-freebsd_tools//:rustfmt_toolchain",
+              "toolchain_type": "@rules_rust//rust/rustfmt:toolchain_type",
+              "target_settings": [],
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:freebsd"
+              ],
+              "target_compatible_with": []
+            }
+          },
+          "rust_darwin_x86_64__x86_64-apple-darwin__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_darwin_x86_64__x86_64-apple-darwin__stable",
+              "toolchain": "@rust_darwin_x86_64__x86_64-apple-darwin__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:osx"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:osx"
+              ]
+            }
+          },
+          "rust_linux_x86_64__wasm32-unknown-unknown__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_linux_x86_64__wasm32-unknown-unknown__stable_tools",
+              "exec_triple": "x86_64-unknown-linux-gnu",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "wasm32-unknown-unknown",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_freebsd_x86_64__wasm32-wasi__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_freebsd_x86_64__wasm32-wasi__stable_tools",
+              "exec_triple": "x86_64-unknown-freebsd",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "wasm32-wasi",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rustfmt_nightly-2024-02-08__x86_64-unknown-freebsd_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rustfmt_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rustfmt_nightly-2024-02-08__x86_64-unknown-freebsd_tools",
+              "version": "nightly",
+              "iso_date": "2024-02-08",
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {},
+              "exec_triple": "x86_64-unknown-freebsd"
+            }
+          },
+          "rust_darwin_x86_64__wasm32-wasi__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_darwin_x86_64__wasm32-wasi__stable",
+              "toolchain": "@rust_darwin_x86_64__wasm32-wasi__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:osx"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:wasm32",
+                "@platforms//os:wasi"
+              ]
+            }
+          },
+          "rust_host_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_host_tools",
+              "exec_triple": "x86_64-unknown-linux-gnu",
+              "target_triple": "x86_64-unknown-linux-gnu",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "dev_components": false,
+              "edition": "",
+              "rustfmt_version": "nightly/2024-02-08",
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "version": "1.76.0"
+            }
+          },
+          "rust_freebsd_x86_64__wasm32-unknown-unknown__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_freebsd_x86_64__wasm32-unknown-unknown__stable",
+              "toolchain": "@rust_freebsd_x86_64__wasm32-unknown-unknown__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:freebsd"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:wasm32",
+                "@platforms//os:none"
+              ]
+            }
+          },
+          "rust_freebsd_x86_64": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_set_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_freebsd_x86_64",
+              "toolchains": [
+                "@rust_freebsd_x86_64__x86_64-unknown-freebsd__stable//:toolchain",
+                "@rust_freebsd_x86_64__wasm32-unknown-unknown__stable//:toolchain",
+                "@rust_freebsd_x86_64__wasm32-wasi__stable//:toolchain"
+              ]
+            }
+          },
+          "rust_linux_x86_64__wasm32-wasi__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_linux_x86_64__wasm32-wasi__stable_tools",
+              "exec_triple": "x86_64-unknown-linux-gnu",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "wasm32-wasi",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_windows_x86_64__wasm32-unknown-unknown__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_windows_x86_64__wasm32-unknown-unknown__stable",
+              "toolchain": "@rust_windows_x86_64__wasm32-unknown-unknown__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:windows"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:wasm32",
+                "@platforms//os:none"
+              ]
+            }
+          },
+          "rustfmt_nightly-2024-02-08__x86_64-unknown-linux-gnu_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rustfmt_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rustfmt_nightly-2024-02-08__x86_64-unknown-linux-gnu_tools",
+              "version": "nightly",
+              "iso_date": "2024-02-08",
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {},
+              "exec_triple": "x86_64-unknown-linux-gnu"
+            }
+          },
+          "rust_linux_x86_64__x86_64-unknown-linux-gnu__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_linux_x86_64__x86_64-unknown-linux-gnu__stable",
+              "toolchain": "@rust_linux_x86_64__x86_64-unknown-linux-gnu__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:linux"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:linux"
+              ]
+            }
+          },
+          "rust_linux_x86_64": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_set_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_linux_x86_64",
+              "toolchains": [
+                "@rust_linux_x86_64__x86_64-unknown-linux-gnu__stable//:toolchain",
+                "@rust_linux_x86_64__wasm32-unknown-unknown__stable//:toolchain",
+                "@rust_linux_x86_64__wasm32-wasi__stable//:toolchain"
+              ]
+            }
+          },
+          "rust_windows_x86_64__x86_64-pc-windows-msvc__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_windows_x86_64__x86_64-pc-windows-msvc__stable",
+              "toolchain": "@rust_windows_x86_64__x86_64-pc-windows-msvc__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:windows"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:windows"
+              ]
+            }
+          },
+          "rust_linux_x86_64__wasm32-wasi__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_linux_x86_64__wasm32-wasi__stable",
+              "toolchain": "@rust_linux_x86_64__wasm32-wasi__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:linux"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:wasm32",
+                "@platforms//os:wasi"
+              ]
+            }
+          },
+          "rust_windows_aarch64__wasm32-unknown-unknown__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_windows_aarch64__wasm32-unknown-unknown__stable_tools",
+              "exec_triple": "aarch64-pc-windows-msvc",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "wasm32-unknown-unknown",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_darwin_aarch64__aarch64-apple-darwin__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_darwin_aarch64__aarch64-apple-darwin__stable_tools",
+              "exec_triple": "aarch64-apple-darwin",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "aarch64-apple-darwin",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_linux_aarch64__wasm32-wasi__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_linux_aarch64__wasm32-wasi__stable_tools",
+              "exec_triple": "aarch64-unknown-linux-gnu",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "wasm32-wasi",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rustfmt_nightly-2024-02-08__aarch64-pc-windows-msvc_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rustfmt_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rustfmt_nightly-2024-02-08__aarch64-pc-windows-msvc_tools",
+              "version": "nightly",
+              "iso_date": "2024-02-08",
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {},
+              "exec_triple": "aarch64-pc-windows-msvc"
+            }
+          },
+          "rust_windows_aarch64__wasm32-unknown-unknown__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_windows_aarch64__wasm32-unknown-unknown__stable",
+              "toolchain": "@rust_windows_aarch64__wasm32-unknown-unknown__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:aarch64",
+                "@platforms//os:windows"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:wasm32",
+                "@platforms//os:none"
+              ]
+            }
+          },
+          "rust_linux_aarch64": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_set_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_linux_aarch64",
+              "toolchains": [
+                "@rust_linux_aarch64__aarch64-unknown-linux-gnu__stable//:toolchain",
+                "@rust_linux_aarch64__wasm32-unknown-unknown__stable//:toolchain",
+                "@rust_linux_aarch64__wasm32-wasi__stable//:toolchain"
+              ]
+            }
+          },
+          "rust_darwin_aarch64__wasm32-wasi__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_darwin_aarch64__wasm32-wasi__stable",
+              "toolchain": "@rust_darwin_aarch64__wasm32-wasi__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:aarch64",
+                "@platforms//os:osx"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:wasm32",
+                "@platforms//os:wasi"
+              ]
+            }
+          },
+          "rustfmt_nightly-2024-02-08__x86_64-pc-windows-msvc_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rustfmt_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rustfmt_nightly-2024-02-08__x86_64-pc-windows-msvc_tools",
+              "version": "nightly",
+              "iso_date": "2024-02-08",
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {},
+              "exec_triple": "x86_64-pc-windows-msvc"
+            }
+          },
+          "rustfmt_nightly-2024-02-08__aarch64-unknown-linux-gnu_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rustfmt_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rustfmt_nightly-2024-02-08__aarch64-unknown-linux-gnu_tools",
+              "version": "nightly",
+              "iso_date": "2024-02-08",
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {},
+              "exec_triple": "aarch64-unknown-linux-gnu"
+            }
+          },
+          "rust_windows_aarch64__aarch64-pc-windows-msvc__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_windows_aarch64__aarch64-pc-windows-msvc__stable",
+              "toolchain": "@rust_windows_aarch64__aarch64-pc-windows-msvc__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:aarch64",
+                "@platforms//os:windows"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:aarch64",
+                "@platforms//os:windows"
+              ]
+            }
+          },
+          "rustfmt_nightly-2024-02-08__x86_64-apple-darwin_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rustfmt_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rustfmt_nightly-2024-02-08__x86_64-apple-darwin_tools",
+              "version": "nightly",
+              "iso_date": "2024-02-08",
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {},
+              "exec_triple": "x86_64-apple-darwin"
+            }
+          },
+          "rustfmt_nightly-2024-02-08__aarch64-pc-windows-msvc": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rustfmt_nightly-2024-02-08__aarch64-pc-windows-msvc",
+              "toolchain": "@rustfmt_nightly-2024-02-08__aarch64-pc-windows-msvc_tools//:rustfmt_toolchain",
+              "toolchain_type": "@rules_rust//rust/rustfmt:toolchain_type",
+              "target_settings": [],
+              "exec_compatible_with": [
+                "@platforms//cpu:aarch64",
+                "@platforms//os:windows"
+              ],
+              "target_compatible_with": []
+            }
+          },
+          "rust_freebsd_x86_64__x86_64-unknown-freebsd__stable": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_freebsd_x86_64__x86_64-unknown-freebsd__stable",
+              "toolchain": "@rust_freebsd_x86_64__x86_64-unknown-freebsd__stable_tools//:rust_toolchain",
+              "target_settings": [
+                "@rules_rust//rust/toolchain/channel:stable"
+              ],
+              "toolchain_type": "@rules_rust//rust:toolchain",
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:freebsd"
+              ],
+              "target_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:freebsd"
+              ]
+            }
+          },
+          "rust_analyzer_1.76.0": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_analyzer_1.76.0",
+              "toolchain": "@rust_analyzer_1.76.0_tools//:rust_analyzer_toolchain",
+              "toolchain_type": "@rules_rust//rust/rust_analyzer:toolchain_type",
+              "exec_compatible_with": [],
+              "target_compatible_with": []
+            }
+          },
+          "rust_toolchains": {
+            "bzlFile": "@@rules_rust~0.40.0//rust/private:repository_utils.bzl",
+            "ruleClassName": "toolchain_repository_hub",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_toolchains",
+              "toolchain_names": [
+                "rust_analyzer_1.76.0",
+                "rust_darwin_aarch64__aarch64-apple-darwin__stable",
+                "rust_darwin_aarch64__wasm32-unknown-unknown__stable",
+                "rust_darwin_aarch64__wasm32-wasi__stable",
+                "rustfmt_nightly-2024-02-08__aarch64-apple-darwin",
+                "rust_windows_aarch64__aarch64-pc-windows-msvc__stable",
+                "rust_windows_aarch64__wasm32-unknown-unknown__stable",
+                "rust_windows_aarch64__wasm32-wasi__stable",
+                "rustfmt_nightly-2024-02-08__aarch64-pc-windows-msvc",
+                "rust_linux_aarch64__aarch64-unknown-linux-gnu__stable",
+                "rust_linux_aarch64__wasm32-unknown-unknown__stable",
+                "rust_linux_aarch64__wasm32-wasi__stable",
+                "rustfmt_nightly-2024-02-08__aarch64-unknown-linux-gnu",
+                "rust_darwin_x86_64__x86_64-apple-darwin__stable",
+                "rust_darwin_x86_64__wasm32-unknown-unknown__stable",
+                "rust_darwin_x86_64__wasm32-wasi__stable",
+                "rustfmt_nightly-2024-02-08__x86_64-apple-darwin",
+                "rust_windows_x86_64__x86_64-pc-windows-msvc__stable",
+                "rust_windows_x86_64__wasm32-unknown-unknown__stable",
+                "rust_windows_x86_64__wasm32-wasi__stable",
+                "rustfmt_nightly-2024-02-08__x86_64-pc-windows-msvc",
+                "rust_freebsd_x86_64__x86_64-unknown-freebsd__stable",
+                "rust_freebsd_x86_64__wasm32-unknown-unknown__stable",
+                "rust_freebsd_x86_64__wasm32-wasi__stable",
+                "rustfmt_nightly-2024-02-08__x86_64-unknown-freebsd",
+                "rust_linux_x86_64__x86_64-unknown-linux-gnu__stable",
+                "rust_linux_x86_64__wasm32-unknown-unknown__stable",
+                "rust_linux_x86_64__wasm32-wasi__stable",
+                "rustfmt_nightly-2024-02-08__x86_64-unknown-linux-gnu"
+              ],
+              "toolchain_labels": {
+                "rust_analyzer_1.76.0": "@rust_analyzer_1.76.0_tools//:rust_analyzer_toolchain",
+                "rust_darwin_aarch64__aarch64-apple-darwin__stable": "@rust_darwin_aarch64__aarch64-apple-darwin__stable_tools//:rust_toolchain",
+                "rust_darwin_aarch64__wasm32-unknown-unknown__stable": "@rust_darwin_aarch64__wasm32-unknown-unknown__stable_tools//:rust_toolchain",
+                "rust_darwin_aarch64__wasm32-wasi__stable": "@rust_darwin_aarch64__wasm32-wasi__stable_tools//:rust_toolchain",
+                "rustfmt_nightly-2024-02-08__aarch64-apple-darwin": "@rustfmt_nightly-2024-02-08__aarch64-apple-darwin_tools//:rustfmt_toolchain",
+                "rust_windows_aarch64__aarch64-pc-windows-msvc__stable": "@rust_windows_aarch64__aarch64-pc-windows-msvc__stable_tools//:rust_toolchain",
+                "rust_windows_aarch64__wasm32-unknown-unknown__stable": "@rust_windows_aarch64__wasm32-unknown-unknown__stable_tools//:rust_toolchain",
+                "rust_windows_aarch64__wasm32-wasi__stable": "@rust_windows_aarch64__wasm32-wasi__stable_tools//:rust_toolchain",
+                "rustfmt_nightly-2024-02-08__aarch64-pc-windows-msvc": "@rustfmt_nightly-2024-02-08__aarch64-pc-windows-msvc_tools//:rustfmt_toolchain",
+                "rust_linux_aarch64__aarch64-unknown-linux-gnu__stable": "@rust_linux_aarch64__aarch64-unknown-linux-gnu__stable_tools//:rust_toolchain",
+                "rust_linux_aarch64__wasm32-unknown-unknown__stable": "@rust_linux_aarch64__wasm32-unknown-unknown__stable_tools//:rust_toolchain",
+                "rust_linux_aarch64__wasm32-wasi__stable": "@rust_linux_aarch64__wasm32-wasi__stable_tools//:rust_toolchain",
+                "rustfmt_nightly-2024-02-08__aarch64-unknown-linux-gnu": "@rustfmt_nightly-2024-02-08__aarch64-unknown-linux-gnu_tools//:rustfmt_toolchain",
+                "rust_darwin_x86_64__x86_64-apple-darwin__stable": "@rust_darwin_x86_64__x86_64-apple-darwin__stable_tools//:rust_toolchain",
+                "rust_darwin_x86_64__wasm32-unknown-unknown__stable": "@rust_darwin_x86_64__wasm32-unknown-unknown__stable_tools//:rust_toolchain",
+                "rust_darwin_x86_64__wasm32-wasi__stable": "@rust_darwin_x86_64__wasm32-wasi__stable_tools//:rust_toolchain",
+                "rustfmt_nightly-2024-02-08__x86_64-apple-darwin": "@rustfmt_nightly-2024-02-08__x86_64-apple-darwin_tools//:rustfmt_toolchain",
+                "rust_windows_x86_64__x86_64-pc-windows-msvc__stable": "@rust_windows_x86_64__x86_64-pc-windows-msvc__stable_tools//:rust_toolchain",
+                "rust_windows_x86_64__wasm32-unknown-unknown__stable": "@rust_windows_x86_64__wasm32-unknown-unknown__stable_tools//:rust_toolchain",
+                "rust_windows_x86_64__wasm32-wasi__stable": "@rust_windows_x86_64__wasm32-wasi__stable_tools//:rust_toolchain",
+                "rustfmt_nightly-2024-02-08__x86_64-pc-windows-msvc": "@rustfmt_nightly-2024-02-08__x86_64-pc-windows-msvc_tools//:rustfmt_toolchain",
+                "rust_freebsd_x86_64__x86_64-unknown-freebsd__stable": "@rust_freebsd_x86_64__x86_64-unknown-freebsd__stable_tools//:rust_toolchain",
+                "rust_freebsd_x86_64__wasm32-unknown-unknown__stable": "@rust_freebsd_x86_64__wasm32-unknown-unknown__stable_tools//:rust_toolchain",
+                "rust_freebsd_x86_64__wasm32-wasi__stable": "@rust_freebsd_x86_64__wasm32-wasi__stable_tools//:rust_toolchain",
+                "rustfmt_nightly-2024-02-08__x86_64-unknown-freebsd": "@rustfmt_nightly-2024-02-08__x86_64-unknown-freebsd_tools//:rustfmt_toolchain",
+                "rust_linux_x86_64__x86_64-unknown-linux-gnu__stable": "@rust_linux_x86_64__x86_64-unknown-linux-gnu__stable_tools//:rust_toolchain",
+                "rust_linux_x86_64__wasm32-unknown-unknown__stable": "@rust_linux_x86_64__wasm32-unknown-unknown__stable_tools//:rust_toolchain",
+                "rust_linux_x86_64__wasm32-wasi__stable": "@rust_linux_x86_64__wasm32-wasi__stable_tools//:rust_toolchain",
+                "rustfmt_nightly-2024-02-08__x86_64-unknown-linux-gnu": "@rustfmt_nightly-2024-02-08__x86_64-unknown-linux-gnu_tools//:rustfmt_toolchain"
+              },
+              "toolchain_types": {
+                "rust_analyzer_1.76.0": "@rules_rust//rust/rust_analyzer:toolchain_type",
+                "rust_darwin_aarch64__aarch64-apple-darwin__stable": "@rules_rust//rust:toolchain",
+                "rust_darwin_aarch64__wasm32-unknown-unknown__stable": "@rules_rust//rust:toolchain",
+                "rust_darwin_aarch64__wasm32-wasi__stable": "@rules_rust//rust:toolchain",
+                "rustfmt_nightly-2024-02-08__aarch64-apple-darwin": "@rules_rust//rust/rustfmt:toolchain_type",
+                "rust_windows_aarch64__aarch64-pc-windows-msvc__stable": "@rules_rust//rust:toolchain",
+                "rust_windows_aarch64__wasm32-unknown-unknown__stable": "@rules_rust//rust:toolchain",
+                "rust_windows_aarch64__wasm32-wasi__stable": "@rules_rust//rust:toolchain",
+                "rustfmt_nightly-2024-02-08__aarch64-pc-windows-msvc": "@rules_rust//rust/rustfmt:toolchain_type",
+                "rust_linux_aarch64__aarch64-unknown-linux-gnu__stable": "@rules_rust//rust:toolchain",
+                "rust_linux_aarch64__wasm32-unknown-unknown__stable": "@rules_rust//rust:toolchain",
+                "rust_linux_aarch64__wasm32-wasi__stable": "@rules_rust//rust:toolchain",
+                "rustfmt_nightly-2024-02-08__aarch64-unknown-linux-gnu": "@rules_rust//rust/rustfmt:toolchain_type",
+                "rust_darwin_x86_64__x86_64-apple-darwin__stable": "@rules_rust//rust:toolchain",
+                "rust_darwin_x86_64__wasm32-unknown-unknown__stable": "@rules_rust//rust:toolchain",
+                "rust_darwin_x86_64__wasm32-wasi__stable": "@rules_rust//rust:toolchain",
+                "rustfmt_nightly-2024-02-08__x86_64-apple-darwin": "@rules_rust//rust/rustfmt:toolchain_type",
+                "rust_windows_x86_64__x86_64-pc-windows-msvc__stable": "@rules_rust//rust:toolchain",
+                "rust_windows_x86_64__wasm32-unknown-unknown__stable": "@rules_rust//rust:toolchain",
+                "rust_windows_x86_64__wasm32-wasi__stable": "@rules_rust//rust:toolchain",
+                "rustfmt_nightly-2024-02-08__x86_64-pc-windows-msvc": "@rules_rust//rust/rustfmt:toolchain_type",
+                "rust_freebsd_x86_64__x86_64-unknown-freebsd__stable": "@rules_rust//rust:toolchain",
+                "rust_freebsd_x86_64__wasm32-unknown-unknown__stable": "@rules_rust//rust:toolchain",
+                "rust_freebsd_x86_64__wasm32-wasi__stable": "@rules_rust//rust:toolchain",
+                "rustfmt_nightly-2024-02-08__x86_64-unknown-freebsd": "@rules_rust//rust/rustfmt:toolchain_type",
+                "rust_linux_x86_64__x86_64-unknown-linux-gnu__stable": "@rules_rust//rust:toolchain",
+                "rust_linux_x86_64__wasm32-unknown-unknown__stable": "@rules_rust//rust:toolchain",
+                "rust_linux_x86_64__wasm32-wasi__stable": "@rules_rust//rust:toolchain",
+                "rustfmt_nightly-2024-02-08__x86_64-unknown-linux-gnu": "@rules_rust//rust/rustfmt:toolchain_type"
+              },
+              "exec_compatible_with": {
+                "rust_analyzer_1.76.0": [],
+                "rust_darwin_aarch64__aarch64-apple-darwin__stable": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:osx"
+                ],
+                "rust_darwin_aarch64__wasm32-unknown-unknown__stable": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:osx"
+                ],
+                "rust_darwin_aarch64__wasm32-wasi__stable": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:osx"
+                ],
+                "rustfmt_nightly-2024-02-08__aarch64-apple-darwin": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:osx"
+                ],
+                "rust_windows_aarch64__aarch64-pc-windows-msvc__stable": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:windows"
+                ],
+                "rust_windows_aarch64__wasm32-unknown-unknown__stable": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:windows"
+                ],
+                "rust_windows_aarch64__wasm32-wasi__stable": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:windows"
+                ],
+                "rustfmt_nightly-2024-02-08__aarch64-pc-windows-msvc": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:windows"
+                ],
+                "rust_linux_aarch64__aarch64-unknown-linux-gnu__stable": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:linux"
+                ],
+                "rust_linux_aarch64__wasm32-unknown-unknown__stable": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:linux"
+                ],
+                "rust_linux_aarch64__wasm32-wasi__stable": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:linux"
+                ],
+                "rustfmt_nightly-2024-02-08__aarch64-unknown-linux-gnu": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:linux"
+                ],
+                "rust_darwin_x86_64__x86_64-apple-darwin__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:osx"
+                ],
+                "rust_darwin_x86_64__wasm32-unknown-unknown__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:osx"
+                ],
+                "rust_darwin_x86_64__wasm32-wasi__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:osx"
+                ],
+                "rustfmt_nightly-2024-02-08__x86_64-apple-darwin": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:osx"
+                ],
+                "rust_windows_x86_64__x86_64-pc-windows-msvc__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:windows"
+                ],
+                "rust_windows_x86_64__wasm32-unknown-unknown__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:windows"
+                ],
+                "rust_windows_x86_64__wasm32-wasi__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:windows"
+                ],
+                "rustfmt_nightly-2024-02-08__x86_64-pc-windows-msvc": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:windows"
+                ],
+                "rust_freebsd_x86_64__x86_64-unknown-freebsd__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:freebsd"
+                ],
+                "rust_freebsd_x86_64__wasm32-unknown-unknown__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:freebsd"
+                ],
+                "rust_freebsd_x86_64__wasm32-wasi__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:freebsd"
+                ],
+                "rustfmt_nightly-2024-02-08__x86_64-unknown-freebsd": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:freebsd"
+                ],
+                "rust_linux_x86_64__x86_64-unknown-linux-gnu__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:linux"
+                ],
+                "rust_linux_x86_64__wasm32-unknown-unknown__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:linux"
+                ],
+                "rust_linux_x86_64__wasm32-wasi__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:linux"
+                ],
+                "rustfmt_nightly-2024-02-08__x86_64-unknown-linux-gnu": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:linux"
+                ]
+              },
+              "target_compatible_with": {
+                "rust_analyzer_1.76.0": [],
+                "rust_darwin_aarch64__aarch64-apple-darwin__stable": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:osx"
+                ],
+                "rust_darwin_aarch64__wasm32-unknown-unknown__stable": [
+                  "@platforms//cpu:wasm32",
+                  "@platforms//os:none"
+                ],
+                "rust_darwin_aarch64__wasm32-wasi__stable": [
+                  "@platforms//cpu:wasm32",
+                  "@platforms//os:wasi"
+                ],
+                "rustfmt_nightly-2024-02-08__aarch64-apple-darwin": [],
+                "rust_windows_aarch64__aarch64-pc-windows-msvc__stable": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:windows"
+                ],
+                "rust_windows_aarch64__wasm32-unknown-unknown__stable": [
+                  "@platforms//cpu:wasm32",
+                  "@platforms//os:none"
+                ],
+                "rust_windows_aarch64__wasm32-wasi__stable": [
+                  "@platforms//cpu:wasm32",
+                  "@platforms//os:wasi"
+                ],
+                "rustfmt_nightly-2024-02-08__aarch64-pc-windows-msvc": [],
+                "rust_linux_aarch64__aarch64-unknown-linux-gnu__stable": [
+                  "@platforms//cpu:aarch64",
+                  "@platforms//os:linux"
+                ],
+                "rust_linux_aarch64__wasm32-unknown-unknown__stable": [
+                  "@platforms//cpu:wasm32",
+                  "@platforms//os:none"
+                ],
+                "rust_linux_aarch64__wasm32-wasi__stable": [
+                  "@platforms//cpu:wasm32",
+                  "@platforms//os:wasi"
+                ],
+                "rustfmt_nightly-2024-02-08__aarch64-unknown-linux-gnu": [],
+                "rust_darwin_x86_64__x86_64-apple-darwin__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:osx"
+                ],
+                "rust_darwin_x86_64__wasm32-unknown-unknown__stable": [
+                  "@platforms//cpu:wasm32",
+                  "@platforms//os:none"
+                ],
+                "rust_darwin_x86_64__wasm32-wasi__stable": [
+                  "@platforms//cpu:wasm32",
+                  "@platforms//os:wasi"
+                ],
+                "rustfmt_nightly-2024-02-08__x86_64-apple-darwin": [],
+                "rust_windows_x86_64__x86_64-pc-windows-msvc__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:windows"
+                ],
+                "rust_windows_x86_64__wasm32-unknown-unknown__stable": [
+                  "@platforms//cpu:wasm32",
+                  "@platforms//os:none"
+                ],
+                "rust_windows_x86_64__wasm32-wasi__stable": [
+                  "@platforms//cpu:wasm32",
+                  "@platforms//os:wasi"
+                ],
+                "rustfmt_nightly-2024-02-08__x86_64-pc-windows-msvc": [],
+                "rust_freebsd_x86_64__x86_64-unknown-freebsd__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:freebsd"
+                ],
+                "rust_freebsd_x86_64__wasm32-unknown-unknown__stable": [
+                  "@platforms//cpu:wasm32",
+                  "@platforms//os:none"
+                ],
+                "rust_freebsd_x86_64__wasm32-wasi__stable": [
+                  "@platforms//cpu:wasm32",
+                  "@platforms//os:wasi"
+                ],
+                "rustfmt_nightly-2024-02-08__x86_64-unknown-freebsd": [],
+                "rust_linux_x86_64__x86_64-unknown-linux-gnu__stable": [
+                  "@platforms//cpu:x86_64",
+                  "@platforms//os:linux"
+                ],
+                "rust_linux_x86_64__wasm32-unknown-unknown__stable": [
+                  "@platforms//cpu:wasm32",
+                  "@platforms//os:none"
+                ],
+                "rust_linux_x86_64__wasm32-wasi__stable": [
+                  "@platforms//cpu:wasm32",
+                  "@platforms//os:wasi"
+                ],
+                "rustfmt_nightly-2024-02-08__x86_64-unknown-linux-gnu": []
+              }
+            }
+          },
+          "rust_linux_aarch64__wasm32-unknown-unknown__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_linux_aarch64__wasm32-unknown-unknown__stable_tools",
+              "exec_triple": "aarch64-unknown-linux-gnu",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "wasm32-unknown-unknown",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rust_darwin_x86_64__x86_64-apple-darwin__stable_tools": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "rust_toolchain_tools_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rust_darwin_x86_64__x86_64-apple-darwin__stable_tools",
+              "exec_triple": "x86_64-apple-darwin",
+              "allocator_library": "@rules_rust//ffi/cc/allocator_library",
+              "global_allocator_library": "@rules_rust//ffi/cc/global_allocator_library",
+              "target_triple": "x86_64-apple-darwin",
+              "iso_date": "",
+              "version": "1.76.0",
+              "rustfmt_version": "nightly/2024-02-08",
+              "edition": "",
+              "dev_components": false,
+              "extra_rustc_flags": [],
+              "extra_exec_rustc_flags": [],
+              "opt_level": {},
+              "sha256s": {},
+              "urls": [
+                "https://static.rust-lang.org/dist/{}.tar.xz"
+              ],
+              "auth": {}
+            }
+          },
+          "rustfmt_nightly-2024-02-08__x86_64-pc-windows-msvc": {
+            "bzlFile": "@@rules_rust~0.40.0//rust:repositories.bzl",
+            "ruleClassName": "toolchain_repository_proxy",
+            "attributes": {
+              "name": "rules_rust~0.40.0~rust~rustfmt_nightly-2024-02-08__x86_64-pc-windows-msvc",
+              "toolchain": "@rustfmt_nightly-2024-02-08__x86_64-pc-windows-msvc_tools//:rustfmt_toolchain",
+              "toolchain_type": "@rules_rust//rust/rustfmt:toolchain_type",
+              "target_settings": [],
+              "exec_compatible_with": [
+                "@platforms//cpu:x86_64",
+                "@platforms//os:windows"
+              ],
+              "target_compatible_with": []
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_rust~0.40.0",
+            "bazel_skylib",
+            "bazel_skylib~1.5.0"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust",
+            "rules_rust~0.40.0"
+          ]
+        ]
+      }
+    },
+    "@@rules_rust~0.40.0//rust/private:extensions.bzl%i": {
+      "general": {
+        "bzlTransitiveDigest": "OrqzGpSU+8nCCqWqjht8BAZsz9Rc+39MPdlnI111+f0=",
+        "accumulatedFileDigests": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "rules_rust_prost__tracing-0.1.37": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__tracing-0.1.37",
+              "sha256": "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tracing/0.1.37/download"
+              ],
+              "strip_prefix": "tracing-0.1.37",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.tracing-0.1.37.bazel"
+            }
+          },
+          "rules_rust_tinyjson": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_tinyjson",
+              "sha256": "9ab95735ea2c8fd51154d01e39cf13912a78071c2d89abc49a7ef102a7dd725a",
+              "url": "https://crates.io/api/v1/crates/tinyjson/2.5.1/download",
+              "strip_prefix": "tinyjson-2.5.1",
+              "type": "tar.gz",
+              "build_file": "@@rules_rust~0.40.0//util/process_wrapper:BUILD.tinyjson.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__bumpalo-3.13.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__bumpalo-3.13.0",
+              "sha256": "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/bumpalo/3.13.0/download"
+              ],
+              "strip_prefix": "bumpalo-3.13.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.bumpalo-3.13.0.bazel"
+            }
+          },
+          "cui__pin-project-lite-0.2.13": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__pin-project-lite-0.2.13",
+              "sha256": "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/pin-project-lite/0.2.13/download"
+              ],
+              "strip_prefix": "pin-project-lite-0.2.13",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.pin-project-lite-0.2.13.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__walrus-0.20.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__walrus-0.20.3",
+              "sha256": "2c03529cd0c4400a2449f640d2f27cd1b48c3065226d15e26d98e4429ab0adb7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/walrus/0.20.3/download"
+              ],
+              "strip_prefix": "walrus-0.20.3",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.walrus-0.20.3.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__unicode-bidi-0.3.13": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__unicode-bidi-0.3.13",
+              "sha256": "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-bidi/0.3.13/download"
+              ],
+              "strip_prefix": "unicode-bidi-0.3.13",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.unicode-bidi-0.3.13.bazel"
+            }
+          },
+          "cui__generic-array-0.14.7": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__generic-array-0.14.7",
+              "sha256": "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/generic-array/0.14.7/download"
+              ],
+              "strip_prefix": "generic-array-0.14.7",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.generic-array-0.14.7.bazel"
+            }
+          },
+          "cross_x86_64-unknown-linux-gnu": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cross_x86_64-unknown-linux-gnu",
+              "urls": [
+                "https://github.com/rust-embedded/cross/releases/download/v0.2.1/cross-v0.2.1-x86_64-unknown-linux-gnu.tar.gz"
+              ],
+              "sha256": "06dcce3248488e95fbb368d14bef17fa8e77461d5055fbd5193538574820f413",
+              "build_file_content": "exports_files(glob([\"**\"]), visibility = [\"//visibility:public\"])"
+            }
+          },
+          "rules_rust_wasm_bindgen__windows_x86_64_gnu-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__windows_x86_64_gnu-0.48.0",
+              "sha256": "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_x86_64_gnu/0.48.0/download"
+              ],
+              "strip_prefix": "windows_x86_64_gnu-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.windows_x86_64_gnu-0.48.0.bazel"
+            }
+          },
+          "cui__rustix-0.37.23": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__rustix-0.37.23",
+              "sha256": "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rustix/0.37.23/download"
+              ],
+              "strip_prefix": "rustix-0.37.23",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.rustix-0.37.23.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__ureq-2.8.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__ureq-2.8.0",
+              "sha256": "f5ccd538d4a604753ebc2f17cd9946e89b77bf87f6a8e2309667c6f2e87855e3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/ureq/2.8.0/download"
+              ],
+              "strip_prefix": "ureq-2.8.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.ureq-2.8.0.bazel"
+            }
+          },
+          "cui__parking_lot_core-0.9.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__parking_lot_core-0.9.9",
+              "sha256": "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/parking_lot_core/0.9.9/download"
+              ],
+              "strip_prefix": "parking_lot_core-0.9.9",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.parking_lot_core-0.9.9.bazel"
+            }
+          },
+          "cui__core-foundation-sys-0.8.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__core-foundation-sys-0.8.4",
+              "sha256": "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/core-foundation-sys/0.8.4/download"
+              ],
+              "strip_prefix": "core-foundation-sys-0.8.4",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.core-foundation-sys-0.8.4.bazel"
+            }
+          },
+          "cui__fuchsia-cprng-0.1.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__fuchsia-cprng-0.1.1",
+              "sha256": "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/fuchsia-cprng/0.1.1/download"
+              ],
+              "strip_prefix": "fuchsia-cprng-0.1.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.fuchsia-cprng-0.1.1.bazel"
+            }
+          },
+          "cui__url-2.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__url-2.4.0",
+              "sha256": "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/url/2.4.0/download"
+              ],
+              "strip_prefix": "url-2.4.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.url-2.4.0.bazel"
+            }
+          },
+          "rrra__quote-1.0.29": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__quote-1.0.29",
+              "sha256": "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/quote/1.0.29/download"
+              ],
+              "strip_prefix": "quote-1.0.29",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.quote-1.0.29.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91",
+              "sha256": "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen-shared/0.2.91/download"
+              ],
+              "strip_prefix": "wasm-bindgen-shared-0.2.91",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-shared-0.2.91.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__httpdate-1.0.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__httpdate-1.0.2",
+              "sha256": "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/httpdate/1.0.2/download"
+              ],
+              "strip_prefix": "httpdate-1.0.2",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.httpdate-1.0.2.bazel"
+            }
+          },
+          "cui__gix-object-0.37.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-object-0.37.0",
+              "sha256": "1e7e19616c67967374137bae83e950e9b518a9ea8a605069bd6716ada357fd6f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-object/0.37.0/download"
+              ],
+              "strip_prefix": "gix-object-0.37.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-object-0.37.0.bazel"
+            }
+          },
+          "cui__crossbeam-queue-0.3.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__crossbeam-queue-0.3.8",
+              "sha256": "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/crossbeam-queue/0.3.8/download"
+              ],
+              "strip_prefix": "crossbeam-queue-0.3.8",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.crossbeam-queue-0.3.8.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__iana-time-zone-0.1.57": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__iana-time-zone-0.1.57",
+              "sha256": "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/iana-time-zone/0.1.57/download"
+              ],
+              "strip_prefix": "iana-time-zone-0.1.57",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.iana-time-zone-0.1.57.bazel"
+            }
+          },
+          "cui__ryu-1.0.14": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__ryu-1.0.14",
+              "sha256": "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/ryu/1.0.14/download"
+              ],
+              "strip_prefix": "ryu-1.0.14",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.ryu-1.0.14.bazel"
+            }
+          },
+          "rules_rust_prost__protoc-gen-prost-0.2.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__protoc-gen-prost-0.2.2",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_rust~0.40.0//proto/prost/private/3rdparty/patches:protoc-gen-prost.patch"
+              ],
+              "sha256": "a81e3a9bb429fec47008b209896f0b9ab99fbcbc1c3733b385d43fbfd64dd2ca",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/protoc-gen-prost/0.2.2/download"
+              ],
+              "strip_prefix": "protoc-gen-prost-0.2.2",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.protoc-gen-prost-0.2.2.bazel"
+            }
+          },
+          "rules_rust_bindgen__winapi-x86_64-pc-windows-gnu-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__winapi-x86_64-pc-windows-gnu-0.4.0",
+              "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download"
+              ],
+              "strip_prefix": "winapi-x86_64-pc-windows-gnu-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel"
+            }
+          },
+          "cui__deunicode-0.4.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__deunicode-0.4.3",
+              "sha256": "850878694b7933ca4c9569d30a34b55031b9b139ee1fc7b94a527c4ef960d690",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/deunicode/0.4.3/download"
+              ],
+              "strip_prefix": "deunicode-0.4.3",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.deunicode-0.4.3.bazel"
+            }
+          },
+          "rules_rust_bindgen__cfg-if-1.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__cfg-if-1.0.0",
+              "sha256": "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cfg-if/1.0.0/download"
+              ],
+              "strip_prefix": "cfg-if-1.0.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.cfg-if-1.0.0.bazel"
+            }
+          },
+          "rules_rust_prost__protoc-gen-tonic-0.2.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__protoc-gen-tonic-0.2.2",
+              "sha256": "725a07a704f9cf7a956b302c21d81b5516ed5ee6cfbbf827edb69beeaae6cc30",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/protoc-gen-tonic/0.2.2/download"
+              ],
+              "strip_prefix": "protoc-gen-tonic-0.2.2",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.protoc-gen-tonic-0.2.2.bazel"
+            }
+          },
+          "cui__iana-time-zone-haiku-0.1.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__iana-time-zone-haiku-0.1.2",
+              "sha256": "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/iana-time-zone-haiku/0.1.2/download"
+              ],
+              "strip_prefix": "iana-time-zone-haiku-0.1.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.iana-time-zone-haiku-0.1.2.bazel"
+            }
+          },
+          "cui__windows_x86_64_gnullvm-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__windows_x86_64_gnullvm-0.48.0",
+              "sha256": "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_x86_64_gnullvm/0.48.0/download"
+              ],
+              "strip_prefix": "windows_x86_64_gnullvm-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.windows_x86_64_gnullvm-0.48.0.bazel"
+            }
+          },
+          "rules_rust_prost__percent-encoding-2.3.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__percent-encoding-2.3.0",
+              "sha256": "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/percent-encoding/2.3.0/download"
+              ],
+              "strip_prefix": "percent-encoding-2.3.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.percent-encoding-2.3.0.bazel"
+            }
+          },
+          "cui__fastrand-2.0.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__fastrand-2.0.1",
+              "sha256": "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/fastrand/2.0.1/download"
+              ],
+              "strip_prefix": "fastrand-2.0.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.fastrand-2.0.1.bazel"
+            }
+          },
+          "cui__wasm-bindgen-macro-0.2.87": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__wasm-bindgen-macro-0.2.87",
+              "sha256": "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen-macro/0.2.87/download"
+              ],
+              "strip_prefix": "wasm-bindgen-macro-0.2.87",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.wasm-bindgen-macro-0.2.87.bazel"
+            }
+          },
+          "cui__flate2-1.0.28": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__flate2-1.0.28",
+              "sha256": "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/flate2/1.0.28/download"
+              ],
+              "strip_prefix": "flate2-1.0.28",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.flate2-1.0.28.bazel"
+            }
+          },
+          "rules_rust_prost__pin-utils-0.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__pin-utils-0.1.0",
+              "sha256": "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/pin-utils/0.1.0/download"
+              ],
+              "strip_prefix": "pin-utils-0.1.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.pin-utils-0.1.0.bazel"
+            }
+          },
+          "rules_rust_prost__cc-1.0.79": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__cc-1.0.79",
+              "sha256": "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cc/1.0.79/download"
+              ],
+              "strip_prefix": "cc-1.0.79",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.cc-1.0.79.bazel"
+            }
+          },
+          "rrra__winapi-0.3.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__winapi-0.3.9",
+              "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi/0.3.9/download"
+              ],
+              "strip_prefix": "winapi-0.3.9",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.winapi-0.3.9.bazel"
+            }
+          },
+          "cui__gix-hashtable-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-hashtable-0.4.0",
+              "sha256": "409268480841ad008e81c17ca5a293393fbf9f2b6c2f85b8ab9de1f0c5176a16",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-hashtable/0.4.0/download"
+              ],
+              "strip_prefix": "gix-hashtable-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-hashtable-0.4.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__errno-0.3.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__errno-0.3.1",
+              "sha256": "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/errno/0.3.1/download"
+              ],
+              "strip_prefix": "errno-0.3.1",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.errno-0.3.1.bazel"
+            }
+          },
+          "cui__fnv-1.0.7": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__fnv-1.0.7",
+              "sha256": "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/fnv/1.0.7/download"
+              ],
+              "strip_prefix": "fnv-1.0.7",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.fnv-1.0.7.bazel"
+            }
+          },
+          "cui__windows-targets-0.48.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__windows-targets-0.48.1",
+              "sha256": "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows-targets/0.48.1/download"
+              ],
+              "strip_prefix": "windows-targets-0.48.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.windows-targets-0.48.1.bazel"
+            }
+          },
+          "cui__js-sys-0.3.64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__js-sys-0.3.64",
+              "sha256": "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/js-sys/0.3.64/download"
+              ],
+              "strip_prefix": "js-sys-0.3.64",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.js-sys-0.3.64.bazel"
+            }
+          },
+          "rules_rust_toolchain_test_target_json": {
+            "bzlFile": "@@rules_rust~0.40.0//test/unit/toolchain:toolchain_test_utils.bzl",
+            "ruleClassName": "rules_rust_toolchain_test_target_json_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_toolchain_test_target_json",
+              "target_json": "@@rules_rust~0.40.0//test/unit/toolchain:toolchain-test-triple.json"
+            }
+          },
+          "rules_rust_wasm_bindgen__ppv-lite86-0.2.17": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__ppv-lite86-0.2.17",
+              "sha256": "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/ppv-lite86/0.2.17/download"
+              ],
+              "strip_prefix": "ppv-lite86-0.2.17",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.ppv-lite86-0.2.17.bazel"
+            }
+          },
+          "cui__smawk-0.3.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__smawk-0.3.1",
+              "sha256": "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/smawk/0.3.1/download"
+              ],
+              "strip_prefix": "smawk-0.3.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.smawk-0.3.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__heck-0.3.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__heck-0.3.3",
+              "sha256": "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/heck/0.3.3/download"
+              ],
+              "strip_prefix": "heck-0.3.3",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.heck-0.3.3.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__unicode-ident-1.0.10": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__unicode-ident-1.0.10",
+              "sha256": "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-ident/1.0.10/download"
+              ],
+              "strip_prefix": "unicode-ident-1.0.10",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.unicode-ident-1.0.10.bazel"
+            }
+          },
+          "cui__clap_derive-4.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__clap_derive-4.3.2",
+              "sha256": "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap_derive/4.3.2/download"
+              ],
+              "strip_prefix": "clap_derive-4.3.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.clap_derive-4.3.2.bazel"
+            }
+          },
+          "cui__libm-0.2.7": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__libm-0.2.7",
+              "sha256": "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/libm/0.2.7/download"
+              ],
+              "strip_prefix": "libm-0.2.7",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.libm-0.2.7.bazel"
+            }
+          },
+          "rules_rust_bindgen__once_cell-1.18.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__once_cell-1.18.0",
+              "sha256": "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/once_cell/1.18.0/download"
+              ],
+              "strip_prefix": "once_cell-1.18.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.once_cell-1.18.0.bazel"
+            }
+          },
+          "rules_rust_prost__prost-0.11.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__prost-0.11.9",
+              "sha256": "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/prost/0.11.9/download"
+              ],
+              "strip_prefix": "prost-0.11.9",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.prost-0.11.9.bazel"
+            }
+          },
+          "cui__deranged-0.3.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__deranged-0.3.9",
+              "sha256": "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/deranged/0.3.9/download"
+              ],
+              "strip_prefix": "deranged-0.3.9",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.deranged-0.3.9.bazel"
+            }
+          },
+          "rules_rust_prost__rand_core-0.6.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__rand_core-0.6.4",
+              "sha256": "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rand_core/0.6.4/download"
+              ],
+              "strip_prefix": "rand_core-0.6.4",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.rand_core-0.6.4.bazel"
+            }
+          },
+          "cui__gix-negotiate-0.8.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-negotiate-0.8.0",
+              "sha256": "6f1697bf9911c6d1b8d709b9e6ef718cb5ea5821a1b7991520125a8134448004",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-negotiate/0.8.0/download"
+              ],
+              "strip_prefix": "gix-negotiate-0.8.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-negotiate-0.8.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__bitflags-1.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__bitflags-1.3.2",
+              "sha256": "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/bitflags/1.3.2/download"
+              ],
+              "strip_prefix": "bitflags-1.3.2",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.bitflags-1.3.2.bazel"
+            }
+          },
+          "cui__wasi-0.11.0-wasi-snapshot-preview1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__wasi-0.11.0-wasi-snapshot-preview1",
+              "sha256": "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasi/0.11.0+wasi-snapshot-preview1/download"
+              ],
+              "strip_prefix": "wasi-0.11.0+wasi-snapshot-preview1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel"
+            }
+          },
+          "rules_rust_bindgen__windows_i686_gnu-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__windows_i686_gnu-0.48.0",
+              "sha256": "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_i686_gnu/0.48.0/download"
+              ],
+              "strip_prefix": "windows_i686_gnu-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.windows_i686_gnu-0.48.0.bazel"
+            }
+          },
+          "cui__io-lifetimes-1.0.11": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__io-lifetimes-1.0.11",
+              "sha256": "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/io-lifetimes/1.0.11/download"
+              ],
+              "strip_prefix": "io-lifetimes-1.0.11",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.io-lifetimes-1.0.11.bazel"
+            }
+          },
+          "cui__cargo_toml-0.17.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__cargo_toml-0.17.1",
+              "sha256": "4d1ece59890e746567b467253aea0adbe8a21784d0b025d8a306f66c391c2957",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cargo_toml/0.17.1/download"
+              ],
+              "strip_prefix": "cargo_toml-0.17.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.cargo_toml-0.17.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__alloc-no-stdlib-2.0.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__alloc-no-stdlib-2.0.4",
+              "sha256": "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/alloc-no-stdlib/2.0.4/download"
+              ],
+              "strip_prefix": "alloc-no-stdlib-2.0.4",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.alloc-no-stdlib-2.0.4.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__env_logger-0.8.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__env_logger-0.8.4",
+              "sha256": "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/env_logger/0.8.4/download"
+              ],
+              "strip_prefix": "env_logger-0.8.4",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.env_logger-0.8.4.bazel"
+            }
+          },
+          "cui__smol_str-0.2.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__smol_str-0.2.0",
+              "sha256": "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/smol_str/0.2.0/download"
+              ],
+              "strip_prefix": "smol_str-0.2.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.smol_str-0.2.0.bazel"
+            }
+          },
+          "rules_rust_prost__proc-macro2-1.0.60": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__proc-macro2-1.0.60",
+              "sha256": "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/proc-macro2/1.0.60/download"
+              ],
+              "strip_prefix": "proc-macro2-1.0.60",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.proc-macro2-1.0.60.bazel"
+            }
+          },
+          "cui__memoffset-0.9.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__memoffset-0.9.0",
+              "sha256": "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/memoffset/0.9.0/download"
+              ],
+              "strip_prefix": "memoffset-0.9.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.memoffset-0.9.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__clap_complete-4.3.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__clap_complete-4.3.1",
+              "sha256": "7f6b5c519bab3ea61843a7923d074b04245624bb84a64a8c150f5deb014e388b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap_complete/4.3.1/download"
+              ],
+              "strip_prefix": "clap_complete-4.3.1",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.clap_complete-4.3.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__time-core-0.1.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__time-core-0.1.1",
+              "sha256": "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/time-core/0.1.1/download"
+              ],
+              "strip_prefix": "time-core-0.1.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.time-core-0.1.1.bazel"
+            }
+          },
+          "cui__log-0.4.19": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__log-0.4.19",
+              "sha256": "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/log/0.4.19/download"
+              ],
+              "strip_prefix": "log-0.4.19",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.log-0.4.19.bazel"
+            }
+          },
+          "cui__num-0.1.42": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__num-0.1.42",
+              "sha256": "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/num/0.1.42/download"
+              ],
+              "strip_prefix": "num-0.1.42",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.num-0.1.42.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__tiny_http-0.12.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__tiny_http-0.12.0",
+              "sha256": "389915df6413a2e74fb181895f933386023c71110878cd0825588928e64cdc82",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tiny_http/0.12.0/download"
+              ],
+              "strip_prefix": "tiny_http-0.12.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.tiny_http-0.12.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__windows-sys-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__windows-sys-0.48.0",
+              "sha256": "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows-sys/0.48.0/download"
+              ],
+              "strip_prefix": "windows-sys-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.windows-sys-0.48.0.bazel"
+            }
+          },
+          "cui__wasm-bindgen-backend-0.2.87": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__wasm-bindgen-backend-0.2.87",
+              "sha256": "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen-backend/0.2.87/download"
+              ],
+              "strip_prefix": "wasm-bindgen-backend-0.2.87",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.wasm-bindgen-backend-0.2.87.bazel"
+            }
+          },
+          "cui__pest-2.7.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__pest-2.7.0",
+              "sha256": "f73935e4d55e2abf7f130186537b19e7a4abc886a0252380b59248af473a3fc9",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/pest/2.7.0/download"
+              ],
+              "strip_prefix": "pest-2.7.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.pest-2.7.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__docopt-1.1.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__docopt-1.1.1",
+              "sha256": "7f3f119846c823f9eafcf953a8f6ffb6ed69bf6240883261a7f13b634579a51f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/docopt/1.1.1/download"
+              ],
+              "strip_prefix": "docopt-1.1.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.docopt-1.1.1.bazel"
+            }
+          },
+          "rules_rust_bindgen__libc-0.2.146": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__libc-0.2.146",
+              "sha256": "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/libc/0.2.146/download"
+              ],
+              "strip_prefix": "libc-0.2.146",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.libc-0.2.146.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__rustc-demangle-0.1.23": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__rustc-demangle-0.1.23",
+              "sha256": "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rustc-demangle/0.1.23/download"
+              ],
+              "strip_prefix": "rustc-demangle-0.1.23",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.rustc-demangle-0.1.23.bazel"
+            }
+          },
+          "rules_rust_prost__rand_chacha-0.3.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__rand_chacha-0.3.1",
+              "sha256": "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rand_chacha/0.3.1/download"
+              ],
+              "strip_prefix": "rand_chacha-0.3.1",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.rand_chacha-0.3.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__iana-time-zone-haiku-0.1.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__iana-time-zone-haiku-0.1.2",
+              "sha256": "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/iana-time-zone-haiku/0.1.2/download"
+              ],
+              "strip_prefix": "iana-time-zone-haiku-0.1.2",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.iana-time-zone-haiku-0.1.2.bazel"
+            }
+          },
+          "cui__syn-1.0.109": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__syn-1.0.109",
+              "sha256": "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/syn/1.0.109/download"
+              ],
+              "strip_prefix": "syn-1.0.109",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.syn-1.0.109.bazel"
+            }
+          },
+          "rrra__memchr-2.5.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__memchr-2.5.0",
+              "sha256": "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/memchr/2.5.0/download"
+              ],
+              "strip_prefix": "memchr-2.5.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.memchr-2.5.0.bazel"
+            }
+          },
+          "cui__getrandom-0.2.10": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__getrandom-0.2.10",
+              "sha256": "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/getrandom/0.2.10/download"
+              ],
+              "strip_prefix": "getrandom-0.2.10",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.getrandom-0.2.10.bazel"
+            }
+          },
+          "cui__pathdiff-0.2.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__pathdiff-0.2.1",
+              "sha256": "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/pathdiff/0.2.1/download"
+              ],
+              "strip_prefix": "pathdiff-0.2.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.pathdiff-0.2.1.bazel"
+            }
+          },
+          "rules_rust_prost__bitflags-1.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__bitflags-1.3.2",
+              "sha256": "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/bitflags/1.3.2/download"
+              ],
+              "strip_prefix": "bitflags-1.3.2",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.bitflags-1.3.2.bazel"
+            }
+          },
+          "cargo_bazel.buildifier-linux-amd64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_file",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cargo_bazel.buildifier-linux-amd64",
+              "urls": [
+                "https://github.com/bazelbuild/buildtools/releases/download/5.0.1/buildifier-linux-amd64"
+              ],
+              "sha256": "3ed7358c7c6a1ca216dc566e9054fd0b97a1482cb0b7e61092be887d42615c5d",
+              "downloaded_file_path": "buildifier.exe",
+              "executable": true
+            }
+          },
+          "rules_rust_wasm_bindgen__either-1.8.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__either-1.8.1",
+              "sha256": "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/either/1.8.1/download"
+              ],
+              "strip_prefix": "either-1.8.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.either-1.8.1.bazel"
+            }
+          },
+          "cui__sha1_smol-1.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__sha1_smol-1.0.0",
+              "sha256": "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/sha1_smol/1.0.0/download"
+              ],
+              "strip_prefix": "sha1_smol-1.0.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.sha1_smol-1.0.0.bazel"
+            }
+          },
+          "rules_rust_prost__windows_aarch64_msvc-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__windows_aarch64_msvc-0.48.0",
+              "sha256": "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_aarch64_msvc/0.48.0/download"
+              ],
+              "strip_prefix": "windows_aarch64_msvc-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.windows_aarch64_msvc-0.48.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__crc32fast-1.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__crc32fast-1.3.2",
+              "sha256": "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/crc32fast/1.3.2/download"
+              ],
+              "strip_prefix": "crc32fast-1.3.2",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.crc32fast-1.3.2.bazel"
+            }
+          },
+          "cargo_bazel.buildifier-darwin-amd64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_file",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cargo_bazel.buildifier-darwin-amd64",
+              "urls": [
+                "https://github.com/bazelbuild/buildtools/releases/download/5.0.1/buildifier-darwin-amd64"
+              ],
+              "sha256": "2cb0a54683633ef6de4e0491072e22e66ac9c6389051432b76200deeeeaf93fb",
+              "downloaded_file_path": "buildifier.exe",
+              "executable": true
+            }
+          },
+          "rules_rust_wasm_bindgen__wasm-bindgen-backend-0.2.91": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasm-bindgen-backend-0.2.91",
+              "sha256": "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen-backend/0.2.91/download"
+              ],
+              "strip_prefix": "wasm-bindgen-backend-0.2.91",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-backend-0.2.91.bazel"
+            }
+          },
+          "cui__chrono-0.4.26": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__chrono-0.4.26",
+              "sha256": "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/chrono/0.4.26/download"
+              ],
+              "strip_prefix": "chrono-0.4.26",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.chrono-0.4.26.bazel"
+            }
+          },
+          "rules_rust_bindgen__proc-macro2-1.0.60": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__proc-macro2-1.0.60",
+              "sha256": "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/proc-macro2/1.0.60/download"
+              ],
+              "strip_prefix": "proc-macro2-1.0.60",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.proc-macro2-1.0.60.bazel"
+            }
+          },
+          "rrra__windows_i686_msvc-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__windows_i686_msvc-0.48.0",
+              "sha256": "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_i686_msvc/0.48.0/download"
+              ],
+              "strip_prefix": "windows_i686_msvc-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.windows_i686_msvc-0.48.0.bazel"
+            }
+          },
+          "cui__encoding_rs-0.8.33": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__encoding_rs-0.8.33",
+              "sha256": "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/encoding_rs/0.8.33/download"
+              ],
+              "strip_prefix": "encoding_rs-0.8.33",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.encoding_rs-0.8.33.bazel"
+            }
+          },
+          "rules_rust_prost__windows_i686_msvc-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__windows_i686_msvc-0.48.0",
+              "sha256": "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_i686_msvc/0.48.0/download"
+              ],
+              "strip_prefix": "windows_i686_msvc-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.windows_i686_msvc-0.48.0.bazel"
+            }
+          },
+          "cui__overload-0.1.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__overload-0.1.1",
+              "sha256": "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/overload/0.1.1/download"
+              ],
+              "strip_prefix": "overload-0.1.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.overload-0.1.1.bazel"
+            }
+          },
+          "rules_rust_prost__want-0.3.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__want-0.3.1",
+              "sha256": "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/want/0.3.1/download"
+              ],
+              "strip_prefix": "want-0.3.1",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.want-0.3.1.bazel"
+            }
+          },
+          "rules_rust_bindgen__clap_derive-4.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__clap_derive-4.3.2",
+              "sha256": "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap_derive/4.3.2/download"
+              ],
+              "strip_prefix": "clap_derive-4.3.2",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.clap_derive-4.3.2.bazel"
+            }
+          },
+          "cui__anstream-0.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__anstream-0.3.2",
+              "sha256": "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstream/0.3.2/download"
+              ],
+              "strip_prefix": "anstream-0.3.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.anstream-0.3.2.bazel"
+            }
+          },
+          "cui__bitflags-1.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__bitflags-1.3.2",
+              "sha256": "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/bitflags/1.3.2/download"
+              ],
+              "strip_prefix": "bitflags-1.3.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.bitflags-1.3.2.bazel"
+            }
+          },
+          "rules_rust_prost__smallvec-1.10.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__smallvec-1.10.0",
+              "sha256": "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/smallvec/1.10.0/download"
+              ],
+              "strip_prefix": "smallvec-1.10.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.smallvec-1.10.0.bazel"
+            }
+          },
+          "cui__gix-glob-0.13.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-glob-0.13.0",
+              "sha256": "a9d76e85f11251dcf751d2c5e918a14f562db5be6f727fd24775245653e9b19d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-glob/0.13.0/download"
+              ],
+              "strip_prefix": "gix-glob-0.13.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-glob-0.13.0.bazel"
+            }
+          },
+          "cui__itoa-1.0.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__itoa-1.0.8",
+              "sha256": "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/itoa/1.0.8/download"
+              ],
+              "strip_prefix": "itoa-1.0.8",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.itoa-1.0.8.bazel"
+            }
+          },
+          "rules_rust_prost__windows_x86_64_gnu-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__windows_x86_64_gnu-0.48.0",
+              "sha256": "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_x86_64_gnu/0.48.0/download"
+              ],
+              "strip_prefix": "windows_x86_64_gnu-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.windows_x86_64_gnu-0.48.0.bazel"
+            }
+          },
+          "cui__serde_json-1.0.108": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__serde_json-1.0.108",
+              "sha256": "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/serde_json/1.0.108/download"
+              ],
+              "strip_prefix": "serde_json-1.0.108",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.serde_json-1.0.108.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__atty-0.2.14": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__atty-0.2.14",
+              "sha256": "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/atty/0.2.14/download"
+              ],
+              "strip_prefix": "atty-0.2.14",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.atty-0.2.14.bazel"
+            }
+          },
+          "rules_rust_bindgen__log-0.4.19": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__log-0.4.19",
+              "sha256": "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/log/0.4.19/download"
+              ],
+              "strip_prefix": "log-0.4.19",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.log-0.4.19.bazel"
+            }
+          },
+          "cui__walkdir-2.3.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__walkdir-2.3.3",
+              "sha256": "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/walkdir/2.3.3/download"
+              ],
+              "strip_prefix": "walkdir-2.3.3",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.walkdir-2.3.3.bazel"
+            }
+          },
+          "rrra__aho-corasick-1.0.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__aho-corasick-1.0.2",
+              "sha256": "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/aho-corasick/1.0.2/download"
+              ],
+              "strip_prefix": "aho-corasick-1.0.2",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.aho-corasick-1.0.2.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__rustls-0.21.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__rustls-0.21.8",
+              "sha256": "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rustls/0.21.8/download"
+              ],
+              "strip_prefix": "rustls-0.21.8",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.rustls-0.21.8.bazel"
+            }
+          },
+          "cui__gix-refspec-0.18.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-refspec-0.18.0",
+              "sha256": "0895cb7b1e70f3c3bd4550c329e9f5caf2975f97fcd4238e05754e72208ef61e",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-refspec/0.18.0/download"
+              ],
+              "strip_prefix": "gix-refspec-0.18.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-refspec-0.18.0.bazel"
+            }
+          },
+          "cui__semver-1.0.20": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__semver-1.0.20",
+              "sha256": "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/semver/1.0.20/download"
+              ],
+              "strip_prefix": "semver-1.0.20",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.semver-1.0.20.bazel"
+            }
+          },
+          "rules_rust_bindgen__humantime-2.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__humantime-2.1.0",
+              "sha256": "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/humantime/2.1.0/download"
+              ],
+              "strip_prefix": "humantime-2.1.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.humantime-2.1.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__termcolor-1.2.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__termcolor-1.2.0",
+              "sha256": "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/termcolor/1.2.0/download"
+              ],
+              "strip_prefix": "termcolor-1.2.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.termcolor-1.2.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__bitflags-2.4.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__bitflags-2.4.1",
+              "sha256": "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/bitflags/2.4.1/download"
+              ],
+              "strip_prefix": "bitflags-2.4.1",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.bitflags-2.4.1.bazel"
+            }
+          },
+          "rrra__regex-syntax-0.7.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__regex-syntax-0.7.4",
+              "sha256": "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/regex-syntax/0.7.4/download"
+              ],
+              "strip_prefix": "regex-syntax-0.7.4",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.regex-syntax-0.7.4.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__hermit-abi-0.1.19": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__hermit-abi-0.1.19",
+              "sha256": "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/hermit-abi/0.1.19/download"
+              ],
+              "strip_prefix": "hermit-abi-0.1.19",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.hermit-abi-0.1.19.bazel"
+            }
+          },
+          "rules_rust_prost__autocfg-1.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__autocfg-1.1.0",
+              "sha256": "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/autocfg/1.1.0/download"
+              ],
+              "strip_prefix": "autocfg-1.1.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.autocfg-1.1.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__sct-0.7.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__sct-0.7.1",
+              "sha256": "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/sct/0.7.1/download"
+              ],
+              "strip_prefix": "sct-0.7.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.sct-0.7.1.bazel"
+            }
+          },
+          "rrra__winapi-util-0.1.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__winapi-util-0.1.5",
+              "sha256": "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-util/0.1.5/download"
+              ],
+              "strip_prefix": "winapi-util-0.1.5",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.winapi-util-0.1.5.bazel"
+            }
+          },
+          "cui__bstr-1.6.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__bstr-1.6.0",
+              "sha256": "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/bstr/1.6.0/download"
+              ],
+              "strip_prefix": "bstr-1.6.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.bstr-1.6.0.bazel"
+            }
+          },
+          "cui__gix-diff-0.36.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-diff-0.36.0",
+              "sha256": "788ddb152c388206e81f36bcbb574e7ed7827c27d8fa62227b34edc333d8928c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-diff/0.36.0/download"
+              ],
+              "strip_prefix": "gix-diff-0.36.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-diff-0.36.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__strsim-0.10.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__strsim-0.10.0",
+              "sha256": "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/strsim/0.10.0/download"
+              ],
+              "strip_prefix": "strsim-0.10.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.strsim-0.10.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__untrusted-0.9.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__untrusted-0.9.0",
+              "sha256": "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/untrusted/0.9.0/download"
+              ],
+              "strip_prefix": "untrusted-0.9.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.untrusted-0.9.0.bazel"
+            }
+          },
+          "cui__gix-index-0.25.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-index-0.25.0",
+              "sha256": "f54d63a9d13c13088f41f5a3accbec284e492ac8f4f707fcc307c139622e17b7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-index/0.25.0/download"
+              ],
+              "strip_prefix": "gix-index-0.25.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-index-0.25.0.bazel"
+            }
+          },
+          "rules_rust_prost__windows_i686_gnu-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__windows_i686_gnu-0.48.0",
+              "sha256": "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_i686_gnu/0.48.0/download"
+              ],
+              "strip_prefix": "windows_i686_gnu-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.windows_i686_gnu-0.48.0.bazel"
+            }
+          },
+          "cui__filetime-0.2.22": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__filetime-0.2.22",
+              "sha256": "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/filetime/0.2.22/download"
+              ],
+              "strip_prefix": "filetime-0.2.22",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.filetime-0.2.22.bazel"
+            }
+          },
+          "cui__tracing-log-0.1.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__tracing-log-0.1.4",
+              "sha256": "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tracing-log/0.1.4/download"
+              ],
+              "strip_prefix": "tracing-log-0.1.4",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.tracing-log-0.1.4.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__crossbeam-epoch-0.9.15": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__crossbeam-epoch-0.9.15",
+              "sha256": "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/crossbeam-epoch/0.9.15/download"
+              ],
+              "strip_prefix": "crossbeam-epoch-0.9.15",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.crossbeam-epoch-0.9.15.bazel"
+            }
+          },
+          "rrra__termcolor-1.2.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__termcolor-1.2.0",
+              "sha256": "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/termcolor/1.2.0/download"
+              ],
+              "strip_prefix": "termcolor-1.2.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.termcolor-1.2.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__errno-0.3.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__errno-0.3.1",
+              "sha256": "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/errno/0.3.1/download"
+              ],
+              "strip_prefix": "errno-0.3.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.errno-0.3.1.bazel"
+            }
+          },
+          "cui__rustix-0.38.21": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__rustix-0.38.21",
+              "sha256": "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rustix/0.38.21/download"
+              ],
+              "strip_prefix": "rustix-0.38.21",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.rustix-0.38.21.bazel"
+            }
+          },
+          "rules_rust_bindgen__unicode-width-0.1.10": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__unicode-width-0.1.10",
+              "sha256": "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-width/0.1.10/download"
+              ],
+              "strip_prefix": "unicode-width-0.1.10",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.unicode-width-0.1.10.bazel"
+            }
+          },
+          "cui__indoc-2.0.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__indoc-2.0.4",
+              "sha256": "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/indoc/2.0.4/download"
+              ],
+              "strip_prefix": "indoc-2.0.4",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.indoc-2.0.4.bazel"
+            }
+          },
+          "cui__unicode-bom-2.0.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__unicode-bom-2.0.2",
+              "sha256": "98e90c70c9f0d4d1ee6d0a7d04aa06cb9bbd53d8cfbdd62a0269a7c2eb640552",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-bom/2.0.2/download"
+              ],
+              "strip_prefix": "unicode-bom-2.0.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.unicode-bom-2.0.2.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__crossbeam-deque-0.8.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__crossbeam-deque-0.8.3",
+              "sha256": "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/crossbeam-deque/0.8.3/download"
+              ],
+              "strip_prefix": "crossbeam-deque-0.8.3",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.crossbeam-deque-0.8.3.bazel"
+            }
+          },
+          "cui__smallvec-1.11.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__smallvec-1.11.0",
+              "sha256": "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/smallvec/1.11.0/download"
+              ],
+              "strip_prefix": "smallvec-1.11.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.smallvec-1.11.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__redox_syscall-0.3.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__redox_syscall-0.3.5",
+              "sha256": "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/redox_syscall/0.3.5/download"
+              ],
+              "strip_prefix": "redox_syscall-0.3.5",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.redox_syscall-0.3.5.bazel"
+            }
+          },
+          "cui__ignore-0.4.18": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__ignore-0.4.18",
+              "sha256": "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/ignore/0.4.18/download"
+              ],
+              "strip_prefix": "ignore-0.4.18",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.ignore-0.4.18.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wasi-0.11.0-wasi-snapshot-preview1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasi-0.11.0-wasi-snapshot-preview1",
+              "sha256": "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasi/0.11.0+wasi-snapshot-preview1/download"
+              ],
+              "strip_prefix": "wasi-0.11.0+wasi-snapshot-preview1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel"
+            }
+          },
+          "cui__textwrap-0.16.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__textwrap-0.16.0",
+              "sha256": "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/textwrap/0.16.0/download"
+              ],
+              "strip_prefix": "textwrap-0.16.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.textwrap-0.16.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__winapi-i686-pc-windows-gnu-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__winapi-i686-pc-windows-gnu-0.4.0",
+              "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download"
+              ],
+              "strip_prefix": "winapi-i686-pc-windows-gnu-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wasm-bindgen-wasm-conventions-0.2.91": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasm-bindgen-wasm-conventions-0.2.91",
+              "sha256": "4e6b653f6820409609bda0f176e6949302307af7a7b9479cd4d4b1bdc31eb9cd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen-wasm-conventions/0.2.91/download"
+              ],
+              "strip_prefix": "wasm-bindgen-wasm-conventions-0.2.91",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-wasm-conventions-0.2.91.bazel"
+            }
+          },
+          "rrra__colorchoice-1.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__colorchoice-1.0.0",
+              "sha256": "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/colorchoice/1.0.0/download"
+              ],
+              "strip_prefix": "colorchoice-1.0.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.colorchoice-1.0.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__regex-1.9.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__regex-1.9.1",
+              "sha256": "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/regex/1.9.1/download"
+              ],
+              "strip_prefix": "regex-1.9.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.regex-1.9.1.bazel"
+            }
+          },
+          "rrra__windows_x86_64_gnullvm-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__windows_x86_64_gnullvm-0.48.0",
+              "sha256": "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_x86_64_gnullvm/0.48.0/download"
+              ],
+              "strip_prefix": "windows_x86_64_gnullvm-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.windows_x86_64_gnullvm-0.48.0.bazel"
+            }
+          },
+          "rules_rust_prost__slab-0.4.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__slab-0.4.8",
+              "sha256": "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/slab/0.4.8/download"
+              ],
+              "strip_prefix": "slab-0.4.8",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.slab-0.4.8.bazel"
+            }
+          },
+          "rrra__clap-4.3.11": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__clap-4.3.11",
+              "sha256": "1640e5cc7fb47dbb8338fd471b105e7ed6c3cb2aeb00c2e067127ffd3764a05d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap/4.3.11/download"
+              ],
+              "strip_prefix": "clap-4.3.11",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.clap-4.3.11.bazel"
+            }
+          },
+          "cui__valuable-0.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__valuable-0.1.0",
+              "sha256": "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/valuable/0.1.0/download"
+              ],
+              "strip_prefix": "valuable-0.1.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.valuable-0.1.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__form_urlencoded-1.2.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__form_urlencoded-1.2.0",
+              "sha256": "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/form_urlencoded/1.2.0/download"
+              ],
+              "strip_prefix": "form_urlencoded-1.2.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.form_urlencoded-1.2.0.bazel"
+            }
+          },
+          "rules_rust_prost__prost-derive-0.11.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__prost-derive-0.11.9",
+              "sha256": "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/prost-derive/0.11.9/download"
+              ],
+              "strip_prefix": "prost-derive-0.11.9",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.prost-derive-0.11.9.bazel"
+            }
+          },
+          "cui__adler-1.0.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__adler-1.0.2",
+              "sha256": "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/adler/1.0.2/download"
+              ],
+              "strip_prefix": "adler-1.0.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.adler-1.0.2.bazel"
+            }
+          },
+          "cui__wasm-bindgen-shared-0.2.87": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__wasm-bindgen-shared-0.2.87",
+              "sha256": "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen-shared/0.2.87/download"
+              ],
+              "strip_prefix": "wasm-bindgen-shared-0.2.87",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.wasm-bindgen-shared-0.2.87.bazel"
+            }
+          },
+          "cross_x86_64-apple-darwin": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cross_x86_64-apple-darwin",
+              "urls": [
+                "https://github.com/rust-embedded/cross/releases/download/v0.2.1/cross-v0.2.1-x86_64-apple-darwin.tar.gz"
+              ],
+              "sha256": "589da89453291dc26f0b10b521cdadb98376d495645b210574bd9ca4ec8cfa2c",
+              "build_file_content": "exports_files(glob([\"**\"]), visibility = [\"//visibility:public\"])"
+            }
+          },
+          "rules_rust_prost__rustix-0.37.20": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__rustix-0.37.20",
+              "sha256": "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rustix/0.37.20/download"
+              ],
+              "strip_prefix": "rustix-0.37.20",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.rustix-0.37.20.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wasm-bindgen-macro-support-0.2.91": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasm-bindgen-macro-support-0.2.91",
+              "sha256": "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen-macro-support/0.2.91/download"
+              ],
+              "strip_prefix": "wasm-bindgen-macro-support-0.2.91",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-macro-support-0.2.91.bazel"
+            }
+          },
+          "rules_rust_prost__fnv-1.0.7": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__fnv-1.0.7",
+              "sha256": "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/fnv/1.0.7/download"
+              ],
+              "strip_prefix": "fnv-1.0.7",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.fnv-1.0.7.bazel"
+            }
+          },
+          "cui__spectral-0.6.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__spectral-0.6.0",
+              "sha256": "ae3c15181f4b14e52eeaac3efaeec4d2764716ce9c86da0c934c3e318649c5ba",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/spectral/0.6.0/download"
+              ],
+              "strip_prefix": "spectral-0.6.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.spectral-0.6.0.bazel"
+            }
+          },
+          "cui__windows_i686_msvc-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__windows_i686_msvc-0.48.0",
+              "sha256": "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_i686_msvc/0.48.0/download"
+              ],
+              "strip_prefix": "windows_i686_msvc-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.windows_i686_msvc-0.48.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__float-cmp-0.8.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__float-cmp-0.8.0",
+              "sha256": "e1267f4ac4f343772758f7b1bdcbe767c218bbab93bb432acbf5162bbf85a6c4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/float-cmp/0.8.0/download"
+              ],
+              "strip_prefix": "float-cmp-0.8.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.float-cmp-0.8.0.bazel"
+            }
+          },
+          "cui__gix-tempfile-10.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-tempfile-10.0.0",
+              "sha256": "5ae0978f3e11dc57290ee75ac2477c815bca1ce2fa7ed5dc5f16db067410ac4d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-tempfile/10.0.0/download"
+              ],
+              "strip_prefix": "gix-tempfile-10.0.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-tempfile-10.0.0.bazel"
+            }
+          },
+          "cui__jwalk-0.8.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__jwalk-0.8.1",
+              "sha256": "2735847566356cd2179a2a38264839308f7079fa96e6bd5a42d740460e003c56",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/jwalk/0.8.1/download"
+              ],
+              "strip_prefix": "jwalk-0.8.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.jwalk-0.8.1.bazel"
+            }
+          },
+          "rules_rust_prost__getrandom-0.2.10": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__getrandom-0.2.10",
+              "sha256": "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/getrandom/0.2.10/download"
+              ],
+              "strip_prefix": "getrandom-0.2.10",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.getrandom-0.2.10.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__redox_syscall-0.2.16": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__redox_syscall-0.2.16",
+              "sha256": "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/redox_syscall/0.2.16/download"
+              ],
+              "strip_prefix": "redox_syscall-0.2.16",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.redox_syscall-0.2.16.bazel"
+            }
+          },
+          "rules_rust_prost__httpdate-1.0.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__httpdate-1.0.2",
+              "sha256": "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/httpdate/1.0.2/download"
+              ],
+              "strip_prefix": "httpdate-1.0.2",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.httpdate-1.0.2.bazel"
+            }
+          },
+          "rules_rust_prost__tower-layer-0.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__tower-layer-0.3.2",
+              "sha256": "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tower-layer/0.3.2/download"
+              ],
+              "strip_prefix": "tower-layer-0.3.2",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.tower-layer-0.3.2.bazel"
+            }
+          },
+          "cui__cfg-expr-0.15.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__cfg-expr-0.15.5",
+              "sha256": "03915af431787e6ffdcc74c645077518c6b6e01f80b761e0fbbfa288536311b3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cfg-expr/0.15.5/download"
+              ],
+              "strip_prefix": "cfg-expr-0.15.5",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.cfg-expr-0.15.5.bazel"
+            }
+          },
+          "cargo_bazel.buildifier-darwin-arm64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_file",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cargo_bazel.buildifier-darwin-arm64",
+              "urls": [
+                "https://github.com/bazelbuild/buildtools/releases/download/5.0.1/buildifier-darwin-arm64"
+              ],
+              "sha256": "4da23315f0dccabf878c8227fddbccf35545b23b3cb6225bfcf3107689cc4364",
+              "downloaded_file_path": "buildifier.exe",
+              "executable": true
+            }
+          },
+          "cui__prodash-26.2.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__prodash-26.2.2",
+              "sha256": "794b5bf8e2d19b53dcdcec3e4bba628e20f5b6062503ba89281fa7037dd7bbcf",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/prodash/26.2.2/download"
+              ],
+              "strip_prefix": "prodash-26.2.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.prodash-26.2.2.bazel"
+            }
+          },
+          "cui__winapi-i686-pc-windows-gnu-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__winapi-i686-pc-windows-gnu-0.4.0",
+              "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download"
+              ],
+              "strip_prefix": "winapi-i686-pc-windows-gnu-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel"
+            }
+          },
+          "rules_rust_prost__num_cpus-1.15.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__num_cpus-1.15.0",
+              "sha256": "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/num_cpus/1.15.0/download"
+              ],
+              "strip_prefix": "num_cpus-1.15.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.num_cpus-1.15.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__lazycell-1.3.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__lazycell-1.3.0",
+              "sha256": "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/lazycell/1.3.0/download"
+              ],
+              "strip_prefix": "lazycell-1.3.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.lazycell-1.3.0.bazel"
+            }
+          },
+          "cui__tracing-subscriber-0.3.17": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__tracing-subscriber-0.3.17",
+              "sha256": "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tracing-subscriber/0.3.17/download"
+              ],
+              "strip_prefix": "tracing-subscriber-0.3.17",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.tracing-subscriber-0.3.17.bazel"
+            }
+          },
+          "cui__gix-0.54.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-0.54.1",
+              "sha256": "ad6d32e74454459690d57d18ea4ebec1629936e6b130b51d12cb4a81630ac953",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix/0.54.1/download"
+              ],
+              "strip_prefix": "gix-0.54.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-0.54.1.bazel"
+            }
+          },
+          "cui__gix-command-0.2.10": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-command-0.2.10",
+              "sha256": "3c576cfbf577f72c097b5f88aedea502cd62952bdc1fb3adcab4531d5525a4c7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-command/0.2.10/download"
+              ],
+              "strip_prefix": "gix-command-0.2.10",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-command-0.2.10.bazel"
+            }
+          },
+          "rules_rust_prost__bytes-1.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__bytes-1.4.0",
+              "sha256": "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/bytes/1.4.0/download"
+              ],
+              "strip_prefix": "bytes-1.4.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.bytes-1.4.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__mime_guess-2.0.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__mime_guess-2.0.4",
+              "sha256": "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/mime_guess/2.0.4/download"
+              ],
+              "strip_prefix": "mime_guess-2.0.4",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.mime_guess-2.0.4.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__tinyvec_macros-0.1.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__tinyvec_macros-0.1.1",
+              "sha256": "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tinyvec_macros/0.1.1/download"
+              ],
+              "strip_prefix": "tinyvec_macros-0.1.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.tinyvec_macros-0.1.1.bazel"
+            }
+          },
+          "cui__gix-odb-0.53.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-odb-0.53.0",
+              "sha256": "8d6a392c6ba3a2f133cdc63120e9bc7aec81eef763db372c817de31febfe64bf",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-odb/0.53.0/download"
+              ],
+              "strip_prefix": "gix-odb-0.53.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-odb-0.53.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__rustix-0.37.20": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__rustix-0.37.20",
+              "sha256": "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rustix/0.37.20/download"
+              ],
+              "strip_prefix": "rustix-0.37.20",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.rustix-0.37.20.bazel"
+            }
+          },
+          "rules_rust_bindgen__windows_i686_msvc-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__windows_i686_msvc-0.48.0",
+              "sha256": "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_i686_msvc/0.48.0/download"
+              ],
+              "strip_prefix": "windows_i686_msvc-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.windows_i686_msvc-0.48.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__clap_builder-4.3.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__clap_builder-4.3.3",
+              "sha256": "acd4f3c17c83b0ba34ffbc4f8bbd74f079413f747f84a6f89292f138057e36ab",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap_builder/4.3.3/download"
+              ],
+              "strip_prefix": "clap_builder-4.3.3",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.clap_builder-4.3.3.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen_cli": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen_cli",
+              "sha256": "80b674e1bda34888e132276ba600676cea158bdcd289bb7da5c25885f1a3a535",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen-cli/0.2.91/download"
+              ],
+              "type": "tar.gz",
+              "strip_prefix": "wasm-bindgen-cli-0.2.91",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty:BUILD.wasm-bindgen-cli.bazel",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/patches:resolver.patch"
+              ]
+            }
+          },
+          "rules_rust_wasm_bindgen__wasm-encoder-0.29.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasm-encoder-0.29.0",
+              "sha256": "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-encoder/0.29.0/download"
+              ],
+              "strip_prefix": "wasm-encoder-0.29.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasm-encoder-0.29.0.bazel"
+            }
+          },
+          "cui__regex-syntax-0.8.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__regex-syntax-0.8.2",
+              "sha256": "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/regex-syntax/0.8.2/download"
+              ],
+              "strip_prefix": "regex-syntax-0.8.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.regex-syntax-0.8.2.bazel"
+            }
+          },
+          "rules_rust_bindgen__clap_lex-0.5.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__clap_lex-0.5.0",
+              "sha256": "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap_lex/0.5.0/download"
+              ],
+              "strip_prefix": "clap_lex-0.5.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.clap_lex-0.5.0.bazel"
+            }
+          },
+          "rules_rust_prost__http-body-0.4.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__http-body-0.4.5",
+              "sha256": "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/http-body/0.4.5/download"
+              ],
+              "strip_prefix": "http-body-0.4.5",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.http-body-0.4.5.bazel"
+            }
+          },
+          "rules_rust_bindgen__utf8parse-0.2.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__utf8parse-0.2.1",
+              "sha256": "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/utf8parse/0.2.1/download"
+              ],
+              "strip_prefix": "utf8parse-0.2.1",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.utf8parse-0.2.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__windows_x86_64_gnullvm-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__windows_x86_64_gnullvm-0.48.0",
+              "sha256": "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_x86_64_gnullvm/0.48.0/download"
+              ],
+              "strip_prefix": "windows_x86_64_gnullvm-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.windows_x86_64_gnullvm-0.48.0.bazel"
+            }
+          },
+          "rules_rust_prost__fixedbitset-0.4.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__fixedbitset-0.4.2",
+              "sha256": "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/fixedbitset/0.4.2/download"
+              ],
+              "strip_prefix": "fixedbitset-0.4.2",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.fixedbitset-0.4.2.bazel"
+            }
+          },
+          "rules_rust_bindgen__annotate-snippets-0.9.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__annotate-snippets-0.9.1",
+              "sha256": "c3b9d411ecbaf79885c6df4d75fff75858d5995ff25385657a28af47e82f9c36",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/annotate-snippets/0.9.1/download"
+              ],
+              "strip_prefix": "annotate-snippets-0.9.1",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.annotate-snippets-0.9.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__httparse-1.8.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__httparse-1.8.0",
+              "sha256": "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/httparse/1.8.0/download"
+              ],
+              "strip_prefix": "httparse-1.8.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.httparse-1.8.0.bazel"
+            }
+          },
+          "cui__powerfmt-0.2.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__powerfmt-0.2.0",
+              "sha256": "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/powerfmt/0.2.0/download"
+              ],
+              "strip_prefix": "powerfmt-0.2.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.powerfmt-0.2.0.bazel"
+            }
+          },
+          "rrra__strsim-0.10.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__strsim-0.10.0",
+              "sha256": "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/strsim/0.10.0/download"
+              ],
+              "strip_prefix": "strsim-0.10.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.strsim-0.10.0.bazel"
+            }
+          },
+          "rrra__winapi-i686-pc-windows-gnu-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__winapi-i686-pc-windows-gnu-0.4.0",
+              "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download"
+              ],
+              "strip_prefix": "winapi-i686-pc-windows-gnu-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel"
+            }
+          },
+          "rules_rust_prost__tonic-0.9.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__tonic-0.9.2",
+              "sha256": "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tonic/0.9.2/download"
+              ],
+              "strip_prefix": "tonic-0.9.2",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.tonic-0.9.2.bazel"
+            }
+          },
+          "rules_rust_prost__regex-1.8.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__regex-1.8.4",
+              "sha256": "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/regex/1.8.4/download"
+              ],
+              "strip_prefix": "regex-1.8.4",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.regex-1.8.4.bazel"
+            }
+          },
+          "rules_rust_prost__async-trait-0.1.68": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__async-trait-0.1.68",
+              "sha256": "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/async-trait/0.1.68/download"
+              ],
+              "strip_prefix": "async-trait-0.1.68",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.async-trait-0.1.68.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__brotli-decompressor-2.5.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__brotli-decompressor-2.5.1",
+              "sha256": "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/brotli-decompressor/2.5.1/download"
+              ],
+              "strip_prefix": "brotli-decompressor-2.5.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.brotli-decompressor-2.5.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__windows_x86_64_msvc-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__windows_x86_64_msvc-0.48.0",
+              "sha256": "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_x86_64_msvc/0.48.0/download"
+              ],
+              "strip_prefix": "windows_x86_64_msvc-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.windows_x86_64_msvc-0.48.0.bazel"
+            }
+          },
+          "cui__unicode-normalization-0.1.22": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__unicode-normalization-0.1.22",
+              "sha256": "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-normalization/0.1.22/download"
+              ],
+              "strip_prefix": "unicode-normalization-0.1.22",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.unicode-normalization-0.1.22.bazel"
+            }
+          },
+          "rules_rust_prost__windows_x86_64_msvc-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__windows_x86_64_msvc-0.48.0",
+              "sha256": "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_x86_64_msvc/0.48.0/download"
+              ],
+              "strip_prefix": "windows_x86_64_msvc-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.windows_x86_64_msvc-0.48.0.bazel"
+            }
+          },
+          "cui__winapi-0.3.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__winapi-0.3.9",
+              "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi/0.3.9/download"
+              ],
+              "strip_prefix": "winapi-0.3.9",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.winapi-0.3.9.bazel"
+            }
+          },
+          "cui__syn-2.0.32": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__syn-2.0.32",
+              "sha256": "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/syn/2.0.32/download"
+              ],
+              "strip_prefix": "syn-2.0.32",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.syn-2.0.32.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wasm-bindgen-externref-xform-0.2.91": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasm-bindgen-externref-xform-0.2.91",
+              "sha256": "12b6ac5fca1d0992d2328147488169ea166bfe899c88f8ad06cf583f4c492fcf",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen-externref-xform/0.2.91/download"
+              ],
+              "strip_prefix": "wasm-bindgen-externref-xform-0.2.91",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-externref-xform-0.2.91.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__idna-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__idna-0.4.0",
+              "sha256": "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/idna/0.4.0/download"
+              ],
+              "strip_prefix": "idna-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.idna-0.4.0.bazel"
+            }
+          },
+          "rrra__regex-1.9.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__regex-1.9.1",
+              "sha256": "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/regex/1.9.1/download"
+              ],
+              "strip_prefix": "regex-1.9.1",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.regex-1.9.1.bazel"
+            }
+          },
+          "cui__anstyle-parse-0.2.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__anstyle-parse-0.2.1",
+              "sha256": "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstyle-parse/0.2.1/download"
+              ],
+              "strip_prefix": "anstyle-parse-0.2.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.anstyle-parse-0.2.1.bazel"
+            }
+          },
+          "rules_rust_prost__rustversion-1.0.12": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__rustversion-1.0.12",
+              "sha256": "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rustversion/1.0.12/download"
+              ],
+              "strip_prefix": "rustversion-1.0.12",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.rustversion-1.0.12.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wait-timeout-0.2.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wait-timeout-0.2.0",
+              "sha256": "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wait-timeout/0.2.0/download"
+              ],
+              "strip_prefix": "wait-timeout-0.2.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wait-timeout-0.2.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__windows_aarch64_gnullvm-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__windows_aarch64_gnullvm-0.48.0",
+              "sha256": "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_aarch64_gnullvm/0.48.0/download"
+              ],
+              "strip_prefix": "windows_aarch64_gnullvm-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.windows_aarch64_gnullvm-0.48.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__quick-error-1.2.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__quick-error-1.2.3",
+              "sha256": "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/quick-error/1.2.3/download"
+              ],
+              "strip_prefix": "quick-error-1.2.3",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.quick-error-1.2.3.bazel"
+            }
+          },
+          "rules_rust_prost__tokio-macros-2.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__tokio-macros-2.1.0",
+              "sha256": "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tokio-macros/2.1.0/download"
+              ],
+              "strip_prefix": "tokio-macros-2.1.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.tokio-macros-2.1.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wasmprinter-0.2.60": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasmprinter-0.2.60",
+              "sha256": "b76cb909fe3d9b0de58cee1f4072247e680ff5cc1558ccad2790a9de14a23993",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasmprinter/0.2.60/download"
+              ],
+              "strip_prefix": "wasmprinter-0.2.60",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasmprinter-0.2.60.bazel"
+            }
+          },
+          "rules_rust_bindgen__winapi-0.3.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__winapi-0.3.9",
+              "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi/0.3.9/download"
+              ],
+              "strip_prefix": "winapi-0.3.9",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.winapi-0.3.9.bazel"
+            }
+          },
+          "cui__gix-macros-0.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-macros-0.1.0",
+              "sha256": "9d8acb5ee668d55f0f2d19a320a3f9ef67a6999ad483e11135abcc2464ed18b6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-macros/0.1.0/download"
+              ],
+              "strip_prefix": "gix-macros-0.1.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-macros-0.1.0.bazel"
+            }
+          },
+          "rrra__ryu-1.0.14": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__ryu-1.0.14",
+              "sha256": "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/ryu/1.0.14/download"
+              ],
+              "strip_prefix": "ryu-1.0.14",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.ryu-1.0.14.bazel"
+            }
+          },
+          "rrra__serde-1.0.171": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__serde-1.0.171",
+              "sha256": "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/serde/1.0.171/download"
+              ],
+              "strip_prefix": "serde-1.0.171",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.serde-1.0.171.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__core-foundation-sys-0.8.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__core-foundation-sys-0.8.4",
+              "sha256": "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/core-foundation-sys/0.8.4/download"
+              ],
+              "strip_prefix": "core-foundation-sys-0.8.4",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.core-foundation-sys-0.8.4.bazel"
+            }
+          },
+          "rules_rust_prost__lock_api-0.4.10": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__lock_api-0.4.10",
+              "sha256": "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/lock_api/0.4.10/download"
+              ],
+              "strip_prefix": "lock_api-0.4.10",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.lock_api-0.4.10.bazel"
+            }
+          },
+          "rules_rust_prost__futures-core-0.3.28": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__futures-core-0.3.28",
+              "sha256": "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/futures-core/0.3.28/download"
+              ],
+              "strip_prefix": "futures-core-0.3.28",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.futures-core-0.3.28.bazel"
+            }
+          },
+          "rrra__winapi-x86_64-pc-windows-gnu-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__winapi-x86_64-pc-windows-gnu-0.4.0",
+              "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download"
+              ],
+              "strip_prefix": "winapi-x86_64-pc-windows-gnu-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel"
+            }
+          },
+          "rrra__anstyle-1.0.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__anstyle-1.0.1",
+              "sha256": "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstyle/1.0.1/download"
+              ],
+              "strip_prefix": "anstyle-1.0.1",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.anstyle-1.0.1.bazel"
+            }
+          },
+          "cui__dunce-1.0.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__dunce-1.0.4",
+              "sha256": "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/dunce/1.0.4/download"
+              ],
+              "strip_prefix": "dunce-1.0.4",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.dunce-1.0.4.bazel"
+            }
+          },
+          "rules_rust_bindgen__glob-0.3.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__glob-0.3.1",
+              "sha256": "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/glob/0.3.1/download"
+              ],
+              "strip_prefix": "glob-0.3.1",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.glob-0.3.1.bazel"
+            }
+          },
+          "cui__phf_generator-0.11.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__phf_generator-0.11.2",
+              "sha256": "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/phf_generator/0.11.2/download"
+              ],
+              "strip_prefix": "phf_generator-0.11.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.phf_generator-0.11.2.bazel"
+            }
+          },
+          "rules_rust_prost__fastrand-1.9.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__fastrand-1.9.0",
+              "sha256": "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/fastrand/1.9.0/download"
+              ],
+              "strip_prefix": "fastrand-1.9.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.fastrand-1.9.0.bazel"
+            }
+          },
+          "rules_rust_prost__itertools-0.10.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__itertools-0.10.5",
+              "sha256": "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/itertools/0.10.5/download"
+              ],
+              "strip_prefix": "itertools-0.10.5",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.itertools-0.10.5.bazel"
+            }
+          },
+          "rules_rust_bindgen__windows_x86_64_gnu-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__windows_x86_64_gnu-0.48.0",
+              "sha256": "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_x86_64_gnu/0.48.0/download"
+              ],
+              "strip_prefix": "windows_x86_64_gnu-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.windows_x86_64_gnu-0.48.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__memoffset-0.9.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__memoffset-0.9.0",
+              "sha256": "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/memoffset/0.9.0/download"
+              ],
+              "strip_prefix": "memoffset-0.9.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.memoffset-0.9.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__windows-targets-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__windows-targets-0.48.0",
+              "sha256": "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows-targets/0.48.0/download"
+              ],
+              "strip_prefix": "windows-targets-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.windows-targets-0.48.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__twoway-0.1.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__twoway-0.1.8",
+              "sha256": "59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/twoway/0.1.8/download"
+              ],
+              "strip_prefix": "twoway-0.1.8",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.twoway-0.1.8.bazel"
+            }
+          },
+          "cui__redox_syscall-0.4.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__redox_syscall-0.4.1",
+              "sha256": "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/redox_syscall/0.4.1/download"
+              ],
+              "strip_prefix": "redox_syscall-0.4.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.redox_syscall-0.4.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__id-arena-2.2.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__id-arena-2.2.1",
+              "sha256": "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/id-arena/2.2.1/download"
+              ],
+              "strip_prefix": "id-arena-2.2.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.id-arena-2.2.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__linux-raw-sys-0.3.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__linux-raw-sys-0.3.8",
+              "sha256": "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/linux-raw-sys/0.3.8/download"
+              ],
+              "strip_prefix": "linux-raw-sys-0.3.8",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.linux-raw-sys-0.3.8.bazel"
+            }
+          },
+          "cui__normpath-1.1.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__normpath-1.1.1",
+              "sha256": "ec60c60a693226186f5d6edf073232bfb6464ed97eb22cf3b01c1e8198fd97f5",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/normpath/1.1.1/download"
+              ],
+              "strip_prefix": "normpath-1.1.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.normpath-1.1.1.bazel"
+            }
+          },
+          "cui__quote-1.0.29": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__quote-1.0.29",
+              "sha256": "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/quote/1.0.29/download"
+              ],
+              "strip_prefix": "quote-1.0.29",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.quote-1.0.29.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__safemem-0.3.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__safemem-0.3.3",
+              "sha256": "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/safemem/0.3.3/download"
+              ],
+              "strip_prefix": "safemem-0.3.3",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.safemem-0.3.3.bazel"
+            }
+          },
+          "rules_rust_bindgen__lazy_static-1.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__lazy_static-1.4.0",
+              "sha256": "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/lazy_static/1.4.0/download"
+              ],
+              "strip_prefix": "lazy_static-1.4.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.lazy_static-1.4.0.bazel"
+            }
+          },
+          "rules_rust_prost__axum-0.6.18": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__axum-0.6.18",
+              "sha256": "f8175979259124331c1d7bf6586ee7e0da434155e4b2d48ec2c8386281d8df39",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/axum/0.6.18/download"
+              ],
+              "strip_prefix": "axum-0.6.18",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.axum-0.6.18.bazel"
+            }
+          },
+          "rules_rust_prost__parking_lot-0.12.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__parking_lot-0.12.1",
+              "sha256": "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/parking_lot/0.12.1/download"
+              ],
+              "strip_prefix": "parking_lot-0.12.1",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.parking_lot-0.12.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__assert_cmd-1.0.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__assert_cmd-1.0.8",
+              "sha256": "c98233c6673d8601ab23e77eb38f999c51100d46c5703b17288c57fddf3a1ffe",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/assert_cmd/1.0.8/download"
+              ],
+              "strip_prefix": "assert_cmd-1.0.8",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.assert_cmd-1.0.8.bazel"
+            }
+          },
+          "cui__cargo-platform-0.1.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__cargo-platform-0.1.4",
+              "sha256": "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cargo-platform/0.1.4/download"
+              ],
+              "strip_prefix": "cargo-platform-0.1.4",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.cargo-platform-0.1.4.bazel"
+            }
+          },
+          "cui__serde_starlark-0.1.14": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__serde_starlark-0.1.14",
+              "sha256": "29675b116dd4c7ab4012e00e71f6dee9ed8c731108468b4434779c6b9eec7957",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/serde_starlark/0.1.14/download"
+              ],
+              "strip_prefix": "serde_starlark-0.1.14",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.serde_starlark-0.1.14.bazel"
+            }
+          },
+          "cui__slug-0.1.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__slug-0.1.4",
+              "sha256": "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/slug/0.1.4/download"
+              ],
+              "strip_prefix": "slug-0.1.4",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.slug-0.1.4.bazel"
+            }
+          },
+          "cui__ppv-lite86-0.2.17": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__ppv-lite86-0.2.17",
+              "sha256": "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/ppv-lite86/0.2.17/download"
+              ],
+              "strip_prefix": "ppv-lite86-0.2.17",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.ppv-lite86-0.2.17.bazel"
+            }
+          },
+          "cui__rand_core-0.6.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__rand_core-0.6.4",
+              "sha256": "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rand_core/0.6.4/download"
+              ],
+              "strip_prefix": "rand_core-0.6.4",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.rand_core-0.6.4.bazel"
+            }
+          },
+          "rules_rust_prost__errno-dragonfly-0.1.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__errno-dragonfly-0.1.2",
+              "sha256": "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/errno-dragonfly/0.1.2/download"
+              ],
+              "strip_prefix": "errno-dragonfly-0.1.2",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.errno-dragonfly-0.1.2.bazel"
+            }
+          },
+          "cui__gix-url-0.24.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-url-0.24.0",
+              "sha256": "6125ecf46e8c68bf7202da6cad239831daebf0247ffbab30210d72f3856e420f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-url/0.24.0/download"
+              ],
+              "strip_prefix": "gix-url-0.24.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-url-0.24.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__percent-encoding-2.3.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__percent-encoding-2.3.0",
+              "sha256": "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/percent-encoding/2.3.0/download"
+              ],
+              "strip_prefix": "percent-encoding-2.3.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.percent-encoding-2.3.0.bazel"
+            }
+          },
+          "rules_rust_prost__wasi-0.11.0-wasi-snapshot-preview1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__wasi-0.11.0-wasi-snapshot-preview1",
+              "sha256": "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasi/0.11.0+wasi-snapshot-preview1/download"
+              ],
+              "strip_prefix": "wasi-0.11.0+wasi-snapshot-preview1",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__rustix-0.37.23": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__rustix-0.37.23",
+              "sha256": "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rustix/0.37.23/download"
+              ],
+              "strip_prefix": "rustix-0.37.23",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.rustix-0.37.23.bazel"
+            }
+          },
+          "cui__clap_builder-4.3.11": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__clap_builder-4.3.11",
+              "sha256": "98c59138d527eeaf9b53f35a77fcc1fad9d883116070c63d5de1c7dc7b00c72b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap_builder/4.3.11/download"
+              ],
+              "strip_prefix": "clap_builder-4.3.11",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.clap_builder-4.3.11.bazel"
+            }
+          },
+          "cui__tracing-core-0.1.32": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__tracing-core-0.1.32",
+              "sha256": "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tracing-core/0.1.32/download"
+              ],
+              "strip_prefix": "tracing-core-0.1.32",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.tracing-core-0.1.32.bazel"
+            }
+          },
+          "rrra__clap_lex-0.5.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__clap_lex-0.5.0",
+              "sha256": "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap_lex/0.5.0/download"
+              ],
+              "strip_prefix": "clap_lex-0.5.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.clap_lex-0.5.0.bazel"
+            }
+          },
+          "rules_rust_prost__base64-0.21.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__base64-0.21.2",
+              "sha256": "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/base64/0.21.2/download"
+              ],
+              "strip_prefix": "base64-0.21.2",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.base64-0.21.2.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__windows_i686_msvc-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__windows_i686_msvc-0.48.0",
+              "sha256": "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_i686_msvc/0.48.0/download"
+              ],
+              "strip_prefix": "windows_i686_msvc-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.windows_i686_msvc-0.48.0.bazel"
+            }
+          },
+          "cui__home-0.5.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__home-0.5.5",
+              "sha256": "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/home/0.5.5/download"
+              ],
+              "strip_prefix": "home-0.5.5",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.home-0.5.5.bazel"
+            }
+          },
+          "cui__windows_x86_64_gnu-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__windows_x86_64_gnu-0.48.0",
+              "sha256": "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_x86_64_gnu/0.48.0/download"
+              ],
+              "strip_prefix": "windows_x86_64_gnu-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.windows_x86_64_gnu-0.48.0.bazel"
+            }
+          },
+          "cui__gix-actor-0.27.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-actor-0.27.0",
+              "sha256": "08c60e982c5290897122d4e2622447f014a2dadd5a18cb73d50bb91b31645e27",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-actor/0.27.0/download"
+              ],
+              "strip_prefix": "gix-actor-0.27.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-actor-0.27.0.bazel"
+            }
+          },
+          "cui__gix-attributes-0.19.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-attributes-0.19.0",
+              "sha256": "2451665e70709ba4753b623ef97511ee98c4a73816b2c5b5df25678d607ed820",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-attributes/0.19.0/download"
+              ],
+              "strip_prefix": "gix-attributes-0.19.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-attributes-0.19.0.bazel"
+            }
+          },
+          "cui__unic-ucd-version-0.9.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__unic-ucd-version-0.9.0",
+              "sha256": "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unic-ucd-version/0.9.0/download"
+              ],
+              "strip_prefix": "unic-ucd-version-0.9.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.unic-ucd-version-0.9.0.bazel"
+            }
+          },
+          "com_google_googleapis": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~com_google_googleapis",
+              "urls": [
+                "https://github.com/googleapis/googleapis/archive/18becb1d1426feb7399db144d7beeb3284f1ccb0.zip"
+              ],
+              "strip_prefix": "googleapis-18becb1d1426feb7399db144d7beeb3284f1ccb0",
+              "sha256": "b8c487191eb942361af905e40172644eab490190e717c3d09bf83e87f3994fff"
+            }
+          },
+          "cui__either-1.9.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__either-1.9.0",
+              "sha256": "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/either/1.9.0/download"
+              ],
+              "strip_prefix": "either-1.9.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.either-1.9.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__gimli-0.26.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__gimli-0.26.2",
+              "sha256": "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gimli/0.26.2/download"
+              ],
+              "strip_prefix": "gimli-0.26.2",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.gimli-0.26.2.bazel"
+            }
+          },
+          "cui__parking_lot-0.12.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__parking_lot-0.12.1",
+              "sha256": "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/parking_lot/0.12.1/download"
+              ],
+              "strip_prefix": "parking_lot-0.12.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.parking_lot-0.12.1.bazel"
+            }
+          },
+          "cui__globwalk-0.8.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__globwalk-0.8.1",
+              "sha256": "93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/globwalk/0.8.1/download"
+              ],
+              "strip_prefix": "globwalk-0.8.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.globwalk-0.8.1.bazel"
+            }
+          },
+          "rules_rust_bindgen__clap-4.3.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__clap-4.3.3",
+              "sha256": "ca8f255e4b8027970e78db75e78831229c9815fdbfa67eb1a1b777a62e24b4a0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap/4.3.3/download"
+              ],
+              "strip_prefix": "clap-4.3.3",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.clap-4.3.3.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wasm-bindgen-wasm-interpreter-0.2.91": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasm-bindgen-wasm-interpreter-0.2.91",
+              "sha256": "682940195a701dbf887f20017418b8cac916a37b3f91ededec33226619e973c1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen-wasm-interpreter/0.2.91/download"
+              ],
+              "strip_prefix": "wasm-bindgen-wasm-interpreter-0.2.91",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-wasm-interpreter-0.2.91.bazel"
+            }
+          },
+          "rules_rust_prost__hyper-0.14.26": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__hyper-0.14.26",
+              "sha256": "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/hyper/0.14.26/download"
+              ],
+              "strip_prefix": "hyper-0.14.26",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.hyper-0.14.26.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__predicates-2.1.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__predicates-2.1.5",
+              "sha256": "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/predicates/2.1.5/download"
+              ],
+              "strip_prefix": "predicates-2.1.5",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.predicates-2.1.5.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__ring-0.17.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__ring-0.17.5",
+              "sha256": "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/ring/0.17.5/download"
+              ],
+              "strip_prefix": "ring-0.17.5",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.ring-0.17.5.bazel"
+            }
+          },
+          "rules_rust_prost__memchr-2.5.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__memchr-2.5.0",
+              "sha256": "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/memchr/2.5.0/download"
+              ],
+              "strip_prefix": "memchr-2.5.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.memchr-2.5.0.bazel"
+            }
+          },
+          "cui__crates-index-2.2.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__crates-index-2.2.0",
+              "sha256": "33bc10579ea08741ae173928194b6c42c90b295d51ddd0d18238eaf15502ac87",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/crates-index/2.2.0/download"
+              ],
+              "strip_prefix": "crates-index-2.2.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.crates-index-2.2.0.bazel"
+            }
+          },
+          "cui__windows_x86_64_msvc-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__windows_x86_64_msvc-0.48.0",
+              "sha256": "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_x86_64_msvc/0.48.0/download"
+              ],
+              "strip_prefix": "windows_x86_64_msvc-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.windows_x86_64_msvc-0.48.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__crossbeam-channel-0.5.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__crossbeam-channel-0.5.8",
+              "sha256": "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/crossbeam-channel/0.5.8/download"
+              ],
+              "strip_prefix": "crossbeam-channel-0.5.8",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.crossbeam-channel-0.5.8.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__windows-sys-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__windows-sys-0.48.0",
+              "sha256": "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows-sys/0.48.0/download"
+              ],
+              "strip_prefix": "windows-sys-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.windows-sys-0.48.0.bazel"
+            }
+          },
+          "cui__redox_syscall-0.3.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__redox_syscall-0.3.5",
+              "sha256": "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/redox_syscall/0.3.5/download"
+              ],
+              "strip_prefix": "redox_syscall-0.3.5",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.redox_syscall-0.3.5.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__flate2-1.0.28": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__flate2-1.0.28",
+              "sha256": "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/flate2/1.0.28/download"
+              ],
+              "strip_prefix": "flate2-1.0.28",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.flate2-1.0.28.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__indexmap-1.9.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__indexmap-1.9.3",
+              "sha256": "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/indexmap/1.9.3/download"
+              ],
+              "strip_prefix": "indexmap-1.9.3",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.indexmap-1.9.3.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__once_cell-1.18.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__once_cell-1.18.0",
+              "sha256": "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/once_cell/1.18.0/download"
+              ],
+              "strip_prefix": "once_cell-1.18.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.once_cell-1.18.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__termtree-0.4.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__termtree-0.4.1",
+              "sha256": "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/termtree/0.4.1/download"
+              ],
+              "strip_prefix": "termtree-0.4.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.termtree-0.4.1.bazel"
+            }
+          },
+          "rules_rust_bindgen__anstream-0.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__anstream-0.3.2",
+              "sha256": "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstream/0.3.2/download"
+              ],
+              "strip_prefix": "anstream-0.3.2",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.anstream-0.3.2.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__scopeguard-1.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__scopeguard-1.1.0",
+              "sha256": "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/scopeguard/1.1.0/download"
+              ],
+              "strip_prefix": "scopeguard-1.1.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.scopeguard-1.1.0.bazel"
+            }
+          },
+          "cui__gix-protocol-0.40.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-protocol-0.40.0",
+              "sha256": "cc7b700dc20cc9be8a5130a1fd7e10c34117ffa7068431c8c24d963f0a2e0c9b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-protocol/0.40.0/download"
+              ],
+              "strip_prefix": "gix-protocol-0.40.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-protocol-0.40.0.bazel"
+            }
+          },
+          "bazelci_rules": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~bazelci_rules",
+              "sha256": "eca21884e6f66a88c358e580fd67a6b148d30ab57b1680f62a96c00f9bc6a07e",
+              "strip_prefix": "bazelci_rules-1.0.0",
+              "url": "https://github.com/bazelbuild/continuous-integration/releases/download/rules-1.0.0/bazelci_rules-1.0.0.tar.gz"
+            }
+          },
+          "rules_rust_wasm_bindgen__doc-comment-0.3.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__doc-comment-0.3.3",
+              "sha256": "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/doc-comment/0.3.3/download"
+              ],
+              "strip_prefix": "doc-comment-0.3.3",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.doc-comment-0.3.3.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__fastrand-1.9.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__fastrand-1.9.0",
+              "sha256": "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/fastrand/1.9.0/download"
+              ],
+              "strip_prefix": "fastrand-1.9.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.fastrand-1.9.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__num_threads-0.1.6": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__num_threads-0.1.6",
+              "sha256": "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/num_threads/0.1.6/download"
+              ],
+              "strip_prefix": "num_threads-0.1.6",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.num_threads-0.1.6.bazel"
+            }
+          },
+          "cui__crc32fast-1.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__crc32fast-1.3.2",
+              "sha256": "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/crc32fast/1.3.2/download"
+              ],
+              "strip_prefix": "crc32fast-1.3.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.crc32fast-1.3.2.bazel"
+            }
+          },
+          "cui__rayon-core-1.12.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__rayon-core-1.12.0",
+              "sha256": "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rayon-core/1.12.0/download"
+              ],
+              "strip_prefix": "rayon-core-1.12.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.rayon-core-1.12.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__lazy_static-1.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__lazy_static-1.4.0",
+              "sha256": "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/lazy_static/1.4.0/download"
+              ],
+              "strip_prefix": "lazy_static-1.4.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.lazy_static-1.4.0.bazel"
+            }
+          },
+          "cui__thread_local-1.1.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__thread_local-1.1.4",
+              "sha256": "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/thread_local/1.1.4/download"
+              ],
+              "strip_prefix": "thread_local-1.1.4",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.thread_local-1.1.4.bazel"
+            }
+          },
+          "rules_rust_bindgen__aho-corasick-1.0.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__aho-corasick-1.0.2",
+              "sha256": "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/aho-corasick/1.0.2/download"
+              ],
+              "strip_prefix": "aho-corasick-1.0.2",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.aho-corasick-1.0.2.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__threadpool-1.8.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__threadpool-1.8.1",
+              "sha256": "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/threadpool/1.8.1/download"
+              ],
+              "strip_prefix": "threadpool-1.8.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.threadpool-1.8.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__walrus-macro-0.19.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__walrus-macro-0.19.0",
+              "sha256": "0a6e5bd22c71e77d60140b0bd5be56155a37e5bd14e24f5f87298040d0cc40d7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/walrus-macro/0.19.0/download"
+              ],
+              "strip_prefix": "walrus-macro-0.19.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.walrus-macro-0.19.0.bazel"
+            }
+          },
+          "cui__linux-raw-sys-0.4.10": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__linux-raw-sys-0.4.10",
+              "sha256": "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/linux-raw-sys/0.4.10/download"
+              ],
+              "strip_prefix": "linux-raw-sys-0.4.10",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.linux-raw-sys-0.4.10.bazel"
+            }
+          },
+          "cui__rdrand-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__rdrand-0.4.0",
+              "sha256": "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rdrand/0.4.0/download"
+              ],
+              "strip_prefix": "rdrand-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.rdrand-0.4.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__anstyle-wincon-1.0.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__anstyle-wincon-1.0.1",
+              "sha256": "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstyle-wincon/1.0.1/download"
+              ],
+              "strip_prefix": "anstyle-wincon-1.0.1",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.anstyle-wincon-1.0.1.bazel"
+            }
+          },
+          "rrra__windows_x86_64_msvc-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__windows_x86_64_msvc-0.48.0",
+              "sha256": "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_x86_64_msvc/0.48.0/download"
+              ],
+              "strip_prefix": "windows_x86_64_msvc-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.windows_x86_64_msvc-0.48.0.bazel"
+            }
+          },
+          "cui__rand_core-0.3.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__rand_core-0.3.1",
+              "sha256": "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rand_core/0.3.1/download"
+              ],
+              "strip_prefix": "rand_core-0.3.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.rand_core-0.3.1.bazel"
+            }
+          },
+          "cui__rayon-1.8.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__rayon-1.8.0",
+              "sha256": "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rayon/1.8.0/download"
+              ],
+              "strip_prefix": "rayon-1.8.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.rayon-1.8.0.bazel"
+            }
+          },
+          "cui__cpufeatures-0.2.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__cpufeatures-0.2.9",
+              "sha256": "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cpufeatures/0.2.9/download"
+              ],
+              "strip_prefix": "cpufeatures-0.2.9",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.cpufeatures-0.2.9.bazel"
+            }
+          },
+          "cui__tempfile-3.8.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__tempfile-3.8.1",
+              "sha256": "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tempfile/3.8.1/download"
+              ],
+              "strip_prefix": "tempfile-3.8.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.tempfile-3.8.1.bazel"
+            }
+          },
+          "rules_rust_prost__mio-0.8.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__mio-0.8.8",
+              "sha256": "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/mio/0.8.8/download"
+              ],
+              "strip_prefix": "mio-0.8.8",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.mio-0.8.8.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__windows_aarch64_msvc-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__windows_aarch64_msvc-0.48.0",
+              "sha256": "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_aarch64_msvc/0.48.0/download"
+              ],
+              "strip_prefix": "windows_aarch64_msvc-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.windows_aarch64_msvc-0.48.0.bazel"
+            }
+          },
+          "cui__rustc-serialize-0.3.25": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__rustc-serialize-0.3.25",
+              "sha256": "fe834bc780604f4674073badbad26d7219cadfb4a2275802db12cbae17498401",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rustc-serialize/0.3.25/download"
+              ],
+              "strip_prefix": "rustc-serialize-0.3.25",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.rustc-serialize-0.3.25.bazel"
+            }
+          },
+          "rrra__anyhow-1.0.71": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__anyhow-1.0.71",
+              "sha256": "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anyhow/1.0.71/download"
+              ],
+              "strip_prefix": "anyhow-1.0.71",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.anyhow-1.0.71.bazel"
+            }
+          },
+          "cui__gix-path-0.10.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-path-0.10.0",
+              "sha256": "6a1d370115171e3ae03c5c6d4f7d096f2981a40ddccb98dfd704c773530ba73b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-path/0.10.0/download"
+              ],
+              "strip_prefix": "gix-path-0.10.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-path-0.10.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__hermit-abi-0.3.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__hermit-abi-0.3.1",
+              "sha256": "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/hermit-abi/0.3.1/download"
+              ],
+              "strip_prefix": "hermit-abi-0.3.1",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.hermit-abi-0.3.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__multipart-0.18.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__multipart-0.18.0",
+              "sha256": "00dec633863867f29cb39df64a397cdf4a6354708ddd7759f70c7fb51c5f9182",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/multipart/0.18.0/download"
+              ],
+              "strip_prefix": "multipart-0.18.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.multipart-0.18.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__android_system_properties-0.1.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__android_system_properties-0.1.5",
+              "sha256": "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/android_system_properties/0.1.5/download"
+              ],
+              "strip_prefix": "android_system_properties-0.1.5",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.android_system_properties-0.1.5.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__cc-1.0.83": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__cc-1.0.83",
+              "sha256": "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cc/1.0.83/download"
+              ],
+              "strip_prefix": "cc-1.0.83",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.cc-1.0.83.bazel"
+            }
+          },
+          "cui__gix-ref-0.37.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-ref-0.37.0",
+              "sha256": "22e6b749660b613641769edc1954132eb8071a13c32224891686091bef078de4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-ref/0.37.0/download"
+              ],
+              "strip_prefix": "gix-ref-0.37.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-ref-0.37.0.bazel"
+            }
+          },
+          "cui__rand-0.8.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__rand-0.8.5",
+              "sha256": "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rand/0.8.5/download"
+              ],
+              "strip_prefix": "rand-0.8.5",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.rand-0.8.5.bazel"
+            }
+          },
+          "cui__num-integer-0.1.45": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__num-integer-0.1.45",
+              "sha256": "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/num-integer/0.1.45/download"
+              ],
+              "strip_prefix": "num-integer-0.1.45",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.num-integer-0.1.45.bazel"
+            }
+          },
+          "rules_rust_bindgen__anstyle-query-1.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__anstyle-query-1.0.0",
+              "sha256": "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstyle-query/1.0.0/download"
+              ],
+              "strip_prefix": "anstyle-query-1.0.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.anstyle-query-1.0.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__hermit-abi-0.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__hermit-abi-0.3.2",
+              "sha256": "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/hermit-abi/0.3.2/download"
+              ],
+              "strip_prefix": "hermit-abi-0.3.2",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.hermit-abi-0.3.2.bazel"
+            }
+          },
+          "rrra__utf8parse-0.2.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__utf8parse-0.2.1",
+              "sha256": "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/utf8parse/0.2.1/download"
+              ],
+              "strip_prefix": "utf8parse-0.2.1",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.utf8parse-0.2.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__getrandom-0.2.10": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__getrandom-0.2.10",
+              "sha256": "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/getrandom/0.2.10/download"
+              ],
+              "strip_prefix": "getrandom-0.2.10",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.getrandom-0.2.10.bazel"
+            }
+          },
+          "cargo_bazel.buildifier-windows-amd64.exe": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_file",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cargo_bazel.buildifier-windows-amd64.exe",
+              "urls": [
+                "https://github.com/bazelbuild/buildtools/releases/download/5.0.1/buildifier-windows-amd64.exe"
+              ],
+              "sha256": "45e13b2951e4c611d346dacdaf0aafaa484045a3e7300fbc5dd01a896a688177",
+              "downloaded_file_path": "buildifier.exe",
+              "executable": true
+            }
+          },
+          "cui__regex-1.10.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__regex-1.10.2",
+              "sha256": "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/regex/1.10.2/download"
+              ],
+              "strip_prefix": "regex-1.10.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.regex-1.10.2.bazel"
+            }
+          },
+          "rules_rust_prost__httparse-1.8.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__httparse-1.8.0",
+              "sha256": "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/httparse/1.8.0/download"
+              ],
+              "strip_prefix": "httparse-1.8.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.httparse-1.8.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__shlex-1.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__shlex-1.1.0",
+              "sha256": "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/shlex/1.1.0/download"
+              ],
+              "strip_prefix": "shlex-1.1.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.shlex-1.1.0.bazel"
+            }
+          },
+          "rrra__log-0.4.19": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__log-0.4.19",
+              "sha256": "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/log/0.4.19/download"
+              ],
+              "strip_prefix": "log-0.4.19",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.log-0.4.19.bazel"
+            }
+          },
+          "cui__cargo_metadata-0.18.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__cargo_metadata-0.18.1",
+              "sha256": "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cargo_metadata/0.18.1/download"
+              ],
+              "strip_prefix": "cargo_metadata-0.18.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.cargo_metadata-0.18.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__predicates-1.0.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__predicates-1.0.8",
+              "sha256": "f49cfaf7fdaa3bfacc6fa3e7054e65148878354a5cfddcf661df4c851f8021df",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/predicates/1.0.8/download"
+              ],
+              "strip_prefix": "predicates-1.0.8",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.predicates-1.0.8.bazel"
+            }
+          },
+          "rrra__windows-targets-0.48.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__windows-targets-0.48.1",
+              "sha256": "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows-targets/0.48.1/download"
+              ],
+              "strip_prefix": "windows-targets-0.48.1",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.windows-targets-0.48.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__serde_json-1.0.102": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__serde_json-1.0.102",
+              "sha256": "b5062a995d481b2308b6064e9af76011f2921c35f97b0468811ed9f6cd91dfed",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/serde_json/1.0.102/download"
+              ],
+              "strip_prefix": "serde_json-1.0.102",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.serde_json-1.0.102.bazel"
+            }
+          },
+          "cui__gix-fs-0.7.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-fs-0.7.0",
+              "sha256": "09815faba62fe9b32d918b75a554686c98e43f7d48c43a80df58eb718e5c6635",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-fs/0.7.0/download"
+              ],
+              "strip_prefix": "gix-fs-0.7.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-fs-0.7.0.bazel"
+            }
+          },
+          "rrra__clap_builder-4.3.11": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__clap_builder-4.3.11",
+              "sha256": "98c59138d527eeaf9b53f35a77fcc1fad9d883116070c63d5de1c7dc7b00c72b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap_builder/4.3.11/download"
+              ],
+              "strip_prefix": "clap_builder-4.3.11",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.clap_builder-4.3.11.bazel"
+            }
+          },
+          "rules_rust_prost__windows-sys-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__windows-sys-0.48.0",
+              "sha256": "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows-sys/0.48.0/download"
+              ],
+              "strip_prefix": "windows-sys-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.windows-sys-0.48.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__windows_i686_gnu-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__windows_i686_gnu-0.48.0",
+              "sha256": "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_i686_gnu/0.48.0/download"
+              ],
+              "strip_prefix": "windows_i686_gnu-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.windows_i686_gnu-0.48.0.bazel"
+            }
+          },
+          "cui__gix-lock-10.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-lock-10.0.0",
+              "sha256": "47fc96fa8b6b6d33555021907c81eb3b27635daecf6e630630bdad44f8feaa95",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-lock/10.0.0/download"
+              ],
+              "strip_prefix": "gix-lock-10.0.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-lock-10.0.0.bazel"
+            }
+          },
+          "cui__gix-sec-0.10.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-sec-0.10.0",
+              "sha256": "92b9542ac025a8c02ed5d17b3fc031a111a384e859d0be3532ec4d58c40a0f28",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-sec/0.10.0/download"
+              ],
+              "strip_prefix": "gix-sec-0.10.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-sec-0.10.0.bazel"
+            }
+          },
+          "rules_rust_prost__indexmap-1.9.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__indexmap-1.9.3",
+              "sha256": "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/indexmap/1.9.3/download"
+              ],
+              "strip_prefix": "indexmap-1.9.3",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.indexmap-1.9.3.bazel"
+            }
+          },
+          "cui__gix-trace-0.1.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-trace-0.1.3",
+              "sha256": "96b6d623a1152c3facb79067d6e2ecdae48130030cf27d6eb21109f13bd7b836",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-trace/0.1.3/download"
+              ],
+              "strip_prefix": "gix-trace-0.1.3",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-trace-0.1.3.bazel"
+            }
+          },
+          "cui__num-iter-0.1.43": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__num-iter-0.1.43",
+              "sha256": "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/num-iter/0.1.43/download"
+              ],
+              "strip_prefix": "num-iter-0.1.43",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.num-iter-0.1.43.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__ryu-1.0.14": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__ryu-1.0.14",
+              "sha256": "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/ryu/1.0.14/download"
+              ],
+              "strip_prefix": "ryu-1.0.14",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.ryu-1.0.14.bazel"
+            }
+          },
+          "rules_rust_prost__lazy_static-1.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__lazy_static-1.4.0",
+              "sha256": "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/lazy_static/1.4.0/download"
+              ],
+              "strip_prefix": "lazy_static-1.4.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.lazy_static-1.4.0.bazel"
+            }
+          },
+          "cui__humansize-2.1.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__humansize-2.1.3",
+              "sha256": "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/humansize/2.1.3/download"
+              ],
+              "strip_prefix": "humansize-2.1.3",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.humansize-2.1.3.bazel"
+            }
+          },
+          "rules_rust_prost__winapi-x86_64-pc-windows-gnu-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__winapi-x86_64-pc-windows-gnu-0.4.0",
+              "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download"
+              ],
+              "strip_prefix": "winapi-x86_64-pc-windows-gnu-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__io-lifetimes-1.0.11": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__io-lifetimes-1.0.11",
+              "sha256": "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/io-lifetimes/1.0.11/download"
+              ],
+              "strip_prefix": "io-lifetimes-1.0.11",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.io-lifetimes-1.0.11.bazel"
+            }
+          },
+          "rules_rust_prost__tower-service-0.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__tower-service-0.3.2",
+              "sha256": "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tower-service/0.3.2/download"
+              ],
+              "strip_prefix": "tower-service-0.3.2",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.tower-service-0.3.2.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__diff-0.1.13": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__diff-0.1.13",
+              "sha256": "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/diff/0.1.13/download"
+              ],
+              "strip_prefix": "diff-0.1.13",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.diff-0.1.13.bazel"
+            }
+          },
+          "rules_rust_prost__multimap-0.8.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__multimap-0.8.3",
+              "sha256": "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/multimap/0.8.3/download"
+              ],
+              "strip_prefix": "multimap-0.8.3",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.multimap-0.8.3.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__difference-2.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__difference-2.0.0",
+              "sha256": "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/difference/2.0.0/download"
+              ],
+              "strip_prefix": "difference-2.0.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.difference-2.0.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__unicode-segmentation-1.10.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__unicode-segmentation-1.10.1",
+              "sha256": "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-segmentation/1.10.1/download"
+              ],
+              "strip_prefix": "unicode-segmentation-1.10.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.unicode-segmentation-1.10.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__proc-macro2-1.0.64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__proc-macro2-1.0.64",
+              "sha256": "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/proc-macro2/1.0.64/download"
+              ],
+              "strip_prefix": "proc-macro2-1.0.64",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.proc-macro2-1.0.64.bazel"
+            }
+          },
+          "cui__rand_core-0.4.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__rand_core-0.4.2",
+              "sha256": "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rand_core/0.4.2/download"
+              ],
+              "strip_prefix": "rand_core-0.4.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.rand_core-0.4.2.bazel"
+            }
+          },
+          "rrra__cc-1.0.79": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__cc-1.0.79",
+              "sha256": "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cc/1.0.79/download"
+              ],
+              "strip_prefix": "cc-1.0.79",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.cc-1.0.79.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__rustls-webpki-0.101.7": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__rustls-webpki-0.101.7",
+              "sha256": "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rustls-webpki/0.101.7/download"
+              ],
+              "strip_prefix": "rustls-webpki-0.101.7",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.rustls-webpki-0.101.7.bazel"
+            }
+          },
+          "cui__phf-0.11.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__phf-0.11.2",
+              "sha256": "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/phf/0.11.2/download"
+              ],
+              "strip_prefix": "phf-0.11.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.phf-0.11.2.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wasm-bindgen-threads-xform-0.2.91": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasm-bindgen-threads-xform-0.2.91",
+              "sha256": "90a2e577034352f9aa9352730fcf2562c68957f2e9b9ee70ab6379510e49e2fe",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen-threads-xform/0.2.91/download"
+              ],
+              "strip_prefix": "wasm-bindgen-threads-xform-0.2.91",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-threads-xform-0.2.91.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__winapi-0.3.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__winapi-0.3.9",
+              "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi/0.3.9/download"
+              ],
+              "strip_prefix": "winapi-0.3.9",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.winapi-0.3.9.bazel"
+            }
+          },
+          "rules_rust_prost": {
+            "bzlFile": "@@rules_rust~0.40.0//crate_universe/private:crates_vendor.bzl",
+            "ruleClassName": "crates_vendor_remote_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.bazel",
+              "defs_module": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:defs.bzl"
+            }
+          },
+          "cui__wasm-bindgen-0.2.87": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__wasm-bindgen-0.2.87",
+              "sha256": "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen/0.2.87/download"
+              ],
+              "strip_prefix": "wasm-bindgen-0.2.87",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.wasm-bindgen-0.2.87.bazel"
+            }
+          },
+          "rules_rust_bindgen__quote-1.0.28": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__quote-1.0.28",
+              "sha256": "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/quote/1.0.28/download"
+              ],
+              "strip_prefix": "quote-1.0.28",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.quote-1.0.28.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wasmparser-0.102.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasmparser-0.102.0",
+              "sha256": "48134de3d7598219ab9eaf6b91b15d8e50d31da76b8519fe4ecfcec2cf35104b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasmparser/0.102.0/download"
+              ],
+              "strip_prefix": "wasmparser-0.102.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasmparser-0.102.0.bazel"
+            }
+          },
+          "cui__anstyle-query-1.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__anstyle-query-1.0.0",
+              "sha256": "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstyle-query/1.0.0/download"
+              ],
+              "strip_prefix": "anstyle-query-1.0.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.anstyle-query-1.0.0.bazel"
+            }
+          },
+          "cui__winapi-x86_64-pc-windows-gnu-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__winapi-x86_64-pc-windows-gnu-0.4.0",
+              "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download"
+              ],
+              "strip_prefix": "winapi-x86_64-pc-windows-gnu-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel"
+            }
+          },
+          "rrra__heck-0.4.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__heck-0.4.1",
+              "sha256": "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/heck/0.4.1/download"
+              ],
+              "strip_prefix": "heck-0.4.1",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.heck-0.4.1.bazel"
+            }
+          },
+          "rules_rust_prost__hermit-abi-0.2.6": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__hermit-abi-0.2.6",
+              "sha256": "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/hermit-abi/0.2.6/download"
+              ],
+              "strip_prefix": "hermit-abi-0.2.6",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.hermit-abi-0.2.6.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__autocfg-1.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__autocfg-1.1.0",
+              "sha256": "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/autocfg/1.1.0/download"
+              ],
+              "strip_prefix": "autocfg-1.1.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.autocfg-1.1.0.bazel"
+            }
+          },
+          "cui__bumpalo-3.13.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__bumpalo-3.13.0",
+              "sha256": "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/bumpalo/3.13.0/download"
+              ],
+              "strip_prefix": "bumpalo-3.13.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.bumpalo-3.13.0.bazel"
+            }
+          },
+          "rules_rust_prost__cfg-if-1.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__cfg-if-1.0.0",
+              "sha256": "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cfg-if/1.0.0/download"
+              ],
+              "strip_prefix": "cfg-if-1.0.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.cfg-if-1.0.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__anstyle-parse-0.2.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__anstyle-parse-0.2.0",
+              "sha256": "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstyle-parse/0.2.0/download"
+              ],
+              "strip_prefix": "anstyle-parse-0.2.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.anstyle-parse-0.2.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__bindgen-0.69.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__bindgen-0.69.1",
+              "sha256": "9ffcebc3849946a7170a05992aac39da343a90676ab392c51a4280981d6379c2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/bindgen/0.69.1/download"
+              ],
+              "strip_prefix": "bindgen-0.69.1",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.bindgen-0.69.1.bazel"
+            }
+          },
+          "cui__version_check-0.9.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__version_check-0.9.4",
+              "sha256": "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/version_check/0.9.4/download"
+              ],
+              "strip_prefix": "version_check-0.9.4",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.version_check-0.9.4.bazel"
+            }
+          },
+          "cui__num-complex-0.1.43": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__num-complex-0.1.43",
+              "sha256": "b288631d7878aaf59442cffd36910ea604ecd7745c36054328595114001c9656",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/num-complex/0.1.43/download"
+              ],
+              "strip_prefix": "num-complex-0.1.43",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.num-complex-0.1.43.bazel"
+            }
+          },
+          "cui__gix-date-0.8.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-date-0.8.0",
+              "sha256": "fc7df669639582dc7c02737642f76890b03b5544e141caba68a7d6b4eb551e0d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-date/0.8.0/download"
+              ],
+              "strip_prefix": "gix-date-0.8.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-date-0.8.0.bazel"
+            }
+          },
+          "cui__scopeguard-1.2.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__scopeguard-1.2.0",
+              "sha256": "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/scopeguard/1.2.0/download"
+              ],
+              "strip_prefix": "scopeguard-1.2.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.scopeguard-1.2.0.bazel"
+            }
+          },
+          "rules_rust_prost__pin-project-1.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__pin-project-1.1.0",
+              "sha256": "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/pin-project/1.1.0/download"
+              ],
+              "strip_prefix": "pin-project-1.1.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.pin-project-1.1.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__quote-1.0.29": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__quote-1.0.29",
+              "sha256": "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/quote/1.0.29/download"
+              ],
+              "strip_prefix": "quote-1.0.29",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.quote-1.0.29.bazel"
+            }
+          },
+          "rules_rust_bindgen__clang-sys-1.6.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__clang-sys-1.6.1",
+              "sha256": "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clang-sys/1.6.1/download"
+              ],
+              "strip_prefix": "clang-sys-1.6.1",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.clang-sys-1.6.1.bazel"
+            }
+          },
+          "cui__parse-zoneinfo-0.3.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__parse-zoneinfo-0.3.0",
+              "sha256": "c705f256449c60da65e11ff6626e0c16a0a0b96aaa348de61376b249bc340f41",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/parse-zoneinfo/0.3.0/download"
+              ],
+              "strip_prefix": "parse-zoneinfo-0.3.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.parse-zoneinfo-0.3.0.bazel"
+            }
+          },
+          "cui__unicode-bidi-0.3.13": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__unicode-bidi-0.3.13",
+              "sha256": "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-bidi/0.3.13/download"
+              ],
+              "strip_prefix": "unicode-bidi-0.3.13",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.unicode-bidi-0.3.13.bazel"
+            }
+          },
+          "cui__gix-traverse-0.33.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-traverse-0.33.0",
+              "sha256": "22ef04ab3643acba289b5cedd25d6f53c0430770b1d689d1d654511e6fb81ba0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-traverse/0.33.0/download"
+              ],
+              "strip_prefix": "gix-traverse-0.33.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-traverse-0.33.0.bazel"
+            }
+          },
+          "rrra__anstyle-parse-0.2.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__anstyle-parse-0.2.1",
+              "sha256": "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstyle-parse/0.2.1/download"
+              ],
+              "strip_prefix": "anstyle-parse-0.2.1",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.anstyle-parse-0.2.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__stable_deref_trait-1.2.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__stable_deref_trait-1.2.0",
+              "sha256": "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/stable_deref_trait/1.2.0/download"
+              ],
+              "strip_prefix": "stable_deref_trait-1.2.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.stable_deref_trait-1.2.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__num_cpus-1.16.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__num_cpus-1.16.0",
+              "sha256": "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/num_cpus/1.16.0/download"
+              ],
+              "strip_prefix": "num_cpus-1.16.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.num_cpus-1.16.0.bazel"
+            }
+          },
+          "llvm-raw": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~llvm-raw",
+              "urls": [
+                "https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.6/llvm-project-14.0.6.src.tar.xz"
+              ],
+              "strip_prefix": "llvm-project-14.0.6.src",
+              "sha256": "8b3cfd7bc695bd6cea0f37f53f0981f34f87496e79e2529874fd03a2f9dd3a8a",
+              "build_file_content": "# empty",
+              "patch_args": [
+                "-p1"
+              ],
+              "patches": [
+                "@@rules_rust~0.40.0//bindgen/3rdparty/patches:llvm-project.cxx17.patch",
+                "@@rules_rust~0.40.0//bindgen/3rdparty/patches:llvm-project.incompatible_disallow_empty_glob.patch"
+              ]
+            }
+          },
+          "cui__miniz_oxide-0.7.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__miniz_oxide-0.7.1",
+              "sha256": "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/miniz_oxide/0.7.1/download"
+              ],
+              "strip_prefix": "miniz_oxide-0.7.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.miniz_oxide-0.7.1.bazel"
+            }
+          },
+          "cui__phf_codegen-0.11.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__phf_codegen-0.11.2",
+              "sha256": "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/phf_codegen/0.11.2/download"
+              ],
+              "strip_prefix": "phf_codegen-0.11.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.phf_codegen-0.11.2.bazel"
+            }
+          },
+          "cui__winapi-util-0.1.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__winapi-util-0.1.5",
+              "sha256": "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-util/0.1.5/download"
+              ],
+              "strip_prefix": "winapi-util-0.1.5",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.winapi-util-0.1.5.bazel"
+            }
+          },
+          "rules_rust_bindgen__io-lifetimes-1.0.11": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__io-lifetimes-1.0.11",
+              "sha256": "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/io-lifetimes/1.0.11/download"
+              ],
+              "strip_prefix": "io-lifetimes-1.0.11",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.io-lifetimes-1.0.11.bazel"
+            }
+          },
+          "cui__unic-char-range-0.9.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__unic-char-range-0.9.0",
+              "sha256": "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unic-char-range/0.9.0/download"
+              ],
+              "strip_prefix": "unic-char-range-0.9.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.unic-char-range-0.9.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__leb128-0.2.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__leb128-0.2.5",
+              "sha256": "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/leb128/0.2.5/download"
+              ],
+              "strip_prefix": "leb128-0.2.5",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.leb128-0.2.5.bazel"
+            }
+          },
+          "cui__crossbeam-deque-0.8.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__crossbeam-deque-0.8.3",
+              "sha256": "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/crossbeam-deque/0.8.3/download"
+              ],
+              "strip_prefix": "crossbeam-deque-0.8.3",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.crossbeam-deque-0.8.3.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__predicates-core-1.0.6": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__predicates-core-1.0.6",
+              "sha256": "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/predicates-core/1.0.6/download"
+              ],
+              "strip_prefix": "predicates-core-1.0.6",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.predicates-core-1.0.6.bazel"
+            }
+          },
+          "cui__android_system_properties-0.1.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__android_system_properties-0.1.5",
+              "sha256": "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/android_system_properties/0.1.5/download"
+              ],
+              "strip_prefix": "android_system_properties-0.1.5",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.android_system_properties-0.1.5.bazel"
+            }
+          },
+          "cui__windows_aarch64_msvc-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__windows_aarch64_msvc-0.48.0",
+              "sha256": "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_aarch64_msvc/0.48.0/download"
+              ],
+              "strip_prefix": "windows_aarch64_msvc-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.windows_aarch64_msvc-0.48.0.bazel"
+            }
+          },
+          "cui__anstyle-1.0.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__anstyle-1.0.1",
+              "sha256": "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstyle/1.0.1/download"
+              ],
+              "strip_prefix": "anstyle-1.0.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.anstyle-1.0.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wasm-bindgen-0.2.91": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasm-bindgen-0.2.91",
+              "sha256": "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen/0.2.91/download"
+              ],
+              "strip_prefix": "wasm-bindgen-0.2.91",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-0.2.91.bazel"
+            }
+          },
+          "cui__pest_meta-2.7.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__pest_meta-2.7.0",
+              "sha256": "a01f71cb40bd8bb94232df14b946909e14660e33fc05db3e50ae2a82d7ea0ca0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/pest_meta/2.7.0/download"
+              ],
+              "strip_prefix": "pest_meta-2.7.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.pest_meta-2.7.0.bazel"
+            }
+          },
+          "cui__anstyle-wincon-1.0.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__anstyle-wincon-1.0.1",
+              "sha256": "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstyle-wincon/1.0.1/download"
+              ],
+              "strip_prefix": "anstyle-wincon-1.0.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.anstyle-wincon-1.0.1.bazel"
+            }
+          },
+          "rrra__anstyle-query-1.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__anstyle-query-1.0.0",
+              "sha256": "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstyle-query/1.0.0/download"
+              ],
+              "strip_prefix": "anstyle-query-1.0.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.anstyle-query-1.0.0.bazel"
+            }
+          },
+          "rules_rust_prost__winapi-i686-pc-windows-gnu-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__winapi-i686-pc-windows-gnu-0.4.0",
+              "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download"
+              ],
+              "strip_prefix": "winapi-i686-pc-windows-gnu-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel"
+            }
+          },
+          "rrra__clap_derive-4.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__clap_derive-4.3.2",
+              "sha256": "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap_derive/4.3.2/download"
+              ],
+              "strip_prefix": "clap_derive-4.3.2",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.clap_derive-4.3.2.bazel"
+            }
+          },
+          "cui__gix-hash-0.13.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-hash-0.13.1",
+              "sha256": "1884c7b41ea0875217c1be9ce91322f90bde433e91d374d0e1276073a51ccc60",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-hash/0.13.1/download"
+              ],
+              "strip_prefix": "gix-hash-0.13.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-hash-0.13.1.bazel"
+            }
+          },
+          "cui__maybe-async-0.2.7": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__maybe-async-0.2.7",
+              "sha256": "0f1b8c13cb1f814b634a96b2c725449fe7ed464a7b8781de8688be5ffbd3f305",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/maybe-async/0.2.7/download"
+              ],
+              "strip_prefix": "maybe-async-0.2.7",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.maybe-async-0.2.7.bazel"
+            }
+          },
+          "cui__regex-automata-0.3.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__regex-automata-0.3.3",
+              "sha256": "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/regex-automata/0.3.3/download"
+              ],
+              "strip_prefix": "regex-automata-0.3.3",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.regex-automata-0.3.3.bazel"
+            }
+          },
+          "rrra__windows_aarch64_msvc-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__windows_aarch64_msvc-0.48.0",
+              "sha256": "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_aarch64_msvc/0.48.0/download"
+              ],
+              "strip_prefix": "windows_aarch64_msvc-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.windows_aarch64_msvc-0.48.0.bazel"
+            }
+          },
+          "cui__gix-filter-0.5.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-filter-0.5.0",
+              "sha256": "1be40d28cd41445bb6cd52c4d847d915900e5466f7433eaee6a9e0a3d1d88b08",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-filter/0.5.0/download"
+              ],
+              "strip_prefix": "gix-filter-0.5.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-filter-0.5.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__mime-0.3.17": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__mime-0.3.17",
+              "sha256": "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/mime/0.3.17/download"
+              ],
+              "strip_prefix": "mime-0.3.17",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.mime-0.3.17.bazel"
+            }
+          },
+          "rules_rust_prost__which-4.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__which-4.4.0",
+              "sha256": "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/which/4.4.0/download"
+              ],
+              "strip_prefix": "which-4.4.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.which-4.4.0.bazel"
+            }
+          },
+          "rrra__anstyle-wincon-1.0.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__anstyle-wincon-1.0.1",
+              "sha256": "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstyle-wincon/1.0.1/download"
+              ],
+              "strip_prefix": "anstyle-wincon-1.0.1",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.anstyle-wincon-1.0.1.bazel"
+            }
+          },
+          "rrra__rustix-0.37.23": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__rustix-0.37.23",
+              "sha256": "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rustix/0.37.23/download"
+              ],
+              "strip_prefix": "rustix-0.37.23",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.rustix-0.37.23.bazel"
+            }
+          },
+          "rules_rust_prost__hermit-abi-0.3.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__hermit-abi-0.3.1",
+              "sha256": "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/hermit-abi/0.3.1/download"
+              ],
+              "strip_prefix": "hermit-abi-0.3.1",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.hermit-abi-0.3.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__adler-1.0.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__adler-1.0.2",
+              "sha256": "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/adler/1.0.2/download"
+              ],
+              "strip_prefix": "adler-1.0.2",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.adler-1.0.2.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__log-0.4.19": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__log-0.4.19",
+              "sha256": "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/log/0.4.19/download"
+              ],
+              "strip_prefix": "log-0.4.19",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.log-0.4.19.bazel"
+            }
+          },
+          "rules_rust_bindgen__heck-0.4.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__heck-0.4.1",
+              "sha256": "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/heck/0.4.1/download"
+              ],
+              "strip_prefix": "heck-0.4.1",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.heck-0.4.1.bazel"
+            }
+          },
+          "cui__maplit-1.0.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__maplit-1.0.2",
+              "sha256": "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/maplit/1.0.2/download"
+              ],
+              "strip_prefix": "maplit-1.0.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.maplit-1.0.2.bazel"
+            }
+          },
+          "rrra__syn-2.0.25": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__syn-2.0.25",
+              "sha256": "15e3fc8c0c74267e2df136e5e5fb656a464158aa57624053375eb9c8c6e25ae2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/syn/2.0.25/download"
+              ],
+              "strip_prefix": "syn-2.0.25",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.syn-2.0.25.bazel"
+            }
+          },
+          "cui__digest-0.10.7": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__digest-0.10.7",
+              "sha256": "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/digest/0.10.7/download"
+              ],
+              "strip_prefix": "digest-0.10.7",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.digest-0.10.7.bazel"
+            }
+          },
+          "cui__gix-worktree-0.26.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-worktree-0.26.0",
+              "sha256": "9f5e32972801bd82d56609e6fc84efc358fa1f11f25c5e83b7807ee2280f14fe",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-worktree/0.26.0/download"
+              ],
+              "strip_prefix": "gix-worktree-0.26.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-worktree-0.26.0.bazel"
+            }
+          },
+          "cui__equivalent-1.0.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__equivalent-1.0.1",
+              "sha256": "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/equivalent/1.0.1/download"
+              ],
+              "strip_prefix": "equivalent-1.0.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.equivalent-1.0.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__semver-1.0.17": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__semver-1.0.17",
+              "sha256": "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/semver/1.0.17/download"
+              ],
+              "strip_prefix": "semver-1.0.17",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.semver-1.0.17.bazel"
+            }
+          },
+          "cui": {
+            "bzlFile": "@@rules_rust~0.40.0//crate_universe/private:crates_vendor.bzl",
+            "ruleClassName": "crates_vendor_remote_repository",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.bazel",
+              "defs_module": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:defs.bzl"
+            }
+          },
+          "rules_rust_wasm_bindgen__memchr-2.5.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__memchr-2.5.0",
+              "sha256": "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/memchr/2.5.0/download"
+              ],
+              "strip_prefix": "memchr-2.5.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.memchr-2.5.0.bazel"
+            }
+          },
+          "cui__once_cell-1.18.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__once_cell-1.18.0",
+              "sha256": "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/once_cell/1.18.0/download"
+              ],
+              "strip_prefix": "once_cell-1.18.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.once_cell-1.18.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wasmparser-0.80.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasmparser-0.80.2",
+              "sha256": "449167e2832691a1bff24cde28d2804e90e09586a448c8e76984792c44334a6b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasmparser/0.80.2/download"
+              ],
+              "strip_prefix": "wasmparser-0.80.2",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasmparser-0.80.2.bazel"
+            }
+          },
+          "rrra__once_cell-1.18.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__once_cell-1.18.0",
+              "sha256": "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/once_cell/1.18.0/download"
+              ],
+              "strip_prefix": "once_cell-1.18.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.once_cell-1.18.0.bazel"
+            }
+          },
+          "cui__heck-0.4.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__heck-0.4.1",
+              "sha256": "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/heck/0.4.1/download"
+              ],
+              "strip_prefix": "heck-0.4.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.heck-0.4.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__winapi-x86_64-pc-windows-gnu-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__winapi-x86_64-pc-windows-gnu-0.4.0",
+              "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download"
+              ],
+              "strip_prefix": "winapi-x86_64-pc-windows-gnu-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__is-terminal-0.4.7": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__is-terminal-0.4.7",
+              "sha256": "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/is-terminal/0.4.7/download"
+              ],
+              "strip_prefix": "is-terminal-0.4.7",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.is-terminal-0.4.7.bazel"
+            }
+          },
+          "cui__autocfg-1.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__autocfg-1.1.0",
+              "sha256": "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/autocfg/1.1.0/download"
+              ],
+              "strip_prefix": "autocfg-1.1.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.autocfg-1.1.0.bazel"
+            }
+          },
+          "rules_rust_prost__tokio-util-0.7.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__tokio-util-0.7.8",
+              "sha256": "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tokio-util/0.7.8/download"
+              ],
+              "strip_prefix": "tokio-util-0.7.8",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.tokio-util-0.7.8.bazel"
+            }
+          },
+          "libc": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~libc",
+              "build_file_content": "load(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\nrust_library(\n    name = \"libc\",\n    srcs = glob([\"src/**/*.rs\"]),\n    edition = \"2015\",\n    rustc_flags = [\n        # In most cases, warnings in 3rd party crates are not interesting as\n        # they're out of the control of consumers. The flag here silences\n        # warnings. For more details see:\n        # https://doc.rust-lang.org/rustc/lints/levels.html\n        \"--cap-lints=allow\",\n    ],\n    visibility = [\"//visibility:public\"],\n)\n",
+              "sha256": "1ac4c2ac6ed5a8fb9020c166bc63316205f1dc78d4b964ad31f4f21eb73f0c6d",
+              "strip_prefix": "libc-0.2.20",
+              "urls": [
+                "https://mirror.bazel.build/github.com/rust-lang/libc/archive/0.2.20.zip",
+                "https://github.com/rust-lang/libc/archive/0.2.20.zip"
+              ]
+            }
+          },
+          "rrra__either-1.8.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__either-1.8.1",
+              "sha256": "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/either/1.8.1/download"
+              ],
+              "strip_prefix": "either-1.8.1",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.either-1.8.1.bazel"
+            }
+          },
+          "rules_rust_bindgen__minimal-lexical-0.2.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__minimal-lexical-0.2.1",
+              "sha256": "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/minimal-lexical/0.2.1/download"
+              ],
+              "strip_prefix": "minimal-lexical-0.2.1",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.minimal-lexical-0.2.1.bazel"
+            }
+          },
+          "rules_rust_prost__tokio-io-timeout-1.2.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__tokio-io-timeout-1.2.0",
+              "sha256": "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tokio-io-timeout/1.2.0/download"
+              ],
+              "strip_prefix": "tokio-io-timeout-1.2.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.tokio-io-timeout-1.2.0.bazel"
+            }
+          },
+          "cui__num-traits-0.2.15": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__num-traits-0.2.15",
+              "sha256": "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/num-traits/0.2.15/download"
+              ],
+              "strip_prefix": "num-traits-0.2.15",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.num-traits-0.2.15.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__base64-0.13.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__base64-0.13.1",
+              "sha256": "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/base64/0.13.1/download"
+              ],
+              "strip_prefix": "base64-0.13.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.base64-0.13.1.bazel"
+            }
+          },
+          "rrra__regex-automata-0.3.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__regex-automata-0.3.3",
+              "sha256": "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/regex-automata/0.3.3/download"
+              ],
+              "strip_prefix": "regex-automata-0.3.3",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.regex-automata-0.3.3.bazel"
+            }
+          },
+          "cui__spdx-0.10.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__spdx-0.10.3",
+              "sha256": "62bde1398b09b9f93fc2fc9b9da86e362693e999d3a54a8ac47a99a5a73f638b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/spdx/0.10.3/download"
+              ],
+              "strip_prefix": "spdx-0.10.3",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.spdx-0.10.3.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__normalize-line-endings-0.3.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__normalize-line-endings-0.3.0",
+              "sha256": "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/normalize-line-endings/0.3.0/download"
+              ],
+              "strip_prefix": "normalize-line-endings-0.3.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.normalize-line-endings-0.3.0.bazel"
+            }
+          },
+          "rules_rust_prost__h2-0.3.19": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__h2-0.3.19",
+              "sha256": "d357c7ae988e7d2182f7d7871d0b963962420b0678b0997ce7de72001aeab782",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/h2/0.3.19/download"
+              ],
+              "strip_prefix": "h2-0.3.19",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.h2-0.3.19.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wasmparser-0.108.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasmparser-0.108.0",
+              "sha256": "76c956109dcb41436a39391139d9b6e2d0a5e0b158e1293ef352ec977e5e36c5",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasmparser/0.108.0/download"
+              ],
+              "strip_prefix": "wasmparser-0.108.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasmparser-0.108.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__colorchoice-1.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__colorchoice-1.0.0",
+              "sha256": "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/colorchoice/1.0.0/download"
+              ],
+              "strip_prefix": "colorchoice-1.0.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.colorchoice-1.0.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__humantime-2.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__humantime-2.1.0",
+              "sha256": "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/humantime/2.1.0/download"
+              ],
+              "strip_prefix": "humantime-2.1.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.humantime-2.1.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__rand_chacha-0.3.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__rand_chacha-0.3.1",
+              "sha256": "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rand_chacha/0.3.1/download"
+              ],
+              "strip_prefix": "rand_chacha-0.3.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.rand_chacha-0.3.1.bazel"
+            }
+          },
+          "rules_rust_bindgen__nom-7.1.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__nom-7.1.3",
+              "sha256": "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/nom/7.1.3/download"
+              ],
+              "strip_prefix": "nom-7.1.3",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.nom-7.1.3.bazel"
+            }
+          },
+          "cui__strsim-0.10.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__strsim-0.10.0",
+              "sha256": "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/strsim/0.10.0/download"
+              ],
+              "strip_prefix": "strsim-0.10.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.strsim-0.10.0.bazel"
+            }
+          },
+          "rules_rust_prost__windows_aarch64_gnullvm-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__windows_aarch64_gnullvm-0.48.0",
+              "sha256": "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_aarch64_gnullvm/0.48.0/download"
+              ],
+              "strip_prefix": "windows_aarch64_gnullvm-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.windows_aarch64_gnullvm-0.48.0.bazel"
+            }
+          },
+          "cui__cfg-if-1.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__cfg-if-1.0.0",
+              "sha256": "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cfg-if/1.0.0/download"
+              ],
+              "strip_prefix": "cfg-if-1.0.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.cfg-if-1.0.0.bazel"
+            }
+          },
+          "cui__errno-dragonfly-0.1.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__errno-dragonfly-0.1.2",
+              "sha256": "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/errno-dragonfly/0.1.2/download"
+              ],
+              "strip_prefix": "errno-dragonfly-0.1.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.errno-dragonfly-0.1.2.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__hashbrown-0.12.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__hashbrown-0.12.3",
+              "sha256": "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/hashbrown/0.12.3/download"
+              ],
+              "strip_prefix": "hashbrown-0.12.3",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.hashbrown-0.12.3.bazel"
+            }
+          },
+          "cui__clap-4.3.11": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__clap-4.3.11",
+              "sha256": "1640e5cc7fb47dbb8338fd471b105e7ed6c3cb2aeb00c2e067127ffd3764a05d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap/4.3.11/download"
+              ],
+              "strip_prefix": "clap-4.3.11",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.clap-4.3.11.bazel"
+            }
+          },
+          "rules_rust_bindgen__regex-syntax-0.7.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__regex-syntax-0.7.2",
+              "sha256": "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/regex-syntax/0.7.2/download"
+              ],
+              "strip_prefix": "regex-syntax-0.7.2",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.regex-syntax-0.7.2.bazel"
+            }
+          },
+          "rules_rust_bindgen__cexpr-0.6.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__cexpr-0.6.0",
+              "sha256": "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cexpr/0.6.0/download"
+              ],
+              "strip_prefix": "cexpr-0.6.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.cexpr-0.6.0.bazel"
+            }
+          },
+          "cui__proc-macro2-1.0.64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__proc-macro2-1.0.64",
+              "sha256": "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/proc-macro2/1.0.64/download"
+              ],
+              "strip_prefix": "proc-macro2-1.0.64",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.proc-macro2-1.0.64.bazel"
+            }
+          },
+          "cui__num-bigint-0.1.44": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__num-bigint-0.1.44",
+              "sha256": "e63899ad0da84ce718c14936262a41cee2c79c981fc0a0e7c7beb47d5a07e8c1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/num-bigint/0.1.44/download"
+              ],
+              "strip_prefix": "num-bigint-0.1.44",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.num-bigint-0.1.44.bazel"
+            }
+          },
+          "cui__gix-prompt-0.7.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-prompt-0.7.0",
+              "sha256": "5c9a913769516f5e9d937afac206fb76428e3d7238e538845842887fda584678",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-prompt/0.7.0/download"
+              ],
+              "strip_prefix": "gix-prompt-0.7.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-prompt-0.7.0.bazel"
+            }
+          },
+          "cui__nu-ansi-term-0.46.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__nu-ansi-term-0.46.0",
+              "sha256": "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/nu-ansi-term/0.46.0/download"
+              ],
+              "strip_prefix": "nu-ansi-term-0.46.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.nu-ansi-term-0.46.0.bazel"
+            }
+          },
+          "cui__lazy_static-1.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__lazy_static-1.4.0",
+              "sha256": "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/lazy_static/1.4.0/download"
+              ],
+              "strip_prefix": "lazy_static-1.4.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.lazy_static-1.4.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__serde_derive-1.0.171": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__serde_derive-1.0.171",
+              "sha256": "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/serde_derive/1.0.171/download"
+              ],
+              "strip_prefix": "serde_derive-1.0.171",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.serde_derive-1.0.171.bazel"
+            }
+          },
+          "rules_rust_bindgen__anstyle-1.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__anstyle-1.0.0",
+              "sha256": "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstyle/1.0.0/download"
+              ],
+              "strip_prefix": "anstyle-1.0.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.anstyle-1.0.0.bazel"
+            }
+          },
+          "cui__gix-packetline-0.16.7": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-packetline-0.16.7",
+              "sha256": "8a8384b1e964151aff0d5632dd9b191059d07dff358b96bd940f1b452600d7ab",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-packetline/0.16.7/download"
+              ],
+              "strip_prefix": "gix-packetline-0.16.7",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-packetline-0.16.7.bazel"
+            }
+          },
+          "cui__thiserror-impl-1.0.50": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__thiserror-impl-1.0.50",
+              "sha256": "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/thiserror-impl/1.0.50/download"
+              ],
+              "strip_prefix": "thiserror-impl-1.0.50",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.thiserror-impl-1.0.50.bazel"
+            }
+          },
+          "cui__time-core-0.1.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__time-core-0.1.2",
+              "sha256": "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/time-core/0.1.2/download"
+              ],
+              "strip_prefix": "time-core-0.1.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.time-core-0.1.2.bazel"
+            }
+          },
+          "rules_rust_prost__either-1.8.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__either-1.8.1",
+              "sha256": "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/either/1.8.1/download"
+              ],
+              "strip_prefix": "either-1.8.1",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.either-1.8.1.bazel"
+            }
+          },
+          "cui__itertools-0.12.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__itertools-0.12.0",
+              "sha256": "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/itertools/0.12.0/download"
+              ],
+              "strip_prefix": "itertools-0.12.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.itertools-0.12.0.bazel"
+            }
+          },
+          "cui__time-macros-0.2.15": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__time-macros-0.2.15",
+              "sha256": "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/time-macros/0.2.15/download"
+              ],
+              "strip_prefix": "time-macros-0.2.15",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.time-macros-0.2.15.bazel"
+            }
+          },
+          "rules_rust_prost__try-lock-0.2.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__try-lock-0.2.4",
+              "sha256": "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/try-lock/0.2.4/download"
+              ],
+              "strip_prefix": "try-lock-0.2.4",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.try-lock-0.2.4.bazel"
+            }
+          },
+          "cui__tera-1.19.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__tera-1.19.1",
+              "sha256": "970dff17c11e884a4a09bc76e3a17ef71e01bb13447a11e85226e254fe6d10b8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tera/1.19.1/download"
+              ],
+              "strip_prefix": "tera-1.19.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.tera-1.19.1.bazel"
+            }
+          },
+          "rules_rust_bindgen__bindgen-cli-0.69.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__bindgen-cli-0.69.1",
+              "integrity": "sha256-iFZe4JEQqZ54KZiX+/7VA7mqAwZThu6MGBl/yvIotQE=",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/bindgen-cli/0.69.1/download"
+              ],
+              "strip_prefix": "bindgen-cli-0.69.1",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty:BUILD.bindgen-cli.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__tempfile-3.6.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__tempfile-3.6.0",
+              "sha256": "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tempfile/3.6.0/download"
+              ],
+              "strip_prefix": "tempfile-3.6.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.tempfile-3.6.0.bazel"
+            }
+          },
+          "rules_rust_prost__axum-core-0.3.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__axum-core-0.3.4",
+              "sha256": "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/axum-core/0.3.4/download"
+              ],
+              "strip_prefix": "axum-core-0.3.4",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.axum-core-0.3.4.bazel"
+            }
+          },
+          "cui__thiserror-1.0.50": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__thiserror-1.0.50",
+              "sha256": "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/thiserror/1.0.50/download"
+              ],
+              "strip_prefix": "thiserror-1.0.50",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.thiserror-1.0.50.bazel"
+            }
+          },
+          "cui__globset-0.4.11": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__globset-0.4.11",
+              "sha256": "1391ab1f92ffcc08911957149833e682aa3fe252b9f45f966d2ef972274c97df",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/globset/0.4.11/download"
+              ],
+              "strip_prefix": "globset-0.4.11",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.globset-0.4.11.bazel"
+            }
+          },
+          "cui__colorchoice-1.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__colorchoice-1.0.0",
+              "sha256": "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/colorchoice/1.0.0/download"
+              ],
+              "strip_prefix": "colorchoice-1.0.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.colorchoice-1.0.0.bazel"
+            }
+          },
+          "rrra__windows-sys-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__windows-sys-0.48.0",
+              "sha256": "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows-sys/0.48.0/download"
+              ],
+              "strip_prefix": "windows-sys-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.windows-sys-0.48.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__linux-raw-sys-0.3.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__linux-raw-sys-0.3.8",
+              "sha256": "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/linux-raw-sys/0.3.8/download"
+              ],
+              "strip_prefix": "linux-raw-sys-0.3.8",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.linux-raw-sys-0.3.8.bazel"
+            }
+          },
+          "rules_rust_prost__libc-0.2.146": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__libc-0.2.146",
+              "sha256": "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/libc/0.2.146/download"
+              ],
+              "strip_prefix": "libc-0.2.146",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.libc-0.2.146.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__regex-automata-0.3.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__regex-automata-0.3.3",
+              "sha256": "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/regex-automata/0.3.3/download"
+              ],
+              "strip_prefix": "regex-automata-0.3.3",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.regex-automata-0.3.3.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wasm-bindgen-multi-value-xform-0.2.91": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasm-bindgen-multi-value-xform-0.2.91",
+              "sha256": "d1e019acde479e2f090fb7f14a51fa0077ec3a7bb12a56e0e888a82be7b5bd3f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen-multi-value-xform/0.2.91/download"
+              ],
+              "strip_prefix": "wasm-bindgen-multi-value-xform-0.2.91",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-multi-value-xform-0.2.91.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__itertools-0.10.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__itertools-0.10.5",
+              "sha256": "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/itertools/0.10.5/download"
+              ],
+              "strip_prefix": "itertools-0.10.5",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.itertools-0.10.5.bazel"
+            }
+          },
+          "cui__windows-sys-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__windows-sys-0.48.0",
+              "sha256": "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows-sys/0.48.0/download"
+              ],
+              "strip_prefix": "windows-sys-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.windows-sys-0.48.0.bazel"
+            }
+          },
+          "cui__typenum-1.16.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__typenum-1.16.0",
+              "sha256": "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/typenum/1.16.0/download"
+              ],
+              "strip_prefix": "typenum-1.16.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.typenum-1.16.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__rand-0.8.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__rand-0.8.5",
+              "sha256": "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rand/0.8.5/download"
+              ],
+              "strip_prefix": "rand-0.8.5",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.rand-0.8.5.bazel"
+            }
+          },
+          "cui__errno-0.3.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__errno-0.3.1",
+              "sha256": "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/errno/0.3.1/download"
+              ],
+              "strip_prefix": "errno-0.3.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.errno-0.3.1.bazel"
+            }
+          },
+          "cui__num-rational-0.1.42": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__num-rational-0.1.42",
+              "sha256": "ee314c74bd753fc86b4780aa9475da469155f3848473a261d2d18e35245a784e",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/num-rational/0.1.42/download"
+              ],
+              "strip_prefix": "num-rational-0.1.42",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.num-rational-0.1.42.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__rayon-1.7.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__rayon-1.7.0",
+              "sha256": "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rayon/1.7.0/download"
+              ],
+              "strip_prefix": "rayon-1.7.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.rayon-1.7.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__spin-0.9.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__spin-0.9.8",
+              "sha256": "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/spin/0.9.8/download"
+              ],
+              "strip_prefix": "spin-0.9.8",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.spin-0.9.8.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__difflib-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__difflib-0.4.0",
+              "sha256": "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/difflib/0.4.0/download"
+              ],
+              "strip_prefix": "difflib-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.difflib-0.4.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__num-traits-0.2.15": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__num-traits-0.2.15",
+              "sha256": "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/num-traits/0.2.15/download"
+              ],
+              "strip_prefix": "num-traits-0.2.15",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.num-traits-0.2.15.bazel"
+            }
+          },
+          "cui__sha2-0.10.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__sha2-0.10.8",
+              "sha256": "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/sha2/0.10.8/download"
+              ],
+              "strip_prefix": "sha2-0.10.8",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.sha2-0.10.8.bazel"
+            }
+          },
+          "cui__clru-0.6.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__clru-0.6.1",
+              "sha256": "b8191fa7302e03607ff0e237d4246cc043ff5b3cb9409d995172ba3bea16b807",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clru/0.6.1/download"
+              ],
+              "strip_prefix": "clru-0.6.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.clru-0.6.1.bazel"
+            }
+          },
+          "cui__rand-0.4.6": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__rand-0.4.6",
+              "sha256": "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rand/0.4.6/download"
+              ],
+              "strip_prefix": "rand-0.4.6",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.rand-0.4.6.bazel"
+            }
+          },
+          "rules_rust_prost__heck-0.4.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__heck-0.4.1",
+              "sha256": "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/heck/0.4.1/download"
+              ],
+              "strip_prefix": "heck-0.4.1",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.heck-0.4.1.bazel"
+            }
+          },
+          "cui__rand_chacha-0.3.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__rand_chacha-0.3.1",
+              "sha256": "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rand_chacha/0.3.1/download"
+              ],
+              "strip_prefix": "rand_chacha-0.3.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.rand_chacha-0.3.1.bazel"
+            }
+          },
+          "rrra__io-lifetimes-1.0.11": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__io-lifetimes-1.0.11",
+              "sha256": "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/io-lifetimes/1.0.11/download"
+              ],
+              "strip_prefix": "io-lifetimes-1.0.11",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.io-lifetimes-1.0.11.bazel"
+            }
+          },
+          "rrra__anstream-0.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__anstream-0.3.2",
+              "sha256": "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anstream/0.3.2/download"
+              ],
+              "strip_prefix": "anstream-0.3.2",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.anstream-0.3.2.bazel"
+            }
+          },
+          "cui__phf_shared-0.11.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__phf_shared-0.11.2",
+              "sha256": "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/phf_shared/0.11.2/download"
+              ],
+              "strip_prefix": "phf_shared-0.11.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.phf_shared-0.11.2.bazel"
+            }
+          },
+          "rrra__bitflags-1.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__bitflags-1.3.2",
+              "sha256": "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/bitflags/1.3.2/download"
+              ],
+              "strip_prefix": "bitflags-1.3.2",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.bitflags-1.3.2.bazel"
+            }
+          },
+          "cui__cargo-lock-9.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__cargo-lock-9.0.0",
+              "sha256": "e11c675378efb449ed3ce8de78d75d0d80542fc98487c26aba28eb3b82feac72",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cargo-lock/9.0.0/download"
+              ],
+              "strip_prefix": "cargo-lock-9.0.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.cargo-lock-9.0.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__winapi-util-0.1.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__winapi-util-0.1.5",
+              "sha256": "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-util/0.1.5/download"
+              ],
+              "strip_prefix": "winapi-util-0.1.5",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.winapi-util-0.1.5.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__buf_redux-0.8.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__buf_redux-0.8.4",
+              "sha256": "b953a6887648bb07a535631f2bc00fbdb2a2216f135552cb3f534ed136b9c07f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/buf_redux/0.8.4/download"
+              ],
+              "strip_prefix": "buf_redux-0.8.4",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.buf_redux-0.8.4.bazel"
+            }
+          },
+          "rules_rust_prost__redox_syscall-0.3.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__redox_syscall-0.3.5",
+              "sha256": "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/redox_syscall/0.3.5/download"
+              ],
+              "strip_prefix": "redox_syscall-0.3.5",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.redox_syscall-0.3.5.bazel"
+            }
+          },
+          "cui__faster-hex-0.8.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__faster-hex-0.8.1",
+              "sha256": "239f7bfb930f820ab16a9cd95afc26f88264cf6905c960b340a615384aa3338a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/faster-hex/0.8.1/download"
+              ],
+              "strip_prefix": "faster-hex-0.8.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.faster-hex-0.8.1.bazel"
+            }
+          },
+          "cui__gix-packetline-blocking-0.16.6": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-packetline-blocking-0.16.6",
+              "sha256": "7d8395f7501c84d6a1fe902035fdfd8cd86d89e2dd6be0200ec1a72fd3c92d39",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-packetline-blocking/0.16.6/download"
+              ],
+              "strip_prefix": "gix-packetline-blocking-0.16.6",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-packetline-blocking-0.16.6.bazel"
+            }
+          },
+          "cui__windows_aarch64_gnullvm-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__windows_aarch64_gnullvm-0.48.0",
+              "sha256": "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_aarch64_gnullvm/0.48.0/download"
+              ],
+              "strip_prefix": "windows_aarch64_gnullvm-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.windows_aarch64_gnullvm-0.48.0.bazel"
+            }
+          },
+          "rules_rust_prost__tracing-core-0.1.31": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__tracing-core-0.1.31",
+              "sha256": "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tracing-core/0.1.31/download"
+              ],
+              "strip_prefix": "tracing-core-0.1.31",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.tracing-core-0.1.31.bazel"
+            }
+          },
+          "rrra__env_logger-0.10.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__env_logger-0.10.0",
+              "sha256": "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/env_logger/0.10.0/download"
+              ],
+              "strip_prefix": "env_logger-0.10.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.env_logger-0.10.0.bazel"
+            }
+          },
+          "rules_rust_prost__hashbrown-0.12.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__hashbrown-0.12.3",
+              "sha256": "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/hashbrown/0.12.3/download"
+              ],
+              "strip_prefix": "hashbrown-0.12.3",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.hashbrown-0.12.3.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__aho-corasick-1.0.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__aho-corasick-1.0.2",
+              "sha256": "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/aho-corasick/1.0.2/download"
+              ],
+              "strip_prefix": "aho-corasick-1.0.2",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.aho-corasick-1.0.2.bazel"
+            }
+          },
+          "cui__crossbeam-0.8.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__crossbeam-0.8.2",
+              "sha256": "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/crossbeam/0.8.2/download"
+              ],
+              "strip_prefix": "crossbeam-0.8.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.crossbeam-0.8.2.bazel"
+            }
+          },
+          "rules_rust_prost__futures-channel-0.3.28": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__futures-channel-0.3.28",
+              "sha256": "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/futures-channel/0.3.28/download"
+              ],
+              "strip_prefix": "futures-channel-0.3.28",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.futures-channel-0.3.28.bazel"
+            }
+          },
+          "cui__time-0.3.30": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__time-0.3.30",
+              "sha256": "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/time/0.3.30/download"
+              ],
+              "strip_prefix": "time-0.3.30",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.time-0.3.30.bazel"
+            }
+          },
+          "rules_rust_prost__scopeguard-1.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__scopeguard-1.1.0",
+              "sha256": "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/scopeguard/1.1.0/download"
+              ],
+              "strip_prefix": "scopeguard-1.1.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.scopeguard-1.1.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__unicode-ident-1.0.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__unicode-ident-1.0.9",
+              "sha256": "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-ident/1.0.9/download"
+              ],
+              "strip_prefix": "unicode-ident-1.0.9",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.unicode-ident-1.0.9.bazel"
+            }
+          },
+          "rules_rust_prost__futures-util-0.3.28": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__futures-util-0.3.28",
+              "sha256": "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/futures-util/0.3.28/download"
+              ],
+              "strip_prefix": "futures-util-0.3.28",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.futures-util-0.3.28.bazel"
+            }
+          },
+          "rules_rust_prost__log-0.4.19": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__log-0.4.19",
+              "sha256": "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/log/0.4.19/download"
+              ],
+              "strip_prefix": "log-0.4.19",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.log-0.4.19.bazel"
+            }
+          },
+          "cui__ucd-trie-0.1.6": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__ucd-trie-0.1.6",
+              "sha256": "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/ucd-trie/0.1.6/download"
+              ],
+              "strip_prefix": "ucd-trie-0.1.6",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.ucd-trie-0.1.6.bazel"
+            }
+          },
+          "cui__gix-pack-0.43.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-pack-0.43.0",
+              "sha256": "7536203a45b31e1bc5694bbf90ba8da1b736c77040dd6a520db369f371eb1ab3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-pack/0.43.0/download"
+              ],
+              "strip_prefix": "gix-pack-0.43.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-pack-0.43.0.bazel"
+            }
+          },
+          "rules_rust_prost__serde-1.0.164": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__serde-1.0.164",
+              "sha256": "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/serde/1.0.164/download"
+              ],
+              "strip_prefix": "serde-1.0.164",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.serde-1.0.164.bazel"
+            }
+          },
+          "cui__crossbeam-utils-0.8.16": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__crossbeam-utils-0.8.16",
+              "sha256": "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/crossbeam-utils/0.8.16/download"
+              ],
+              "strip_prefix": "crossbeam-utils-0.8.16",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.crossbeam-utils-0.8.16.bazel"
+            }
+          },
+          "cui__unic-segment-0.9.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__unic-segment-0.9.0",
+              "sha256": "e4ed5d26be57f84f176157270c112ef57b86debac9cd21daaabbe56db0f88f23",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unic-segment/0.9.0/download"
+              ],
+              "strip_prefix": "unic-segment-0.9.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.unic-segment-0.9.0.bazel"
+            }
+          },
+          "cui__regex-automata-0.4.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__regex-automata-0.4.3",
+              "sha256": "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/regex-automata/0.4.3/download"
+              ],
+              "strip_prefix": "regex-automata-0.4.3",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.regex-automata-0.4.3.bazel"
+            }
+          },
+          "rules_rust_prost__prettyplease-0.1.25": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__prettyplease-0.1.25",
+              "sha256": "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/prettyplease/0.1.25/download"
+              ],
+              "strip_prefix": "prettyplease-0.1.25",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.prettyplease-0.1.25.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__filetime-0.2.21": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__filetime-0.2.21",
+              "sha256": "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/filetime/0.2.21/download"
+              ],
+              "strip_prefix": "filetime-0.2.21",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.filetime-0.2.21.bazel"
+            }
+          },
+          "cui__toml-0.7.6": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__toml-0.7.6",
+              "sha256": "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/toml/0.7.6/download"
+              ],
+              "strip_prefix": "toml-0.7.6",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.toml-0.7.6.bazel"
+            }
+          },
+          "rules_rust_prost__tempfile-3.6.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__tempfile-3.6.0",
+              "sha256": "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tempfile/3.6.0/download"
+              ],
+              "strip_prefix": "tempfile-3.6.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.tempfile-3.6.0.bazel"
+            }
+          },
+          "rules_rust_prost__tokio-stream-0.1.14": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__tokio-stream-0.1.14",
+              "sha256": "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tokio-stream/0.1.14/download"
+              ],
+              "strip_prefix": "tokio-stream-0.1.14",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.tokio-stream-0.1.14.bazel"
+            }
+          },
+          "rules_rust_prost__windows-targets-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__windows-targets-0.48.0",
+              "sha256": "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows-targets/0.48.0/download"
+              ],
+              "strip_prefix": "windows-targets-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.windows-targets-0.48.0.bazel"
+            }
+          },
+          "cui__unic-ucd-segment-0.9.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__unic-ucd-segment-0.9.0",
+              "sha256": "2079c122a62205b421f499da10f3ee0f7697f012f55b675e002483c73ea34700",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unic-ucd-segment/0.9.0/download"
+              ],
+              "strip_prefix": "unic-ucd-segment-0.9.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.unic-ucd-segment-0.9.0.bazel"
+            }
+          },
+          "rules_rust_prost__petgraph-0.6.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__petgraph-0.6.3",
+              "sha256": "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/petgraph/0.6.3/download"
+              ],
+              "strip_prefix": "petgraph-0.6.3",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.petgraph-0.6.3.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__android-tzdata-0.1.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__android-tzdata-0.1.1",
+              "sha256": "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/android-tzdata/0.1.1/download"
+              ],
+              "strip_prefix": "android-tzdata-0.1.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.android-tzdata-0.1.1.bazel"
+            }
+          },
+          "generated_inputs_in_external_repo": {
+            "bzlFile": "@@rules_rust~0.40.0//test/generated_inputs:external_repo.bzl",
+            "ruleClassName": "_generated_inputs_in_external_repo",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~generated_inputs_in_external_repo"
+            }
+          },
+          "cui__gix-submodule-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-submodule-0.4.0",
+              "sha256": "dd0150e82e9282d3f2ab2dd57a22f9f6c3447b9d9856e5321ac92d38e3e0e2b7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-submodule/0.4.0/download"
+              ],
+              "strip_prefix": "gix-submodule-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-submodule-0.4.0.bazel"
+            }
+          },
+          "cui__serde_spanned-0.6.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__serde_spanned-0.6.5",
+              "sha256": "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/serde_spanned/0.6.5/download"
+              ],
+              "strip_prefix": "serde_spanned-0.6.5",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.serde_spanned-0.6.5.bazel"
+            }
+          },
+          "cui__gix-revwalk-0.8.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-revwalk-0.8.0",
+              "sha256": "e9870c6b1032f2084567710c3b2106ac603377f8d25766b8a6b7c33e6e3ca279",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-revwalk/0.8.0/download"
+              ],
+              "strip_prefix": "gix-revwalk-0.8.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-revwalk-0.8.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__windows-targets-0.48.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__windows-targets-0.48.1",
+              "sha256": "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows-targets/0.48.1/download"
+              ],
+              "strip_prefix": "windows-targets-0.48.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.windows-targets-0.48.1.bazel"
+            }
+          },
+          "rules_rust_prost__syn-1.0.109": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__syn-1.0.109",
+              "sha256": "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/syn/1.0.109/download"
+              ],
+              "strip_prefix": "syn-1.0.109",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.syn-1.0.109.bazel"
+            }
+          },
+          "rules_rust_prost__mime-0.3.17": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__mime-0.3.17",
+              "sha256": "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/mime/0.3.17/download"
+              ],
+              "strip_prefix": "mime-0.3.17",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.mime-0.3.17.bazel"
+            }
+          },
+          "cui__gix-quote-0.4.7": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-quote-0.4.7",
+              "sha256": "475c86a97dd0127ba4465fbb239abac9ea10e68301470c9791a6dd5351cdc905",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-quote/0.4.7/download"
+              ],
+              "strip_prefix": "gix-quote-0.4.7",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-quote-0.4.7.bazel"
+            }
+          },
+          "rrra__linux-raw-sys-0.3.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__linux-raw-sys-0.3.8",
+              "sha256": "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/linux-raw-sys/0.3.8/download"
+              ],
+              "strip_prefix": "linux-raw-sys-0.3.8",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.linux-raw-sys-0.3.8.bazel"
+            }
+          },
+          "cui__memmap2-0.7.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__memmap2-0.7.1",
+              "sha256": "f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/memmap2/0.7.1/download"
+              ],
+              "strip_prefix": "memmap2-0.7.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.memmap2-0.7.1.bazel"
+            }
+          },
+          "cui__percent-encoding-2.3.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__percent-encoding-2.3.0",
+              "sha256": "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/percent-encoding/2.3.0/download"
+              ],
+              "strip_prefix": "percent-encoding-2.3.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.percent-encoding-2.3.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__hashbrown-0.14.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__hashbrown-0.14.0",
+              "sha256": "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/hashbrown/0.14.0/download"
+              ],
+              "strip_prefix": "hashbrown-0.14.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.hashbrown-0.14.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__equivalent-1.0.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__equivalent-1.0.1",
+              "sha256": "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/equivalent/1.0.1/download"
+              ],
+              "strip_prefix": "equivalent-1.0.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.equivalent-1.0.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__fallible-iterator-0.2.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__fallible-iterator-0.2.0",
+              "sha256": "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/fallible-iterator/0.2.0/download"
+              ],
+              "strip_prefix": "fallible-iterator-0.2.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.fallible-iterator-0.2.0.bazel"
+            }
+          },
+          "cui__toml_datetime-0.6.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__toml_datetime-0.6.5",
+              "sha256": "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/toml_datetime/0.6.5/download"
+              ],
+              "strip_prefix": "toml_datetime-0.6.5",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.toml_datetime-0.6.5.bazel"
+            }
+          },
+          "cui__pest_derive-2.7.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__pest_derive-2.7.0",
+              "sha256": "aef623c9bbfa0eedf5a0efba11a5ee83209c326653ca31ff019bec3a95bfff2b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/pest_derive/2.7.0/download"
+              ],
+              "strip_prefix": "pest_derive-2.7.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.pest_derive-2.7.0.bazel"
+            }
+          },
+          "rules_rust_prost__once_cell-1.18.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__once_cell-1.18.0",
+              "sha256": "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/once_cell/1.18.0/download"
+              ],
+              "strip_prefix": "once_cell-1.18.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.once_cell-1.18.0.bazel"
+            }
+          },
+          "cui__tinyvec-1.6.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__tinyvec-1.6.0",
+              "sha256": "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tinyvec/1.6.0/download"
+              ],
+              "strip_prefix": "tinyvec-1.6.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.tinyvec-1.6.0.bazel"
+            }
+          },
+          "cui__btoi-0.4.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__btoi-0.4.3",
+              "sha256": "9dd6407f73a9b8b6162d8a2ef999fe6afd7cc15902ebf42c5cd296addf17e0ad",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/btoi/0.4.3/download"
+              ],
+              "strip_prefix": "btoi-0.4.3",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.btoi-0.4.3.bazel"
+            }
+          },
+          "rules_rust_prost__ppv-lite86-0.2.17": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__ppv-lite86-0.2.17",
+              "sha256": "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/ppv-lite86/0.2.17/download"
+              ],
+              "strip_prefix": "ppv-lite86-0.2.17",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.ppv-lite86-0.2.17.bazel"
+            }
+          },
+          "rules_rust_prost__winapi-0.3.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__winapi-0.3.9",
+              "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi/0.3.9/download"
+              ],
+              "strip_prefix": "winapi-0.3.9",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.winapi-0.3.9.bazel"
+            }
+          },
+          "cui__hermit-abi-0.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__hermit-abi-0.3.2",
+              "sha256": "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/hermit-abi/0.3.2/download"
+              ],
+              "strip_prefix": "hermit-abi-0.3.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.hermit-abi-0.3.2.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__regex-syntax-0.7.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__regex-syntax-0.7.4",
+              "sha256": "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/regex-syntax/0.7.4/download"
+              ],
+              "strip_prefix": "regex-syntax-0.7.4",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.regex-syntax-0.7.4.bazel"
+            }
+          },
+          "rules_rust_bindgen__errno-dragonfly-0.1.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__errno-dragonfly-0.1.2",
+              "sha256": "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/errno-dragonfly/0.1.2/download"
+              ],
+              "strip_prefix": "errno-dragonfly-0.1.2",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.errno-dragonfly-0.1.2.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__miniz_oxide-0.7.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__miniz_oxide-0.7.1",
+              "sha256": "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/miniz_oxide/0.7.1/download"
+              ],
+              "strip_prefix": "miniz_oxide-0.7.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.miniz_oxide-0.7.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__winapi-util-0.1.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__winapi-util-0.1.5",
+              "sha256": "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-util/0.1.5/download"
+              ],
+              "strip_prefix": "winapi-util-0.1.5",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.winapi-util-0.1.5.bazel"
+            }
+          },
+          "rules_rust_bindgen__windows_x86_64_gnullvm-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__windows_x86_64_gnullvm-0.48.0",
+              "sha256": "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_x86_64_gnullvm/0.48.0/download"
+              ],
+              "strip_prefix": "windows_x86_64_gnullvm-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.windows_x86_64_gnullvm-0.48.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__syn-2.0.18": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__syn-2.0.18",
+              "sha256": "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/syn/2.0.18/download"
+              ],
+              "strip_prefix": "syn-2.0.18",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.syn-2.0.18.bazel"
+            }
+          },
+          "rules_rust_bindgen__yansi-term-0.1.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__yansi-term-0.1.2",
+              "sha256": "fe5c30ade05e61656247b2e334a031dfd0cc466fadef865bdcdea8d537951bf1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/yansi-term/0.1.2/download"
+              ],
+              "strip_prefix": "yansi-term-0.1.2",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.yansi-term-0.1.2.bazel"
+            }
+          },
+          "cui__toml_edit-0.22.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__toml_edit-0.22.4",
+              "sha256": "0c9ffdf896f8daaabf9b66ba8e77ea1ed5ed0f72821b398aba62352e95062951",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/toml_edit/0.22.4/download"
+              ],
+              "strip_prefix": "toml_edit-0.22.4",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.toml_edit-0.22.4.bazel"
+            }
+          },
+          "cui__gix-utils-0.1.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-utils-0.1.5",
+              "sha256": "b85d89dc728613e26e0ed952a19583744e7f5240fcd4aa30d6c824ffd8b52f0f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-utils/0.1.5/download"
+              ],
+              "strip_prefix": "gix-utils-0.1.5",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-utils-0.1.5.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__unicase-2.6.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__unicase-2.6.0",
+              "sha256": "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicase/2.6.0/download"
+              ],
+              "strip_prefix": "unicase-2.6.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.unicase-2.6.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__windows_aarch64_msvc-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__windows_aarch64_msvc-0.48.0",
+              "sha256": "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_aarch64_msvc/0.48.0/download"
+              ],
+              "strip_prefix": "windows_aarch64_msvc-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.windows_aarch64_msvc-0.48.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__cc-1.0.79": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__cc-1.0.79",
+              "sha256": "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cc/1.0.79/download"
+              ],
+              "strip_prefix": "cc-1.0.79",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.cc-1.0.79.bazel"
+            }
+          },
+          "rrra__unicode-ident-1.0.10": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__unicode-ident-1.0.10",
+              "sha256": "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-ident/1.0.10/download"
+              ],
+              "strip_prefix": "unicode-ident-1.0.10",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.unicode-ident-1.0.10.bazel"
+            }
+          },
+          "cui__block-buffer-0.10.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__block-buffer-0.10.4",
+              "sha256": "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/block-buffer/0.10.4/download"
+              ],
+              "strip_prefix": "block-buffer-0.10.4",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.block-buffer-0.10.4.bazel"
+            }
+          },
+          "cui__clap_lex-0.5.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__clap_lex-0.5.0",
+              "sha256": "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/clap_lex/0.5.0/download"
+              ],
+              "strip_prefix": "clap_lex-0.5.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.clap_lex-0.5.0.bazel"
+            }
+          },
+          "cui__indexmap-2.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__indexmap-2.1.0",
+              "sha256": "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/indexmap/2.1.0/download"
+              ],
+              "strip_prefix": "indexmap-2.1.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.indexmap-2.1.0.bazel"
+            }
+          },
+          "cui__hex-0.4.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__hex-0.4.3",
+              "sha256": "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/hex/0.4.3/download"
+              ],
+              "strip_prefix": "hex-0.4.3",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.hex-0.4.3.bazel"
+            }
+          },
+          "rules_rust_prost__quote-1.0.28": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__quote-1.0.28",
+              "sha256": "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/quote/1.0.28/download"
+              ],
+              "strip_prefix": "quote-1.0.28",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.quote-1.0.28.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__windows-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__windows-0.48.0",
+              "sha256": "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows/0.48.0/download"
+              ],
+              "strip_prefix": "windows-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.windows-0.48.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__unicode-normalization-0.1.22": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__unicode-normalization-0.1.22",
+              "sha256": "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-normalization/0.1.22/download"
+              ],
+              "strip_prefix": "unicode-normalization-0.1.22",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.unicode-normalization-0.1.22.bazel"
+            }
+          },
+          "cui__chrono-tz-build-0.2.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__chrono-tz-build-0.2.1",
+              "sha256": "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/chrono-tz-build/0.2.1/download"
+              ],
+              "strip_prefix": "chrono-tz-build-0.2.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.chrono-tz-build-0.2.1.bazel"
+            }
+          },
+          "cui__gix-bitmap-0.2.7": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-bitmap-0.2.7",
+              "sha256": "0ccab4bc576844ddb51b78d81b4a42d73e6229660fa614dfc3d3999c874d1959",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-bitmap/0.2.7/download"
+              ],
+              "strip_prefix": "gix-bitmap-0.2.7",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-bitmap-0.2.7.bazel"
+            }
+          },
+          "cargo_bazel.buildifier-linux-arm64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_file",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cargo_bazel.buildifier-linux-arm64",
+              "urls": [
+                "https://github.com/bazelbuild/buildtools/releases/download/5.0.1/buildifier-linux-arm64"
+              ],
+              "sha256": "c657c628fca72b7e0446f1a542231722a10ba4321597bd6f6249a5da6060b6ff",
+              "downloaded_file_path": "buildifier.exe",
+              "executable": true
+            }
+          },
+          "rules_rust_wasm_bindgen__anyhow-1.0.71": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__anyhow-1.0.71",
+              "sha256": "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anyhow/1.0.71/download"
+              ],
+              "strip_prefix": "anyhow-1.0.71",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.anyhow-1.0.71.bazel"
+            }
+          },
+          "rules_rust_bindgen__memchr-2.5.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__memchr-2.5.0",
+              "sha256": "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/memchr/2.5.0/download"
+              ],
+              "strip_prefix": "memchr-2.5.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.memchr-2.5.0.bazel"
+            }
+          },
+          "cui__gix-pathspec-0.3.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-pathspec-0.3.0",
+              "sha256": "c3e26c9b47c51be73f98d38c84494bd5fb99334c5d6fda14ef5d036d50a9e5fd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-pathspec/0.3.0/download"
+              ],
+              "strip_prefix": "gix-pathspec-0.3.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-pathspec-0.3.0.bazel"
+            }
+          },
+          "rrra__libc-0.2.147": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__libc-0.2.147",
+              "sha256": "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/libc/0.2.147/download"
+              ],
+              "strip_prefix": "libc-0.2.147",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.libc-0.2.147.bazel"
+            }
+          },
+          "rules_rust_prost__parking_lot_core-0.9.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__parking_lot_core-0.9.8",
+              "sha256": "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/parking_lot_core/0.9.8/download"
+              ],
+              "strip_prefix": "parking_lot_core-0.9.8",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.parking_lot_core-0.9.8.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__base64-0.21.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__base64-0.21.5",
+              "sha256": "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/base64/0.21.5/download"
+              ],
+              "strip_prefix": "base64-0.21.5",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.base64-0.21.5.bazel"
+            }
+          },
+          "cui__tracing-attributes-0.1.27": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__tracing-attributes-0.1.27",
+              "sha256": "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tracing-attributes/0.1.27/download"
+              ],
+              "strip_prefix": "tracing-attributes-0.1.27",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.tracing-attributes-0.1.27.bazel"
+            }
+          },
+          "cui__iana-time-zone-0.1.57": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__iana-time-zone-0.1.57",
+              "sha256": "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/iana-time-zone/0.1.57/download"
+              ],
+              "strip_prefix": "iana-time-zone-0.1.57",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.iana-time-zone-0.1.57.bazel"
+            }
+          },
+          "cui__toml_edit-0.19.13": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__toml_edit-0.19.13",
+              "sha256": "5f8751d9c1b03c6500c387e96f81f815a4f8e72d142d2d4a9ffa6fedd51ddee7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/toml_edit/0.19.13/download"
+              ],
+              "strip_prefix": "toml_edit-0.19.13",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.toml_edit-0.19.13.bazel"
+            }
+          },
+          "rules_rust_prost__matchit-0.7.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__matchit-0.7.0",
+              "sha256": "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/matchit/0.7.0/download"
+              ],
+              "strip_prefix": "matchit-0.7.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.matchit-0.7.0.bazel"
+            }
+          },
+          "rules_rust_test_load_arbitrary_tool": {
+            "bzlFile": "@@rules_rust~0.40.0//test/load_arbitrary_tool:load_arbitrary_tool_test.bzl",
+            "ruleClassName": "_load_arbitrary_tool_test",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_test_load_arbitrary_tool"
+            }
+          },
+          "rules_rust_prost__tokio-1.28.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__tokio-1.28.2",
+              "sha256": "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tokio/1.28.2/download"
+              ],
+              "strip_prefix": "tokio-1.28.2",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.tokio-1.28.2.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__chunked_transfer-1.4.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__chunked_transfer-1.4.1",
+              "sha256": "cca491388666e04d7248af3f60f0c40cfb0991c72205595d7c396e3510207d1a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/chunked_transfer/1.4.1/download"
+              ],
+              "strip_prefix": "chunked_transfer-1.4.1",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.chunked_transfer-1.4.1.bazel"
+            }
+          },
+          "cui__gix-chunk-0.4.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-chunk-0.4.4",
+              "sha256": "5b42ea64420f7994000130328f3c7a2038f639120518870436d31b8bde704493",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-chunk/0.4.4/download"
+              ],
+              "strip_prefix": "gix-chunk-0.4.4",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-chunk-0.4.4.bazel"
+            }
+          },
+          "rules_rust_prost__sync_wrapper-0.1.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__sync_wrapper-0.1.2",
+              "sha256": "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/sync_wrapper/0.1.2/download"
+              ],
+              "strip_prefix": "sync_wrapper-0.1.2",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.sync_wrapper-0.1.2.bazel"
+            }
+          },
+          "cui__idna-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__idna-0.4.0",
+              "sha256": "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/idna/0.4.0/download"
+              ],
+              "strip_prefix": "idna-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.idna-0.4.0.bazel"
+            }
+          },
+          "cui__tinyvec_macros-0.1.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__tinyvec_macros-0.1.1",
+              "sha256": "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tinyvec_macros/0.1.1/download"
+              ],
+              "strip_prefix": "tinyvec_macros-0.1.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.tinyvec_macros-0.1.1.bazel"
+            }
+          },
+          "cui__wasm-bindgen-macro-support-0.2.87": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__wasm-bindgen-macro-support-0.2.87",
+              "sha256": "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen-macro-support/0.2.87/download"
+              ],
+              "strip_prefix": "wasm-bindgen-macro-support-0.2.87",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.wasm-bindgen-macro-support-0.2.87.bazel"
+            }
+          },
+          "rrra__windows_i686_gnu-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__windows_i686_gnu-0.48.0",
+              "sha256": "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_i686_gnu/0.48.0/download"
+              ],
+              "strip_prefix": "windows_i686_gnu-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.windows_i686_gnu-0.48.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__errno-dragonfly-0.1.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__errno-dragonfly-0.1.2",
+              "sha256": "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/errno-dragonfly/0.1.2/download"
+              ],
+              "strip_prefix": "errno-dragonfly-0.1.2",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.errno-dragonfly-0.1.2.bazel"
+            }
+          },
+          "rules_rust_prost__hyper-timeout-0.4.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__hyper-timeout-0.4.1",
+              "sha256": "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/hyper-timeout/0.4.1/download"
+              ],
+              "strip_prefix": "hyper-timeout-0.4.1",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.hyper-timeout-0.4.1.bazel"
+            }
+          },
+          "rules_rust_bindgen__rustc-hash-1.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__rustc-hash-1.1.0",
+              "sha256": "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rustc-hash/1.1.0/download"
+              ],
+              "strip_prefix": "rustc-hash-1.1.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.rustc-hash-1.1.0.bazel"
+            }
+          },
+          "cui__unic-char-property-0.9.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__unic-char-property-0.9.0",
+              "sha256": "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unic-char-property/0.9.0/download"
+              ],
+              "strip_prefix": "unic-char-property-0.9.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.unic-char-property-0.9.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__sha1_smol-1.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__sha1_smol-1.0.0",
+              "sha256": "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/sha1_smol/1.0.0/download"
+              ],
+              "strip_prefix": "sha1_smol-1.0.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.sha1_smol-1.0.0.bazel"
+            }
+          },
+          "rules_rust_prost__http-0.2.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__http-0.2.9",
+              "sha256": "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/http/0.2.9/download"
+              ],
+              "strip_prefix": "http-0.2.9",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.http-0.2.9.bazel"
+            }
+          },
+          "cui__crossbeam-epoch-0.9.15": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__crossbeam-epoch-0.9.15",
+              "sha256": "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/crossbeam-epoch/0.9.15/download"
+              ],
+              "strip_prefix": "crossbeam-epoch-0.9.15",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.crossbeam-epoch-0.9.15.bazel"
+            }
+          },
+          "cui__siphasher-0.3.10": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__siphasher-0.3.10",
+              "sha256": "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/siphasher/0.3.10/download"
+              ],
+              "strip_prefix": "siphasher-0.3.10",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.siphasher-0.3.10.bazel"
+            }
+          },
+          "cui__tracing-0.1.40": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__tracing-0.1.40",
+              "sha256": "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tracing/0.1.40/download"
+              ],
+              "strip_prefix": "tracing-0.1.40",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.tracing-0.1.40.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__syn-2.0.25": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__syn-2.0.25",
+              "sha256": "15e3fc8c0c74267e2df136e5e5fb656a464158aa57624053375eb9c8c6e25ae2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/syn/2.0.25/download"
+              ],
+              "strip_prefix": "syn-2.0.25",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.syn-2.0.25.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__version_check-0.9.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__version_check-0.9.4",
+              "sha256": "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/version_check/0.9.4/download"
+              ],
+              "strip_prefix": "version_check-0.9.4",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.version_check-0.9.4.bazel"
+            }
+          },
+          "cui__gix-config-value-0.14.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-config-value-0.14.0",
+              "sha256": "ea7505b97f4d8e7933e29735a568ba2f86d8de466669d9f0e8321384f9972f47",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-config-value/0.14.0/download"
+              ],
+              "strip_prefix": "gix-config-value-0.14.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-config-value-0.14.0.bazel"
+            }
+          },
+          "rrra__is-terminal-0.4.7": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__is-terminal-0.4.7",
+              "sha256": "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/is-terminal/0.4.7/download"
+              ],
+              "strip_prefix": "is-terminal-0.4.7",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.is-terminal-0.4.7.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__chrono-0.4.26": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__chrono-0.4.26",
+              "sha256": "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/chrono/0.4.26/download"
+              ],
+              "strip_prefix": "chrono-0.4.26",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.chrono-0.4.26.bazel"
+            }
+          },
+          "rrra__errno-dragonfly-0.1.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__errno-dragonfly-0.1.2",
+              "sha256": "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/errno-dragonfly/0.1.2/download"
+              ],
+              "strip_prefix": "errno-dragonfly-0.1.2",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.errno-dragonfly-0.1.2.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__instant-0.1.12": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__instant-0.1.12",
+              "sha256": "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/instant/0.1.12/download"
+              ],
+              "strip_prefix": "instant-0.1.12",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.instant-0.1.12.bazel"
+            }
+          },
+          "cui__same-file-1.0.6": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__same-file-1.0.6",
+              "sha256": "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/same-file/1.0.6/download"
+              ],
+              "strip_prefix": "same-file-1.0.6",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.same-file-1.0.6.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__regex-automata-0.1.10": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__regex-automata-0.1.10",
+              "sha256": "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/regex-automata/0.1.10/download"
+              ],
+              "strip_prefix": "regex-automata-0.1.10",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.regex-automata-0.1.10.bazel"
+            }
+          },
+          "cui__linux-raw-sys-0.3.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__linux-raw-sys-0.3.8",
+              "sha256": "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/linux-raw-sys/0.3.8/download"
+              ],
+              "strip_prefix": "linux-raw-sys-0.3.8",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.linux-raw-sys-0.3.8.bazel"
+            }
+          },
+          "rules_rust_bindgen__termcolor-1.2.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__termcolor-1.2.0",
+              "sha256": "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/termcolor/1.2.0/download"
+              ],
+              "strip_prefix": "termcolor-1.2.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.termcolor-1.2.0.bazel"
+            }
+          },
+          "rrra__hermit-abi-0.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__hermit-abi-0.3.2",
+              "sha256": "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/hermit-abi/0.3.2/download"
+              ],
+              "strip_prefix": "hermit-abi-0.3.2",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.hermit-abi-0.3.2.bazel"
+            }
+          },
+          "rules_rust_bindgen__strsim-0.10.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__strsim-0.10.0",
+              "sha256": "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/strsim/0.10.0/download"
+              ],
+              "strip_prefix": "strsim-0.10.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.strsim-0.10.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__rand_core-0.6.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__rand_core-0.6.4",
+              "sha256": "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rand_core/0.6.4/download"
+              ],
+              "strip_prefix": "rand_core-0.6.4",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.rand_core-0.6.4.bazel"
+            }
+          },
+          "cui__crossbeam-channel-0.5.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__crossbeam-channel-0.5.8",
+              "sha256": "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/crossbeam-channel/0.5.8/download"
+              ],
+              "strip_prefix": "crossbeam-channel-0.5.8",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.crossbeam-channel-0.5.8.bazel"
+            }
+          },
+          "cui__arrayvec-0.7.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__arrayvec-0.7.4",
+              "sha256": "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/arrayvec/0.7.4/download"
+              ],
+              "strip_prefix": "arrayvec-0.7.4",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.arrayvec-0.7.4.bazel"
+            }
+          },
+          "cui__cc-1.0.79": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__cc-1.0.79",
+              "sha256": "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cc/1.0.79/download"
+              ],
+              "strip_prefix": "cc-1.0.79",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.cc-1.0.79.bazel"
+            }
+          },
+          "rules_rust_prost__rand-0.8.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__rand-0.8.5",
+              "sha256": "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rand/0.8.5/download"
+              ],
+              "strip_prefix": "rand-0.8.5",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.rand-0.8.5.bazel"
+            }
+          },
+          "cui__gix-validate-0.8.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-validate-0.8.0",
+              "sha256": "e05cab2b03a45b866156e052aa38619f4ece4adcb2f79978bfc249bc3b21b8c5",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-validate/0.8.0/download"
+              ],
+              "strip_prefix": "gix-validate-0.8.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-validate-0.8.0.bazel"
+            }
+          },
+          "rules_rust_prost__anyhow-1.0.71": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__anyhow-1.0.71",
+              "sha256": "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anyhow/1.0.71/download"
+              ],
+              "strip_prefix": "anyhow-1.0.71",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.anyhow-1.0.71.bazel"
+            }
+          },
+          "rules_rust_prost__errno-0.3.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__errno-0.3.1",
+              "sha256": "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/errno/0.3.1/download"
+              ],
+              "strip_prefix": "errno-0.3.1",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.errno-0.3.1.bazel"
+            }
+          },
+          "cui__is-terminal-0.4.7": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__is-terminal-0.4.7",
+              "sha256": "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/is-terminal/0.4.7/download"
+              ],
+              "strip_prefix": "is-terminal-0.4.7",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.is-terminal-0.4.7.bazel"
+            }
+          },
+          "cui__unicode-width-0.1.10": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__unicode-width-0.1.10",
+              "sha256": "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-width/0.1.10/download"
+              ],
+              "strip_prefix": "unicode-width-0.1.10",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.unicode-width-0.1.10.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__js-sys-0.3.64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__js-sys-0.3.64",
+              "sha256": "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/js-sys/0.3.64/download"
+              ],
+              "strip_prefix": "js-sys-0.3.64",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.js-sys-0.3.64.bazel"
+            }
+          },
+          "rrra__humantime-2.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__humantime-2.1.0",
+              "sha256": "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/humantime/2.1.0/download"
+              ],
+              "strip_prefix": "humantime-2.1.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.humantime-2.1.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__libc-0.2.150": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__libc-0.2.150",
+              "sha256": "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/libc/0.2.150/download"
+              ],
+              "strip_prefix": "libc-0.2.150",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.libc-0.2.150.bazel"
+            }
+          },
+          "rules_rust_bindgen__env_logger-0.10.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__env_logger-0.10.0",
+              "sha256": "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/env_logger/0.10.0/download"
+              ],
+              "strip_prefix": "env_logger-0.10.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.env_logger-0.10.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__time-0.3.23": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__time-0.3.23",
+              "sha256": "59e399c068f43a5d116fedaf73b203fa4f9c519f17e2b34f63221d3792f81446",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/time/0.3.23/download"
+              ],
+              "strip_prefix": "time-0.3.23",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.time-0.3.23.bazel"
+            }
+          },
+          "cui__toml-0.8.10": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__toml-0.8.10",
+              "sha256": "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/toml/0.8.10/download"
+              ],
+              "strip_prefix": "toml-0.8.10",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.toml-0.8.10.bazel"
+            }
+          },
+          "rules_rust_prost__tracing-attributes-0.1.26": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__tracing-attributes-0.1.26",
+              "sha256": "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tracing-attributes/0.1.26/download"
+              ],
+              "strip_prefix": "tracing-attributes-0.1.26",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.tracing-attributes-0.1.26.bazel"
+            }
+          },
+          "rules_rust_prost__instant-0.1.12": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__instant-0.1.12",
+              "sha256": "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/instant/0.1.12/download"
+              ],
+              "strip_prefix": "instant-0.1.12",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.instant-0.1.12.bazel"
+            }
+          },
+          "cui__gix-transport-0.37.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-transport-0.37.0",
+              "sha256": "b9ec726e6a245e68ace59a34126a1d679de60360676612985e70b0d3b102fb4e",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-transport/0.37.0/download"
+              ],
+              "strip_prefix": "gix-transport-0.37.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-transport-0.37.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__indexmap-2.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__indexmap-2.0.0",
+              "sha256": "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/indexmap/2.0.0/download"
+              ],
+              "strip_prefix": "indexmap-2.0.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.indexmap-2.0.0.bazel"
+            }
+          },
+          "cui__windows_i686_gnu-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__windows_i686_gnu-0.48.0",
+              "sha256": "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_i686_gnu/0.48.0/download"
+              ],
+              "strip_prefix": "windows_i686_gnu-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.windows_i686_gnu-0.48.0.bazel"
+            }
+          },
+          "rrra__proc-macro2-1.0.64": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__proc-macro2-1.0.64",
+              "sha256": "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/proc-macro2/1.0.64/download"
+              ],
+              "strip_prefix": "proc-macro2-1.0.64",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.proc-macro2-1.0.64.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__predicates-tree-1.0.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__predicates-tree-1.0.9",
+              "sha256": "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/predicates-tree/1.0.9/download"
+              ],
+              "strip_prefix": "predicates-tree-1.0.9",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.predicates-tree-1.0.9.bazel"
+            }
+          },
+          "rrra__errno-0.3.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__errno-0.3.1",
+              "sha256": "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/errno/0.3.1/download"
+              ],
+              "strip_prefix": "errno-0.3.1",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.errno-0.3.1.bazel"
+            }
+          },
+          "cui__num_threads-0.1.6": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__num_threads-0.1.6",
+              "sha256": "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/num_threads/0.1.6/download"
+              ],
+              "strip_prefix": "num_threads-0.1.6",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.num_threads-0.1.6.bazel"
+            }
+          },
+          "rules_rust_prost__pin-project-internal-1.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__pin-project-internal-1.1.0",
+              "sha256": "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/pin-project-internal/1.1.0/download"
+              ],
+              "strip_prefix": "pin-project-internal-1.1.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.pin-project-internal-1.1.0.bazel"
+            }
+          },
+          "cui__rustc-hash-1.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__rustc-hash-1.1.0",
+              "sha256": "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rustc-hash/1.1.0/download"
+              ],
+              "strip_prefix": "rustc-hash-1.1.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.rustc-hash-1.1.0.bazel"
+            }
+          },
+          "cui__sharded-slab-0.1.7": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__sharded-slab-0.1.7",
+              "sha256": "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/sharded-slab/0.1.7/download"
+              ],
+              "strip_prefix": "sharded-slab-0.1.7",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.sharded-slab-0.1.7.bazel"
+            }
+          },
+          "rrra__itoa-1.0.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__itoa-1.0.8",
+              "sha256": "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/itoa/1.0.8/download"
+              ],
+              "strip_prefix": "itoa-1.0.8",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.itoa-1.0.8.bazel"
+            }
+          },
+          "cui__arc-swap-1.6.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__arc-swap-1.6.0",
+              "sha256": "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/arc-swap/1.6.0/download"
+              ],
+              "strip_prefix": "arc-swap-1.6.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.arc-swap-1.6.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__webpki-roots-0.25.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__webpki-roots-0.25.2",
+              "sha256": "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/webpki-roots/0.25.2/download"
+              ],
+              "strip_prefix": "webpki-roots-0.25.2",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.webpki-roots-0.25.2.bazel"
+            }
+          },
+          "cui__form_urlencoded-1.2.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__form_urlencoded-1.2.0",
+              "sha256": "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/form_urlencoded/1.2.0/download"
+              ],
+              "strip_prefix": "form_urlencoded-1.2.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.form_urlencoded-1.2.0.bazel"
+            }
+          },
+          "cui__gix-features-0.35.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-features-0.35.0",
+              "sha256": "9b9ff423ae4983f762659040d13dd7a5defbd54b6a04ac3cc7347741cec828cd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-features/0.35.0/download"
+              ],
+              "strip_prefix": "gix-features-0.35.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-features-0.35.0.bazel"
+            }
+          },
+          "cui__gix-commitgraph-0.21.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-commitgraph-0.21.0",
+              "sha256": "e75a975ee22cf0a002bfe9b5d5cb3d2a88e263a8a178cd7509133cff10f4df8a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-commitgraph/0.21.0/download"
+              ],
+              "strip_prefix": "gix-commitgraph-0.21.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-commitgraph-0.21.0.bazel"
+            }
+          },
+          "cui__lock_api-0.4.11": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__lock_api-0.4.11",
+              "sha256": "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/lock_api/0.4.11/download"
+              ],
+              "strip_prefix": "lock_api-0.4.11",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.lock_api-0.4.11.bazel"
+            }
+          },
+          "rrra__serde_json-1.0.102": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__serde_json-1.0.102",
+              "sha256": "b5062a995d481b2308b6064e9af76011f2921c35f97b0468811ed9f6cd91dfed",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/serde_json/1.0.102/download"
+              ],
+              "strip_prefix": "serde_json-1.0.102",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.serde_json-1.0.102.bazel"
+            }
+          },
+          "rules_rust_prost__tonic-build-0.8.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__tonic-build-0.8.4",
+              "sha256": "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tonic-build/0.8.4/download"
+              ],
+              "strip_prefix": "tonic-build-0.8.4",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.tonic-build-0.8.4.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__rouille-3.6.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__rouille-3.6.2",
+              "sha256": "3716fbf57fc1084d7a706adf4e445298d123e4a44294c4e8213caf1b85fcc921",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rouille/3.6.2/download"
+              ],
+              "strip_prefix": "rouille-3.6.2",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.rouille-3.6.2.bazel"
+            }
+          },
+          "cui__android-tzdata-0.1.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__android-tzdata-0.1.1",
+              "sha256": "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/android-tzdata/0.1.1/download"
+              ],
+              "strip_prefix": "android-tzdata-0.1.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.android-tzdata-0.1.1.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__winapi-i686-pc-windows-gnu-0.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__winapi-i686-pc-windows-gnu-0.4.0",
+              "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download"
+              ],
+              "strip_prefix": "winapi-i686-pc-windows-gnu-0.4.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel"
+            }
+          },
+          "cui__anyhow-1.0.75": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__anyhow-1.0.75",
+              "sha256": "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/anyhow/1.0.75/download"
+              ],
+              "strip_prefix": "anyhow-1.0.75",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.anyhow-1.0.75.bazel"
+            }
+          },
+          "rules_rust_prost__futures-task-0.3.28": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__futures-task-0.3.28",
+              "sha256": "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/futures-task/0.3.28/download"
+              ],
+              "strip_prefix": "futures-task-0.3.28",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.futures-task-0.3.28.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__url-2.4.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__url-2.4.0",
+              "sha256": "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/url/2.4.0/download"
+              ],
+              "strip_prefix": "url-2.4.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.url-2.4.0.bazel"
+            }
+          },
+          "cui__uluru-3.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__uluru-3.0.0",
+              "sha256": "794a32261a1f5eb6a4462c81b59cec87b5c27d5deea7dd1ac8fc781c41d226db",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/uluru/3.0.0/download"
+              ],
+              "strip_prefix": "uluru-3.0.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.uluru-3.0.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__syn-1.0.109": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__syn-1.0.109",
+              "sha256": "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/syn/1.0.109/download"
+              ],
+              "strip_prefix": "syn-1.0.109",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.syn-1.0.109.bazel"
+            }
+          },
+          "cui__serde-1.0.190": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__serde-1.0.190",
+              "sha256": "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/serde/1.0.190/download"
+              ],
+              "strip_prefix": "serde-1.0.190",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.serde-1.0.190.bazel"
+            }
+          },
+          "rules_rust_prost__socket2-0.4.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__socket2-0.4.9",
+              "sha256": "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/socket2/0.4.9/download"
+              ],
+              "strip_prefix": "socket2-0.4.9",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.socket2-0.4.9.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__ascii-1.1.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__ascii-1.1.0",
+              "sha256": "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/ascii/1.1.0/download"
+              ],
+              "strip_prefix": "ascii-1.1.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.ascii-1.1.0.bazel"
+            }
+          },
+          "rules_rust_prost__prost-types-0.11.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__prost-types-0.11.9",
+              "sha256": "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/prost-types/0.11.9/download"
+              ],
+              "strip_prefix": "prost-types-0.11.9",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.prost-types-0.11.9.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__bstr-0.2.17": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__bstr-0.2.17",
+              "sha256": "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/bstr/0.2.17/download"
+              ],
+              "strip_prefix": "bstr-0.2.17",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.bstr-0.2.17.bazel"
+            }
+          },
+          "rules_rust_prost__futures-sink-0.3.28": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__futures-sink-0.3.28",
+              "sha256": "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/futures-sink/0.3.28/download"
+              ],
+              "strip_prefix": "futures-sink-0.3.28",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.futures-sink-0.3.28.bazel"
+            }
+          },
+          "rules_rust_prost__unicode-ident-1.0.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__unicode-ident-1.0.9",
+              "sha256": "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-ident/1.0.9/download"
+              ],
+              "strip_prefix": "unicode-ident-1.0.9",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.unicode-ident-1.0.9.bazel"
+            }
+          },
+          "cui__aho-corasick-1.0.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__aho-corasick-1.0.2",
+              "sha256": "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/aho-corasick/1.0.2/download"
+              ],
+              "strip_prefix": "aho-corasick-1.0.2",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.aho-corasick-1.0.2.bazel"
+            }
+          },
+          "cui__libc-0.2.149": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__libc-0.2.149",
+              "sha256": "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/libc/0.2.149/download"
+              ],
+              "strip_prefix": "libc-0.2.149",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.libc-0.2.149.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__tinyvec-1.6.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__tinyvec-1.6.0",
+              "sha256": "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tinyvec/1.6.0/download"
+              ],
+              "strip_prefix": "tinyvec-1.6.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.tinyvec-1.6.0.bazel"
+            }
+          },
+          "cui__unicode-linebreak-0.1.5": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__unicode-linebreak-0.1.5",
+              "sha256": "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-linebreak/0.1.5/download"
+              ],
+              "strip_prefix": "unicode-linebreak-0.1.5",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.unicode-linebreak-0.1.5.bazel"
+            }
+          },
+          "rules_rust_bindgen__windows_x86_64_msvc-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__windows_x86_64_msvc-0.48.0",
+              "sha256": "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_x86_64_msvc/0.48.0/download"
+              ],
+              "strip_prefix": "windows_x86_64_msvc-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.windows_x86_64_msvc-0.48.0.bazel"
+            }
+          },
+          "rrra__itertools-0.11.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__itertools-0.11.0",
+              "sha256": "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/itertools/0.11.0/download"
+              ],
+              "strip_prefix": "itertools-0.11.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.itertools-0.11.0.bazel"
+            }
+          },
+          "rules_rust_bindgen__regex-1.8.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__regex-1.8.4",
+              "sha256": "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/regex/1.8.4/download"
+              ],
+              "strip_prefix": "regex-1.8.4",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.regex-1.8.4.bazel"
+            }
+          },
+          "cui__hashbrown-0.14.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__hashbrown-0.14.3",
+              "sha256": "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/hashbrown/0.14.3/download"
+              ],
+              "strip_prefix": "hashbrown-0.14.3",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.hashbrown-0.14.3.bazel"
+            }
+          },
+          "cui__crypto-common-0.1.6": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__crypto-common-0.1.6",
+              "sha256": "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/crypto-common/0.1.6/download"
+              ],
+              "strip_prefix": "crypto-common-0.1.6",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.crypto-common-0.1.6.bazel"
+            }
+          },
+          "rrra__windows_x86_64_gnu-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__windows_x86_64_gnu-0.48.0",
+              "sha256": "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_x86_64_gnu/0.48.0/download"
+              ],
+              "strip_prefix": "windows_x86_64_gnu-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.windows_x86_64_gnu-0.48.0.bazel"
+            }
+          },
+          "cui__winnow-0.5.18": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__winnow-0.5.18",
+              "sha256": "176b6138793677221d420fd2f0aeeced263f197688b36484660da767bca2fa32",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/winnow/0.5.18/download"
+              ],
+              "strip_prefix": "winnow-0.5.18",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.winnow-0.5.18.bazel"
+            }
+          },
+          "cui__byteyarn-0.2.3": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__byteyarn-0.2.3",
+              "sha256": "a7534301c0ea17abb4db06d75efc7b4b0fa360fce8e175a4330d721c71c942ff",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/byteyarn/0.2.3/download"
+              ],
+              "strip_prefix": "byteyarn-0.2.3",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.byteyarn-0.2.3.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__crossbeam-utils-0.8.16": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__crossbeam-utils-0.8.16",
+              "sha256": "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/crossbeam-utils/0.8.16/download"
+              ],
+              "strip_prefix": "crossbeam-utils-0.8.16",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.crossbeam-utils-0.8.16.bazel"
+            }
+          },
+          "cui__memchr-2.6.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__memchr-2.6.4",
+              "sha256": "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/memchr/2.6.4/download"
+              ],
+              "strip_prefix": "memchr-2.6.4",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.memchr-2.6.4.bazel"
+            }
+          },
+          "rrra__serde_derive-1.0.171": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__serde_derive-1.0.171",
+              "sha256": "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/serde_derive/1.0.171/download"
+              ],
+              "strip_prefix": "serde_derive-1.0.171",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.serde_derive-1.0.171.bazel"
+            }
+          },
+          "cui__bitflags-2.4.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__bitflags-2.4.1",
+              "sha256": "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/bitflags/2.4.1/download"
+              ],
+              "strip_prefix": "bitflags-2.4.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.bitflags-2.4.1.bazel"
+            }
+          },
+          "rules_rust_prost__io-lifetimes-1.0.11": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__io-lifetimes-1.0.11",
+              "sha256": "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/io-lifetimes/1.0.11/download"
+              ],
+              "strip_prefix": "io-lifetimes-1.0.11",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.io-lifetimes-1.0.11.bazel"
+            }
+          },
+          "rrra__windows_aarch64_gnullvm-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rrra__windows_aarch64_gnullvm-0.48.0",
+              "sha256": "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_aarch64_gnullvm/0.48.0/download"
+              ],
+              "strip_prefix": "windows_aarch64_gnullvm-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//tools/rust_analyzer/3rdparty/crates:BUILD.windows_aarch64_gnullvm-0.48.0.bazel"
+            }
+          },
+          "rules_rust_prost__itoa-1.0.6": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__itoa-1.0.6",
+              "sha256": "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/itoa/1.0.6/download"
+              ],
+              "strip_prefix": "itoa-1.0.6",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.itoa-1.0.6.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__cfg-if-1.0.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__cfg-if-1.0.0",
+              "sha256": "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/cfg-if/1.0.0/download"
+              ],
+              "strip_prefix": "cfg-if-1.0.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.cfg-if-1.0.0.bazel"
+            }
+          },
+          "rules_rust_prost__windows_x86_64_gnullvm-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__windows_x86_64_gnullvm-0.48.0",
+              "sha256": "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_x86_64_gnullvm/0.48.0/download"
+              ],
+              "strip_prefix": "windows_x86_64_gnullvm-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.windows_x86_64_gnullvm-0.48.0.bazel"
+            }
+          },
+          "rules_rust_prost__pin-project-lite-0.2.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__pin-project-lite-0.2.9",
+              "sha256": "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/pin-project-lite/0.2.9/download"
+              ],
+              "strip_prefix": "pin-project-lite-0.2.9",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.pin-project-lite-0.2.9.bazel"
+            }
+          },
+          "cui__gix-credentials-0.20.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-credentials-0.20.0",
+              "sha256": "46900b884cc5af6a6c141ee741607c0c651a4e1d33614b8d888a1ba81cc0bc8a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-credentials/0.20.0/download"
+              ],
+              "strip_prefix": "gix-credentials-0.20.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-credentials-0.20.0.bazel"
+            }
+          },
+          "rules_rust_prost__syn-2.0.18": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__syn-2.0.18",
+              "sha256": "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/syn/2.0.18/download"
+              ],
+              "strip_prefix": "syn-2.0.18",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.syn-2.0.18.bazel"
+            }
+          },
+          "rules_rust_prost__linux-raw-sys-0.3.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__linux-raw-sys-0.3.8",
+              "sha256": "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/linux-raw-sys/0.3.8/download"
+              ],
+              "strip_prefix": "linux-raw-sys-0.3.8",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.linux-raw-sys-0.3.8.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.91": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.91",
+              "sha256": "806a045c4ec4ef7c3ad86dc27bcb641b84d9eeb3846200f56d7ab0885241d654",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen-cli-support/0.2.91/download"
+              ],
+              "strip_prefix": "wasm-bindgen-cli-support-0.2.91",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-cli-support-0.2.91.bazel"
+            }
+          },
+          "cui__serde_derive-1.0.190": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__serde_derive-1.0.190",
+              "sha256": "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/serde_derive/1.0.190/download"
+              ],
+              "strip_prefix": "serde_derive-1.0.190",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.serde_derive-1.0.190.bazel"
+            }
+          },
+          "rules_rust_prost__regex-syntax-0.7.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__regex-syntax-0.7.2",
+              "sha256": "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/regex-syntax/0.7.2/download"
+              ],
+              "strip_prefix": "regex-syntax-0.7.2",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.regex-syntax-0.7.2.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__serde-1.0.171": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__serde-1.0.171",
+              "sha256": "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/serde/1.0.171/download"
+              ],
+              "strip_prefix": "serde-1.0.171",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.serde-1.0.171.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__wasm-bindgen-macro-0.2.91": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasm-bindgen-macro-0.2.91",
+              "sha256": "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/wasm-bindgen-macro/0.2.91/download"
+              ],
+              "strip_prefix": "wasm-bindgen-macro-0.2.91",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.wasm-bindgen-macro-0.2.91.bazel"
+            }
+          },
+          "cui__pest_generator-2.7.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__pest_generator-2.7.0",
+              "sha256": "b3e8cba4ec22bada7fc55ffe51e2deb6a0e0db2d0b7ab0b103acc80d2510c190",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/pest_generator/2.7.0/download"
+              ],
+              "strip_prefix": "pest_generator-2.7.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.pest_generator-2.7.0.bazel"
+            }
+          },
+          "cui__chrono-tz-0.8.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__chrono-tz-0.8.4",
+              "sha256": "e23185c0e21df6ed832a12e2bda87c7d1def6842881fb634a8511ced741b0d76",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/chrono-tz/0.8.4/download"
+              ],
+              "strip_prefix": "chrono-tz-0.8.4",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.chrono-tz-0.8.4.bazel"
+            }
+          },
+          "cui__gix-revision-0.22.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-revision-0.22.0",
+              "sha256": "c8c4b15cf2ab7a35f5bcb3ef146187c8d36df0177e171ca061913cbaaa890e89",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-revision/0.22.0/download"
+              ],
+              "strip_prefix": "gix-revision-0.22.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-revision-0.22.0.bazel"
+            }
+          },
+          "cui__camino-1.1.6": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__camino-1.1.6",
+              "sha256": "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/camino/1.1.6/download"
+              ],
+              "strip_prefix": "camino-1.1.6",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.camino-1.1.6.bazel"
+            }
+          },
+          "cross_x86_64-pc-windows-msvc": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cross_x86_64-pc-windows-msvc",
+              "urls": [
+                "https://github.com/rust-embedded/cross/releases/download/v0.2.1/cross-v0.2.1-x86_64-pc-windows-msvc.tar.gz"
+              ],
+              "sha256": "3af59ff5a2229f92b54df937c50a9a88c96dffc8ac3dde520a38fdf046d656c4",
+              "build_file_content": "exports_files(glob([\"**\"]), visibility = [\"//visibility:public\"])"
+            }
+          },
+          "rules_rust_prost__signal-hook-registry-1.4.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__signal-hook-registry-1.4.1",
+              "sha256": "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/signal-hook-registry/1.4.1/download"
+              ],
+              "strip_prefix": "signal-hook-registry-1.4.1",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.signal-hook-registry-1.4.1.bazel"
+            }
+          },
+          "cui__gix-config-0.30.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-config-0.30.0",
+              "sha256": "c171514b40487d3f677ae37efc0f45ac980e3169f23c27eb30a70b47fdf88ab5",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-config/0.30.0/download"
+              ],
+              "strip_prefix": "gix-config-0.30.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-config-0.30.0.bazel"
+            }
+          },
+          "cui__unicode-ident-1.0.10": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__unicode-ident-1.0.10",
+              "sha256": "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unicode-ident/1.0.10/download"
+              ],
+              "strip_prefix": "unicode-ident-1.0.10",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.unicode-ident-1.0.10.bazel"
+            }
+          },
+          "rules_rust_prost__heck": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__heck",
+              "sha256": "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/heck/0.4.1/download"
+              ],
+              "strip_prefix": "heck-0.4.1",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.heck-0.4.1.bazel"
+            }
+          },
+          "rules_rust_prost__prost-build-0.11.9": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__prost-build-0.11.9",
+              "sha256": "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/prost-build/0.11.9/download"
+              ],
+              "strip_prefix": "prost-build-0.11.9",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.prost-build-0.11.9.bazel"
+            }
+          },
+          "cui__gix-discover-0.25.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-discover-0.25.0",
+              "sha256": "69507643d75a0ea9a402fcf73ced517d2b95cc95385904ac09d03e0b952fde33",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-discover/0.25.0/download"
+              ],
+              "strip_prefix": "gix-discover-0.25.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-discover-0.25.0.bazel"
+            }
+          },
+          "cui__unic-common-0.9.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__unic-common-0.9.0",
+              "sha256": "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/unic-common/0.9.0/download"
+              ],
+              "strip_prefix": "unic-common-0.9.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.unic-common-0.9.0.bazel"
+            }
+          },
+          "rules_rust_prost__tower-0.4.13": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_prost__tower-0.4.13",
+              "sha256": "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/tower/0.4.13/download"
+              ],
+              "strip_prefix": "tower-0.4.13",
+              "build_file": "@@rules_rust~0.40.0//proto/prost/private/3rdparty/crates:BUILD.tower-0.4.13.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__itoa-1.0.8": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__itoa-1.0.8",
+              "sha256": "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/itoa/1.0.8/download"
+              ],
+              "strip_prefix": "itoa-1.0.8",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.itoa-1.0.8.bazel"
+            }
+          },
+          "rules_rust_bindgen__libloading-0.7.4": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__libloading-0.7.4",
+              "sha256": "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/libloading/0.7.4/download"
+              ],
+              "strip_prefix": "libloading-0.7.4",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.libloading-0.7.4.bazel"
+            }
+          },
+          "rules_rust_bindgen__windows_aarch64_gnullvm-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__windows_aarch64_gnullvm-0.48.0",
+              "sha256": "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows_aarch64_gnullvm/0.48.0/download"
+              ],
+              "strip_prefix": "windows_aarch64_gnullvm-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.windows_aarch64_gnullvm-0.48.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__alloc-stdlib-0.2.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__alloc-stdlib-0.2.2",
+              "sha256": "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/alloc-stdlib/0.2.2/download"
+              ],
+              "strip_prefix": "alloc-stdlib-0.2.2",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.alloc-stdlib-0.2.2.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__bitflags-1.3.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__bitflags-1.3.2",
+              "sha256": "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/bitflags/1.3.2/download"
+              ],
+              "strip_prefix": "bitflags-1.3.2",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.bitflags-1.3.2.bazel"
+            }
+          },
+          "rules_rust_bindgen__peeking_take_while-0.1.2": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_bindgen__peeking_take_while-0.1.2",
+              "sha256": "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/peeking_take_while/0.1.2/download"
+              ],
+              "strip_prefix": "peeking_take_while-0.1.2",
+              "build_file": "@@rules_rust~0.40.0//bindgen/3rdparty/crates:BUILD.peeking_take_while-0.1.2.bazel"
+            }
+          },
+          "cui__gix-ignore-0.8.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__gix-ignore-0.8.0",
+              "sha256": "b048f443a1f6b02da4205c34d2e287e3fd45d75e8e2f06cfb216630ea9bff5e3",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/gix-ignore/0.8.0/download"
+              ],
+              "strip_prefix": "gix-ignore-0.8.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.gix-ignore-0.8.0.bazel"
+            }
+          },
+          "rules_rust_wasm_bindgen__rayon-core-1.11.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__rayon-core-1.11.0",
+              "sha256": "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/rayon-core/1.11.0/download"
+              ],
+              "strip_prefix": "rayon-core-1.11.0",
+              "build_file": "@@rules_rust~0.40.0//wasm_bindgen/3rdparty/crates:BUILD.rayon-core-1.11.0.bazel"
+            }
+          },
+          "cui__utf8parse-0.2.1": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__utf8parse-0.2.1",
+              "sha256": "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/utf8parse/0.2.1/download"
+              ],
+              "strip_prefix": "utf8parse-0.2.1",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.utf8parse-0.2.1.bazel"
+            }
+          },
+          "cui__windows-0.48.0": {
+            "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl",
+            "ruleClassName": "http_archive",
+            "attributes": {
+              "name": "rules_rust~0.40.0~i~cui__windows-0.48.0",
+              "sha256": "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f",
+              "type": "tar.gz",
+              "urls": [
+                "https://crates.io/api/v1/crates/windows/0.48.0/download"
+              ],
+              "strip_prefix": "windows-0.48.0",
+              "build_file": "@@rules_rust~0.40.0//crate_universe/3rdparty/crates:BUILD.windows-0.48.0.bazel"
+            }
+          }
+        },
+        "moduleExtensionMetadata": {
+          "explicitRootModuleDirectDeps": [
+            "rules_rust_tinyjson",
+            "cui",
+            "cui__anyhow-1.0.75",
+            "cui__camino-1.1.6",
+            "cui__cargo-lock-9.0.0",
+            "cui__cargo-platform-0.1.4",
+            "cui__cargo_metadata-0.18.1",
+            "cui__cargo_toml-0.17.1",
+            "cui__cfg-expr-0.15.5",
+            "cui__clap-4.3.11",
+            "cui__crates-index-2.2.0",
+            "cui__hex-0.4.3",
+            "cui__indoc-2.0.4",
+            "cui__itertools-0.12.0",
+            "cui__normpath-1.1.1",
+            "cui__pathdiff-0.2.1",
+            "cui__regex-1.10.2",
+            "cui__semver-1.0.20",
+            "cui__serde-1.0.190",
+            "cui__serde_json-1.0.108",
+            "cui__serde_starlark-0.1.14",
+            "cui__sha2-0.10.8",
+            "cui__spdx-0.10.3",
+            "cui__tempfile-3.8.1",
+            "cui__tera-1.19.1",
+            "cui__textwrap-0.16.0",
+            "cui__toml-0.8.10",
+            "cui__tracing-0.1.40",
+            "cui__tracing-subscriber-0.3.17",
+            "cui__maplit-1.0.2",
+            "cui__spectral-0.6.0",
+            "cargo_bazel.buildifier-darwin-amd64",
+            "cargo_bazel.buildifier-darwin-arm64",
+            "cargo_bazel.buildifier-linux-amd64",
+            "cargo_bazel.buildifier-linux-arm64",
+            "cargo_bazel.buildifier-windows-amd64.exe",
+            "rules_rust_prost__heck",
+            "rules_rust_prost",
+            "rules_rust_prost__h2-0.3.19",
+            "rules_rust_prost__prost-0.11.9",
+            "rules_rust_prost__prost-types-0.11.9",
+            "rules_rust_prost__protoc-gen-prost-0.2.2",
+            "rules_rust_prost__protoc-gen-tonic-0.2.2",
+            "rules_rust_prost__tokio-1.28.2",
+            "rules_rust_prost__tokio-stream-0.1.14",
+            "rules_rust_prost__tonic-0.9.2",
+            "llvm-raw",
+            "rules_rust_bindgen__bindgen-cli-0.69.1",
+            "rules_rust_bindgen__bindgen-0.69.1",
+            "rules_rust_bindgen__clang-sys-1.6.1",
+            "rules_rust_bindgen__clap-4.3.3",
+            "rules_rust_bindgen__clap_complete-4.3.1",
+            "rules_rust_bindgen__env_logger-0.10.0",
+            "rrra__anyhow-1.0.71",
+            "rrra__clap-4.3.11",
+            "rrra__env_logger-0.10.0",
+            "rrra__itertools-0.11.0",
+            "rrra__log-0.4.19",
+            "rrra__serde-1.0.171",
+            "rrra__serde_json-1.0.102",
+            "rules_rust_wasm_bindgen_cli",
+            "rules_rust_wasm_bindgen__anyhow-1.0.71",
+            "rules_rust_wasm_bindgen__docopt-1.1.1",
+            "rules_rust_wasm_bindgen__env_logger-0.8.4",
+            "rules_rust_wasm_bindgen__log-0.4.19",
+            "rules_rust_wasm_bindgen__rouille-3.6.2",
+            "rules_rust_wasm_bindgen__serde-1.0.171",
+            "rules_rust_wasm_bindgen__serde_derive-1.0.171",
+            "rules_rust_wasm_bindgen__serde_json-1.0.102",
+            "rules_rust_wasm_bindgen__ureq-2.8.0",
+            "rules_rust_wasm_bindgen__walrus-0.20.3",
+            "rules_rust_wasm_bindgen__wasm-bindgen-0.2.91",
+            "rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.91",
+            "rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91",
+            "rules_rust_wasm_bindgen__assert_cmd-1.0.8",
+            "rules_rust_wasm_bindgen__diff-0.1.13",
+            "rules_rust_wasm_bindgen__predicates-1.0.8",
+            "rules_rust_wasm_bindgen__rayon-1.7.0",
+            "rules_rust_wasm_bindgen__tempfile-3.6.0",
+            "rules_rust_wasm_bindgen__wasmparser-0.102.0",
+            "rules_rust_wasm_bindgen__wasmprinter-0.2.60",
+            "rules_rust_test_load_arbitrary_tool",
+            "generated_inputs_in_external_repo",
+            "libc",
+            "rules_rust_toolchain_test_target_json",
+            "com_google_googleapis",
+            "bazelci_rules"
+          ],
+          "explicitRootModuleDirectDevDeps": [],
+          "useAllRepos": "NO"
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_rust~0.40.0",
+            "bazel_skylib",
+            "bazel_skylib~1.5.0"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__anyhow-1.0.75",
+            "rules_rust~0.40.0~i~cui__anyhow-1.0.75"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__camino-1.1.6",
+            "rules_rust~0.40.0~i~cui__camino-1.1.6"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__cargo-lock-9.0.0",
+            "rules_rust~0.40.0~i~cui__cargo-lock-9.0.0"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__cargo-platform-0.1.4",
+            "rules_rust~0.40.0~i~cui__cargo-platform-0.1.4"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__cargo_metadata-0.18.1",
+            "rules_rust~0.40.0~i~cui__cargo_metadata-0.18.1"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__cargo_toml-0.17.1",
+            "rules_rust~0.40.0~i~cui__cargo_toml-0.17.1"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__cfg-expr-0.15.5",
+            "rules_rust~0.40.0~i~cui__cfg-expr-0.15.5"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__clap-4.3.11",
+            "rules_rust~0.40.0~i~cui__clap-4.3.11"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__crates-index-2.2.0",
+            "rules_rust~0.40.0~i~cui__crates-index-2.2.0"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__hex-0.4.3",
+            "rules_rust~0.40.0~i~cui__hex-0.4.3"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__indoc-2.0.4",
+            "rules_rust~0.40.0~i~cui__indoc-2.0.4"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__itertools-0.12.0",
+            "rules_rust~0.40.0~i~cui__itertools-0.12.0"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__maplit-1.0.2",
+            "rules_rust~0.40.0~i~cui__maplit-1.0.2"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__normpath-1.1.1",
+            "rules_rust~0.40.0~i~cui__normpath-1.1.1"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__pathdiff-0.2.1",
+            "rules_rust~0.40.0~i~cui__pathdiff-0.2.1"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__regex-1.10.2",
+            "rules_rust~0.40.0~i~cui__regex-1.10.2"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__semver-1.0.20",
+            "rules_rust~0.40.0~i~cui__semver-1.0.20"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__serde-1.0.190",
+            "rules_rust~0.40.0~i~cui__serde-1.0.190"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__serde_json-1.0.108",
+            "rules_rust~0.40.0~i~cui__serde_json-1.0.108"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__serde_starlark-0.1.14",
+            "rules_rust~0.40.0~i~cui__serde_starlark-0.1.14"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__sha2-0.10.8",
+            "rules_rust~0.40.0~i~cui__sha2-0.10.8"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__spdx-0.10.3",
+            "rules_rust~0.40.0~i~cui__spdx-0.10.3"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__spectral-0.6.0",
+            "rules_rust~0.40.0~i~cui__spectral-0.6.0"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__tempfile-3.8.1",
+            "rules_rust~0.40.0~i~cui__tempfile-3.8.1"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__tera-1.19.1",
+            "rules_rust~0.40.0~i~cui__tera-1.19.1"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__textwrap-0.16.0",
+            "rules_rust~0.40.0~i~cui__textwrap-0.16.0"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__toml-0.8.10",
+            "rules_rust~0.40.0~i~cui__toml-0.8.10"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__tracing-0.1.40",
+            "rules_rust~0.40.0~i~cui__tracing-0.1.40"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "cui__tracing-subscriber-0.3.17",
+            "rules_rust~0.40.0~i~cui__tracing-subscriber-0.3.17"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rrra__anyhow-1.0.71",
+            "rules_rust~0.40.0~i~rrra__anyhow-1.0.71"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rrra__clap-4.3.11",
+            "rules_rust~0.40.0~i~rrra__clap-4.3.11"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rrra__env_logger-0.10.0",
+            "rules_rust~0.40.0~i~rrra__env_logger-0.10.0"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rrra__itertools-0.11.0",
+            "rules_rust~0.40.0~i~rrra__itertools-0.11.0"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rrra__log-0.4.19",
+            "rules_rust~0.40.0~i~rrra__log-0.4.19"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rrra__serde-1.0.171",
+            "rules_rust~0.40.0~i~rrra__serde-1.0.171"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rrra__serde_json-1.0.102",
+            "rules_rust~0.40.0~i~rrra__serde_json-1.0.102"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust",
+            "rules_rust~0.40.0"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_bindgen__bindgen-0.69.1",
+            "rules_rust~0.40.0~i~rules_rust_bindgen__bindgen-0.69.1"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_bindgen__clang-sys-1.6.1",
+            "rules_rust~0.40.0~i~rules_rust_bindgen__clang-sys-1.6.1"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_bindgen__clap-4.3.3",
+            "rules_rust~0.40.0~i~rules_rust_bindgen__clap-4.3.3"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_bindgen__clap_complete-4.3.1",
+            "rules_rust~0.40.0~i~rules_rust_bindgen__clap_complete-4.3.1"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_bindgen__env_logger-0.10.0",
+            "rules_rust~0.40.0~i~rules_rust_bindgen__env_logger-0.10.0"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_prost__h2-0.3.19",
+            "rules_rust~0.40.0~i~rules_rust_prost__h2-0.3.19"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_prost__prost-0.11.9",
+            "rules_rust~0.40.0~i~rules_rust_prost__prost-0.11.9"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_prost__prost-types-0.11.9",
+            "rules_rust~0.40.0~i~rules_rust_prost__prost-types-0.11.9"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_prost__protoc-gen-prost-0.2.2",
+            "rules_rust~0.40.0~i~rules_rust_prost__protoc-gen-prost-0.2.2"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_prost__protoc-gen-tonic-0.2.2",
+            "rules_rust~0.40.0~i~rules_rust_prost__protoc-gen-tonic-0.2.2"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_prost__tokio-1.28.2",
+            "rules_rust~0.40.0~i~rules_rust_prost__tokio-1.28.2"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_prost__tokio-stream-0.1.14",
+            "rules_rust~0.40.0~i~rules_rust_prost__tokio-stream-0.1.14"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_prost__tonic-0.9.2",
+            "rules_rust~0.40.0~i~rules_rust_prost__tonic-0.9.2"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__anyhow-1.0.71",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__anyhow-1.0.71"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__assert_cmd-1.0.8",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__assert_cmd-1.0.8"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__diff-0.1.13",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__diff-0.1.13"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__docopt-1.1.1",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__docopt-1.1.1"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__env_logger-0.8.4",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__env_logger-0.8.4"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__log-0.4.19",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__log-0.4.19"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__predicates-1.0.8",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__predicates-1.0.8"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__rayon-1.7.0",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__rayon-1.7.0"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__rouille-3.6.2",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__rouille-3.6.2"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__serde-1.0.171",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__serde-1.0.171"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__serde_derive-1.0.171",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__serde_derive-1.0.171"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__serde_json-1.0.102",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__serde_json-1.0.102"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__tempfile-3.6.0",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__tempfile-3.6.0"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__ureq-2.8.0",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__ureq-2.8.0"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__walrus-0.20.3",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__walrus-0.20.3"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__wasm-bindgen-0.2.91",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasm-bindgen-0.2.91"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.91",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasm-bindgen-cli-support-0.2.91"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.91"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__wasmparser-0.102.0",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasmparser-0.102.0"
+          ],
+          [
+            "rules_rust~0.40.0",
+            "rules_rust_wasm_bindgen__wasmprinter-0.2.60",
+            "rules_rust~0.40.0~i~rules_rust_wasm_bindgen__wasmprinter-0.2.60"
+          ]
+        ]
+      }
+    }
+  }
+}
diff --git a/README.md b/README.md
index 883cfe5..694bf2f 100644
--- a/README.md
+++ b/README.md
@@ -244,7 +244,7 @@
 fn main() {
     cxx_build::bridge("src/main.rs")  // returns a cc::Build
         .file("src/demo.cc")
-        .flag_if_supported("-std=c++11")
+        .std("c++11")
         .compile("cxxbridge-demo");
 
     println!("cargo:rerun-if-changed=src/main.rs");
diff --git a/WORKSPACE b/WORKSPACE
deleted file mode 100644
index 091ad9f..0000000
--- a/WORKSPACE
+++ /dev/null
@@ -1,25 +0,0 @@
-workspace(name = "cxx.rs")
-
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-http_archive(
-    name = "rules_rust",
-    sha256 = "dc8d79fe9a5beb79d93e482eb807266a0e066e97a7b8c48d43ecf91f32a3a8f3",
-    urls = ["https://github.com/bazelbuild/rules_rust/releases/download/0.19.0/rules_rust-v0.19.0.tar.gz"],
-)
-
-load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains")
-
-rules_rust_dependencies()
-
-rust_register_toolchains(
-    versions = ["1.68.0"],
-)
-
-load("@rules_rust//crate_universe:repositories.bzl", "crate_universe_dependencies")
-
-crate_universe_dependencies()
-
-load("//third-party/bazel:defs.bzl", "crate_repositories")
-
-crate_repositories()
diff --git a/book/book.toml b/book/book.toml
index 066f3a6..559b3d1 100644
--- a/book/book.toml
+++ b/book/book.toml
@@ -4,7 +4,7 @@
 description = "CXX — safe interop between Rust and C++"
 
 [rust]
-edition = "2018"
+edition = "2021"
 
 [build]
 build-dir = "build"
diff --git a/book/build.js b/book/build.js
index 2cda586..e595acd 100755
--- a/book/build.js
+++ b/book/build.js
@@ -2,9 +2,8 @@
 
 const fs = require('fs');
 const cheerio = require('cheerio');
+const entities = require('html-entities');
 const hljs = require('./build/highlight.js');
-const Entities = require('html-entities').AllHtmlEntities;
-const entities = new Entities();
 
 const githublink = `\
 <li class="part-title">\
@@ -100,5 +99,7 @@
 fs.copyFileSync('build/highlight.css', 'build/ayu-highlight.css');
 
 var bookjs = fs.readFileSync('build/book.js', 'utf8');
-bookjs = bookjs.replace('set_theme(theme, false);', '');
+bookjs = bookjs
+  .replace('set_theme(theme, false);', '')
+  .replace('document.querySelectorAll("code.hljs")', 'document.querySelectorAll("code.hidelines")');
 fs.writeFileSync('build/book.js', bookjs);
diff --git a/book/css/cxx.css b/book/css/cxx.css
index 647f4f7..68d32db 100644
--- a/book/css/cxx.css
+++ b/book/css/cxx.css
@@ -42,3 +42,8 @@
 .sidebar .sidebar-scrollbox {
     padding: 10px 0 10px 10px;
 }
+
+pre > .buttons {
+    visibility: visible;
+    opacity: 0.3;
+}
diff --git a/book/package-lock.json b/book/package-lock.json
index dec26ad..351edec 100644
--- a/book/package-lock.json
+++ b/book/package-lock.json
@@ -1,19 +1,27 @@
 {
   "name": "cxx-book-build",
   "version": "0.0.0",
-  "lockfileVersion": 1,
+  "lockfileVersion": 3,
   "requires": true,
-  "dependencies": {
-    "boolbase": {
+  "packages": {
+    "": {
+      "name": "cxx-book-build",
+      "version": "0.0.0",
+      "dependencies": {
+        "cheerio": "^0.22.0",
+        "html-entities": "^2.3.6"
+      }
+    },
+    "node_modules/boolbase": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
-      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
+      "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
     },
-    "cheerio": {
+    "node_modules/cheerio": {
       "version": "0.22.0",
       "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
-      "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=",
-      "requires": {
+      "integrity": "sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==",
+      "dependencies": {
         "css-select": "~1.2.0",
         "dom-serializer": "~0.1.0",
         "entities": "~1.1.1",
@@ -30,70 +38,86 @@
         "lodash.reduce": "^4.4.0",
         "lodash.reject": "^4.4.0",
         "lodash.some": "^4.4.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
       }
     },
-    "css-select": {
+    "node_modules/css-select": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
-      "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
-      "requires": {
+      "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==",
+      "dependencies": {
         "boolbase": "~1.0.0",
         "css-what": "2.1",
         "domutils": "1.5.1",
         "nth-check": "~1.0.1"
       }
     },
-    "css-what": {
+    "node_modules/css-what": {
       "version": "2.1.3",
       "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
-      "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg=="
+      "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==",
+      "engines": {
+        "node": "*"
+      }
     },
-    "dom-serializer": {
+    "node_modules/dom-serializer": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz",
       "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==",
-      "requires": {
+      "dependencies": {
         "domelementtype": "^1.3.0",
         "entities": "^1.1.1"
       }
     },
-    "domelementtype": {
+    "node_modules/domelementtype": {
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
       "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
     },
-    "domhandler": {
+    "node_modules/domhandler": {
       "version": "2.4.2",
       "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
       "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
-      "requires": {
+      "dependencies": {
         "domelementtype": "1"
       }
     },
-    "domutils": {
+    "node_modules/domutils": {
       "version": "1.5.1",
       "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
-      "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
-      "requires": {
+      "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==",
+      "dependencies": {
         "dom-serializer": "0",
         "domelementtype": "1"
       }
     },
-    "entities": {
+    "node_modules/entities": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
       "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
     },
-    "html-entities": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz",
-      "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA=="
+    "node_modules/html-entities": {
+      "version": "2.3.6",
+      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.6.tgz",
+      "integrity": "sha512-9o0+dcpIw2/HxkNuYKxSJUF/MMRZQECK4GnF+oQOmJ83yCVHTWgCH5aOXxK5bozNRmM8wtgryjHD3uloPBDEGw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/mdevils"
+        },
+        {
+          "type": "patreon",
+          "url": "https://patreon.com/mdevils"
+        }
+      ]
     },
-    "htmlparser2": {
+    "node_modules/htmlparser2": {
       "version": "3.10.1",
       "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
       "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
-      "requires": {
+      "dependencies": {
         "domelementtype": "^1.3.1",
         "domhandler": "^2.3.0",
         "domutils": "^1.5.1",
@@ -102,106 +126,123 @@
         "readable-stream": "^3.1.1"
       }
     },
-    "inherits": {
+    "node_modules/inherits": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
     },
-    "lodash.assignin": {
+    "node_modules/lodash.assignin": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz",
-      "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI="
+      "integrity": "sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg=="
     },
-    "lodash.bind": {
+    "node_modules/lodash.bind": {
       "version": "4.2.1",
       "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz",
-      "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU="
+      "integrity": "sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA=="
     },
-    "lodash.defaults": {
+    "node_modules/lodash.defaults": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
-      "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw="
+      "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ=="
     },
-    "lodash.filter": {
+    "node_modules/lodash.filter": {
       "version": "4.6.0",
       "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz",
-      "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4="
+      "integrity": "sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ=="
     },
-    "lodash.flatten": {
+    "node_modules/lodash.flatten": {
       "version": "4.4.0",
       "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
-      "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8="
+      "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g=="
     },
-    "lodash.foreach": {
+    "node_modules/lodash.foreach": {
       "version": "4.5.0",
       "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
-      "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM="
+      "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ=="
     },
-    "lodash.map": {
+    "node_modules/lodash.map": {
       "version": "4.6.0",
       "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
-      "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM="
+      "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q=="
     },
-    "lodash.merge": {
+    "node_modules/lodash.merge": {
       "version": "4.6.2",
       "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
       "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
     },
-    "lodash.pick": {
+    "node_modules/lodash.pick": {
       "version": "4.4.0",
       "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
-      "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM="
+      "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q=="
     },
-    "lodash.reduce": {
+    "node_modules/lodash.reduce": {
       "version": "4.6.0",
       "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz",
-      "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs="
+      "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw=="
     },
-    "lodash.reject": {
+    "node_modules/lodash.reject": {
       "version": "4.6.0",
       "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz",
-      "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU="
+      "integrity": "sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ=="
     },
-    "lodash.some": {
+    "node_modules/lodash.some": {
       "version": "4.6.0",
       "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
-      "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0="
+      "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ=="
     },
-    "nth-check": {
+    "node_modules/nth-check": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
       "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
-      "requires": {
+      "dependencies": {
         "boolbase": "~1.0.0"
       }
     },
-    "readable-stream": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-      "requires": {
+    "node_modules/readable-stream": {
+      "version": "3.6.2",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+      "dependencies": {
         "inherits": "^2.0.3",
         "string_decoder": "^1.1.1",
         "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
       }
     },
-    "safe-buffer": {
+    "node_modules/safe-buffer": {
       "version": "5.2.1",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ]
     },
-    "string_decoder": {
+    "node_modules/string_decoder": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
       "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
-      "requires": {
+      "dependencies": {
         "safe-buffer": "~5.2.0"
       }
     },
-    "util-deprecate": {
+    "node_modules/util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
     }
   }
 }
diff --git a/book/package.json b/book/package.json
index 092cea2..3391ac8 100644
--- a/book/package.json
+++ b/book/package.json
@@ -4,7 +4,7 @@
   "main": "build.js",
   "dependencies": {
     "cheerio": "^0.22.0",
-    "html-entities": "^1.3.1"
+    "html-entities": "^2.3.6"
   },
   "prettier": {
     "singleQuote": true
diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md
index a8f89bf..2d2502e 100644
--- a/book/src/SUMMARY.md
+++ b/book/src/SUMMARY.md
@@ -10,7 +10,7 @@
 
 - [Multi-language build system options](building.md)
     - [Cargo](build/cargo.md)
-    - [Bazel](build/bazel.md)
+    - [Bazel or Buck2](build/bazel.md)
     - [CMake](build/cmake.md)
     - [More...](build/other.md)
 
diff --git a/book/src/async.md b/book/src/async.md
index b4c696a..0f3fed1 100644
--- a/book/src/async.md
+++ b/book/src/async.md
@@ -14,7 +14,7 @@
 }
 ```
 
-```cpp,hidelines
+```cpp
 rust::Future<Ret> doThing(Arg arg) {
   auto v1 = co_await f();
   auto v2 = co_await g(arg);
diff --git a/book/src/binding/box.md b/book/src/binding/box.md
index 7df1959..dc47899 100644
--- a/book/src/binding/box.md
+++ b/book/src/binding/box.md
@@ -3,12 +3,12 @@
 
 ### Public API:
 
-```cpp,hidelines
+```cpp,hidelines=...
 // rust/cxx.h
-#
-# #include <type_traits>
-#
-# namespace rust {
+...
+...#include <type_traits>
+...
+...namespace rust {
 
 template <typename T>
 class Box final {
@@ -42,8 +42,8 @@
 
   T *into_raw() noexcept;
 };
-#
-# } // namespace rust
+...
+...} // namespace rust
 ```
 
 ### Restrictions:
diff --git a/book/src/binding/cxxstring.md b/book/src/binding/cxxstring.md
index cfe707f..dc2619c 100644
--- a/book/src/binding/cxxstring.md
+++ b/book/src/binding/cxxstring.md
@@ -134,7 +134,7 @@
       std::in_place_type<json::object>,
       std::initializer_list<std::pair<const std::string, json>>{
           {"name", "cxx-example"},
-          {"edition", 2018.},
+          {"edition", 2021.},
           {"repository", json::null}});
 }
 ```
diff --git a/book/src/binding/fn.md b/book/src/binding/fn.md
index 2934b06..a32ad52 100644
--- a/book/src/binding/fn.md
+++ b/book/src/binding/fn.md
@@ -3,10 +3,10 @@
 
 ### Public API:
 
-```cpp,hidelines
+```cpp,hidelines=...
 // rust/cxx.h
-#
-# namespace rust {
+...
+...namespace rust {
 
 template <typename Signature>
 class Fn;
@@ -17,8 +17,8 @@
   Ret operator()(Args... args) const noexcept;
   Fn operator*() const noexcept;
 };
-#
-# } // namespace rust
+...
+...} // namespace rust
 ```
 
 ### Restrictions:
diff --git a/book/src/binding/result.md b/book/src/binding/result.md
index e49dcf4..733212a 100644
--- a/book/src/binding/result.md
+++ b/book/src/binding/result.md
@@ -55,10 +55,10 @@
 `rust::Error` and has the following C++ public API. The `what()` member function
 gives the error message according to the Rust error's std::fmt::Display impl.
 
-```cpp,hidelines
+```cpp,hidelines=...
 // rust/cxx.h
-#
-# namespace rust {
+...
+...namespace rust {
 
 class Error final : public std::exception {
 public:
@@ -71,8 +71,8 @@
 
   const char *what() const noexcept override;
 };
-#
-# } // namespace rust
+...
+...} // namespace rust
 ```
 
 ## Returning Result from C++ to Rust
@@ -114,7 +114,7 @@
 
 The template signature is required to be:
 
-```cpp,hidelines
+```cpp
 namespace rust {
 namespace behavior {
 
@@ -130,19 +130,19 @@
 catch whatever exception(s) you want, and invoke `fail` with the error message
 you'd like for the Rust error to have.
 
-```cpp,hidelines
-# #include <exception>
-#
-# namespace rust {
-# namespace behavior {
-#
+```cpp,hidelines=...
+...#include <exception>
+...
+...namespace rust {
+...namespace behavior {
+...
 template <typename Try, typename Fail>
 static void trycatch(Try &&func, Fail &&fail) noexcept try {
   func();
 } catch (const std::exception &e) {
   fail(e.what());
 }
-#
-# } // namespace behavior
-# } // namespace rust
+...
+...} // namespace behavior
+...} // namespace rust
 ```
diff --git a/book/src/binding/slice.md b/book/src/binding/slice.md
index 803277b..0de9627 100644
--- a/book/src/binding/slice.md
+++ b/book/src/binding/slice.md
@@ -6,13 +6,13 @@
 
 ### Public API:
 
-```cpp,hidelines
+```cpp,hidelines=...
 // rust/cxx.h
-#
-# #include <iterator>
-# #include <type_traits>
-#
-# namespace rust {
+...
+...#include <iterator>
+...#include <type_traits>
+...
+...namespace rust {
 
 template <typename T>
 class Slice final {
@@ -43,39 +43,39 @@
 
   void swap(Slice &) noexcept;
 };
-#
-# template <typename T>
-# class Slice<T>::iterator final {
-# public:
-#   using iterator_category = std::random_access_iterator_tag;
-#   using value_type = T;
-#   using pointer = T *;
-#   using reference = T &;
-#
-#   T &operator*() const noexcept;
-#   T *operator->() const noexcept;
-#   T &operator[](ptrdiff_t) const noexcept;
-#
-#   iterator &operator++() noexcept;
-#   iterator operator++(int) noexcept;
-#   iterator &operator--() noexcept;
-#   iterator operator--(int) noexcept;
-#
-#   iterator &operator+=(ptrdiff_t) noexcept;
-#   iterator &operator-=(ptrdiff_t) noexcept;
-#   iterator operator+(ptrdiff_t) const noexcept;
-#   iterator operator-(ptrdiff_t) const noexcept;
-#   ptrdiff_t operator-(const iterator &) const noexcept;
-#
-#   bool operator==(const iterator &) const noexcept;
-#   bool operator!=(const iterator &) const noexcept;
-#   bool operator<(const iterator &) const noexcept;
-#   bool operator>(const iterator &) const noexcept;
-#   bool operator<=(const iterator &) const noexcept;
-#   bool operator>=(const iterator &) const noexcept;
-# };
-#
-# } // namespace rust
+...
+...template <typename T>
+...class Slice<T>::iterator final {
+...public:
+...  using iterator_category = std::random_access_iterator_tag;
+...  using value_type = T;
+...  using pointer = T *;
+...  using reference = T &;
+...
+...  T &operator*() const noexcept;
+...  T *operator->() const noexcept;
+...  T &operator[](ptrdiff_t) const noexcept;
+...
+...  iterator &operator++() noexcept;
+...  iterator operator++(int) noexcept;
+...  iterator &operator--() noexcept;
+...  iterator operator--(int) noexcept;
+...
+...  iterator &operator+=(ptrdiff_t) noexcept;
+...  iterator &operator-=(ptrdiff_t) noexcept;
+...  iterator operator+(ptrdiff_t) const noexcept;
+...  iterator operator-(ptrdiff_t) const noexcept;
+...  ptrdiff_t operator-(const iterator &) const noexcept;
+...
+...  bool operator==(const iterator &) const noexcept;
+...  bool operator!=(const iterator &) const noexcept;
+...  bool operator<(const iterator &) const noexcept;
+...  bool operator>(const iterator &) const noexcept;
+...  bool operator<=(const iterator &) const noexcept;
+...  bool operator>=(const iterator &) const noexcept;
+...};
+...
+...} // namespace rust
 ```
 
 ### Restrictions:
diff --git a/book/src/binding/str.md b/book/src/binding/str.md
index 9c1e0a7..6628456 100644
--- a/book/src/binding/str.md
+++ b/book/src/binding/str.md
@@ -3,13 +3,13 @@
 
 ### Public API:
 
-```cpp,hidelines
+```cpp,hidelines=...
 // rust/cxx.h
-#
-# #include <iosfwd>
-# #include <string>
-#
-# namespace rust {
+...
+...#include <iosfwd>
+...#include <string>
+...
+...namespace rust {
 
 class Str final {
 public:
@@ -50,8 +50,8 @@
 };
 
 std::ostream &operator<<(std::ostream &, const Str &);
-#
-# } // namespace rust
+...
+...} // namespace rust
 ```
 
 ### Notes:
diff --git a/book/src/binding/string.md b/book/src/binding/string.md
index 1e48278..57dd245 100644
--- a/book/src/binding/string.md
+++ b/book/src/binding/string.md
@@ -3,13 +3,13 @@
 
 ### Public API:
 
-```cpp,hidelines
+```cpp,hidelines=...
 // rust/cxx.h
-#
-# #include <iosfwd>
-# #include <string>
-#
-# namespace rust {
+...
+...#include <iosfwd>
+...#include <string>
+...
+...namespace rust {
 
 class String final {
 public:
@@ -73,8 +73,8 @@
 };
 
 std::ostream &operator<<(std::ostream &, const String &);
-#
-# } // namespace rust
+...
+...} // namespace rust
 ```
 
 ### Restrictions:
diff --git a/book/src/binding/vec.md b/book/src/binding/vec.md
index 4d6587a..af739b9 100644
--- a/book/src/binding/vec.md
+++ b/book/src/binding/vec.md
@@ -3,14 +3,14 @@
 
 ### Public API:
 
-```cpp,hidelines
+```cpp,hidelines=...
 // rust/cxx.h
-#
-# #include <initializer_list>
-# #include <iterator>
-# #include <type_traits>
-#
-# namespace rust {
+...
+...#include <initializer_list>
+...#include <iterator>
+...#include <type_traits>
+...
+...namespace rust {
 
 template <typename T>
 class Vec final {
@@ -62,70 +62,70 @@
 
   void swap(Vec &) noexcept;
 };
-#
-# template <typename T>
-# class Vec<T>::iterator final {
-# public:
-#   using iterator_category = std::random_access_iterator_tag;
-#   using value_type = T;
-#   using pointer = T *;
-#   using reference = T &;
-#
-#   T &operator*() const noexcept;
-#   T *operator->() const noexcept;
-#   T &operator[](ptrdiff_t) const noexcept;
-#
-#   iterator &operator++() noexcept;
-#   iterator operator++(int) noexcept;
-#   iterator &operator--() noexcept;
-#   iterator operator--(int) noexcept;
-#
-#   iterator &operator+=(ptrdiff_t) noexcept;
-#   iterator &operator-=(ptrdiff_t) noexcept;
-#   iterator operator+(ptrdiff_t) const noexcept;
-#   iterator operator-(ptrdiff_t) const noexcept;
-#   ptrdiff_t operator-(const iterator &) const noexcept;
-#
-#   bool operator==(const iterator &) const noexcept;
-#   bool operator!=(const iterator &) const noexcept;
-#   bool operator<(const iterator &) const noexcept;
-#   bool operator<=(const iterator &) const noexcept;
-#   bool operator>(const iterator &) const noexcept;
-#   bool operator>=(const iterator &) const noexcept;
-# };
-#
-# template <typename T>
-# class Vec<T>::const_iterator final {
-# public:
-#   using iterator_category = std::random_access_iterator_tag;
-#   using value_type = const T;
-#   using pointer = const T *;
-#   using reference = const T &;
-#
-#   const T &operator*() const noexcept;
-#   const T *operator->() const noexcept;
-#   const T &operator[](ptrdiff_t) const noexcept;
-#
-#   const_iterator &operator++() noexcept;
-#   const_iterator operator++(int) noexcept;
-#   const_iterator &operator--() noexcept;
-#   const_iterator operator--(int) noexcept;
-#
-#   const_iterator &operator+=(ptrdiff_t) noexcept;
-#   const_iterator &operator-=(ptrdiff_t) noexcept;
-#   const_iterator operator+(ptrdiff_t) const noexcept;
-#   const_iterator operator-(ptrdiff_t) const noexcept;
-#   ptrdiff_t operator-(const const_iterator &) const noexcept;
-#
-#   bool operator==(const const_iterator &) const noexcept;
-#   bool operator!=(const const_iterator &) const noexcept;
-#   bool operator<(const const_iterator &) const noexcept;
-#   bool operator<=(const const_iterator &) const noexcept;
-#   bool operator>(const const_iterator &) const noexcept;
-#   bool operator>=(const const_iterator &) const noexcept;
-# };
-#
-# } // namespace rust
+...
+...template <typename T>
+...class Vec<T>::iterator final {
+...public:
+...  using iterator_category = std::random_access_iterator_tag;
+...  using value_type = T;
+...  using pointer = T *;
+...  using reference = T &;
+...
+...  T &operator*() const noexcept;
+...  T *operator->() const noexcept;
+...  T &operator[](ptrdiff_t) const noexcept;
+...
+...  iterator &operator++() noexcept;
+...  iterator operator++(int) noexcept;
+...  iterator &operator--() noexcept;
+...  iterator operator--(int) noexcept;
+...
+...  iterator &operator+=(ptrdiff_t) noexcept;
+...  iterator &operator-=(ptrdiff_t) noexcept;
+...  iterator operator+(ptrdiff_t) const noexcept;
+...  iterator operator-(ptrdiff_t) const noexcept;
+...  ptrdiff_t operator-(const iterator &) const noexcept;
+...
+...  bool operator==(const iterator &) const noexcept;
+...  bool operator!=(const iterator &) const noexcept;
+...  bool operator<(const iterator &) const noexcept;
+...  bool operator<=(const iterator &) const noexcept;
+...  bool operator>(const iterator &) const noexcept;
+...  bool operator>=(const iterator &) const noexcept;
+...};
+...
+...template <typename T>
+...class Vec<T>::const_iterator final {
+...public:
+...  using iterator_category = std::random_access_iterator_tag;
+...  using value_type = const T;
+...  using pointer = const T *;
+...  using reference = const T &;
+...
+...  const T &operator*() const noexcept;
+...  const T *operator->() const noexcept;
+...  const T &operator[](ptrdiff_t) const noexcept;
+...
+...  const_iterator &operator++() noexcept;
+...  const_iterator operator++(int) noexcept;
+...  const_iterator &operator--() noexcept;
+...  const_iterator operator--(int) noexcept;
+...
+...  const_iterator &operator+=(ptrdiff_t) noexcept;
+...  const_iterator &operator-=(ptrdiff_t) noexcept;
+...  const_iterator operator+(ptrdiff_t) const noexcept;
+...  const_iterator operator-(ptrdiff_t) const noexcept;
+...  ptrdiff_t operator-(const const_iterator &) const noexcept;
+...
+...  bool operator==(const const_iterator &) const noexcept;
+...  bool operator!=(const const_iterator &) const noexcept;
+...  bool operator<(const const_iterator &) const noexcept;
+...  bool operator<=(const const_iterator &) const noexcept;
+...  bool operator>(const const_iterator &) const noexcept;
+...  bool operator>=(const const_iterator &) const noexcept;
+...};
+...
+...} // namespace rust
 ```
 
 ### Restrictions:
diff --git a/book/src/build/bazel.md b/book/src/build/bazel.md
index 6a2c82b..8bc0cf6 100644
--- a/book/src/build/bazel.md
+++ b/book/src/build/bazel.md
@@ -1,5 +1,5 @@
-{{#title Bazel, Buck — Rust ♡ C++}}
-## Bazel, Buck, potentially other similar environments
+{{#title Bazel, Buck2 — Rust ♡ C++}}
+## Bazel, Buck2, potentially other similar environments
 
 Starlark-based build systems with the ability to compile a code generator and
 invoke it as a `genrule` will run CXX's C++ code generator via its `cxxbridge`
@@ -15,11 +15,14 @@
 $  cxxbridge src/bridge.rs > path/to/bridge.rs.cc
 ```
 
-The CXX repo maintains working Bazel `BUILD` and Buck `BUCK` targets for the
-complete blobstore tutorial (chapter 3) for your reference, tested in CI. These
-aren't meant to be directly what you use in your codebase, but serve as an
+The CXX repo maintains working [Bazel] `BUILD` and [Buck2] `BUCK` targets for
+the complete blobstore tutorial (chapter 3) for your reference, tested in CI.
+These aren't meant to be directly what you use in your codebase, but serve as an
 illustration of one possible working pattern.
 
+[Bazel]: https://bazel.build
+[Buck2]: https://buck2.build
+
 ```python
 # tools/bazel/rust_cxx_bridge.bzl
 
diff --git a/book/src/build/cargo.md b/book/src/build/cargo.md
index 82ccfb5..6e9af80 100644
--- a/book/src/build/cargo.md
+++ b/book/src/build/cargo.md
@@ -12,12 +12,12 @@
 
 [cxx-build]: https://docs.rs/cxx-build
 
-```toml,hidelines
-## Cargo.toml
-# [package]
-# name = "..."
-# version = "..."
-# edition = "2018"
+```toml,hidelines=...
+# Cargo.toml
+...[package]
+...name = "..."
+...version = "..."
+...edition = "2021"
 
 [dependencies]
 cxx = "1.0"
@@ -38,7 +38,7 @@
 fn main() {
     cxx_build::bridge("src/main.rs")  // returns a cc::Build
         .file("src/demo.cc")
-        .flag_if_supported("-std=c++11")
+        .std("c++11")
         .compile("cxxbridge-demo");
 
     println!("cargo:rerun-if-changed=src/main.rs");
diff --git a/book/src/build/other.md b/book/src/build/other.md
index af835e6..c0c6e91 100644
--- a/book/src/build/other.md
+++ b/book/src/build/other.md
@@ -48,6 +48,12 @@
 choose between using the Rust toolchain (`rustc`) or the C++ toolchain which you
 may already have extensively tuned.
 
+The generated C++ code and the Rust code generated by the procedural macro both
+depend on each other. Simple examples may only require one or the other, but in
+general your linking will need to handle both directions. For some linkers, such
+as llvm-ld, this is not a problem at all. For others, such as GNU ld, flags like
+`--start-lib`/`--end-lib` may help.
+
 Rust does not generate simple standalone `.o` files, so you can't just throw the
 Rust-generated code into your existing C++ toolchain linker. Instead you need to
 choose one of these options:
diff --git a/book/src/tutorial.md b/book/src/tutorial.md
index 2467282..1182dc2 100644
--- a/book/src/tutorial.md
+++ b/book/src/tutorial.md
@@ -23,12 +23,12 @@
 
 Edit the Cargo.toml to add a dependency on the `cxx` crate:
 
-```toml,hidelines
-## Cargo.toml
-# [package]
-# name = "cxx-demo"
-# version = "0.1.0"
-# edition = "2018"
+```toml,hidelines=...
+# Cargo.toml
+...[package]
+...name = "cxx-demo"
+...version = "0.1.0"
+...edition = "2021"
 
 [dependencies]
 cxx = "1.0"
@@ -159,8 +159,8 @@
 }
 ```
 
-Using `std::make_unique` would work too, as long as you pass `-std=c++14` to the
-C++ compiler as described later on.
+Using `std::make_unique` would work too, as long as you pass `std("c++14")` to
+the C++ compiler as described later on.
 
 The placement in *include/* and *src/* is not significant; you can place C++
 code anywhere else in the crate as long as you use the right paths throughout
@@ -177,12 +177,12 @@
 We need to introduce a new build-time dependency on CXX's C++ code generator in
 Cargo.toml:
 
-```toml,hidelines
-## Cargo.toml
-# [package]
-# name = "cxx-demo"
-# version = "0.1.0"
-# edition = "2018"
+```toml,hidelines=...
+# Cargo.toml
+...[package]
+...name = "cxx-demo"
+...version = "0.1.0"
+...edition = "2021"
 
 [dependencies]
 cxx = "1.0"
@@ -204,6 +204,10 @@
     cxx_build::bridge("src/main.rs")
         .file("src/blobstore.cc")
         .compile("cxx-demo");
+
+    println!("cargo:rerun-if-changed=src/main.rs");
+    println!("cargo:rerun-if-changed=src/blobstore.cc");
+    println!("cargo:rerun-if-changed=include/blobstore.h");
 }
 ```
 
@@ -218,7 +222,7 @@
 # fn main() {
     cxx_build::bridge("src/main.rs")
         .file("src/blobstore.cc")
-        .flag_if_supported("-std=c++14")
+        .std("c++14")
         .compile("cxx-demo");
 # }
 ```
@@ -328,12 +332,12 @@
 # }
 ```
 
-```cpp,hidelines
+```cpp,hidelines=...
 // include/blobstore.h
 
-# #pragma once
-# #include <memory>
-#
+...#pragma once
+...#include <memory>
+...
 struct MultiBuf;
 
 class BlobstoreClient {
@@ -341,8 +345,8 @@
   BlobstoreClient();
   uint64_t put(MultiBuf &buf) const;
 };
-#
-#std::unique_ptr<BlobstoreClient> new_blobstore_client();
+...
+...std::unique_ptr<BlobstoreClient> new_blobstore_client();
 ```
 
 In blobstore.cc we're able to call the Rust `next_chunk` function, exposed to
@@ -350,19 +354,19 @@
 integration this generated header has a path containing the crate name, the
 relative path of the Rust source file within the crate, and a `.rs.h` extension.
 
-```cpp,hidelines
+```cpp,hidelines=...
 // src/blobstore.cc
 
-##include "cxx-demo/include/blobstore.h"
-##include "cxx-demo/src/main.rs.h"
-##include <functional>
-##include <string>
-#
-# BlobstoreClient::BlobstoreClient() {}
-#
-# std::unique_ptr<BlobstoreClient> new_blobstore_client() {
-#   return std::make_unique<BlobstoreClient>();
-# }
+#include "cxx-demo/include/blobstore.h"
+#include "cxx-demo/src/main.rs.h"
+#include <functional>
+#include <string>
+...
+...BlobstoreClient::BlobstoreClient() {}
+...
+...std::unique_ptr<BlobstoreClient> new_blobstore_client() {
+...  return std::make_unique<BlobstoreClient>();
+...}
 
 // Upload a new blob and return a blobid that serves as a handle to the blob.
 uint64_t BlobstoreClient::put(MultiBuf &buf) const {
@@ -559,12 +563,12 @@
 }
 ```
 
-```cpp,hidelines
+```cpp,hidelines=...
 // include/blobstore.h
 
-##pragma once
-##include "rust/cxx.h"
-# #include <memory>
+#pragma once
+#include "rust/cxx.h"
+...#include <memory>
 
 struct MultiBuf;
 struct BlobMetadata;
@@ -580,20 +584,20 @@
   class impl;
   std::shared_ptr<impl> impl;
 };
-#
-# std::unique_ptr<BlobstoreClient> new_blobstore_client();
+...
+...std::unique_ptr<BlobstoreClient> new_blobstore_client();
 ```
 
-```cpp,hidelines
+```cpp,hidelines=...
 // src/blobstore.cc
 
-##include "cxx-demo/include/blobstore.h"
-##include "cxx-demo/src/main.rs.h"
-##include <algorithm>
-##include <functional>
-##include <set>
-##include <string>
-##include <unordered_map>
+#include "cxx-demo/include/blobstore.h"
+#include "cxx-demo/src/main.rs.h"
+#include <algorithm>
+#include <functional>
+#include <set>
+#include <string>
+#include <unordered_map>
 
 // Toy implementation of an in-memory blobstore.
 //
@@ -609,24 +613,24 @@
 };
 
 BlobstoreClient::BlobstoreClient() : impl(new class BlobstoreClient::impl) {}
-#
-# // Upload a new blob and return a blobid that serves as a handle to the blob.
-# uint64_t BlobstoreClient::put(MultiBuf &buf) const {
-#   // Traverse the caller's chunk iterator.
-#   std::string contents;
-#   while (true) {
-#     auto chunk = next_chunk(buf);
-#     if (chunk.size() == 0) {
-#       break;
-#     }
-#     contents.append(reinterpret_cast<const char *>(chunk.data()), chunk.size());
-#   }
-#
-#   // Insert into map and provide caller the handle.
-#   auto blobid = std::hash<std::string>{}(contents);
-#   impl->blobs[blobid] = {std::move(contents), {}};
-#   return blobid;
-# }
+...
+...// Upload a new blob and return a blobid that serves as a handle to the blob.
+...uint64_t BlobstoreClient::put(MultiBuf &buf) const {
+...  // Traverse the caller's chunk iterator.
+...  std::string contents;
+...  while (true) {
+...    auto chunk = next_chunk(buf);
+...    if (chunk.size() == 0) {
+...      break;
+...    }
+...    contents.append(reinterpret_cast<const char *>(chunk.data()), chunk.size());
+...  }
+...
+...  // Insert into map and provide caller the handle.
+...  auto blobid = std::hash<std::string>{}(contents);
+...  impl->blobs[blobid] = {std::move(contents), {}};
+...  return blobid;
+...}
 
 // Add tag to an existing blob.
 void BlobstoreClient::tag(uint64_t blobid, rust::Str tag) const {
@@ -644,10 +648,10 @@
   }
   return metadata;
 }
-#
-# std::unique_ptr<BlobstoreClient> new_blobstore_client() {
-#   return std::make_unique<BlobstoreClient>();
-# }
+...
+...std::unique_ptr<BlobstoreClient> new_blobstore_client() {
+...  return std::make_unique<BlobstoreClient>();
+...}
 ```
 
 ```console
diff --git a/book/theme/head.hbs b/book/theme/head.hbs
index 4210276..d6b32cb 100644
--- a/book/theme/head.hbs
+++ b/book/theme/head.hbs
@@ -1,7 +1,7 @@
-        <script async src="https://www.googletagmanager.com/gtag/js?id=G-DG41MK6DDN"></script>
-        <script>
-          window.dataLayer = window.dataLayer || [];
-          function gtag(){dataLayer.push(arguments);}
-          gtag('js', new Date());
-          gtag('config', 'G-DG41MK6DDN', {'anonymize_ip': true});
-        </script>
+<script async src="https://www.googletagmanager.com/gtag/js?id=G-DG41MK6DDN"></script>
+<script>
+  window.dataLayer = window.dataLayer || [];
+  function gtag(){dataLayer.push(arguments);}
+  gtag('js', new Date());
+  gtag('config', 'G-DG41MK6DDN', {anonymize_ip: true, cookie_domain: 'cxx.rs', cookie_flags: 'samesite=strict;secure'});
+</script>
diff --git a/build.rs b/build.rs
index 9158b1c..eaf2447 100644
--- a/build.rs
+++ b/build.rs
@@ -1,13 +1,16 @@
 use std::env;
-use std::path::Path;
+use std::path::{Path, PathBuf};
 use std::process::Command;
 
 fn main() {
+    let manifest_dir_opt = env::var_os("CARGO_MANIFEST_DIR").map(PathBuf::from);
+    let manifest_dir = manifest_dir_opt.as_deref().unwrap_or(Path::new(""));
+
     cc::Build::new()
-        .file("src/cxx.cc")
+        .file(manifest_dir.join("src/cxx.cc"))
         .cpp(true)
         .cpp_link_stdlib(None) // linked via link-cplusplus crate
-        .flag_if_supported(cxxbridge_flags::STD)
+        .std(cxxbridge_flags::STD)
         .warnings_into_errors(cfg!(deny_warnings))
         .compile("cxxbridge1");
 
@@ -15,8 +18,8 @@
     println!("cargo:rerun-if-changed=include/cxx.h");
     println!("cargo:rustc-cfg=built_with_cargo");
 
-    if let Some(manifest_dir) = env::var_os("CARGO_MANIFEST_DIR") {
-        let cxx_h = Path::new(&manifest_dir).join("include").join("cxx.h");
+    if let Some(manifest_dir) = &manifest_dir_opt {
+        let cxx_h = manifest_dir.join("include").join("cxx.h");
         println!("cargo:HEADER={}", cxx_h.to_string_lossy());
     }
 
diff --git a/demo/BUCK b/demo/BUCK
index 8b3990c..5a02811 100644
--- a/demo/BUCK
+++ b/demo/BUCK
@@ -3,7 +3,7 @@
 rust_binary(
     name = "demo",
     srcs = glob(["src/**/*.rs"]),
-    edition = "2018",
+    edition = "2021",
     deps = [
         ":blobstore-sys",
         ":bridge",
@@ -20,7 +20,7 @@
 cxx_library(
     name = "blobstore-sys",
     srcs = ["src/blobstore.cc"],
-    compiler_flags = ["-std=c++14"],
+    preferred_linkage = "static",
     deps = [
         ":blobstore-include",
         ":bridge/include",
diff --git a/demo/BUILD b/demo/BUILD
index 3f598fe..3de1cce 100644
--- a/demo/BUILD
+++ b/demo/BUILD
@@ -5,7 +5,7 @@
 rust_binary(
     name = "demo",
     srcs = glob(["src/**/*.rs"]),
-    edition = "2018",
+    edition = "2021",
     deps = [
         ":blobstore-sys",
         ":bridge",
@@ -22,7 +22,6 @@
 cc_library(
     name = "blobstore-sys",
     srcs = ["src/blobstore.cc"],
-    copts = ["-std=c++14"],
     deps = [
         ":blobstore-include",
         ":bridge/include",
diff --git a/demo/Cargo.toml b/demo/Cargo.toml
index cee0bc2..f125cf2 100644
--- a/demo/Cargo.toml
+++ b/demo/Cargo.toml
@@ -3,7 +3,7 @@
 version = "0.0.0"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
 description = "Toy project from https://github.com/dtolnay/cxx"
-edition = "2018"
+edition = "2021"
 license = "MIT OR Apache-2.0"
 publish = false
 repository = "https://github.com/dtolnay/cxx"
diff --git a/flags/Cargo.toml b/flags/Cargo.toml
index 0baafb1..9cb88a0 100644
--- a/flags/Cargo.toml
+++ b/flags/Cargo.toml
@@ -1,10 +1,10 @@
 [package]
 name = "cxxbridge-flags"
-version = "1.0.93"
+version = "1.0.119"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
 categories = ["development-tools::ffi", "compilers"]
 description = "Compiler configuration of the `cxx` crate (implementation detail)"
-edition = "2018"
+edition = "2021"
 license = "MIT OR Apache-2.0"
 repository = "https://github.com/dtolnay/cxx"
 rust-version = "1.60"
@@ -17,3 +17,4 @@
 
 [package.metadata.docs.rs]
 targets = ["x86_64-unknown-linux-gnu"]
+rustdoc-args = ["--generate-link-to-definition"]
diff --git a/flags/src/impl.rs b/flags/src/impl.rs
index 4f7b8fb..4cf0713 100644
--- a/flags/src/impl.rs
+++ b/flags/src/impl.rs
@@ -1,20 +1,15 @@
 #[allow(unused_assignments, unused_mut, unused_variables)]
 pub const STD: &str = {
-    let mut flags = ["-std=c++11", "/std:c++11"];
+    let mut flag = "c++11";
 
     #[cfg(feature = "c++14")]
-    (flags = ["-std=c++14", "/std:c++14"]);
+    (flag = "c++14");
 
     #[cfg(feature = "c++17")]
-    (flags = ["-std=c++17", "/std:c++17"]);
+    (flag = "c++17");
 
     #[cfg(feature = "c++20")]
-    (flags = ["-std=c++20", "/std:c++20"]);
-
-    let [mut flag, msvc_flag] = flags;
-
-    #[cfg(target_env = "msvc")]
-    (flag = msvc_flag);
+    (flag = "c++20");
 
     flag
 };
diff --git a/flags/src/lib.rs b/flags/src/lib.rs
index 55172b2..899facd 100644
--- a/flags/src/lib.rs
+++ b/flags/src/lib.rs
@@ -1,6 +1,8 @@
 //! This crate is an implementation detail of the `cxx` and `cxx-build` crates,
 //! and does not expose any public API.
 
+#![allow(clippy::let_and_return)]
+
 mod r#impl;
 
 #[doc(hidden)]
diff --git a/gen/build/Cargo.toml b/gen/build/Cargo.toml
index 9b74255..ee20e2b 100644
--- a/gen/build/Cargo.toml
+++ b/gen/build/Cargo.toml
@@ -1,11 +1,11 @@
 [package]
 name = "cxx-build"
-version = "1.0.93"
+version = "1.0.119"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
 categories = ["development-tools::build-utils", "development-tools::ffi"]
 description = "C++ code generator for integrating `cxx` crate into a Cargo build."
 documentation = "https://docs.rs/cxx-build"
-edition = "2018"
+edition = "2021"
 exclude = ["build.rs"]
 homepage = "https://cxx.rs"
 keywords = ["ffi", "build-dependencies"]
@@ -19,21 +19,22 @@
 experimental-async-fn = []
 
 [dependencies]
-cc = "1.0.49"
+cc = "1.0.83"
 codespan-reporting = "0.11.1"
-once_cell = "1.9"
-proc-macro2 = { version = "1.0.39", default-features = false, features = ["span-locations"] }
-quote = { version = "1.0", default-features = false }
-scratch = "1.0"
-syn = { version = "2.0.1", default-features = false, features = ["parsing", "printing", "clone-impls", "full"] }
+once_cell = "1.18"
+proc-macro2 = { version = "1.0.74", default-features = false, features = ["span-locations"] }
+quote = { version = "1.0.35", default-features = false }
+scratch = "1.0.5"
+syn = { version = "2.0.46", default-features = false, features = ["clone-impls", "full", "parsing", "printing"] }
 
 [dev-dependencies]
 cxx = { version = "1.0", path = "../.." }
 cxx-gen = { version = "0.7", path = "../lib" }
-pkg-config = "0.3"
+pkg-config = "0.3.27"
 
 [lib]
 doc-scrape-examples = false
 
 [package.metadata.docs.rs]
 targets = ["x86_64-unknown-linux-gnu"]
+rustdoc-args = ["--generate-link-to-definition"]
diff --git a/gen/build/src/deps.rs b/gen/build/src/deps.rs
index fb80072..36f2066 100644
--- a/gen/build/src/deps.rs
+++ b/gen/build/src/deps.rs
@@ -4,19 +4,19 @@
 use std::path::PathBuf;
 
 #[derive(Default)]
-pub struct Crate {
+pub(crate) struct Crate {
     pub include_prefix: Option<PathBuf>,
     pub links: Option<OsString>,
     pub header_dirs: Vec<HeaderDir>,
 }
 
-pub struct HeaderDir {
+pub(crate) struct HeaderDir {
     pub exported: bool,
     pub path: PathBuf,
 }
 
 impl Crate {
-    pub fn print_to_cargo(&self) {
+    pub(crate) fn print_to_cargo(&self) {
         if let Some(include_prefix) = &self.include_prefix {
             println!(
                 "cargo:CXXBRIDGE_PREFIX={}",
@@ -38,7 +38,7 @@
     }
 }
 
-pub fn direct_dependencies() -> Vec<Crate> {
+pub(crate) fn direct_dependencies() -> Vec<Crate> {
     let mut crates: BTreeMap<String, Crate> = BTreeMap::new();
     let mut exported_header_dirs: BTreeMap<String, Vec<(usize, PathBuf)>> = BTreeMap::new();
 
diff --git a/gen/build/src/intern.rs b/gen/build/src/intern.rs
index c8b57d8..753e3f3 100644
--- a/gen/build/src/intern.rs
+++ b/gen/build/src/intern.rs
@@ -3,15 +3,15 @@
 use std::sync::{Mutex, PoisonError};
 
 #[derive(Copy, Clone, Default)]
-pub struct InternedString(&'static str);
+pub(crate) struct InternedString(&'static str);
 
 impl InternedString {
-    pub fn str(self) -> &'static str {
+    pub(crate) fn str(self) -> &'static str {
         self.0
     }
 }
 
-pub fn intern(s: &str) -> InternedString {
+pub(crate) fn intern(s: &str) -> InternedString {
     static INTERN: OnceCell<Mutex<Set<&'static str>>> = OnceCell::new();
 
     let mut set = INTERN
diff --git a/gen/build/src/lib.rs b/gen/build/src/lib.rs
index b6b843a..4fcb945 100644
--- a/gen/build/src/lib.rs
+++ b/gen/build/src/lib.rs
@@ -45,17 +45,17 @@
 //! $ cxxbridge src/main.rs > path/to/mybridge.cc
 //! ```
 
-#![doc(html_root_url = "https://docs.rs/cxx-build/1.0.93")]
+#![doc(html_root_url = "https://docs.rs/cxx-build/1.0.119")]
 #![allow(
     clippy::cast_sign_loss,
     clippy::default_trait_access,
     clippy::derive_partial_eq_without_eq,
     clippy::doc_markdown,
-    clippy::drop_copy,
     clippy::enum_glob_use,
     clippy::explicit_auto_deref,
     clippy::if_same_then_else,
     clippy::inherent_to_string,
+    clippy::into_iter_without_iter,
     clippy::items_after_statements,
     clippy::match_bool,
     clippy::match_on_vec_items,
@@ -65,7 +65,6 @@
     clippy::needless_pass_by_value,
     clippy::new_without_default,
     clippy::nonminimal_bool,
-    clippy::option_if_let_else,
     clippy::or_fun_call,
     clippy::redundant_else,
     clippy::shadow_unrelated,
@@ -73,12 +72,13 @@
     clippy::similar_names,
     clippy::single_match_else,
     clippy::struct_excessive_bools,
+    clippy::struct_field_names,
     clippy::too_many_arguments,
     clippy::too_many_lines,
     clippy::toplevel_ref_arg,
+    clippy::unconditional_recursion, // clippy bug: https://github.com/rust-lang/rust-clippy/issues/12133
+    clippy::uninlined_format_args,
     clippy::upper_case_acronyms,
-    // clippy bug: https://github.com/rust-lang/rust-clippy/issues/6983
-    clippy::wrong_self_convention
 )]
 
 mod cargo;
@@ -369,7 +369,7 @@
     let crate_dir = prj.out_dir.join("cxxbridge").join("crate");
     let ref link = crate_dir.join(&prj.include_prefix);
     let ref manifest_dir = prj.manifest_dir;
-    if out::symlink_dir(manifest_dir, link).is_err() && cfg!(not(unix)) {
+    if out::relative_symlink_dir(manifest_dir, link).is_err() && cfg!(not(unix)) {
         let cachedir_tag = "\
         Signature: 8a477f597d28d172789f06886806bc55\n\
         # This file is a cache directory tag created by cxx.\n\
@@ -386,11 +386,11 @@
     let cxx_h = include_dir.join("rust").join("cxx.h");
     let ref shared_cxx_h = prj.shared_dir.join("rust").join("cxx.h");
     if let Some(ref original) = env::var_os("DEP_CXXBRIDGE1_HEADER") {
-        out::symlink_file(original, cxx_h)?;
-        out::symlink_file(original, shared_cxx_h)?;
+        out::absolute_symlink_file(original, cxx_h)?;
+        out::absolute_symlink_file(original, shared_cxx_h)?;
     } else {
         out::write(shared_cxx_h, gen::include::HEADER.as_bytes())?;
-        out::symlink_file(shared_cxx_h, cxx_h)?;
+        out::relative_symlink_file(shared_cxx_h, cxx_h)?;
     }
     Ok(include_dir)
 }
@@ -414,7 +414,7 @@
     out::write(header_path, &generated.header)?;
 
     let ref link_path = include_dir.join(rel_path);
-    let _ = out::symlink_file(header_path, link_path);
+    let _ = out::relative_symlink_file(header_path, link_path);
 
     let ref rel_path_cc = rel_path.with_appended_extension(".cc");
     let ref implementation_path = sources_dir.join(rel_path_cc);
@@ -423,8 +423,8 @@
 
     let shared_h = prj.shared_dir.join(&prj.include_prefix).join(rel_path_h);
     let shared_cc = prj.shared_dir.join(&prj.include_prefix).join(rel_path_cc);
-    let _ = out::symlink_file(header_path, shared_h);
-    let _ = out::symlink_file(implementation_path, shared_cc);
+    let _ = out::relative_symlink_file(header_path, shared_h);
+    let _ = out::relative_symlink_file(implementation_path, shared_cc);
     Ok(())
 }
 
@@ -455,7 +455,7 @@
             Ok(file_type) if file_type.is_file() => {
                 let src = entry.path();
                 match src.extension().and_then(OsStr::to_str) {
-                    Some("h") | Some("hh") | Some("hpp") => {}
+                    Some("h" | "hh" | "hpp") => {}
                     _ => continue,
                 }
                 if !dst_created && fs::create_dir_all(dst).is_err() {
diff --git a/gen/build/src/out.rs b/gen/build/src/out.rs
index a52aab2..0095666 100644
--- a/gen/build/src/out.rs
+++ b/gen/build/src/out.rs
@@ -1,8 +1,8 @@
 use crate::error::{Error, Result};
 use crate::gen::fs;
 use crate::paths;
-use std::io;
-use std::path::Path;
+use std::path::{Component, Path, PathBuf};
+use std::{env, io};
 
 pub(crate) fn write(path: impl AsRef<Path>, content: &[u8]) -> Result<()> {
     let path = path.as_ref();
@@ -29,19 +29,61 @@
     }
 }
 
-pub(crate) fn symlink_file(original: impl AsRef<Path>, link: impl AsRef<Path>) -> Result<()> {
+pub(crate) fn relative_symlink_file(
+    original: impl AsRef<Path>,
+    link: impl AsRef<Path>,
+) -> Result<()> {
     let original = original.as_ref();
     let link = link.as_ref();
 
-    let mut create_dir_error = None;
+    let parent_directory_error = prepare_parent_directory_for_symlink(link).err();
+    let relativized = best_effort_relativize_symlink(original, link);
+
+    symlink_file(&relativized, original, link, parent_directory_error)
+}
+
+pub(crate) fn absolute_symlink_file(
+    original: impl AsRef<Path>,
+    link: impl AsRef<Path>,
+) -> Result<()> {
+    let original = original.as_ref();
+    let link = link.as_ref();
+
+    let parent_directory_error = prepare_parent_directory_for_symlink(link).err();
+
+    symlink_file(original, original, link, parent_directory_error)
+}
+
+pub(crate) fn relative_symlink_dir(
+    original: impl AsRef<Path>,
+    link: impl AsRef<Path>,
+) -> Result<()> {
+    let original = original.as_ref();
+    let link = link.as_ref();
+
+    let parent_directory_error = prepare_parent_directory_for_symlink(link).err();
+    let relativized = best_effort_relativize_symlink(original, link);
+
+    symlink_dir(&relativized, link, parent_directory_error)
+}
+
+fn prepare_parent_directory_for_symlink(link: &Path) -> fs::Result<()> {
     if fs::exists(link) {
         best_effort_remove(link);
+        Ok(())
     } else {
         let parent = link.parent().unwrap();
-        create_dir_error = fs::create_dir_all(parent).err();
+        fs::create_dir_all(parent)
     }
+}
 
-    match paths::symlink_or_copy(original, link) {
+fn symlink_file(
+    path_for_symlink: &Path,
+    path_for_copy: &Path,
+    link: &Path,
+    parent_directory_error: Option<fs::Error>,
+) -> Result<()> {
+    match paths::symlink_or_copy(path_for_symlink, path_for_copy, link) {
         // As long as symlink_or_copy succeeded, ignore any create_dir_all error.
         Ok(()) => Ok(()),
         Err(err) => {
@@ -57,29 +99,22 @@
             } else {
                 // If create_dir_all and symlink_or_copy both failed, prefer the
                 // first error.
-                Err(Error::Fs(create_dir_error.unwrap_or(err)))
+                Err(Error::Fs(parent_directory_error.unwrap_or(err)))
             }
         }
     }
 }
 
-pub(crate) fn symlink_dir(original: impl AsRef<Path>, link: impl AsRef<Path>) -> Result<()> {
-    let original = original.as_ref();
-    let link = link.as_ref();
-
-    let mut create_dir_error = None;
-    if fs::exists(link) {
-        best_effort_remove(link);
-    } else {
-        let parent = link.parent().unwrap();
-        create_dir_error = fs::create_dir_all(parent).err();
-    }
-
-    match fs::symlink_dir(original, link) {
+fn symlink_dir(
+    path_for_symlink: &Path,
+    link: &Path,
+    parent_directory_error: Option<fs::Error>,
+) -> Result<()> {
+    match fs::symlink_dir(path_for_symlink, link) {
         // As long as symlink_dir succeeded, ignore any create_dir_all error.
         Ok(()) => Ok(()),
         // If create_dir_all and symlink_dir both failed, prefer the first error.
-        Err(err) => Err(Error::Fs(create_dir_error.unwrap_or(err))),
+        Err(err) => Err(Error::Fs(parent_directory_error.unwrap_or(err))),
     }
 }
 
@@ -117,3 +152,155 @@
         }
     }
 }
+
+fn best_effort_relativize_symlink(original: impl AsRef<Path>, link: impl AsRef<Path>) -> PathBuf {
+    let original = original.as_ref();
+    let link = link.as_ref();
+
+    let relative_path = match abstractly_relativize_symlink(original, link) {
+        Some(relative_path) => relative_path,
+        None => return original.to_path_buf(),
+    };
+
+    // Sometimes "a/b/../c" refers to a different canonical location than "a/c".
+    // This can happen if 'b' is a symlink. The '..' canonicalizes to the parent
+    // directory of the symlink's target, not back to 'a'. In cxx-build's case
+    // someone could be using `--target-dir` with a location containing such
+    // symlinks.
+    if let Ok(original_canonical) = original.canonicalize() {
+        if let Ok(relative_canonical) = link.parent().unwrap().join(&relative_path).canonicalize() {
+            if original_canonical == relative_canonical {
+                return relative_path;
+            }
+        }
+    }
+
+    original.to_path_buf()
+}
+
+fn abstractly_relativize_symlink(
+    original: impl AsRef<Path>,
+    link: impl AsRef<Path>,
+) -> Option<PathBuf> {
+    let original = original.as_ref();
+    let link = link.as_ref();
+
+    // Relativization only makes sense if there is a semantically meaningful
+    // base directory shared between the two paths.
+    //
+    // For example /Volumes/code/library/src/lib.rs
+    //         and /Volumes/code/library/target/path/to/something.a
+    // have a meaningful shared base of /Volumes/code/library. The target and
+    // source directory only likely ever get relocated as one unit.
+    //
+    // On the other hand, /Volumes/code/library/src/lib.rs
+    //                and /Volumes/shared_target
+    // do not, since upon moving library to a different location it should
+    // continue referring to the original location of that shared Cargo target
+    // directory.
+    let likely_no_semantic_prefix = env::var_os("CARGO_TARGET_DIR").is_some();
+
+    if likely_no_semantic_prefix
+        || original.is_relative()
+        || link.is_relative()
+        || path_contains_intermediate_components(original)
+        || path_contains_intermediate_components(link)
+    {
+        return None;
+    }
+
+    let (common_prefix, rest_of_original, rest_of_link) = split_after_common_prefix(original, link);
+
+    if common_prefix == Path::new("") {
+        return None;
+    }
+
+    let mut rest_of_link = rest_of_link.components();
+    rest_of_link
+        .next_back()
+        .expect("original can't be a subdirectory of link");
+
+    let mut path_to_common_prefix = PathBuf::new();
+    while rest_of_link.next_back().is_some() {
+        path_to_common_prefix.push(Component::ParentDir);
+    }
+
+    Some(path_to_common_prefix.join(rest_of_original))
+}
+
+fn path_contains_intermediate_components(path: impl AsRef<Path>) -> bool {
+    path.as_ref()
+        .components()
+        .any(|component| component == Component::ParentDir)
+}
+
+fn split_after_common_prefix<'first, 'second>(
+    first: &'first Path,
+    second: &'second Path,
+) -> (&'first Path, &'first Path, &'second Path) {
+    let entire_first = first;
+    let mut first = first.components();
+    let mut second = second.components();
+    loop {
+        let rest_of_first = first.as_path();
+        let rest_of_second = second.as_path();
+        match (first.next(), second.next()) {
+            (Some(first_component), Some(second_component))
+                if first_component == second_component => {}
+            _ => {
+                let mut common_prefix = entire_first;
+                for _ in rest_of_first.components().rev() {
+                    if let Some(parent) = common_prefix.parent() {
+                        common_prefix = parent;
+                    } else {
+                        common_prefix = Path::new("");
+                        break;
+                    }
+                }
+                return (common_prefix, rest_of_first, rest_of_second);
+            }
+        }
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use crate::out::abstractly_relativize_symlink;
+    use std::path::Path;
+
+    #[cfg(not(windows))]
+    #[test]
+    fn test_relativize_symlink_unix() {
+        assert_eq!(
+            abstractly_relativize_symlink("/foo/bar/baz", "/foo/spam/eggs").as_deref(),
+            Some(Path::new("../bar/baz")),
+        );
+        assert_eq!(
+            abstractly_relativize_symlink("/foo/bar/../baz", "/foo/spam/eggs"),
+            None,
+        );
+        assert_eq!(
+            abstractly_relativize_symlink("/foo/bar/baz", "/foo/spam/./eggs").as_deref(),
+            Some(Path::new("../bar/baz")),
+        );
+    }
+
+    #[cfg(windows)]
+    #[test]
+    fn test_relativize_symlink_windows() {
+        use std::path::PathBuf;
+
+        let windows_target = PathBuf::from_iter(["c:\\", "windows", "foo"]);
+        let windows_link = PathBuf::from_iter(["c:\\", "users", "link"]);
+        let windows_different_volume_link = PathBuf::from_iter(["d:\\", "users", "link"]);
+
+        assert_eq!(
+            abstractly_relativize_symlink(&windows_target, windows_link).as_deref(),
+            Some(Path::new("..\\windows\\foo")),
+        );
+        assert_eq!(
+            abstractly_relativize_symlink(&windows_target, windows_different_volume_link),
+            None,
+        );
+    }
+}
diff --git a/gen/build/src/paths.rs b/gen/build/src/paths.rs
index c514a57..53445de 100644
--- a/gen/build/src/paths.rs
+++ b/gen/build/src/paths.rs
@@ -40,28 +40,37 @@
 }
 
 #[cfg(unix)]
-pub(crate) use self::fs::symlink_file as symlink_or_copy;
+pub(crate) fn symlink_or_copy(
+    path_for_symlink: impl AsRef<Path>,
+    _path_for_copy: impl AsRef<Path>,
+    link: impl AsRef<Path>,
+) -> fs::Result<()> {
+    fs::symlink_file(path_for_symlink, link)
+}
 
 #[cfg(windows)]
 pub(crate) fn symlink_or_copy(
-    original: impl AsRef<Path>,
+    path_for_symlink: impl AsRef<Path>,
+    path_for_copy: impl AsRef<Path>,
     link: impl AsRef<Path>,
 ) -> fs::Result<()> {
     // Pre-Windows 10, symlinks require admin privileges. Since Windows 10, they
     // require Developer Mode. If it fails, fall back to copying the file.
-    let original = original.as_ref();
+    let path_for_symlink = path_for_symlink.as_ref();
     let link = link.as_ref();
-    if fs::symlink_file(original, link).is_err() {
-        fs::copy(original, link)?;
+    if fs::symlink_file(path_for_symlink, link).is_err() {
+        let path_for_copy = path_for_copy.as_ref();
+        fs::copy(path_for_copy, link)?;
     }
     Ok(())
 }
 
 #[cfg(not(any(unix, windows)))]
 pub(crate) fn symlink_or_copy(
-    original: impl AsRef<Path>,
+    _path_for_symlink: impl AsRef<Path>,
+    path_for_copy: impl AsRef<Path>,
     copy: impl AsRef<Path>,
 ) -> fs::Result<()> {
-    fs::copy(original, copy)?;
+    fs::copy(path_for_copy, copy)?;
     Ok(())
 }
diff --git a/gen/build/src/vec.rs b/gen/build/src/vec.rs
index ac9235e..ccc9895 100644
--- a/gen/build/src/vec.rs
+++ b/gen/build/src/vec.rs
@@ -1,7 +1,7 @@
 use crate::intern::{self, InternedString};
 use std::path::Path;
 
-pub trait InternedVec<T>
+pub(crate) trait InternedVec<T>
 where
     T: ?Sized,
 {
@@ -17,14 +17,14 @@
     }
 }
 
-pub fn intern<T>(elements: &[&T]) -> Vec<InternedString>
+pub(crate) fn intern<T>(elements: &[&T]) -> Vec<InternedString>
 where
     T: ?Sized + Element,
 {
     elements.iter().copied().map(Element::intern).collect()
 }
 
-pub trait Element {
+pub(crate) trait Element {
     fn intern(&self) -> InternedString;
     fn unintern(_: InternedString) -> &'static Self;
 }
diff --git a/gen/cmd/Android.bp b/gen/cmd/Android.bp
index 688e996..b0d6ad4 100644
--- a/gen/cmd/Android.bp
+++ b/gen/cmd/Android.bp
@@ -17,7 +17,7 @@
     cargo_env_compat: true,
     cargo_pkg_version: "1.0.93",
     srcs: ["src/main.rs"],
-    edition: "2018",
+    edition: "2021",
     rustlibs: [
         "libclap",
         "libcodespan_reporting",
diff --git a/gen/cmd/Cargo.toml b/gen/cmd/Cargo.toml
index 0026a53..fef5b8c 100644
--- a/gen/cmd/Cargo.toml
+++ b/gen/cmd/Cargo.toml
@@ -1,10 +1,10 @@
 [package]
 name = "cxxbridge-cmd"
-version = "1.0.93"
+version = "1.0.119"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
 categories = ["development-tools::build-utils", "development-tools::ffi"]
 description = "C++ code generator for integrating `cxx` crate into a non-Cargo build."
-edition = "2018"
+edition = "2021"
 exclude = ["build.rs"]
 homepage = "https://cxx.rs"
 keywords = ["ffi"]
@@ -21,11 +21,11 @@
 experimental-async-fn = []
 
 [dependencies]
-clap = { version = "4", default-features = false, features = ["error-context", "help", "std", "suggestions", "usage"] }
-codespan-reporting = "0.11"
-proc-macro2 = { version = "1.0.39", default-features = false, features = ["span-locations"] }
-quote = { version = "1.0", default-features = false }
-syn = { version = "2.0.1", default-features = false, features = ["parsing", "printing", "clone-impls", "full"] }
+clap = { version = "4.3.11", default-features = false, features = ["error-context", "help", "std", "suggestions", "usage"] }
+codespan-reporting = "0.11.1"
+proc-macro2 = { version = "1.0.74", default-features = false, features = ["span-locations"] }
+quote = { version = "1.0.35", default-features = false }
+syn = { version = "2.0.46", default-features = false, features = ["clone-impls", "full", "parsing", "printing"] }
 
 [package.metadata.docs.rs]
 targets = ["x86_64-unknown-linux-gnu"]
diff --git a/gen/cmd/src/app.rs b/gen/cmd/src/app.rs
index bfad856..645b05d 100644
--- a/gen/cmd/src/app.rs
+++ b/gen/cmd/src/app.rs
@@ -84,7 +84,7 @@
                 }
             } else {
                 Include {
-                    path: include.to_owned(),
+                    path: include.clone(),
                     kind: IncludeKind::Quoted,
                 }
             }
@@ -122,7 +122,7 @@
 fn arg_input() -> Arg {
     Arg::new(INPUT)
         .help("Input Rust source file containing #[cxx::bridge].")
-        .required_unless_present_any(&[HEADER, HELP])
+        .required_unless_present_any([HEADER, HELP])
         .value_parser(ValueParser::path_buf())
 }
 
diff --git a/gen/cmd/src/cfg.rs b/gen/cmd/src/cfg.rs
index 29f0b9b..92b954c 100644
--- a/gen/cmd/src/cfg.rs
+++ b/gen/cmd/src/cfg.rs
@@ -5,7 +5,7 @@
 use syn::{Ident, LitBool, LitStr, Token};
 
 #[derive(Ord, PartialOrd, Eq, PartialEq)]
-pub enum CfgValue {
+pub(crate) enum CfgValue {
     Bool(bool),
     Str(String),
 }
@@ -15,12 +15,12 @@
     const TRUE: Self = CfgValue::Bool(true);
 }
 
-pub struct FlagsCfgEvaluator {
+pub(crate) struct FlagsCfgEvaluator {
     map: Map<String, Set<CfgValue>>,
 }
 
 impl FlagsCfgEvaluator {
-    pub fn new(map: Map<String, Set<CfgValue>>) -> Self {
+    pub(crate) fn new(map: Map<String, Set<CfgValue>>) -> Self {
         FlagsCfgEvaluator { map }
     }
 }
@@ -73,7 +73,7 @@
     }
 }
 
-pub fn parse(input: ParseStream) -> syn::Result<(String, CfgValue)> {
+pub(crate) fn parse(input: ParseStream) -> syn::Result<(String, CfgValue)> {
     let ident: Ident = input.parse()?;
     let name = ident.to_string();
     if input.is_empty() {
diff --git a/gen/cmd/src/main.rs b/gen/cmd/src/main.rs
index 4d5edfd..227a363 100644
--- a/gen/cmd/src/main.rs
+++ b/gen/cmd/src/main.rs
@@ -6,8 +6,10 @@
     clippy::enum_glob_use,
     clippy::if_same_then_else,
     clippy::inherent_to_string,
+    clippy::into_iter_without_iter,
     clippy::items_after_statements,
     clippy::large_enum_variant,
+    clippy::map_clone,
     clippy::match_bool,
     clippy::match_on_vec_items,
     clippy::match_same_arms,
@@ -15,18 +17,16 @@
     clippy::needless_pass_by_value,
     clippy::new_without_default,
     clippy::nonminimal_bool,
-    clippy::option_if_let_else,
     clippy::or_fun_call,
     clippy::redundant_else,
     clippy::shadow_unrelated,
     clippy::similar_names,
     clippy::single_match_else,
     clippy::struct_excessive_bools,
+    clippy::struct_field_names,
     clippy::too_many_arguments,
     clippy::too_many_lines,
-    clippy::toplevel_ref_arg,
-    // clippy bug: https://github.com/rust-lang/rust-clippy/issues/6983
-    clippy::wrong_self_convention
+    clippy::toplevel_ref_arg
 )]
 
 mod app;
diff --git a/gen/lib/Android.bp b/gen/lib/Android.bp
index 6c8728b..bcafaa5 100644
--- a/gen/lib/Android.bp
+++ b/gen/lib/Android.bp
@@ -7,7 +7,7 @@
     cargo_env_compat: true,
     cargo_pkg_version: "0.7.93",
     srcs: ["src/lib.rs"],
-    edition: "2018",
+    edition: "2021",
     rustlibs: [
         "libcodespan_reporting",
         "libproc_macro2",
diff --git a/gen/lib/Cargo.toml b/gen/lib/Cargo.toml
index b4f45b6..2e400ff 100644
--- a/gen/lib/Cargo.toml
+++ b/gen/lib/Cargo.toml
@@ -1,10 +1,11 @@
 [package]
 name = "cxx-gen"
-version = "0.7.93"
+version = "0.7.119"
 authors = ["Adrian Taylor <adetaylor@chromium.org>"]
 categories = ["development-tools::ffi"]
 description = "C++ code generator for integrating `cxx` crate into higher level tools."
-edition = "2018"
+documentation = "https://docs.rs/cxx-gen"
+edition = "2021"
 exclude = ["build.rs"]
 keywords = ["ffi"]
 license = "MIT OR Apache-2.0"
@@ -12,13 +13,14 @@
 rust-version = "1.60"
 
 [dependencies]
-codespan-reporting = "0.11"
-proc-macro2 = { version = "1.0.39", default-features = false, features = ["span-locations"] }
-quote = { version = "1.0", default-features = false }
-syn = { version = "2.0.1", default-features = false, features = ["parsing", "printing", "clone-impls", "full"] }
+codespan-reporting = "0.11.1"
+proc-macro2 = { version = "1.0.74", default-features = false, features = ["span-locations"] }
+quote = { version = "1.0.35", default-features = false }
+syn = { version = "2.0.46", default-features = false, features = ["clone-impls", "full", "parsing", "printing"] }
 
 [lib]
 doc-scrape-examples = false
 
 [package.metadata.docs.rs]
 targets = ["x86_64-unknown-linux-gnu"]
+rustdoc-args = ["--generate-link-to-definition"]
diff --git a/gen/lib/src/error.rs b/gen/lib/src/error.rs
index bb53a7f..79a27bd 100644
--- a/gen/lib/src/error.rs
+++ b/gen/lib/src/error.rs
@@ -3,12 +3,23 @@
 
 use std::error::Error as StdError;
 use std::fmt::{self, Debug, Display};
+use std::iter;
 
 #[allow(missing_docs)]
 pub struct Error {
     pub(crate) err: crate::gen::Error,
 }
 
+impl Error {
+    /// Returns the span of the error, if available.
+    pub fn span(&self) -> Option<proc_macro2::Span> {
+        match &self.err {
+            crate::gen::Error::Syn(err) => Some(err.span()),
+            _ => None,
+        }
+    }
+}
+
 impl From<crate::gen::Error> for Error {
     fn from(err: crate::gen::Error) -> Self {
         Error { err }
@@ -32,3 +43,33 @@
         self.err.source()
     }
 }
+
+impl IntoIterator for Error {
+    type Item = Error;
+    type IntoIter = IntoIter;
+
+    fn into_iter(self) -> Self::IntoIter {
+        match self.err {
+            crate::gen::Error::Syn(err) => IntoIter::Syn(err.into_iter()),
+            _ => IntoIter::Other(iter::once(self)),
+        }
+    }
+}
+
+pub enum IntoIter {
+    Syn(<syn::Error as IntoIterator>::IntoIter),
+    Other(iter::Once<Error>),
+}
+
+impl Iterator for IntoIter {
+    type Item = Error;
+
+    fn next(&mut self) -> Option<Self::Item> {
+        match self {
+            IntoIter::Syn(iter) => iter
+                .next()
+                .map(|syn_err| Error::from(crate::gen::Error::Syn(syn_err))),
+            IntoIter::Other(iter) => iter.next(),
+        }
+    }
+}
diff --git a/gen/lib/src/lib.rs b/gen/lib/src/lib.rs
index 36680b9..1265860 100644
--- a/gen/lib/src/lib.rs
+++ b/gen/lib/src/lib.rs
@@ -7,7 +7,7 @@
 //! [dtolnay/cxx#235]: https://github.com/dtolnay/cxx/issues/235
 //! [https://github.com/google/autocxx]: https://github.com/google/autocxx
 
-#![doc(html_root_url = "https://docs.rs/cxx-gen/0.7.93")]
+#![doc(html_root_url = "https://docs.rs/cxx-gen/0.7.119")]
 #![deny(missing_docs)]
 #![allow(dead_code)]
 #![allow(
@@ -17,27 +17,28 @@
     clippy::enum_glob_use,
     clippy::if_same_then_else,
     clippy::inherent_to_string,
+    clippy::into_iter_without_iter,
     clippy::items_after_statements,
     clippy::match_bool,
     clippy::match_on_vec_items,
     clippy::match_same_arms,
     clippy::missing_errors_doc,
     clippy::module_name_repetitions,
+    clippy::must_use_candidate,
     clippy::needless_pass_by_value,
     clippy::new_without_default,
     clippy::nonminimal_bool,
-    clippy::option_if_let_else,
     clippy::or_fun_call,
     clippy::redundant_else,
     clippy::shadow_unrelated,
     clippy::similar_names,
     clippy::single_match_else,
     clippy::struct_excessive_bools,
+    clippy::struct_field_names,
     clippy::too_many_arguments,
     clippy::too_many_lines,
     clippy::toplevel_ref_arg,
-    // clippy bug: https://github.com/rust-lang/rust-clippy/issues/6983
-    clippy::wrong_self_convention
+    clippy::uninlined_format_args
 )]
 
 mod error;
diff --git a/gen/lib/tests/test.rs b/gen/lib/tests/test.rs
index d035b52..478daee 100644
--- a/gen/lib/tests/test.rs
+++ b/gen/lib/tests/test.rs
@@ -24,5 +24,5 @@
 fn test_negative() {
     let rs = quote! {};
     let opt = Opt::default();
-    assert!(cxx_gen::generate_header_and_cc(rs, &opt).is_err())
+    assert!(cxx_gen::generate_header_and_cc(rs, &opt).is_err());
 }
diff --git a/gen/src/block.rs b/gen/src/block.rs
index 96a9a6e..4e6e6d2 100644
--- a/gen/src/block.rs
+++ b/gen/src/block.rs
@@ -1,7 +1,7 @@
 use proc_macro2::Ident;
 
 #[derive(Copy, Clone, PartialEq, Debug)]
-pub enum Block<'a> {
+pub(crate) enum Block<'a> {
     AnonymousNamespace,
     Namespace(&'static str),
     UserDefinedNamespace(&'a Ident),
@@ -10,7 +10,7 @@
 }
 
 impl<'a> Block<'a> {
-    pub fn write_begin(self, out: &mut String) {
+    pub(crate) fn write_begin(self, out: &mut String) {
         if let Block::InlineNamespace(_) = self {
             out.push_str("inline ");
         }
@@ -18,7 +18,7 @@
         out.push_str(" {\n");
     }
 
-    pub fn write_end(self, out: &mut String) {
+    pub(crate) fn write_end(self, out: &mut String) {
         out.push_str("} // ");
         self.write_common(out);
         out.push('\n');
diff --git a/gen/src/builtin.rs b/gen/src/builtin.rs
index 277c64f..d38473a 100644
--- a/gen/src/builtin.rs
+++ b/gen/src/builtin.rs
@@ -3,7 +3,7 @@
 use crate::gen::out::{Content, OutFile};
 
 #[derive(Default, PartialEq)]
-pub struct Builtins<'a> {
+pub(crate) struct Builtins<'a> {
     pub panic: bool,
     pub rust_string: bool,
     pub rust_str: bool,
@@ -36,7 +36,7 @@
 }
 
 impl<'a> Builtins<'a> {
-    pub fn new() -> Self {
+    pub(crate) fn new() -> Self {
         Builtins::default()
     }
 }
diff --git a/gen/src/cfg.rs b/gen/src/cfg.rs
index da58908..adab6e5 100644
--- a/gen/src/cfg.rs
+++ b/gen/src/cfg.rs
@@ -4,7 +4,7 @@
 use crate::syntax::Api;
 use quote::quote;
 use std::collections::BTreeSet as Set;
-use syn::Error;
+use syn::{Error, LitStr};
 
 pub(super) struct UnsupportedCfgEvaluator;
 
@@ -61,7 +61,7 @@
         CfgExpr::Unconditional => Ok(true),
         CfgExpr::Eq(ident, string) => {
             let key = ident.to_string();
-            let value = string.as_ref().map(|string| string.value());
+            let value = string.as_ref().map(LitStr::value);
             match cfg_evaluator.eval(&key, value.as_deref()) {
                 CfgResult::True => Ok(true),
                 CfgResult::False => Ok(false),
diff --git a/gen/src/check.rs b/gen/src/check.rs
index 15add20..4b37320 100644
--- a/gen/src/check.rs
+++ b/gen/src/check.rs
@@ -16,7 +16,7 @@
     for api in apis {
         if let Api::Include(include) = api {
             let first_component = Path::new(&include.path).components().next();
-            if let Some(Component::CurDir) | Some(Component::ParentDir) = first_component {
+            if let Some(Component::CurDir | Component::ParentDir) = first_component {
                 let begin = quote_spanned!(include.begin_span=> .);
                 let end = quote_spanned!(include.end_span=> .);
                 let span = quote!(#begin #end);
diff --git a/gen/src/error.rs b/gen/src/error.rs
index 3672e26..fc42c5c 100644
--- a/gen/src/error.rs
+++ b/gen/src/error.rs
@@ -40,7 +40,7 @@
             Error::Fs(err) => err.source(),
             Error::Utf8(_, err) => Some(err),
             Error::Syn(err) => err.source(),
-            _ => None,
+            Error::NoBridgeMod => None,
         }
     }
 }
diff --git a/gen/src/file.rs b/gen/src/file.rs
index 4e4259e..d55021a 100644
--- a/gen/src/file.rs
+++ b/gen/src/file.rs
@@ -4,7 +4,7 @@
 use syn::parse::{Error, Parse, ParseStream, Result};
 use syn::{braced, Attribute, Ident, Item, Meta, Token, Visibility};
 
-pub struct File {
+pub(crate) struct File {
     pub modules: Vec<Module>,
 }
 
diff --git a/gen/src/fs.rs b/gen/src/fs.rs
index 7bc3bbc..a96b551 100644
--- a/gen/src/fs.rs
+++ b/gen/src/fs.rs
@@ -14,7 +14,7 @@
 }
 
 impl Error {
-    pub fn kind(&self) -> io::ErrorKind {
+    pub(crate) fn kind(&self) -> io::ErrorKind {
         match &self.source {
             Some(io_error) => io_error.kind(),
             None => io::ErrorKind::Other,
diff --git a/gen/src/include.rs b/gen/src/include.rs
index 62c9232..3b137c7 100644
--- a/gen/src/include.rs
+++ b/gen/src/include.rs
@@ -19,7 +19,7 @@
 }
 
 #[derive(Default, PartialEq)]
-pub struct Includes<'a> {
+pub(crate) struct Includes<'a> {
     pub custom: Vec<Include>,
     pub algorithm: bool,
     pub array: bool,
@@ -44,15 +44,15 @@
 }
 
 impl<'a> Includes<'a> {
-    pub fn new() -> Self {
+    pub(crate) fn new() -> Self {
         Includes::default()
     }
 
-    pub fn insert(&mut self, include: impl Into<Include>) {
+    pub(crate) fn insert(&mut self, include: impl Into<Include>) {
         self.custom.push(include.into());
     }
 
-    pub fn has_cxx_header(&self) -> bool {
+    pub(crate) fn has_cxx_header(&self) -> bool {
         self.custom
             .iter()
             .any(|header| header.path == "rust/cxx.h" || header.path == "rust\\cxx.h")
diff --git a/gen/src/mod.rs b/gen/src/mod.rs
index f24846a..7e8ff28 100644
--- a/gen/src/mod.rs
+++ b/gen/src/mod.rs
@@ -124,7 +124,6 @@
         let shebang_end = source.find('\n').unwrap_or(source.len());
         source = &source[shebang_end..];
     }
-    proc_macro2::fallback::force();
     let syntax: File = syn::parse_str(source)?;
     generate(syntax, opt)
 }
diff --git a/gen/src/names.rs b/gen/src/names.rs
index 834424b..620aaa8 100644
--- a/gen/src/names.rs
+++ b/gen/src/names.rs
@@ -1,7 +1,7 @@
 use crate::syntax::Pair;
 
 impl Pair {
-    pub fn to_fully_qualified(&self) -> String {
+    pub(crate) fn to_fully_qualified(&self) -> String {
         let mut fully_qualified = String::new();
         for segment in &self.namespace {
             fully_qualified += "::";
diff --git a/gen/src/namespace.rs b/gen/src/namespace.rs
index b79c38f..424e9d8 100644
--- a/gen/src/namespace.rs
+++ b/gen/src/namespace.rs
@@ -2,7 +2,7 @@
 use crate::syntax::Api;
 
 impl Api {
-    pub fn namespace(&self) -> &Namespace {
+    pub(crate) fn namespace(&self) -> &Namespace {
         match self {
             Api::CxxFunction(efn) | Api::RustFunction(efn) => &efn.name.namespace,
             Api::CxxType(ety) | Api::RustType(ety) => &ety.name.namespace,
diff --git a/gen/src/nested.rs b/gen/src/nested.rs
index 32cc5f1..7b32666 100644
--- a/gen/src/nested.rs
+++ b/gen/src/nested.rs
@@ -2,21 +2,23 @@
 use crate::syntax::Api;
 use proc_macro2::Ident;
 
-pub struct NamespaceEntries<'a> {
+pub(crate) struct NamespaceEntries<'a> {
     direct: Vec<&'a Api>,
     nested: Vec<(&'a Ident, NamespaceEntries<'a>)>,
 }
 
 impl<'a> NamespaceEntries<'a> {
-    pub fn new(apis: Vec<&'a Api>) -> Self {
+    pub(crate) fn new(apis: Vec<&'a Api>) -> Self {
         sort_by_inner_namespace(apis, 0)
     }
 
-    pub fn direct_content(&self) -> &[&'a Api] {
+    pub(crate) fn direct_content(&self) -> &[&'a Api] {
         &self.direct
     }
 
-    pub fn nested_content(&self) -> impl Iterator<Item = (&'a Ident, &NamespaceEntries<'a>)> {
+    pub(crate) fn nested_content(
+        &self,
+    ) -> impl Iterator<Item = (&'a Ident, &NamespaceEntries<'a>)> {
         self.nested.iter().map(|(k, entries)| (*k, entries))
     }
 }
@@ -56,7 +58,6 @@
     use crate::syntax::namespace::Namespace;
     use crate::syntax::{Api, Doc, ExternType, ForeignName, Lang, Lifetimes, Pair};
     use proc_macro2::{Ident, Span};
-    use std::iter::FromIterator;
     use syn::punctuated::Punctuated;
     use syn::Token;
 
diff --git a/gen/src/out.rs b/gen/src/out.rs
index 3b4d739..1cce363 100644
--- a/gen/src/out.rs
+++ b/gen/src/out.rs
@@ -17,7 +17,7 @@
 }
 
 #[derive(Default)]
-pub struct Content<'a> {
+pub(crate) struct Content<'a> {
     bytes: String,
     namespace: &'a Namespace,
     blocks: Vec<BlockBoundary<'a>>,
@@ -32,7 +32,7 @@
 }
 
 impl<'a> OutFile<'a> {
-    pub fn new(header: bool, opt: &'a Opt, types: &'a Types) -> Self {
+    pub(crate) fn new(header: bool, opt: &'a Opt, types: &'a Types) -> Self {
         OutFile {
             header,
             opt,
@@ -44,28 +44,28 @@
     }
 
     // Write a blank line if the preceding section had any contents.
-    pub fn next_section(&mut self) {
+    pub(crate) fn next_section(&mut self) {
         self.content.get_mut().next_section();
     }
 
-    pub fn begin_block(&mut self, block: Block<'a>) {
+    pub(crate) fn begin_block(&mut self, block: Block<'a>) {
         self.content.get_mut().begin_block(block);
     }
 
-    pub fn end_block(&mut self, block: Block<'a>) {
+    pub(crate) fn end_block(&mut self, block: Block<'a>) {
         self.content.get_mut().end_block(block);
     }
 
-    pub fn set_namespace(&mut self, namespace: &'a Namespace) {
+    pub(crate) fn set_namespace(&mut self, namespace: &'a Namespace) {
         self.content.get_mut().set_namespace(namespace);
     }
 
-    pub fn write_fmt(&self, args: Arguments) {
+    pub(crate) fn write_fmt(&self, args: Arguments) {
         let content = &mut *self.content.borrow_mut();
         Write::write_fmt(content, args).unwrap();
     }
 
-    pub fn content(&mut self) -> Vec<u8> {
+    pub(crate) fn content(&mut self) -> Vec<u8> {
         self.flush();
         let include = &self.include.content.bytes;
         let builtin = &self.builtin.content.bytes;
@@ -112,19 +112,19 @@
         Content::default()
     }
 
-    pub fn next_section(&mut self) {
+    pub(crate) fn next_section(&mut self) {
         self.section_pending = true;
     }
 
-    pub fn begin_block(&mut self, block: Block<'a>) {
+    pub(crate) fn begin_block(&mut self, block: Block<'a>) {
         self.push_block_boundary(BlockBoundary::Begin(block));
     }
 
-    pub fn end_block(&mut self, block: Block<'a>) {
+    pub(crate) fn end_block(&mut self, block: Block<'a>) {
         self.push_block_boundary(BlockBoundary::End(block));
     }
 
-    pub fn set_namespace(&mut self, namespace: &'a Namespace) {
+    pub(crate) fn set_namespace(&mut self, namespace: &'a Namespace) {
         for name in self.namespace.iter().rev() {
             self.end_block(Block::UserDefinedNamespace(name));
         }
@@ -134,7 +134,7 @@
         self.namespace = namespace;
     }
 
-    pub fn write_fmt(&mut self, args: Arguments) {
+    pub(crate) fn write_fmt(&mut self, args: Arguments) {
         Write::write_fmt(self, args).unwrap();
     }
 
diff --git a/gen/src/write.rs b/gen/src/write.rs
index 6f535cc..89037e1 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -85,10 +85,10 @@
         match api {
             Api::Struct(strct) if !structs_written.contains(&strct.name.rust) => {
                 for next in &mut toposorted_structs {
-                    if !out.types.cxx.contains(&strct.name.rust) {
+                    if !out.types.cxx.contains(&next.name.rust) {
                         out.next_section();
                         let methods = methods_for_type
-                            .get(&strct.name.rust)
+                            .get(&next.name.rust)
                             .map(Vec::as_slice)
                             .unwrap_or_default();
                         write_struct(out, next, methods);
@@ -129,7 +129,7 @@
     for api in apis {
         if let Api::TypeAlias(ety) = api {
             if let Some(reasons) = out.types.required_trivial.get(&ety.name.rust) {
-                check_trivial_extern_type(out, ety, reasons)
+                check_trivial_extern_type(out, ety, reasons);
             }
         }
     }
@@ -205,13 +205,12 @@
     for ty in out.types {
         match ty {
             Type::Ident(ident) => match Atom::from(&ident.rust) {
-                Some(U8) | Some(U16) | Some(U32) | Some(U64) | Some(I8) | Some(I16) | Some(I32)
-                | Some(I64) => out.include.cstdint = true,
+                Some(U8 | U16 | U32 | U64 | I8 | I16 | I32 | I64) => out.include.cstdint = true,
                 Some(Usize) => out.include.cstddef = true,
                 Some(Isize) => out.builtin.rust_isize = true,
                 Some(CxxString) => out.include.string = true,
                 Some(RustString) => out.builtin.rust_string = true,
-                Some(Bool) | Some(Char) | Some(F32) | Some(F64) | None => {}
+                Some(Bool | Char | F32 | F64) | None => {}
             },
             Type::RustBox(_) => out.builtin.rust_box = true,
             Type::RustVec(_) => out.builtin.rust_vec = true,
@@ -848,7 +847,7 @@
     match &efn.ret {
         Some(Type::RustBox(_)) => write!(out, ".into_raw()"),
         Some(Type::UniquePtr(_)) => write!(out, ".release()"),
-        Some(Type::Str(_)) | Some(Type::SliceRef(_)) if !indirect_return => write!(out, ")"),
+        Some(Type::Str(_) | Type::SliceRef(_)) if !indirect_return => write!(out, ")"),
         _ => {}
     }
     if indirect_return {
@@ -1182,7 +1181,7 @@
 
 fn write_extern_return_type_space(out: &mut OutFile, ty: &Option<Type>) {
     match ty {
-        Some(Type::RustBox(ty)) | Some(Type::UniquePtr(ty)) => {
+        Some(Type::RustBox(ty) | Type::UniquePtr(ty)) => {
             write_type_space(out, &ty.inner);
             write!(out, "*");
         }
@@ -1193,7 +1192,7 @@
             }
             write!(out, "*");
         }
-        Some(Type::Str(_)) | Some(Type::SliceRef(_)) => {
+        Some(Type::Str(_) | Type::SliceRef(_)) => {
             out.builtin.repr_fat = true;
             write!(out, "::rust::repr::Fat ");
         }
@@ -1672,6 +1671,7 @@
         "static_assert(alignof(::std::unique_ptr<{}>) == alignof(void *), \"\");",
         inner,
     );
+
     begin_function_definition(out);
     writeln!(
         out,
@@ -1680,6 +1680,7 @@
     );
     writeln!(out, "  ::new (ptr) ::std::unique_ptr<{}>();", inner);
     writeln!(out, "}}");
+
     if can_construct_from_value {
         out.builtin.maybe_uninit = true;
         begin_function_definition(out);
@@ -1697,6 +1698,7 @@
         writeln!(out, "  return uninit;");
         writeln!(out, "}}");
     }
+
     begin_function_definition(out);
     writeln!(
         out,
@@ -1705,6 +1707,7 @@
     );
     writeln!(out, "  ::new (ptr) ::std::unique_ptr<{}>(raw);", inner);
     writeln!(out, "}}");
+
     begin_function_definition(out);
     writeln!(
         out,
@@ -1713,6 +1716,7 @@
     );
     writeln!(out, "  return ptr.get();");
     writeln!(out, "}}");
+
     begin_function_definition(out);
     writeln!(
         out,
@@ -1721,6 +1725,7 @@
     );
     writeln!(out, "  return ptr.release();");
     writeln!(out, "}}");
+
     begin_function_definition(out);
     writeln!(
         out,
@@ -1765,6 +1770,7 @@
         "static_assert(alignof(::std::shared_ptr<{}>) == alignof(void *), \"\");",
         inner,
     );
+
     begin_function_definition(out);
     writeln!(
         out,
@@ -1773,6 +1779,7 @@
     );
     writeln!(out, "  ::new (ptr) ::std::shared_ptr<{}>();", inner);
     writeln!(out, "}}");
+
     if can_construct_from_value {
         out.builtin.maybe_uninit = true;
         begin_function_definition(out);
@@ -1790,6 +1797,7 @@
         writeln!(out, "  return uninit;");
         writeln!(out, "}}");
     }
+
     begin_function_definition(out);
     writeln!(
         out,
@@ -1798,6 +1806,7 @@
     );
     writeln!(out, "  ::new (ptr) ::std::shared_ptr<{}>(self);", inner);
     writeln!(out, "}}");
+
     begin_function_definition(out);
     writeln!(
         out,
@@ -1806,6 +1815,7 @@
     );
     writeln!(out, "  return self.get();");
     writeln!(out, "}}");
+
     begin_function_definition(out);
     writeln!(
         out,
@@ -1834,6 +1844,8 @@
         "static_assert(alignof(::std::weak_ptr<{}>) == alignof(void *), \"\");",
         inner,
     );
+
+    begin_function_definition(out);
     writeln!(
         out,
         "void cxxbridge1$weak_ptr${}$null(::std::weak_ptr<{}> *ptr) noexcept {{",
@@ -1841,6 +1853,7 @@
     );
     writeln!(out, "  ::new (ptr) ::std::weak_ptr<{}>();", inner);
     writeln!(out, "}}");
+
     begin_function_definition(out);
     writeln!(
         out,
@@ -1849,6 +1862,7 @@
     );
     writeln!(out, "  ::new (ptr) ::std::weak_ptr<{}>(self);", inner);
     writeln!(out, "}}");
+
     begin_function_definition(out);
     writeln!(
         out,
@@ -1857,6 +1871,7 @@
     );
     writeln!(out, "  ::new (weak) ::std::weak_ptr<{}>(shared);", inner);
     writeln!(out, "}}");
+
     begin_function_definition(out);
     writeln!(
         out,
@@ -1869,6 +1884,7 @@
         inner,
     );
     writeln!(out, "}}");
+
     begin_function_definition(out);
     writeln!(
         out,
@@ -1888,6 +1904,16 @@
     out.include.utility = true;
     out.builtin.destroy = true;
 
+    begin_function_definition(out);
+    writeln!(
+        out,
+        "::std::vector<{}> *cxxbridge1$std$vector${}$new() noexcept {{",
+        inner, instance,
+    );
+    writeln!(out, "  return new ::std::vector<{}>();", inner);
+    writeln!(out, "}}");
+
+    begin_function_definition(out);
     writeln!(
         out,
         "::std::size_t cxxbridge1$std$vector${}$size(::std::vector<{}> const &s) noexcept {{",
diff --git a/include/cxx.h b/include/cxx.h
index 907ee82..0022825 100644
--- a/include/cxx.h
+++ b/include/cxx.h
@@ -659,7 +659,8 @@
 Slice<T>::iterator::operator-(const iterator &other) const noexcept {
   auto diff = std::distance(static_cast<char *>(other.pos),
                             static_cast<char *>(this->pos));
-  return diff / this->stride;
+  return diff / static_cast<typename Slice<T>::iterator::difference_type>(
+                    this->stride);
 }
 
 template <typename T>
diff --git a/macro/Android.bp b/macro/Android.bp
index f833c43..d5a7405 100644
--- a/macro/Android.bp
+++ b/macro/Android.bp
@@ -17,7 +17,7 @@
     cargo_env_compat: true,
     cargo_pkg_version: "1.0.93",
     srcs: ["src/lib.rs"],
-    edition: "2018",
+    edition: "2021",
     rustlibs: [
         "libproc_macro2",
         "libquote",
diff --git a/macro/Cargo.toml b/macro/Cargo.toml
index 89d9702..c81bc09 100644
--- a/macro/Cargo.toml
+++ b/macro/Cargo.toml
@@ -1,10 +1,10 @@
 [package]
 name = "cxxbridge-macro"
-version = "1.0.93"
+version = "1.0.119"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
 categories = ["development-tools::ffi"]
 description = "Implementation detail of the `cxx` crate."
-edition = "2018"
+edition = "2021"
 exclude = ["build.rs", "README.md"]
 homepage = "https://cxx.rs"
 keywords = ["ffi"]
@@ -18,22 +18,24 @@
 [features]
 # incomplete features that are not covered by a compatibility guarantee:
 experimental-async-fn = []
-experimental-enum-variants-from-header = ["clang-ast", "flate2", "memmap", "serde", "serde_json"]
+experimental-enum-variants-from-header = ["clang-ast", "flate2", "memmap", "serde", "serde_derive", "serde_json"]
 
 [dependencies]
-proc-macro2 = "1.0.39"
-quote = "1.0.4"
-syn = { version = "2.0.1", features = ["full"] }
+proc-macro2 = "1.0.74"
+quote = "1.0.35"
+syn = { version = "2.0.46", features = ["full"] }
 
 # optional dependencies:
-clang-ast = { version = "0.1", optional = true }
-flate2 = { version = "1.0", optional = true }
+clang-ast = { version = "0.1.18", optional = true }
+flate2 = { version = "1.0.26", optional = true }
 memmap = { version = "0.7", optional = true }
-serde = { version = "1.0", optional = true, features = ["derive"] }
-serde_json = { version = "1.0", optional = true }
+serde = { version = "1.0.166", optional = true }
+serde_derive = { version = "1.0.166", optional = true }
+serde_json = { version = "1.0.100", optional = true }
 
 [dev-dependencies]
 cxx = { version = "1.0", path = ".." }
 
 [package.metadata.docs.rs]
 targets = ["x86_64-unknown-linux-gnu"]
+rustdoc-args = ["--generate-link-to-definition"]
diff --git a/macro/src/clang.rs b/macro/src/clang.rs
index 381e508..09efc1e 100644
--- a/macro/src/clang.rs
+++ b/macro/src/clang.rs
@@ -1,9 +1,9 @@
-use serde::{Deserialize, Serialize};
+use serde_derive::{Deserialize, Serialize};
 
-pub type Node = clang_ast::Node<Clang>;
+pub(crate) type Node = clang_ast::Node<Clang>;
 
 #[derive(Deserialize, Serialize)]
-pub enum Clang {
+pub(crate) enum Clang {
     NamespaceDecl(NamespaceDecl),
     EnumDecl(EnumDecl),
     EnumConstantDecl(EnumConstantDecl),
@@ -13,13 +13,13 @@
 }
 
 #[derive(Deserialize, Serialize)]
-pub struct NamespaceDecl {
+pub(crate) struct NamespaceDecl {
     #[serde(skip_serializing_if = "Option::is_none")]
     pub name: Option<Box<str>>,
 }
 
 #[derive(Deserialize, Serialize)]
-pub struct EnumDecl {
+pub(crate) struct EnumDecl {
     #[serde(skip_serializing_if = "Option::is_none")]
     pub name: Option<Box<str>>,
     #[serde(
@@ -30,17 +30,17 @@
 }
 
 #[derive(Deserialize, Serialize)]
-pub struct EnumConstantDecl {
+pub(crate) struct EnumConstantDecl {
     pub name: Box<str>,
 }
 
 #[derive(Deserialize, Serialize)]
-pub struct ConstantExpr {
+pub(crate) struct ConstantExpr {
     pub value: Box<str>,
 }
 
 #[derive(Deserialize, Serialize)]
-pub struct Type {
+pub(crate) struct Type {
     #[serde(rename = "qualType")]
     pub qual_type: Box<str>,
     #[serde(rename = "desugaredQualType", skip_serializing_if = "Option::is_none")]
diff --git a/macro/src/derive.rs b/macro/src/derive.rs
index e1d8d69..a439bf9 100644
--- a/macro/src/derive.rs
+++ b/macro/src/derive.rs
@@ -1,10 +1,13 @@
-use crate::syntax::{derive, Enum, Struct, Trait};
+use crate::syntax::{derive, Enum, Struct};
 use proc_macro2::{Ident, Span, TokenStream};
 use quote::{quote, quote_spanned, ToTokens};
 
-pub use crate::syntax::derive::*;
+pub(crate) use crate::syntax::derive::*;
 
-pub fn expand_struct(strct: &Struct, actual_derives: &mut Option<TokenStream>) -> TokenStream {
+pub(crate) fn expand_struct(
+    strct: &Struct,
+    actual_derives: &mut Option<TokenStream>,
+) -> TokenStream {
     let mut expanded = TokenStream::new();
     let mut traits = Vec::new();
 
@@ -35,7 +38,7 @@
     expanded
 }
 
-pub fn expand_enum(enm: &Enum, actual_derives: &mut Option<TokenStream>) -> TokenStream {
+pub(crate) fn expand_enum(enm: &Enum, actual_derives: &mut Option<TokenStream>) -> TokenStream {
     let mut expanded = TokenStream::new();
     let mut traits = Vec::new();
     let mut has_copy = false;
@@ -212,6 +215,8 @@
 
     quote_spanned! {span=>
         impl #generics ::cxx::core::cmp::PartialOrd for #ident #generics {
+            #[allow(clippy::non_canonical_partial_ord_impl)]
+            #[allow(renamed_and_removed_lints, clippy::incorrect_partial_ord_impl_on_ord_type)] // Rust 1.73 and older
             fn partial_cmp(&self, other: &Self) -> ::cxx::core::option::Option<::cxx::core::cmp::Ordering> {
                 #body
             }
@@ -280,6 +285,8 @@
 
     quote_spanned! {span=>
         impl ::cxx::core::cmp::PartialOrd for #ident {
+            #[allow(clippy::non_canonical_partial_ord_impl)]
+            #[allow(renamed_and_removed_lints, clippy::incorrect_partial_ord_impl_on_ord_type)] // Rust 1.73 and older
             fn partial_cmp(&self, other: &Self) -> ::cxx::core::option::Option<::cxx::core::cmp::Ordering> {
                 ::cxx::core::cmp::PartialOrd::partial_cmp(&self.repr, &other.repr)
             }
diff --git a/macro/src/expand.rs b/macro/src/expand.rs
index bd0a206..8a0db43 100644
--- a/macro/src/expand.rs
+++ b/macro/src/expand.rs
@@ -17,7 +17,7 @@
 use std::mem;
 use syn::{parse_quote, punctuated, Generics, Lifetime, Result, Token};
 
-pub fn bridge(mut ffi: Module) -> Result<TokenStream> {
+pub(crate) fn bridge(mut ffi: Module) -> Result<TokenStream> {
     let ref mut errors = Errors::new();
 
     let mut cfg = CfgExpr::Unconditional;
@@ -142,8 +142,12 @@
         #[allow(
             non_camel_case_types,
             non_snake_case,
+            unused_unsafe, // FIXME: only needed by rustc 1.64 and older
             clippy::extra_unused_type_parameters,
+            clippy::items_after_statements,
+            clippy::no_effect_underscore_binding,
             clippy::ptr_as_ptr,
+            clippy::ref_as_ptr,
             clippy::upper_case_acronyms,
             clippy::use_self,
         )]
@@ -717,12 +721,9 @@
             expr = quote_spanned!(span=> ::cxx::core::result::Result::Ok(#expr));
         }
     };
-    let mut dispatch = quote!(#setup #expr);
+    let dispatch = quote_spanned!(span=> unsafe { #setup #expr });
     let visibility = efn.visibility;
     let unsafety = &efn.sig.unsafety;
-    if unsafety.is_none() {
-        dispatch = quote_spanned!(span=> unsafe { #dispatch });
-    }
     let fn_token = efn.sig.fn_token;
     let ident = &efn.name.rust;
     let generics = &efn.generics;
@@ -984,22 +985,31 @@
     });
     let all_args = receiver.into_iter().chain(args);
 
+    let mut requires_unsafe = false;
     let arg_vars = sig.args.iter().map(|arg| {
         let var = &arg.name.rust;
         let span = var.span();
         match &arg.ty {
             Type::Ident(i) if i.rust == RustString => {
+                requires_unsafe = true;
                 quote_spanned!(span=> ::cxx::core::mem::take((*#var).as_mut_string()))
             }
-            Type::RustBox(_) => quote_spanned!(span=> ::cxx::alloc::boxed::Box::from_raw(#var)),
+            Type::RustBox(_) => {
+                requires_unsafe = true;
+                quote_spanned!(span=> ::cxx::alloc::boxed::Box::from_raw(#var))
+            }
             Type::RustVec(vec) => {
+                requires_unsafe = true;
                 if vec.inner == RustString {
                     quote_spanned!(span=> ::cxx::core::mem::take((*#var).as_mut_vec_string()))
                 } else {
                     quote_spanned!(span=> ::cxx::core::mem::take((*#var).as_mut_vec()))
                 }
             }
-            Type::UniquePtr(_) => quote_spanned!(span=> ::cxx::UniquePtr::from_raw(#var)),
+            Type::UniquePtr(_) => {
+                requires_unsafe = true;
+                quote_spanned!(span=> ::cxx::UniquePtr::from_raw(#var))
+            }
             Type::Ref(ty) => match &ty.inner {
                 Type::Ident(i) if i.rust == RustString => match ty.mutable {
                     false => quote_spanned!(span=> #var.as_string()),
@@ -1015,8 +1025,12 @@
                 },
                 _ => quote!(#var),
             },
-            Type::Str(_) => quote_spanned!(span=> #var.as_str()),
+            Type::Str(_) => {
+                requires_unsafe = true;
+                quote_spanned!(span=> #var.as_str())
+            }
             Type::SliceRef(slice) => {
+                requires_unsafe = true;
                 let inner = &slice.inner;
                 match slice.mutable {
                     false => quote_spanned!(span=> #var.as_slice::<#inner>()),
@@ -1024,6 +1038,7 @@
                 }
             }
             ty if types.needs_indirect_abi(ty) => {
+                requires_unsafe = true;
                 quote_spanned!(span=> ::cxx::core::ptr::read(#var))
             }
             _ => quote!(#var),
@@ -1041,6 +1056,7 @@
         }
         None => {
             requires_closure = true;
+            requires_unsafe = true;
             quote!(::cxx::core::mem::transmute::<*const (), #sig>(__extern))
         }
     };
@@ -1108,12 +1124,18 @@
             None => quote_spanned!(span=> &mut ()),
         };
         requires_closure = true;
+        requires_unsafe = true;
         expr = quote_spanned!(span=> ::cxx::private::r#try(#out, #expr));
     } else if indirect_return {
         requires_closure = true;
+        requires_unsafe = true;
         expr = quote_spanned!(span=> ::cxx::core::ptr::write(__return, #expr));
     }
 
+    if requires_unsafe {
+        expr = quote_spanned!(span=> unsafe { #expr });
+    }
+
     let closure = if requires_closure {
         quote_spanned!(span=> move || #expr)
     } else {
@@ -1192,9 +1214,14 @@
         }
     };
 
+    let mut body = quote_spanned!(span=> #call(#(#vars,)*));
+    if unsafety.is_some() {
+        body = quote_spanned!(span=> unsafe { #body });
+    }
+
     quote_spanned! {span=>
         #unsafety fn #local_name #generics(#(#all_args,)*) #ret {
-            #call(#(#vars,)*)
+            #body
         }
     }
 }
@@ -1285,13 +1312,13 @@
         #[export_name = #link_dealloc]
         unsafe extern "C" fn #local_dealloc #impl_generics(ptr: *mut ::cxx::core::mem::MaybeUninit<#ident #ty_generics>) {
             // No prevent_unwind: the global allocator is not allowed to panic.
-            let _ = ::cxx::alloc::boxed::Box::from_raw(ptr);
+            let _ = unsafe { ::cxx::alloc::boxed::Box::from_raw(ptr) };
         }
         #[doc(hidden)]
         #[export_name = #link_drop]
         unsafe extern "C" fn #local_drop #impl_generics(this: *mut ::cxx::alloc::boxed::Box<#ident #ty_generics>) {
             let __fn = concat!("<", module_path!(), #prevent_unwind_drop_label);
-            ::cxx::private::prevent_unwind(__fn, || ::cxx::core::ptr::drop_in_place(this));
+            ::cxx::private::prevent_unwind(__fn, || unsafe { ::cxx::core::ptr::drop_in_place(this) });
         }
     }
 }
@@ -1333,49 +1360,61 @@
         #[export_name = #link_new]
         unsafe extern "C" fn #local_new #impl_generics(this: *mut ::cxx::private::RustVec<#elem #ty_generics>) {
             // No prevent_unwind: cannot panic.
-            ::cxx::core::ptr::write(this, ::cxx::private::RustVec::new());
+            unsafe {
+                ::cxx::core::ptr::write(this, ::cxx::private::RustVec::new());
+            }
         }
         #[doc(hidden)]
         #[export_name = #link_drop]
         unsafe extern "C" fn #local_drop #impl_generics(this: *mut ::cxx::private::RustVec<#elem #ty_generics>) {
             let __fn = concat!("<", module_path!(), #prevent_unwind_drop_label);
-            ::cxx::private::prevent_unwind(__fn, || ::cxx::core::ptr::drop_in_place(this));
+            ::cxx::private::prevent_unwind(
+                __fn,
+                || unsafe { ::cxx::core::ptr::drop_in_place(this) },
+            );
         }
         #[doc(hidden)]
         #[export_name = #link_len]
         unsafe extern "C" fn #local_len #impl_generics(this: *const ::cxx::private::RustVec<#elem #ty_generics>) -> usize {
             // No prevent_unwind: cannot panic.
-            (*this).len()
+            unsafe { (*this).len() }
         }
         #[doc(hidden)]
         #[export_name = #link_capacity]
         unsafe extern "C" fn #local_capacity #impl_generics(this: *const ::cxx::private::RustVec<#elem #ty_generics>) -> usize {
             // No prevent_unwind: cannot panic.
-            (*this).capacity()
+            unsafe { (*this).capacity() }
         }
         #[doc(hidden)]
         #[export_name = #link_data]
         unsafe extern "C" fn #local_data #impl_generics(this: *const ::cxx::private::RustVec<#elem #ty_generics>) -> *const #elem #ty_generics {
             // No prevent_unwind: cannot panic.
-            (*this).as_ptr()
+            unsafe { (*this).as_ptr() }
         }
         #[doc(hidden)]
         #[export_name = #link_reserve_total]
         unsafe extern "C" fn #local_reserve_total #impl_generics(this: *mut ::cxx::private::RustVec<#elem #ty_generics>, new_cap: usize) {
             // No prevent_unwind: the global allocator is not allowed to panic.
-            (*this).reserve_total(new_cap);
+            unsafe {
+                (*this).reserve_total(new_cap);
+            }
         }
         #[doc(hidden)]
         #[export_name = #link_set_len]
         unsafe extern "C" fn #local_set_len #impl_generics(this: *mut ::cxx::private::RustVec<#elem #ty_generics>, len: usize) {
             // No prevent_unwind: cannot panic.
-            (*this).set_len(len);
+            unsafe {
+                (*this).set_len(len);
+            }
         }
         #[doc(hidden)]
         #[export_name = #link_truncate]
         unsafe extern "C" fn #local_truncate #impl_generics(this: *mut ::cxx::private::RustVec<#elem #ty_generics>, len: usize) {
             let __fn = concat!("<", module_path!(), #prevent_unwind_drop_label);
-            ::cxx::private::prevent_unwind(__fn, || (*this).truncate(len));
+            ::cxx::private::prevent_unwind(
+                __fn,
+                || unsafe { (*this).truncate(len) },
+            );
         }
     }
 }
@@ -1407,7 +1446,9 @@
                     fn __uninit(this: *mut ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *mut ::cxx::core::ffi::c_void;
                 }
                 let mut repr = ::cxx::core::mem::MaybeUninit::uninit();
-                unsafe { __uninit(&mut repr).cast::<#ident #ty_generics>().write(value) }
+                unsafe {
+                    __uninit(&mut repr).cast::<#ident #ty_generics>().write(value);
+                }
                 repr
             }
         })
@@ -1430,7 +1471,9 @@
                     fn __null(this: *mut ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>);
                 }
                 let mut repr = ::cxx::core::mem::MaybeUninit::uninit();
-                unsafe { __null(&mut repr) }
+                unsafe {
+                    __null(&mut repr);
+                }
                 repr
             }
             #new_method
@@ -1440,7 +1483,9 @@
                     fn __raw(this: *mut ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>, raw: *mut ::cxx::core::ffi::c_void);
                 }
                 let mut repr = ::cxx::core::mem::MaybeUninit::uninit();
-                __raw(&mut repr, raw.cast());
+                unsafe {
+                    __raw(&mut repr, raw.cast());
+                }
                 repr
             }
             unsafe fn __get(repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *const Self {
@@ -1448,21 +1493,23 @@
                     #[link_name = #link_get]
                     fn __get(this: *const ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *const ::cxx::core::ffi::c_void;
                 }
-                __get(&repr).cast()
+                unsafe { __get(&repr).cast() }
             }
             unsafe fn __release(mut repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *mut Self {
                 extern "C" {
                     #[link_name = #link_release]
                     fn __release(this: *mut ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *mut ::cxx::core::ffi::c_void;
                 }
-                __release(&mut repr).cast()
+                unsafe { __release(&mut repr).cast() }
             }
             unsafe fn __drop(mut repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) {
                 extern "C" {
                     #[link_name = #link_drop]
                     fn __drop(this: *mut ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>);
                 }
-                __drop(&mut repr);
+                unsafe {
+                    __drop(&mut repr);
+                }
             }
         }
     }
@@ -1493,7 +1540,9 @@
                     #[link_name = #link_uninit]
                     fn __uninit(new: *mut ::cxx::core::ffi::c_void) -> *mut ::cxx::core::ffi::c_void;
                 }
-                __uninit(new).cast::<#ident #ty_generics>().write(value);
+                unsafe {
+                    __uninit(new).cast::<#ident #ty_generics>().write(value);
+                }
             }
         })
     } else {
@@ -1514,7 +1563,9 @@
                     #[link_name = #link_null]
                     fn __null(new: *mut ::cxx::core::ffi::c_void);
                 }
-                __null(new);
+                unsafe {
+                    __null(new);
+                }
             }
             #new_method
             unsafe fn __clone(this: *const ::cxx::core::ffi::c_void, new: *mut ::cxx::core::ffi::c_void) {
@@ -1522,21 +1573,25 @@
                     #[link_name = #link_clone]
                     fn __clone(this: *const ::cxx::core::ffi::c_void, new: *mut ::cxx::core::ffi::c_void);
                 }
-                __clone(this, new);
+                unsafe {
+                    __clone(this, new);
+                }
             }
             unsafe fn __get(this: *const ::cxx::core::ffi::c_void) -> *const Self {
                 extern "C" {
                     #[link_name = #link_get]
                     fn __get(this: *const ::cxx::core::ffi::c_void) -> *const ::cxx::core::ffi::c_void;
                 }
-                __get(this).cast()
+                unsafe { __get(this).cast() }
             }
             unsafe fn __drop(this: *mut ::cxx::core::ffi::c_void) {
                 extern "C" {
                     #[link_name = #link_drop]
                     fn __drop(this: *mut ::cxx::core::ffi::c_void);
                 }
-                __drop(this);
+                unsafe {
+                    __drop(this);
+                }
             }
         }
     }
@@ -1569,35 +1624,45 @@
                     #[link_name = #link_null]
                     fn __null(new: *mut ::cxx::core::ffi::c_void);
                 }
-                __null(new);
+                unsafe {
+                    __null(new);
+                }
             }
             unsafe fn __clone(this: *const ::cxx::core::ffi::c_void, new: *mut ::cxx::core::ffi::c_void) {
                 extern "C" {
                     #[link_name = #link_clone]
                     fn __clone(this: *const ::cxx::core::ffi::c_void, new: *mut ::cxx::core::ffi::c_void);
                 }
-                __clone(this, new);
+                unsafe {
+                    __clone(this, new);
+                }
             }
             unsafe fn __downgrade(shared: *const ::cxx::core::ffi::c_void, weak: *mut ::cxx::core::ffi::c_void) {
                 extern "C" {
                     #[link_name = #link_downgrade]
                     fn __downgrade(shared: *const ::cxx::core::ffi::c_void, weak: *mut ::cxx::core::ffi::c_void);
                 }
-                __downgrade(shared, weak);
+                unsafe {
+                    __downgrade(shared, weak);
+                }
             }
             unsafe fn __upgrade(weak: *const ::cxx::core::ffi::c_void, shared: *mut ::cxx::core::ffi::c_void) {
                 extern "C" {
                     #[link_name = #link_upgrade]
                     fn __upgrade(weak: *const ::cxx::core::ffi::c_void, shared: *mut ::cxx::core::ffi::c_void);
                 }
-                __upgrade(weak, shared);
+                unsafe {
+                    __upgrade(weak, shared);
+                }
             }
             unsafe fn __drop(this: *mut ::cxx::core::ffi::c_void) {
                 extern "C" {
                     #[link_name = #link_drop]
                     fn __drop(this: *mut ::cxx::core::ffi::c_void);
                 }
-                __drop(this);
+                unsafe {
+                    __drop(this);
+                }
             }
         }
     }
@@ -1612,6 +1677,7 @@
     let name = elem.to_string();
     let resolve = types.resolve(elem);
     let prefix = format!("cxxbridge1$std$vector${}$", resolve.name.to_symbol());
+    let link_new = format!("{}new", prefix);
     let link_size = format!("{}size", prefix);
     let link_get_unchecked = format!("{}get_unchecked", prefix);
     let link_push_back = format!("{}push_back", prefix);
@@ -1646,7 +1712,12 @@
                         value: *mut ::cxx::core::ffi::c_void,
                     );
                 }
-                __push_back(this, value as *mut ::cxx::core::mem::ManuallyDrop<Self> as *mut ::cxx::core::ffi::c_void);
+                unsafe {
+                    __push_back(
+                        this,
+                        value as *mut ::cxx::core::mem::ManuallyDrop<Self> as *mut ::cxx::core::ffi::c_void,
+                    );
+                }
             }
             unsafe fn __pop_back(
                 this: ::cxx::core::pin::Pin<&mut ::cxx::CxxVector<Self>>,
@@ -1659,7 +1730,12 @@
                         out: *mut ::cxx::core::ffi::c_void,
                     );
                 }
-                __pop_back(this, out as *mut ::cxx::core::mem::MaybeUninit<Self> as *mut ::cxx::core::ffi::c_void);
+                unsafe {
+                    __pop_back(
+                        this,
+                        out as *mut ::cxx::core::mem::MaybeUninit<Self> as *mut ::cxx::core::ffi::c_void,
+                    );
+                }
             }
         })
     } else {
@@ -1671,6 +1747,13 @@
             fn __typename(f: &mut ::cxx::core::fmt::Formatter<'_>) -> ::cxx::core::fmt::Result {
                 f.write_str(#name)
             }
+            fn __vector_new() -> *mut ::cxx::CxxVector<Self> {
+                extern "C" {
+                    #[link_name = #link_new]
+                    fn __vector_new #impl_generics() -> *mut ::cxx::CxxVector<#elem #ty_generics>;
+                }
+                unsafe { __vector_new() }
+            }
             fn __vector_size(v: &::cxx::CxxVector<Self>) -> usize {
                 extern "C" {
                     #[link_name = #link_size]
@@ -1686,7 +1769,7 @@
                         pos: usize,
                     ) -> *mut ::cxx::core::ffi::c_void;
                 }
-                __get_unchecked(v, pos) as *mut Self
+                unsafe { __get_unchecked(v, pos) as *mut Self }
             }
             #by_value_methods
             fn __unique_ptr_null() -> ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void> {
@@ -1695,7 +1778,9 @@
                     fn __unique_ptr_null(this: *mut ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>);
                 }
                 let mut repr = ::cxx::core::mem::MaybeUninit::uninit();
-                unsafe { __unique_ptr_null(&mut repr) }
+                unsafe {
+                    __unique_ptr_null(&mut repr);
+                }
                 repr
             }
             unsafe fn __unique_ptr_raw(raw: *mut ::cxx::CxxVector<Self>) -> ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void> {
@@ -1704,7 +1789,9 @@
                     fn __unique_ptr_raw #impl_generics(this: *mut ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>, raw: *mut ::cxx::CxxVector<#elem #ty_generics>);
                 }
                 let mut repr = ::cxx::core::mem::MaybeUninit::uninit();
-                __unique_ptr_raw(&mut repr, raw);
+                unsafe {
+                    __unique_ptr_raw(&mut repr, raw);
+                }
                 repr
             }
             unsafe fn __unique_ptr_get(repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *const ::cxx::CxxVector<Self> {
@@ -1712,21 +1799,23 @@
                     #[link_name = #link_unique_ptr_get]
                     fn __unique_ptr_get #impl_generics(this: *const ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *const ::cxx::CxxVector<#elem #ty_generics>;
                 }
-                __unique_ptr_get(&repr)
+                unsafe { __unique_ptr_get(&repr) }
             }
             unsafe fn __unique_ptr_release(mut repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *mut ::cxx::CxxVector<Self> {
                 extern "C" {
                     #[link_name = #link_unique_ptr_release]
                     fn __unique_ptr_release #impl_generics(this: *mut ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *mut ::cxx::CxxVector<#elem #ty_generics>;
                 }
-                __unique_ptr_release(&mut repr)
+                unsafe { __unique_ptr_release(&mut repr) }
             }
             unsafe fn __unique_ptr_drop(mut repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) {
                 extern "C" {
                     #[link_name = #link_unique_ptr_drop]
                     fn __unique_ptr_drop(this: *mut ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>);
                 }
-                __unique_ptr_drop(&mut repr);
+                unsafe {
+                    __unique_ptr_drop(&mut repr);
+                }
             }
         }
     }
diff --git a/macro/src/generics.rs b/macro/src/generics.rs
index 7862536..f501def 100644
--- a/macro/src/generics.rs
+++ b/macro/src/generics.rs
@@ -5,18 +5,18 @@
 use quote::ToTokens;
 use syn::{Lifetime, Token};
 
-pub struct ImplGenerics<'a> {
+pub(crate) struct ImplGenerics<'a> {
     explicit_impl: Option<&'a Impl>,
     resolve: Resolution<'a>,
 }
 
-pub struct TyGenerics<'a> {
+pub(crate) struct TyGenerics<'a> {
     key: NamedImplKey<'a>,
     explicit_impl: Option<&'a Impl>,
     resolve: Resolution<'a>,
 }
 
-pub fn split_for_impl<'a>(
+pub(crate) fn split_for_impl<'a>(
     key: NamedImplKey<'a>,
     explicit_impl: Option<&'a Impl>,
     resolve: Resolution<'a>,
@@ -62,12 +62,12 @@
     }
 }
 
-pub struct UnderscoreLifetimes<'a> {
+pub(crate) struct UnderscoreLifetimes<'a> {
     generics: &'a Lifetimes,
 }
 
 impl Lifetimes {
-    pub fn to_underscore_lifetimes(&self) -> UnderscoreLifetimes {
+    pub(crate) fn to_underscore_lifetimes(&self) -> UnderscoreLifetimes {
         UnderscoreLifetimes { generics: self }
     }
 }
diff --git a/macro/src/lib.rs b/macro/src/lib.rs
index d0205b3..472dbc4 100644
--- a/macro/src/lib.rs
+++ b/macro/src/lib.rs
@@ -6,6 +6,7 @@
     clippy::enum_glob_use,
     clippy::if_same_then_else,
     clippy::inherent_to_string,
+    clippy::into_iter_without_iter,
     clippy::items_after_statements,
     clippy::large_enum_variant,
     clippy::match_bool,
@@ -14,19 +15,18 @@
     clippy::needless_pass_by_value,
     clippy::new_without_default,
     clippy::nonminimal_bool,
-    clippy::option_if_let_else,
     clippy::or_fun_call,
     clippy::redundant_else,
     clippy::shadow_unrelated,
     clippy::similar_names,
     clippy::single_match,
     clippy::single_match_else,
+    clippy::struct_field_names,
     clippy::too_many_arguments,
     clippy::too_many_lines,
     clippy::toplevel_ref_arg,
-    clippy::useless_let_if_seq,
-    // clippy bug: https://github.com/rust-lang/rust-clippy/issues/6983
-    clippy::wrong_self_convention
+    clippy::uninlined_format_args,
+    clippy::useless_let_if_seq
 )]
 
 mod derive;
diff --git a/macro/src/load.rs b/macro/src/load.rs
index dccece4..d3148c9 100644
--- a/macro/src/load.rs
+++ b/macro/src/load.rs
@@ -18,7 +18,7 @@
 
 const CXX_CLANG_AST: &str = "CXX_CLANG_AST";
 
-pub fn load(cx: &mut Errors, apis: &mut [Api]) {
+pub(crate) fn load(cx: &mut Errors, apis: &mut [Api]) {
     let ref mut variants_from_header = Vec::new();
     for api in apis {
         if let Api::Enum(enm) = api {
@@ -36,7 +36,7 @@
         }
     }
 
-    let span = match variants_from_header.get(0) {
+    let span = match variants_from_header.first() {
         None => return,
         Some(enm) => enm.variants_from_header_attr.clone().unwrap(),
     };
@@ -60,7 +60,7 @@
             if is_gzipped {
                 gunzipped = Vec::new();
                 let decode_result = GzDecoder::new(&mut gunzipped).write_all(memmap);
-                decode_result.map(|_| gunzipped.as_slice())
+                decode_result.map(|()| gunzipped.as_slice())
             } else {
                 Ok(memmap as &[u8])
             }
@@ -165,7 +165,7 @@
                     .variants_from_header_attr
                     .as_ref()
                     .unwrap()
-                    .path
+                    .path()
                     .get_ident()
                     .unwrap()
                     .span();
@@ -259,7 +259,7 @@
         .variants_from_header_attr
         .as_ref()
         .unwrap()
-        .path
+        .path()
         .get_ident()
         .unwrap()
         .span();
@@ -277,7 +277,7 @@
 fn discriminant_value(mut clang: &[Node]) -> ParsedDiscriminant {
     if clang.is_empty() {
         // No discriminant expression provided; use successor of previous
-        // descriminant.
+        // discriminant.
         return ParsedDiscriminant::Successor;
     }
 
@@ -301,7 +301,7 @@
 fn span_for_enum_error(enm: &Enum) -> TokenStream {
     let enum_token = enm.enum_token;
     let mut brace_token = Group::new(Delimiter::Brace, TokenStream::new());
-    brace_token.set_span(enm.brace_token.span);
+    brace_token.set_span(enm.brace_token.span.join());
     quote!(#enum_token #brace_token)
 }
 
diff --git a/macro/src/tokens.rs b/macro/src/tokens.rs
index 805af22..f3512a7 100644
--- a/macro/src/tokens.rs
+++ b/macro/src/tokens.rs
@@ -3,17 +3,17 @@
 use quote::{quote_spanned, ToTokens};
 use syn::Token;
 
-pub struct ReceiverType<'a>(&'a Receiver);
-pub struct ReceiverTypeSelf<'a>(&'a Receiver);
+pub(crate) struct ReceiverType<'a>(&'a Receiver);
+pub(crate) struct ReceiverTypeSelf<'a>(&'a Receiver);
 
 impl Receiver {
     // &TheType
-    pub fn ty(&self) -> ReceiverType {
+    pub(crate) fn ty(&self) -> ReceiverType {
         ReceiverType(self)
     }
 
     // &Self
-    pub fn ty_self(&self) -> ReceiverTypeSelf {
+    pub(crate) fn ty_self(&self) -> ReceiverTypeSelf {
         ReceiverTypeSelf(self)
     }
 }
diff --git a/macro/src/type_id.rs b/macro/src/type_id.rs
index 7bca67b..3184298 100644
--- a/macro/src/type_id.rs
+++ b/macro/src/type_id.rs
@@ -3,7 +3,7 @@
 use quote::{format_ident, quote, ToTokens};
 use syn::ext::IdentExt;
 
-pub enum Crate {
+pub(crate) enum Crate {
     Cxx,
     DollarCrate(TokenTree),
 }
@@ -18,7 +18,7 @@
 }
 
 // "folly::File" => `(f, o, l, l, y, (), F, i, l, e)`
-pub fn expand(krate: Crate, arg: QualifiedName) -> TokenStream {
+pub(crate) fn expand(krate: Crate, arg: QualifiedName) -> TokenStream {
     let mut ids = Vec::new();
 
     for word in arg.segments {
diff --git a/reindeer.toml b/reindeer.toml
new file mode 100644
index 0000000..4fc8abb
--- /dev/null
+++ b/reindeer.toml
@@ -0,0 +1 @@
+error = "This is the wrong directory. Run `reindeer buckify` in the third-party directory."
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
new file mode 100644
index 0000000..20fe888
--- /dev/null
+++ b/rust-toolchain.toml
@@ -0,0 +1,2 @@
+[toolchain]
+components = ["rust-src"]
diff --git a/src/cxx.cc b/src/cxx.cc
index 4958eb0..2522d61 100644
--- a/src/cxx.cc
+++ b/src/cxx.cc
@@ -1,4 +1,5 @@
 #include "../include/cxx.h"
+#include <cstdio>
 #include <cstring>
 #include <iostream>
 #include <memory>
@@ -76,8 +77,8 @@
 template <typename Exception>
 void panic [[noreturn]] (const char *msg) {
 #if defined(RUST_CXX_NO_EXCEPTIONS)
-  std::cerr << "Error: " << msg << ". Aborting." << std::endl;
-  std::terminate();
+  std::fprintf(stderr, "Error: %s. Aborting.\n", msg);
+  std::abort();
 #else
   throw Exception(msg);
 #endif
@@ -285,7 +286,7 @@
     : repr(bits.repr) {}
 
 std::ostream &operator<<(std::ostream &os, const String &s) {
-  os.write(s.data(), s.size());
+  os.write(s.data(), static_cast<std::streamsize>(s.size()));
   return os;
 }
 
@@ -374,7 +375,7 @@
 }
 
 std::ostream &operator<<(std::ostream &os, const Str &s) {
-  os.write(s.data(), s.size());
+  os.write(s.data(), static_cast<std::streamsize>(s.size()));
   return os;
 }
 
@@ -592,6 +593,9 @@
 } // namespace
 
 #define STD_VECTOR_OPS(RUST_TYPE, CXX_TYPE)                                    \
+  std::vector<CXX_TYPE> *cxxbridge1$std$vector$##RUST_TYPE##$new() noexcept {  \
+    return new std::vector<CXX_TYPE>();                                        \
+  }                                                                            \
   std::size_t cxxbridge1$std$vector$##RUST_TYPE##$size(                        \
       const std::vector<CXX_TYPE> &s) noexcept {                               \
     return s.size();                                                           \
diff --git a/src/cxx_string.rs b/src/cxx_string.rs
index 9ecbcc6..496d3be 100644
--- a/src/cxx_string.rs
+++ b/src/cxx_string.rs
@@ -241,7 +241,7 @@
 
 impl PartialOrd for CxxString {
     fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
-        self.as_bytes().partial_cmp(other.as_bytes())
+        Some(self.cmp(other))
     }
 }
 
@@ -257,6 +257,25 @@
     }
 }
 
+impl fmt::Write for Pin<&mut CxxString> {
+    fn write_str(&mut self, s: &str) -> fmt::Result {
+        self.as_mut().push_str(s);
+        Ok(())
+    }
+}
+
+#[cfg(feature = "std")]
+impl std::io::Write for Pin<&mut CxxString> {
+    fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
+        self.as_mut().push_bytes(buf);
+        Ok(buf.len())
+    }
+
+    fn flush(&mut self) -> std::io::Result<()> {
+        Ok(())
+    }
+}
+
 #[doc(hidden)]
 #[repr(C)]
 pub struct StackString {
diff --git a/src/cxx_vector.rs b/src/cxx_vector.rs
index abf9297..5dcbe1c 100644
--- a/src/cxx_vector.rs
+++ b/src/cxx_vector.rs
@@ -4,6 +4,7 @@
 use crate::extern_type::ExternType;
 use crate::kind::Trivial;
 use crate::string::CxxString;
+use crate::unique_ptr::UniquePtr;
 use core::ffi::c_void;
 use core::fmt::{self, Debug};
 use core::iter::FusedIterator;
@@ -36,6 +37,13 @@
 where
     T: VectorElement,
 {
+    /// Constructs a new heap allocated vector, wrapped by UniquePtr.
+    ///
+    /// The C++ vector is default constructed.
+    pub fn new() -> UniquePtr<Self> {
+        unsafe { UniquePtr::from_raw(T::__vector_new()) }
+    }
+
     /// Returns the number of elements in the vector.
     ///
     /// Matches the behavior of C++ [std::vector\<T\>::size][size].
@@ -306,7 +314,9 @@
 /// `CxxVector<T>` in generic code.
 ///
 /// This trait has no publicly callable or implementable methods. Implementing
-/// it outside of the CXX codebase is not supported.
+/// it outside of the CXX codebase requires using [explicit shim trait impls],
+/// adding the line `impl CxxVector<MyType> {}` in the same `cxx::bridge` that
+/// defines `MyType`.
 ///
 /// # Example
 ///
@@ -330,10 +340,14 @@
 ///
 /// Writing the same generic function without a `VectorElement` trait bound
 /// would not compile.
+///
+/// [explicit shim trait impls]: https://cxx.rs/extern-c++.html#explicit-shim-trait-impls
 pub unsafe trait VectorElement: Sized {
     #[doc(hidden)]
     fn __typename(f: &mut fmt::Formatter) -> fmt::Result;
     #[doc(hidden)]
+    fn __vector_new() -> *mut CxxVector<Self>;
+    #[doc(hidden)]
     fn __vector_size(v: &CxxVector<Self>) -> usize;
     #[doc(hidden)]
     unsafe fn __get_unchecked(v: *mut CxxVector<Self>, pos: usize) -> *mut Self;
@@ -370,19 +384,15 @@
     (trivial, $segment:expr, $ty:ty) => {
         unsafe fn __push_back(v: Pin<&mut CxxVector<$ty>>, value: &mut ManuallyDrop<$ty>) {
             extern "C" {
-                attr! {
-                    #[link_name = concat!("cxxbridge1$std$vector$", $segment, "$push_back")]
-                    fn __push_back(_: Pin<&mut CxxVector<$ty>>, _: &mut ManuallyDrop<$ty>);
-                }
+                #[link_name = concat!("cxxbridge1$std$vector$", $segment, "$push_back")]
+                fn __push_back(_: Pin<&mut CxxVector<$ty>>, _: &mut ManuallyDrop<$ty>);
             }
             unsafe { __push_back(v, value) }
         }
         unsafe fn __pop_back(v: Pin<&mut CxxVector<$ty>>, out: &mut MaybeUninit<$ty>) {
             extern "C" {
-                attr! {
-                    #[link_name = concat!("cxxbridge1$std$vector$", $segment, "$pop_back")]
-                    fn __pop_back(_: Pin<&mut CxxVector<$ty>>, _: &mut MaybeUninit<$ty>);
-                }
+                #[link_name = concat!("cxxbridge1$std$vector$", $segment, "$pop_back")]
+                fn __pop_back(_: Pin<&mut CxxVector<$ty>>, _: &mut MaybeUninit<$ty>);
             }
             unsafe { __pop_back(v, out) }
         }
@@ -398,31 +408,32 @@
             fn __typename(f: &mut fmt::Formatter) -> fmt::Result {
                 f.write_str($name)
             }
+            fn __vector_new() -> *mut CxxVector<Self> {
+                extern "C" {
+                    #[link_name = concat!("cxxbridge1$std$vector$", $segment, "$new")]
+                    fn __vector_new() -> *mut CxxVector<$ty>;
+                }
+                unsafe { __vector_new() }
+            }
             fn __vector_size(v: &CxxVector<$ty>) -> usize {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$std$vector$", $segment, "$size")]
-                        fn __vector_size(_: &CxxVector<$ty>) -> usize;
-                    }
+                    #[link_name = concat!("cxxbridge1$std$vector$", $segment, "$size")]
+                    fn __vector_size(_: &CxxVector<$ty>) -> usize;
                 }
                 unsafe { __vector_size(v) }
             }
             unsafe fn __get_unchecked(v: *mut CxxVector<$ty>, pos: usize) -> *mut $ty {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$std$vector$", $segment, "$get_unchecked")]
-                        fn __get_unchecked(_: *mut CxxVector<$ty>, _: usize) -> *mut $ty;
-                    }
+                    #[link_name = concat!("cxxbridge1$std$vector$", $segment, "$get_unchecked")]
+                    fn __get_unchecked(_: *mut CxxVector<$ty>, _: usize) -> *mut $ty;
                 }
                 unsafe { __get_unchecked(v, pos) }
             }
             vector_element_by_value_methods!($kind, $segment, $ty);
             fn __unique_ptr_null() -> MaybeUninit<*mut c_void> {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$unique_ptr$std$vector$", $segment, "$null")]
-                        fn __unique_ptr_null(this: *mut MaybeUninit<*mut c_void>);
-                    }
+                    #[link_name = concat!("cxxbridge1$unique_ptr$std$vector$", $segment, "$null")]
+                    fn __unique_ptr_null(this: *mut MaybeUninit<*mut c_void>);
                 }
                 let mut repr = MaybeUninit::uninit();
                 unsafe { __unique_ptr_null(&mut repr) }
@@ -430,10 +441,8 @@
             }
             unsafe fn __unique_ptr_raw(raw: *mut CxxVector<Self>) -> MaybeUninit<*mut c_void> {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$unique_ptr$std$vector$", $segment, "$raw")]
-                        fn __unique_ptr_raw(this: *mut MaybeUninit<*mut c_void>, raw: *mut CxxVector<$ty>);
-                    }
+                    #[link_name = concat!("cxxbridge1$unique_ptr$std$vector$", $segment, "$raw")]
+                    fn __unique_ptr_raw(this: *mut MaybeUninit<*mut c_void>, raw: *mut CxxVector<$ty>);
                 }
                 let mut repr = MaybeUninit::uninit();
                 unsafe { __unique_ptr_raw(&mut repr, raw) }
@@ -441,28 +450,22 @@
             }
             unsafe fn __unique_ptr_get(repr: MaybeUninit<*mut c_void>) -> *const CxxVector<Self> {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$unique_ptr$std$vector$", $segment, "$get")]
-                        fn __unique_ptr_get(this: *const MaybeUninit<*mut c_void>) -> *const CxxVector<$ty>;
-                    }
+                    #[link_name = concat!("cxxbridge1$unique_ptr$std$vector$", $segment, "$get")]
+                    fn __unique_ptr_get(this: *const MaybeUninit<*mut c_void>) -> *const CxxVector<$ty>;
                 }
                 unsafe { __unique_ptr_get(&repr) }
             }
             unsafe fn __unique_ptr_release(mut repr: MaybeUninit<*mut c_void>) -> *mut CxxVector<Self> {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$unique_ptr$std$vector$", $segment, "$release")]
-                        fn __unique_ptr_release(this: *mut MaybeUninit<*mut c_void>) -> *mut CxxVector<$ty>;
-                    }
+                    #[link_name = concat!("cxxbridge1$unique_ptr$std$vector$", $segment, "$release")]
+                    fn __unique_ptr_release(this: *mut MaybeUninit<*mut c_void>) -> *mut CxxVector<$ty>;
                 }
                 unsafe { __unique_ptr_release(&mut repr) }
             }
             unsafe fn __unique_ptr_drop(mut repr: MaybeUninit<*mut c_void>) {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$unique_ptr$std$vector$", $segment, "$drop")]
-                        fn __unique_ptr_drop(this: *mut MaybeUninit<*mut c_void>);
-                    }
+                    #[link_name = concat!("cxxbridge1$unique_ptr$std$vector$", $segment, "$drop")]
+                    fn __unique_ptr_drop(this: *mut MaybeUninit<*mut c_void>);
                 }
                 unsafe { __unique_ptr_drop(&mut repr) }
             }
diff --git a/src/lib.rs b/src/lib.rs
index 2c448ae..c2652b8 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -364,16 +364,22 @@
 //! </table>
 
 #![no_std]
-#![doc(html_root_url = "https://docs.rs/cxx/1.0.93")]
+#![doc(html_root_url = "https://docs.rs/cxx/1.0.119")]
+#![cfg_attr(doc_cfg, feature(doc_cfg))]
 #![deny(
     improper_ctypes,
     improper_ctypes_definitions,
     missing_docs,
     unsafe_op_in_unsafe_fn
 )]
-#![cfg_attr(doc_cfg, feature(doc_cfg))]
+#![warn(
+    clippy::alloc_instead_of_core,
+    clippy::std_instead_of_alloc,
+    clippy::std_instead_of_core
+)]
 #![allow(non_camel_case_types)]
 #![allow(
+    clippy::cast_possible_truncation,
     clippy::cognitive_complexity,
     clippy::declare_interior_mutable_const,
     clippy::doc_markdown,
@@ -392,10 +398,11 @@
     clippy::new_without_default,
     clippy::or_fun_call,
     clippy::ptr_arg,
+    clippy::ptr_as_ptr,
     clippy::toplevel_ref_arg,
     clippy::transmute_undefined_repr, // clippy bug: https://github.com/rust-lang/rust-clippy/issues/8417
+    clippy::uninlined_format_args,
     clippy::useless_let_if_seq,
-    clippy::wrong_self_convention
 )]
 
 #[cfg(built_with_cargo)]
@@ -469,6 +476,7 @@
 
 pub use crate::cxx_vector::CxxVector;
 #[cfg(feature = "alloc")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "alloc")))]
 pub use crate::exception::Exception;
 pub use crate::extern_type::{kind, ExternType};
 pub use crate::shared_ptr::SharedPtr;
@@ -539,4 +547,4 @@
 }
 
 #[repr(transparent)]
-struct void(core::ffi::c_void);
+struct void(#[allow(dead_code)] core::ffi::c_void);
diff --git a/src/lossy.rs b/src/lossy.rs
index 8ccf0f9..0140392 100644
--- a/src/lossy.rs
+++ b/src/lossy.rs
@@ -2,7 +2,7 @@
 use core::fmt::{self, Write as _};
 use core::str;
 
-pub fn display(mut bytes: &[u8], f: &mut fmt::Formatter) -> fmt::Result {
+pub(crate) fn display(mut bytes: &[u8], f: &mut fmt::Formatter) -> fmt::Result {
     loop {
         match str::from_utf8(bytes) {
             Ok(valid) => return f.write_str(valid),
@@ -21,7 +21,7 @@
     }
 }
 
-pub fn debug(mut bytes: &[u8], f: &mut fmt::Formatter) -> fmt::Result {
+pub(crate) fn debug(mut bytes: &[u8], f: &mut fmt::Formatter) -> fmt::Result {
     f.write_char('"')?;
 
     while !bytes.is_empty() {
diff --git a/src/macros/concat.rs b/src/macros/concat.rs
deleted file mode 100644
index 5ee77c5..0000000
--- a/src/macros/concat.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-#[macro_export]
-#[doc(hidden)]
-macro_rules! attr {
-    (#[$name:ident = $value:expr] $($rest:tt)*) => {
-        #[$name = $value]
-        $($rest)*
-    };
-}
diff --git a/src/macros/mod.rs b/src/macros/mod.rs
index d12d96b..b070c05 100644
--- a/src/macros/mod.rs
+++ b/src/macros/mod.rs
@@ -1,4 +1,2 @@
 #[macro_use]
 mod assert;
-#[macro_use]
-mod concat;
diff --git a/src/result.rs b/src/result.rs
index ba77858..e93c8e6 100644
--- a/src/result.rs
+++ b/src/result.rs
@@ -12,7 +12,7 @@
 
 #[repr(C)]
 #[derive(Copy, Clone)]
-pub struct PtrLen {
+pub(crate) struct PtrLen {
     pub ptr: NonNull<u8>,
     pub len: usize,
 }
diff --git a/src/shared_ptr.rs b/src/shared_ptr.rs
index 64c8661..58a281b 100644
--- a/src/shared_ptr.rs
+++ b/src/shared_ptr.rs
@@ -191,8 +191,8 @@
     where
         Self: Sized,
     {
-        // Opoaque C types do not get this method because they can never exist
-        // by value on the Rust side of the bridge.
+        // Opaque C types do not get this method because they can never exist by
+        // value on the Rust side of the bridge.
         let _ = value;
         let _ = new;
         unreachable!()
@@ -213,46 +213,36 @@
             }
             unsafe fn __null(new: *mut c_void) {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$std$shared_ptr$", $segment, "$null")]
-                        fn __null(new: *mut c_void);
-                    }
+                    #[link_name = concat!("cxxbridge1$std$shared_ptr$", $segment, "$null")]
+                    fn __null(new: *mut c_void);
                 }
                 unsafe { __null(new) }
             }
             unsafe fn __new(value: Self, new: *mut c_void) {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$std$shared_ptr$", $segment, "$uninit")]
-                        fn __uninit(new: *mut c_void) -> *mut c_void;
-                    }
+                    #[link_name = concat!("cxxbridge1$std$shared_ptr$", $segment, "$uninit")]
+                    fn __uninit(new: *mut c_void) -> *mut c_void;
                 }
                 unsafe { __uninit(new).cast::<$ty>().write(value) }
             }
             unsafe fn __clone(this: *const c_void, new: *mut c_void) {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$std$shared_ptr$", $segment, "$clone")]
-                        fn __clone(this: *const c_void, new: *mut c_void);
-                    }
+                    #[link_name = concat!("cxxbridge1$std$shared_ptr$", $segment, "$clone")]
+                    fn __clone(this: *const c_void, new: *mut c_void);
                 }
                 unsafe { __clone(this, new) }
             }
             unsafe fn __get(this: *const c_void) -> *const Self {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$std$shared_ptr$", $segment, "$get")]
-                        fn __get(this: *const c_void) -> *const c_void;
-                    }
+                    #[link_name = concat!("cxxbridge1$std$shared_ptr$", $segment, "$get")]
+                    fn __get(this: *const c_void) -> *const c_void;
                 }
                 unsafe { __get(this) }.cast()
             }
             unsafe fn __drop(this: *mut c_void) {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$std$shared_ptr$", $segment, "$drop")]
-                        fn __drop(this: *mut c_void);
-                    }
+                    #[link_name = concat!("cxxbridge1$std$shared_ptr$", $segment, "$drop")]
+                    fn __drop(this: *mut c_void);
                 }
                 unsafe { __drop(this) }
             }
diff --git a/src/sip.rs b/src/sip.rs
index 9e1d050..4ce0923 100644
--- a/src/sip.rs
+++ b/src/sip.rs
@@ -17,7 +17,7 @@
 /// (e.g., `collections::HashMap` uses it by default).
 ///
 /// See: <https://131002.net/siphash>
-pub struct SipHasher13 {
+pub(crate) struct SipHasher13 {
     k0: u64,
     k1: u64,
     length: usize, // how many bytes we've processed
@@ -110,7 +110,7 @@
 
 impl SipHasher13 {
     /// Creates a new `SipHasher13` with the two initial keys set to 0.
-    pub fn new() -> Self {
+    pub(crate) fn new() -> Self {
         Self::new_with_keys(0, 0)
     }
 
diff --git a/src/symbols/rust_vec.rs b/src/symbols/rust_vec.rs
index 89c7da4..d7d2e34 100644
--- a/src/symbols/rust_vec.rs
+++ b/src/symbols/rust_vec.rs
@@ -14,53 +14,37 @@
         const_assert_eq!(mem::align_of::<Vec<$ty>>(), mem::align_of::<RustVec<$ty>>());
 
         const _: () = {
-            attr! {
-                #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$new")]
-                unsafe extern "C" fn __new(this: *mut RustVec<$ty>) {
-                    unsafe { ptr::write(this, RustVec::new()) }
-                }
+            #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$new")]
+            unsafe extern "C" fn __new(this: *mut RustVec<$ty>) {
+                unsafe { ptr::write(this, RustVec::new()) }
             }
-            attr! {
-                #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$drop")]
-                unsafe extern "C" fn __drop(this: *mut RustVec<$ty>) {
-                    unsafe { ptr::drop_in_place(this) }
-                }
+            #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$drop")]
+            unsafe extern "C" fn __drop(this: *mut RustVec<$ty>) {
+                unsafe { ptr::drop_in_place(this) }
             }
-            attr! {
-                #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$len")]
-                unsafe extern "C" fn __len(this: *const RustVec<$ty>) -> usize {
-                    unsafe { &*this }.len()
-                }
+            #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$len")]
+            unsafe extern "C" fn __len(this: *const RustVec<$ty>) -> usize {
+                unsafe { &*this }.len()
             }
-            attr! {
-                #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$capacity")]
-                unsafe extern "C" fn __capacity(this: *const RustVec<$ty>) -> usize {
-                    unsafe { &*this }.capacity()
-                }
+            #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$capacity")]
+            unsafe extern "C" fn __capacity(this: *const RustVec<$ty>) -> usize {
+                unsafe { &*this }.capacity()
             }
-            attr! {
-                #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$data")]
-                unsafe extern "C" fn __data(this: *const RustVec<$ty>) -> *const $ty {
-                    unsafe { &*this }.as_ptr()
-                }
+            #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$data")]
+            unsafe extern "C" fn __data(this: *const RustVec<$ty>) -> *const $ty {
+                unsafe { &*this }.as_ptr()
             }
-            attr! {
-                #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$reserve_total")]
-                unsafe extern "C" fn __reserve_total(this: *mut RustVec<$ty>, new_cap: usize) {
-                    unsafe { &mut *this }.reserve_total(new_cap);
-                }
+            #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$reserve_total")]
+            unsafe extern "C" fn __reserve_total(this: *mut RustVec<$ty>, new_cap: usize) {
+                unsafe { &mut *this }.reserve_total(new_cap);
             }
-            attr! {
-                #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$set_len")]
-                unsafe extern "C" fn __set_len(this: *mut RustVec<$ty>, len: usize) {
-                    unsafe { (*this).set_len(len) }
-                }
+            #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$set_len")]
+            unsafe extern "C" fn __set_len(this: *mut RustVec<$ty>, len: usize) {
+                unsafe { (*this).set_len(len) }
             }
-            attr! {
-                #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$truncate")]
-                unsafe extern "C" fn __truncate(this: *mut RustVec<$ty>, len: usize) {
-                    unsafe { (*this).truncate(len) }
-                }
+            #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$truncate")]
+            unsafe extern "C" fn __truncate(this: *mut RustVec<$ty>, len: usize) {
+                unsafe { (*this).truncate(len) }
             }
         };
     };
diff --git a/src/weak_ptr.rs b/src/weak_ptr.rs
index e9320f3..c34e969 100644
--- a/src/weak_ptr.rs
+++ b/src/weak_ptr.rs
@@ -119,46 +119,36 @@
             }
             unsafe fn __null(new: *mut c_void) {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$std$weak_ptr$", $segment, "$null")]
-                        fn __null(new: *mut c_void);
-                    }
+                    #[link_name = concat!("cxxbridge1$std$weak_ptr$", $segment, "$null")]
+                    fn __null(new: *mut c_void);
                 }
                 unsafe { __null(new) }
             }
             unsafe fn __clone(this: *const c_void, new: *mut c_void) {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$std$weak_ptr$", $segment, "$clone")]
-                        fn __clone(this: *const c_void, new: *mut c_void);
-                    }
+                    #[link_name = concat!("cxxbridge1$std$weak_ptr$", $segment, "$clone")]
+                    fn __clone(this: *const c_void, new: *mut c_void);
                 }
                 unsafe { __clone(this, new) }
             }
             unsafe fn __downgrade(shared: *const c_void, weak: *mut c_void) {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$std$weak_ptr$", $segment, "$downgrade")]
-                        fn __downgrade(shared: *const c_void, weak: *mut c_void);
-                    }
+                    #[link_name = concat!("cxxbridge1$std$weak_ptr$", $segment, "$downgrade")]
+                    fn __downgrade(shared: *const c_void, weak: *mut c_void);
                 }
                 unsafe { __downgrade(shared, weak) }
             }
             unsafe fn __upgrade(weak: *const c_void, shared: *mut c_void) {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$std$weak_ptr$", $segment, "$upgrade")]
-                        fn __upgrade(weak: *const c_void, shared: *mut c_void);
-                    }
+                    #[link_name = concat!("cxxbridge1$std$weak_ptr$", $segment, "$upgrade")]
+                    fn __upgrade(weak: *const c_void, shared: *mut c_void);
                 }
                 unsafe { __upgrade(weak, shared) }
             }
             unsafe fn __drop(this: *mut c_void) {
                 extern "C" {
-                    attr! {
-                        #[link_name = concat!("cxxbridge1$std$weak_ptr$", $segment, "$drop")]
-                        fn __drop(this: *mut c_void);
-                    }
+                    #[link_name = concat!("cxxbridge1$std$weak_ptr$", $segment, "$drop")]
+                    fn __drop(this: *mut c_void);
                 }
                 unsafe { __drop(this) }
             }
diff --git a/syntax/atom.rs b/syntax/atom.rs
index d4ad78f..08e04a3 100644
--- a/syntax/atom.rs
+++ b/syntax/atom.rs
@@ -3,7 +3,7 @@
 use std::fmt::{self, Display};
 
 #[derive(Copy, Clone, PartialEq)]
-pub enum Atom {
+pub(crate) enum Atom {
     Bool,
     Char, // C char, not Rust char
     U8,
@@ -23,11 +23,11 @@
 }
 
 impl Atom {
-    pub fn from(ident: &Ident) -> Option<Self> {
+    pub(crate) fn from(ident: &Ident) -> Option<Self> {
         Self::from_str(ident.to_string().as_str())
     }
 
-    pub fn from_str(s: &str) -> Option<Self> {
+    pub(crate) fn from_str(s: &str) -> Option<Self> {
         use self::Atom::*;
         match s {
             "bool" => Some(Bool),
diff --git a/syntax/attrs.rs b/syntax/attrs.rs
index 4ff700a..894b82b 100644
--- a/syntax/attrs.rs
+++ b/syntax/attrs.rs
@@ -27,7 +27,7 @@
 //     );
 //
 #[derive(Default)]
-pub struct Parser<'a> {
+pub(crate) struct Parser<'a> {
     pub cfg: Option<&'a mut CfgExpr>,
     pub doc: Option<&'a mut Doc>,
     pub derives: Option<&'a mut Vec<Derive>>,
@@ -44,7 +44,7 @@
     pub(crate) _more: (),
 }
 
-pub fn parse(cx: &mut Errors, attrs: Vec<Attribute>, mut parser: Parser) -> OtherAttrs {
+pub(crate) fn parse(cx: &mut Errors, attrs: Vec<Attribute>, mut parser: Parser) -> OtherAttrs {
     let mut passthrough_attrs = Vec::new();
     for attr in attrs {
         let attr_path = attr.path();
@@ -283,14 +283,14 @@
 }
 
 #[derive(Clone)]
-pub struct OtherAttrs(Vec<Attribute>);
+pub(crate) struct OtherAttrs(Vec<Attribute>);
 
 impl OtherAttrs {
-    pub fn none() -> Self {
+    pub(crate) fn none() -> Self {
         OtherAttrs(Vec::new())
     }
 
-    pub fn extend(&mut self, other: Self) {
+    pub(crate) fn extend(&mut self, other: Self) {
         self.0.extend(other.0);
     }
 }
diff --git a/syntax/cfg.rs b/syntax/cfg.rs
index ce6f338..070813e 100644
--- a/syntax/cfg.rs
+++ b/syntax/cfg.rs
@@ -4,16 +4,19 @@
 use syn::{parenthesized, token, Attribute, LitStr, Token};
 
 #[derive(Clone)]
-pub enum CfgExpr {
+pub(crate) enum CfgExpr {
     Unconditional,
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     Eq(Ident, Option<LitStr>),
     All(Vec<CfgExpr>),
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     Any(Vec<CfgExpr>),
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     Not(Box<CfgExpr>),
 }
 
 impl CfgExpr {
-    pub fn merge(&mut self, expr: CfgExpr) {
+    pub(crate) fn merge(&mut self, expr: CfgExpr) {
         if let CfgExpr::Unconditional = self {
             *self = expr;
         } else if let CfgExpr::All(list) = self {
@@ -25,7 +28,7 @@
     }
 }
 
-pub fn parse_attribute(attr: &Attribute) -> Result<CfgExpr> {
+pub(crate) fn parse_attribute(attr: &Attribute) -> Result<CfgExpr> {
     attr.parse_args_with(|input: ParseStream| {
         let cfg_expr = input.call(parse_single)?;
         input.parse::<Option<Token![,]>>()?;
diff --git a/syntax/check.rs b/syntax/check.rs
index 0770c84..b5fd45e 100644
--- a/syntax/check.rs
+++ b/syntax/check.rs
@@ -123,9 +123,11 @@
             }
 
             match Atom::from(&ident.rust) {
-                None | Some(Bool) | Some(Char) | Some(U8) | Some(U16) | Some(U32) | Some(U64)
-                | Some(Usize) | Some(I8) | Some(I16) | Some(I32) | Some(I64) | Some(Isize)
-                | Some(F32) | Some(F64) | Some(RustString) => return,
+                None
+                | Some(
+                    Bool | Char | U8 | U16 | U32 | U64 | Usize | I8 | I16 | I32 | I64 | Isize | F32
+                    | F64 | RustString,
+                ) => return,
                 Some(CxxString) => {}
             }
         }
@@ -162,10 +164,12 @@
         }
 
         match Atom::from(&ident.rust) {
-            None | Some(Bool) | Some(U8) | Some(U16) | Some(U32) | Some(U64) | Some(Usize)
-            | Some(I8) | Some(I16) | Some(I32) | Some(I64) | Some(Isize) | Some(F32)
-            | Some(F64) | Some(CxxString) => return,
-            Some(Char) | Some(RustString) => {}
+            None
+            | Some(
+                Bool | U8 | U16 | U32 | U64 | Usize | I8 | I16 | I32 | I64 | Isize | F32 | F64
+                | CxxString,
+            ) => return,
+            Some(Char | RustString) => {}
         }
     } else if let Type::CxxVector(_) = &ptr.inner {
         cx.error(ptr, "std::shared_ptr<std::vector> is not supported yet");
@@ -183,10 +187,12 @@
         }
 
         match Atom::from(&ident.rust) {
-            None | Some(Bool) | Some(U8) | Some(U16) | Some(U32) | Some(U64) | Some(Usize)
-            | Some(I8) | Some(I16) | Some(I32) | Some(I64) | Some(Isize) | Some(F32)
-            | Some(F64) | Some(CxxString) => return,
-            Some(Char) | Some(RustString) => {}
+            None
+            | Some(
+                Bool | U8 | U16 | U32 | U64 | Usize | I8 | I16 | I32 | I64 | Isize | F32 | F64
+                | CxxString,
+            ) => return,
+            Some(Char | RustString) => {}
         }
     } else if let Type::CxxVector(_) = &ptr.inner {
         cx.error(ptr, "std::weak_ptr<std::vector> is not supported yet");
@@ -207,11 +213,12 @@
         }
 
         match Atom::from(&ident.rust) {
-            None | Some(U8) | Some(U16) | Some(U32) | Some(U64) | Some(Usize) | Some(I8)
-            | Some(I16) | Some(I32) | Some(I64) | Some(Isize) | Some(F32) | Some(F64)
-            | Some(CxxString) => return,
+            None
+            | Some(
+                U8 | U16 | U32 | U64 | Usize | I8 | I16 | I32 | I64 | Isize | F32 | F64 | CxxString,
+            ) => return,
             Some(Char) => { /* todo */ }
-            Some(Bool) | Some(RustString) => {}
+            Some(Bool | RustString) => {}
         }
     }
 
diff --git a/syntax/derive.rs b/syntax/derive.rs
index 7727fbc..9e09461 100644
--- a/syntax/derive.rs
+++ b/syntax/derive.rs
@@ -2,13 +2,13 @@
 use std::fmt::{self, Display};
 
 #[derive(Copy, Clone)]
-pub struct Derive {
+pub(crate) struct Derive {
     pub what: Trait,
     pub span: Span,
 }
 
 #[derive(Copy, Clone, PartialEq)]
-pub enum Trait {
+pub(crate) enum Trait {
     Clone,
     Copy,
     Debug,
@@ -24,7 +24,7 @@
 }
 
 impl Derive {
-    pub fn from(ident: &Ident) -> Option<Self> {
+    pub(crate) fn from(ident: &Ident) -> Option<Self> {
         let what = match ident.to_string().as_str() {
             "Clone" => Trait::Clone,
             "Copy" => Trait::Copy,
@@ -76,6 +76,6 @@
     }
 }
 
-pub fn contains(derives: &[Derive], query: Trait) -> bool {
+pub(crate) fn contains(derives: &[Derive], query: Trait) -> bool {
     derives.iter().any(|derive| derive.what == query)
 }
diff --git a/syntax/discriminant.rs b/syntax/discriminant.rs
index 21a6d00..775e57b 100644
--- a/syntax/discriminant.rs
+++ b/syntax/discriminant.rs
@@ -5,17 +5,16 @@
 use std::collections::BTreeSet;
 use std::fmt::{self, Display};
 use std::str::FromStr;
-use std::u64;
 use syn::{Error, Expr, Lit, Result, Token, UnOp};
 
-pub struct DiscriminantSet {
+pub(crate) struct DiscriminantSet {
     repr: Option<Atom>,
     values: BTreeSet<Discriminant>,
     previous: Option<Discriminant>,
 }
 
 #[derive(Copy, Clone, Eq, PartialEq)]
-pub struct Discriminant {
+pub(crate) struct Discriminant {
     sign: Sign,
     magnitude: u64,
 }
@@ -27,7 +26,7 @@
 }
 
 impl DiscriminantSet {
-    pub fn new(repr: Option<Atom>) -> Self {
+    pub(crate) fn new(repr: Option<Atom>) -> Self {
         DiscriminantSet {
             repr,
             values: BTreeSet::new(),
@@ -35,7 +34,7 @@
         }
     }
 
-    pub fn insert(&mut self, expr: &Expr) -> Result<Discriminant> {
+    pub(crate) fn insert(&mut self, expr: &Expr) -> Result<Discriminant> {
         let (discriminant, repr) = expr_to_discriminant(expr)?;
         match (self.repr, repr) {
             (None, Some(new_repr)) => {
@@ -62,7 +61,7 @@
         insert(self, discriminant)
     }
 
-    pub fn insert_next(&mut self) -> Result<Discriminant> {
+    pub(crate) fn insert_next(&mut self) -> Result<Discriminant> {
         let discriminant = match self.previous {
             None => Discriminant::zero(),
             Some(mut discriminant) => match discriminant.sign {
@@ -86,7 +85,7 @@
         insert(self, discriminant)
     }
 
-    pub fn inferred_repr(&self) -> Result<Atom> {
+    pub(crate) fn inferred_repr(&self) -> Result<Atom> {
         if let Some(repr) = self.repr {
             return Ok(repr);
         }
@@ -150,7 +149,7 @@
 }
 
 impl Discriminant {
-    pub const fn zero() -> Self {
+    pub(crate) const fn zero() -> Self {
         Discriminant {
             sign: Sign::Positive,
             magnitude: 0,
@@ -181,7 +180,7 @@
     }
 
     #[cfg(feature = "experimental-enum-variants-from-header")]
-    pub const fn checked_succ(self) -> Option<Self> {
+    pub(crate) const fn checked_succ(self) -> Option<Self> {
         match self.sign {
             Sign::Negative => {
                 if self.magnitude == 1 {
diff --git a/syntax/doc.rs b/syntax/doc.rs
index 5de824f..bd8111e 100644
--- a/syntax/doc.rs
+++ b/syntax/doc.rs
@@ -2,30 +2,30 @@
 use quote::{quote, ToTokens};
 use syn::LitStr;
 
-pub struct Doc {
-    pub(crate) hidden: bool,
+pub(crate) struct Doc {
+    pub hidden: bool,
     fragments: Vec<LitStr>,
 }
 
 impl Doc {
-    pub fn new() -> Self {
+    pub(crate) fn new() -> Self {
         Doc {
             hidden: false,
             fragments: Vec::new(),
         }
     }
 
-    pub fn push(&mut self, lit: LitStr) {
+    pub(crate) fn push(&mut self, lit: LitStr) {
         self.fragments.push(lit);
     }
 
     #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
-    pub fn is_empty(&self) -> bool {
+    pub(crate) fn is_empty(&self) -> bool {
         self.fragments.is_empty()
     }
 
     #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
-    pub fn to_string(&self) -> String {
+    pub(crate) fn to_string(&self) -> String {
         let mut doc = String::new();
         for lit in &self.fragments {
             doc += &lit.value();
diff --git a/syntax/error.rs b/syntax/error.rs
index f40c4a8..4487693 100644
--- a/syntax/error.rs
+++ b/syntax/error.rs
@@ -1,9 +1,11 @@
 use std::fmt::{self, Display};
 
 #[derive(Copy, Clone)]
-pub struct Error {
+pub(crate) struct Error {
     pub msg: &'static str,
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     pub label: Option<&'static str>,
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     pub note: Option<&'static str>,
 }
 
@@ -13,7 +15,7 @@
     }
 }
 
-pub static ERRORS: &[Error] = &[
+pub(crate) static ERRORS: &[Error] = &[
     BOX_CXX_TYPE,
     CXXBRIDGE_RESERVED,
     CXX_STRING_BY_VALUE,
@@ -27,67 +29,67 @@
     USE_NOT_ALLOWED,
 ];
 
-pub static BOX_CXX_TYPE: Error = Error {
+pub(crate) static BOX_CXX_TYPE: Error = Error {
     msg: "Box of a C++ type is not supported yet",
     label: None,
     note: Some("hint: use UniquePtr<> or SharedPtr<>"),
 };
 
-pub static CXXBRIDGE_RESERVED: Error = Error {
+pub(crate) static CXXBRIDGE_RESERVED: Error = Error {
     msg: "identifiers starting with cxxbridge are reserved",
     label: Some("reserved identifier"),
     note: Some("identifiers starting with cxxbridge are reserved"),
 };
 
-pub static CXX_STRING_BY_VALUE: Error = Error {
+pub(crate) static CXX_STRING_BY_VALUE: Error = Error {
     msg: "C++ string by value is not supported",
     label: None,
     note: Some("hint: wrap it in a UniquePtr<>"),
 };
 
-pub static CXX_TYPE_BY_VALUE: Error = Error {
+pub(crate) static CXX_TYPE_BY_VALUE: Error = Error {
     msg: "C++ type by value is not supported",
     label: None,
     note: Some("hint: wrap it in a UniquePtr<> or SharedPtr<>"),
 };
 
-pub static DISCRIMINANT_OVERFLOW: Error = Error {
+pub(crate) static DISCRIMINANT_OVERFLOW: Error = Error {
     msg: "discriminant overflow on value after ",
     label: Some("discriminant overflow"),
     note: Some("note: explicitly set `= 0` if that is desired outcome"),
 };
 
-pub static DOT_INCLUDE: Error = Error {
+pub(crate) static DOT_INCLUDE: Error = Error {
     msg: "#include relative to `.` or `..` is not supported in Cargo builds",
     label: Some("#include relative to `.` or `..` is not supported in Cargo builds"),
     note: Some("note: use a path starting with the crate name"),
 };
 
-pub static DOUBLE_UNDERSCORE: Error = Error {
+pub(crate) static DOUBLE_UNDERSCORE: Error = Error {
     msg: "identifiers containing double underscore are reserved in C++",
     label: Some("reserved identifier"),
     note: Some("identifiers containing double underscore are reserved in C++"),
 };
 
-pub static RESERVED_LIFETIME: Error = Error {
+pub(crate) static RESERVED_LIFETIME: Error = Error {
     msg: "invalid lifetime parameter name: `'static`",
     label: Some("'static is a reserved lifetime name"),
     note: None,
 };
 
-pub static RUST_TYPE_BY_VALUE: Error = Error {
+pub(crate) static RUST_TYPE_BY_VALUE: Error = Error {
     msg: "opaque Rust type by value is not supported",
     label: None,
     note: Some("hint: wrap it in a Box<>"),
 };
 
-pub static UNSUPPORTED_TYPE: Error = Error {
+pub(crate) static UNSUPPORTED_TYPE: Error = Error {
     msg: "unsupported type: ",
     label: Some("unsupported type"),
     note: None,
 };
 
-pub static USE_NOT_ALLOWED: Error = Error {
+pub(crate) static USE_NOT_ALLOWED: Error = Error {
     msg: "`use` items are not allowed within cxx bridge",
     label: Some("not allowed"),
     note: Some(
diff --git a/syntax/file.rs b/syntax/file.rs
index 71f11ee..cf6d3e8 100644
--- a/syntax/file.rs
+++ b/syntax/file.rs
@@ -7,19 +7,24 @@
     ItemStruct, ItemUse, LitStr, Token, Visibility,
 };
 
-pub struct Module {
+pub(crate) struct Module {
+    #[allow(dead_code)]
     pub cfg: CfgExpr,
     pub namespace: Namespace,
     pub attrs: Vec<Attribute>,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub vis: Visibility,
     pub unsafety: Option<Token![unsafe]>,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub mod_token: Token![mod],
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub ident: Ident,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub brace_token: token::Brace,
     pub content: Vec<Item>,
 }
 
-pub enum Item {
+pub(crate) enum Item {
     Struct(ItemStruct),
     Enum(ItemEnum),
     ForeignMod(ItemForeignMod),
@@ -28,10 +33,11 @@
     Other(RustItem),
 }
 
-pub struct ItemForeignMod {
+pub(crate) struct ItemForeignMod {
     pub attrs: Vec<Attribute>,
     pub unsafety: Option<Token![unsafe]>,
     pub abi: Abi,
+    #[allow(dead_code)]
     pub brace_token: token::Brace,
     pub items: Vec<ForeignItem>,
 }
diff --git a/syntax/improper.rs b/syntax/improper.rs
index f19eb86..a19f5b7 100644
--- a/syntax/improper.rs
+++ b/syntax/improper.rs
@@ -3,14 +3,14 @@
 use crate::syntax::{Type, Types};
 use proc_macro2::Ident;
 
-pub enum ImproperCtype<'a> {
+pub(crate) enum ImproperCtype<'a> {
     Definite(bool),
     Depends(&'a Ident),
 }
 
 impl<'a> Types<'a> {
     // yes, no, maybe
-    pub fn determine_improper_ctype(&self, ty: &Type) -> ImproperCtype<'a> {
+    pub(crate) fn determine_improper_ctype(&self, ty: &Type) -> ImproperCtype<'a> {
         match ty {
             Type::Ident(ident) => {
                 let ident = &ident.rust;
diff --git a/syntax/instantiate.rs b/syntax/instantiate.rs
index b6cbf24..dda3069 100644
--- a/syntax/instantiate.rs
+++ b/syntax/instantiate.rs
@@ -4,7 +4,7 @@
 use syn::Token;
 
 #[derive(Copy, Clone, PartialEq, Eq, Hash)]
-pub enum ImplKey<'a> {
+pub(crate) enum ImplKey<'a> {
     RustBox(NamedImplKey<'a>),
     RustVec(NamedImplKey<'a>),
     UniquePtr(NamedImplKey<'a>),
@@ -14,11 +14,15 @@
 }
 
 #[derive(Copy, Clone)]
-pub struct NamedImplKey<'a> {
+pub(crate) struct NamedImplKey<'a> {
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub begin_span: Span,
     pub rust: &'a Ident,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub lt_token: Option<Token![<]>,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub gt_token: Option<Token![>]>,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub end_span: Span,
 }
 
diff --git a/syntax/mangle.rs b/syntax/mangle.rs
index 287b443..6f01965 100644
--- a/syntax/mangle.rs
+++ b/syntax/mangle.rs
@@ -84,7 +84,7 @@
     };
 }
 
-pub fn extern_fn(efn: &ExternFn, types: &Types) -> Symbol {
+pub(crate) fn extern_fn(efn: &ExternFn, types: &Types) -> Symbol {
     match &efn.receiver {
         Some(receiver) => {
             let receiver_ident = types.resolve(&receiver.ty);
@@ -99,7 +99,7 @@
     }
 }
 
-pub fn operator(receiver: &Pair, operator: &'static str) -> Symbol {
+pub(crate) fn operator(receiver: &Pair, operator: &'static str) -> Symbol {
     join!(
         receiver.namespace,
         CXXBRIDGE,
@@ -110,11 +110,11 @@
 }
 
 // The C half of a function pointer trampoline.
-pub fn c_trampoline(efn: &ExternFn, var: &Pair, types: &Types) -> Symbol {
+pub(crate) fn c_trampoline(efn: &ExternFn, var: &Pair, types: &Types) -> Symbol {
     join!(extern_fn(efn, types), var.rust, 0)
 }
 
 // The Rust half of a function pointer trampoline.
-pub fn r_trampoline(efn: &ExternFn, var: &Pair, types: &Types) -> Symbol {
+pub(crate) fn r_trampoline(efn: &ExternFn, var: &Pair, types: &Types) -> Symbol {
     join!(extern_fn(efn, types), var.rust, 1)
 }
diff --git a/syntax/map.rs b/syntax/map.rs
index 526b793..4a2db0b 100644
--- a/syntax/map.rs
+++ b/syntax/map.rs
@@ -3,9 +3,9 @@
 use std::ops::Index;
 use std::slice;
 
-pub use self::ordered::OrderedMap;
-pub use self::unordered::UnorderedMap;
-pub use std::collections::hash_map::Entry;
+pub(crate) use self::ordered::OrderedMap;
+pub(crate) use self::unordered::UnorderedMap;
+pub(crate) use std::collections::hash_map::Entry;
 
 mod ordered {
     use super::{Entry, Iter, UnorderedMap};
@@ -13,24 +13,25 @@
     use std::hash::Hash;
     use std::mem;
 
-    pub struct OrderedMap<K, V> {
+    pub(crate) struct OrderedMap<K, V> {
         map: UnorderedMap<K, usize>,
         vec: Vec<(K, V)>,
     }
 
     impl<K, V> OrderedMap<K, V> {
-        pub fn new() -> Self {
+        pub(crate) fn new() -> Self {
             OrderedMap {
                 map: UnorderedMap::new(),
                 vec: Vec::new(),
             }
         }
 
-        pub fn iter(&self) -> Iter<K, V> {
+        pub(crate) fn iter(&self) -> Iter<K, V> {
             Iter(self.vec.iter())
         }
 
-        pub fn keys(&self) -> impl Iterator<Item = &K> {
+        #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
+        pub(crate) fn keys(&self) -> impl Iterator<Item = &K> {
             self.vec.iter().map(|(k, _v)| k)
         }
     }
@@ -39,7 +40,7 @@
     where
         K: Copy + Hash + Eq,
     {
-        pub fn insert(&mut self, key: K, value: V) -> Option<V> {
+        pub(crate) fn insert(&mut self, key: K, value: V) -> Option<V> {
             match self.map.entry(key) {
                 Entry::Occupied(entry) => {
                     let i = &mut self.vec[*entry.get()];
@@ -53,22 +54,13 @@
             }
         }
 
-        pub fn contains_key<Q>(&self, key: &Q) -> bool
+        pub(crate) fn contains_key<Q>(&self, key: &Q) -> bool
         where
             K: Borrow<Q>,
             Q: ?Sized + Hash + Eq,
         {
             self.map.contains_key(key)
         }
-
-        pub fn get<Q>(&self, key: &Q) -> Option<&V>
-        where
-            K: Borrow<Q>,
-            Q: ?Sized + Hash + Eq,
-        {
-            let i = *self.map.get(key)?;
-            Some(&self.vec[i].1)
-        }
     }
 
     impl<'a, K, V> IntoIterator for &'a OrderedMap<K, V> {
@@ -88,10 +80,10 @@
 
     // Wrapper prohibits accidentally introducing iteration over the map, which
     // could lead to nondeterministic generated code.
-    pub struct UnorderedMap<K, V>(HashMap<K, V>);
+    pub(crate) struct UnorderedMap<K, V>(HashMap<K, V>);
 
     impl<K, V> UnorderedMap<K, V> {
-        pub fn new() -> Self {
+        pub(crate) fn new() -> Self {
             UnorderedMap(HashMap::new())
         }
     }
@@ -100,11 +92,11 @@
     where
         K: Hash + Eq,
     {
-        pub fn insert(&mut self, key: K, value: V) -> Option<V> {
+        pub(crate) fn insert(&mut self, key: K, value: V) -> Option<V> {
             self.0.insert(key, value)
         }
 
-        pub fn contains_key<Q>(&self, key: &Q) -> bool
+        pub(crate) fn contains_key<Q>(&self, key: &Q) -> bool
         where
             K: Borrow<Q>,
             Q: ?Sized + Hash + Eq,
@@ -112,7 +104,7 @@
             self.0.contains_key(key)
         }
 
-        pub fn get<Q>(&self, key: &Q) -> Option<&V>
+        pub(crate) fn get<Q>(&self, key: &Q) -> Option<&V>
         where
             K: Borrow<Q>,
             Q: ?Sized + Hash + Eq,
@@ -120,12 +112,12 @@
             self.0.get(key)
         }
 
-        pub fn entry(&mut self, key: K) -> Entry<K, V> {
+        pub(crate) fn entry(&mut self, key: K) -> Entry<K, V> {
             self.0.entry(key)
         }
 
         #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
-        pub fn remove<Q>(&mut self, key: &Q) -> Option<V>
+        pub(crate) fn remove<Q>(&mut self, key: &Q) -> Option<V>
         where
             K: Borrow<Q>,
             Q: ?Sized + Hash + Eq,
@@ -133,7 +125,7 @@
             self.0.remove(key)
         }
 
-        pub fn keys(&self) -> UnorderedSet<K>
+        pub(crate) fn keys(&self) -> UnorderedSet<K>
         where
             K: Copy,
         {
@@ -146,7 +138,7 @@
     }
 }
 
-pub struct Iter<'a, K, V>(slice::Iter<'a, (K, V)>);
+pub(crate) struct Iter<'a, K, V>(slice::Iter<'a, (K, V)>);
 
 impl<'a, K, V> Iterator for Iter<'a, K, V> {
     type Item = (&'a K, &'a V);
diff --git a/syntax/mod.rs b/syntax/mod.rs
index 4f19d96..eacba55 100644
--- a/syntax/mod.rs
+++ b/syntax/mod.rs
@@ -1,33 +1,33 @@
 // Functionality that is shared between the cxxbridge macro and the cmd.
 
-pub mod atom;
-pub mod attrs;
-pub mod cfg;
-pub mod check;
-pub mod derive;
+pub(crate) mod atom;
+pub(crate) mod attrs;
+pub(crate) mod cfg;
+pub(crate) mod check;
+pub(crate) mod derive;
 mod discriminant;
 mod doc;
-pub mod error;
-pub mod file;
-pub mod ident;
+pub(crate) mod error;
+pub(crate) mod file;
+pub(crate) mod ident;
 mod impls;
 mod improper;
-pub mod instantiate;
-pub mod mangle;
-pub mod map;
+pub(crate) mod instantiate;
+pub(crate) mod mangle;
+pub(crate) mod map;
 mod names;
-pub mod namespace;
+pub(crate) mod namespace;
 mod parse;
 mod pod;
-pub mod qualified;
-pub mod report;
-pub mod resolve;
-pub mod set;
-pub mod symbol;
+pub(crate) mod qualified;
+pub(crate) mod report;
+pub(crate) mod resolve;
+pub(crate) mod set;
+pub(crate) mod symbol;
 mod tokens;
 mod toposort;
-pub mod trivial;
-pub mod types;
+pub(crate) mod trivial;
+pub(crate) mod types;
 mod visit;
 
 use self::attrs::OtherAttrs;
@@ -40,15 +40,16 @@
 use syn::token::{Brace, Bracket, Paren};
 use syn::{Attribute, Expr, Generics, Lifetime, LitInt, Token, Type as RustType};
 
-pub use self::atom::Atom;
-pub use self::derive::{Derive, Trait};
-pub use self::discriminant::Discriminant;
-pub use self::doc::Doc;
-pub use self::names::ForeignName;
-pub use self::parse::parse_items;
-pub use self::types::Types;
+pub(crate) use self::atom::Atom;
+pub(crate) use self::derive::{Derive, Trait};
+pub(crate) use self::discriminant::Discriminant;
+pub(crate) use self::doc::Doc;
+pub(crate) use self::names::ForeignName;
+pub(crate) use self::parse::parse_items;
+pub(crate) use self::types::Types;
 
-pub enum Api {
+pub(crate) enum Api {
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     Include(Include),
     Struct(Struct),
     Enum(Enum),
@@ -60,11 +61,13 @@
     Impl(Impl),
 }
 
-pub struct Include {
+pub(crate) struct Include {
     pub cfg: CfgExpr,
     pub path: String,
     pub kind: IncludeKind,
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     pub begin_span: Span,
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     pub end_span: Span,
 }
 
@@ -77,27 +80,35 @@
     Bracketed,
 }
 
-pub struct ExternType {
+pub(crate) struct ExternType {
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     pub cfg: CfgExpr,
     pub lang: Lang,
     pub doc: Doc,
     pub derives: Vec<Derive>,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub attrs: OtherAttrs,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub visibility: Token![pub],
     pub type_token: Token![type],
     pub name: Pair,
     pub generics: Lifetimes,
+    #[allow(dead_code)]
     pub colon_token: Option<Token![:]>,
     pub bounds: Vec<Derive>,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub semi_token: Token![;],
     pub trusted: bool,
 }
 
-pub struct Struct {
+pub(crate) struct Struct {
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     pub cfg: CfgExpr,
     pub doc: Doc,
     pub derives: Vec<Derive>,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub attrs: OtherAttrs,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub visibility: Token![pub],
     pub struct_token: Token![struct],
     pub name: Pair,
@@ -106,11 +117,14 @@
     pub fields: Vec<Var>,
 }
 
-pub struct Enum {
+pub(crate) struct Enum {
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     pub cfg: CfgExpr,
     pub doc: Doc,
     pub derives: Vec<Derive>,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub attrs: OtherAttrs,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub visibility: Token![pub],
     pub enum_token: Token![enum],
     pub name: Pair,
@@ -118,12 +132,13 @@
     pub brace_token: Brace,
     pub variants: Vec<Variant>,
     pub variants_from_header: bool,
+    #[allow(dead_code)]
     pub variants_from_header_attr: Option<Attribute>,
     pub repr: EnumRepr,
     pub explicit_repr: bool,
 }
 
-pub enum EnumRepr {
+pub(crate) enum EnumRepr {
     Native {
         atom: Atom,
         repr_type: Type,
@@ -134,11 +149,14 @@
     },
 }
 
-pub struct ExternFn {
+pub(crate) struct ExternFn {
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     pub cfg: CfgExpr,
     pub lang: Lang,
     pub doc: Doc,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub attrs: OtherAttrs,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub visibility: Token![pub],
     pub name: Pair,
     pub sig: Signature,
@@ -146,39 +164,49 @@
     pub trusted: bool,
 }
 
-pub struct TypeAlias {
+pub(crate) struct TypeAlias {
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     pub cfg: CfgExpr,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub doc: Doc,
     pub derives: Vec<Derive>,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub attrs: OtherAttrs,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub visibility: Token![pub],
     pub type_token: Token![type],
     pub name: Pair,
     pub generics: Lifetimes,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub eq_token: Token![=],
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub ty: RustType,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub semi_token: Token![;],
 }
 
-pub struct Impl {
+pub(crate) struct Impl {
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     pub cfg: CfgExpr,
     pub impl_token: Token![impl],
     pub impl_generics: Lifetimes,
+    #[allow(dead_code)]
     pub negative: bool,
     pub ty: Type,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub ty_generics: Lifetimes,
     pub brace_token: Brace,
     pub negative_token: Option<Token![!]>,
 }
 
 #[derive(Clone, Default)]
-pub struct Lifetimes {
+pub(crate) struct Lifetimes {
     pub lt_token: Option<Token![<]>,
     pub lifetimes: Punctuated<Lifetime, Token![,]>,
     pub gt_token: Option<Token![>]>,
 }
 
-pub struct Signature {
+pub(crate) struct Signature {
     pub asyncness: Option<Token![async]>,
     pub unsafety: Option<Token![unsafe]>,
     pub fn_token: Token![fn],
@@ -191,39 +219,48 @@
     pub throws_tokens: Option<(kw::Result, Token![<], Token![>])>,
 }
 
-pub struct Var {
+pub(crate) struct Var {
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     pub cfg: CfgExpr,
     pub doc: Doc,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub attrs: OtherAttrs,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub visibility: Token![pub],
     pub name: Pair,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub colon_token: Token![:],
     pub ty: Type,
 }
 
-pub struct Receiver {
+pub(crate) struct Receiver {
     pub pinned: bool,
     pub ampersand: Token![&],
     pub lifetime: Option<Lifetime>,
     pub mutable: bool,
     pub var: Token![self],
     pub ty: NamedType,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub colon_token: Token![:],
     pub shorthand: bool,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub pin_tokens: Option<(kw::Pin, Token![<], Token![>])>,
     pub mutability: Option<Token![mut]>,
 }
 
-pub struct Variant {
+pub(crate) struct Variant {
+    #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro
     pub cfg: CfgExpr,
     pub doc: Doc,
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
     pub attrs: OtherAttrs,
     pub name: Pair,
     pub discriminant: Discriminant,
+    #[allow(dead_code)]
     pub expr: Option<Expr>,
 }
 
-pub enum Type {
+pub(crate) enum Type {
     Ident(NamedType),
     RustBox(Box<Ty1>),
     RustVec(Box<Ty1>),
@@ -240,14 +277,14 @@
     Array(Box<Array>),
 }
 
-pub struct Ty1 {
+pub(crate) struct Ty1 {
     pub name: Ident,
     pub langle: Token![<],
     pub inner: Type,
     pub rangle: Token![>],
 }
 
-pub struct Ref {
+pub(crate) struct Ref {
     pub pinned: bool,
     pub ampersand: Token![&],
     pub lifetime: Option<Lifetime>,
@@ -257,7 +294,7 @@
     pub mutability: Option<Token![mut]>,
 }
 
-pub struct Ptr {
+pub(crate) struct Ptr {
     pub star: Token![*],
     pub mutable: bool,
     pub inner: Type,
@@ -265,7 +302,7 @@
     pub constness: Option<Token![const]>,
 }
 
-pub struct SliceRef {
+pub(crate) struct SliceRef {
     pub ampersand: Token![&],
     pub lifetime: Option<Lifetime>,
     pub mutable: bool,
@@ -274,7 +311,7 @@
     pub mutability: Option<Token![mut]>,
 }
 
-pub struct Array {
+pub(crate) struct Array {
     pub bracket: Bracket,
     pub inner: Type,
     pub semi_token: Token![;],
@@ -283,7 +320,7 @@
 }
 
 #[derive(Copy, Clone, PartialEq)]
-pub enum Lang {
+pub(crate) enum Lang {
     Cxx,
     Rust,
 }
@@ -291,7 +328,7 @@
 // An association of a defined Rust name with a fully resolved, namespace
 // qualified C++ name.
 #[derive(Clone)]
-pub struct Pair {
+pub(crate) struct Pair {
     pub namespace: Namespace,
     pub cxx: ForeignName,
     pub rust: Ident,
@@ -300,7 +337,7 @@
 // Wrapper for a type which needs to be resolved before it can be printed in
 // C++.
 #[derive(PartialEq, Eq, Hash)]
-pub struct NamedType {
+pub(crate) struct NamedType {
     pub rust: Ident,
     pub generics: Lifetimes,
 }
diff --git a/syntax/names.rs b/syntax/names.rs
index 329a102..7afa5a9 100644
--- a/syntax/names.rs
+++ b/syntax/names.rs
@@ -8,12 +8,12 @@
 use syn::punctuated::Punctuated;
 
 #[derive(Clone)]
-pub struct ForeignName {
+pub(crate) struct ForeignName {
     text: String,
 }
 
 impl Pair {
-    pub fn to_symbol(&self) -> Symbol {
+    pub(crate) fn to_symbol(&self) -> Symbol {
         let segments = self
             .namespace
             .iter()
@@ -24,7 +24,7 @@
 }
 
 impl NamedType {
-    pub fn new(rust: Ident) -> Self {
+    pub(crate) fn new(rust: Ident) -> Self {
         let generics = Lifetimes {
             lt_token: None,
             lifetimes: Punctuated::new(),
@@ -32,14 +32,10 @@
         };
         NamedType { rust, generics }
     }
-
-    pub fn span(&self) -> Span {
-        self.rust.span()
-    }
 }
 
 impl ForeignName {
-    pub fn parse(text: &str, span: Span) -> Result<Self> {
+    pub(crate) fn parse(text: &str, span: Span) -> Result<Self> {
         // TODO: support C++ names containing whitespace (`unsigned int`) or
         // non-alphanumeric characters (`operator++`).
         match Ident::parse_any.parse_str(text) {
diff --git a/syntax/namespace.rs b/syntax/namespace.rs
index aae865c..417fb34 100644
--- a/syntax/namespace.rs
+++ b/syntax/namespace.rs
@@ -1,7 +1,6 @@
 use crate::syntax::qualified::QualifiedName;
 use quote::IdentFragment;
 use std::fmt::{self, Display};
-use std::iter::FromIterator;
 use std::slice::Iter;
 use syn::parse::{Error, Parse, ParseStream, Result};
 use syn::{Expr, Ident, Lit, Meta, Token};
@@ -11,20 +10,20 @@
 }
 
 #[derive(Clone, Default)]
-pub struct Namespace {
+pub(crate) struct Namespace {
     segments: Vec<Ident>,
 }
 
 impl Namespace {
-    pub const ROOT: Self = Namespace {
+    pub(crate) const ROOT: Self = Namespace {
         segments: Vec::new(),
     };
 
-    pub fn iter(&self) -> Iter<Ident> {
+    pub(crate) fn iter(&self) -> Iter<Ident> {
         self.segments.iter()
     }
 
-    pub fn parse_bridge_attr_namespace(input: ParseStream) -> Result<Self> {
+    pub(crate) fn parse_bridge_attr_namespace(input: ParseStream) -> Result<Self> {
         if input.is_empty() {
             return Ok(Namespace::ROOT);
         }
@@ -36,7 +35,7 @@
         Ok(namespace)
     }
 
-    pub fn parse_meta(meta: &Meta) -> Result<Self> {
+    pub(crate) fn parse_meta(meta: &Meta) -> Result<Self> {
         if let Meta::NameValue(meta) = meta {
             match &meta.value {
                 Expr::Lit(expr) => {
diff --git a/syntax/parse.rs b/syntax/parse.rs
index c6fee5f..850dcc8 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -22,12 +22,12 @@
     TypeReference, Variant as RustVariant, Visibility,
 };
 
-pub mod kw {
+pub(crate) mod kw {
     syn::custom_keyword!(Pin);
     syn::custom_keyword!(Result);
 }
 
-pub fn parse_items(
+pub(crate) fn parse_items(
     cx: &mut Errors,
     items: Vec<Item>,
     trusted: bool,
@@ -42,7 +42,7 @@
             },
             Item::Enum(item) => apis.push(parse_enum(cx, item, namespace)),
             Item::ForeignMod(foreign_mod) => {
-                parse_foreign_mod(cx, foreign_mod, &mut apis, trusted, namespace)
+                parse_foreign_mod(cx, foreign_mod, &mut apis, trusted, namespace);
             }
             Item::Impl(item) => match parse_impl(cx, item) {
                 Ok(imp) => apis.push(imp),
diff --git a/syntax/pod.rs b/syntax/pod.rs
index 0bf152e..506e53c 100644
--- a/syntax/pod.rs
+++ b/syntax/pod.rs
@@ -2,7 +2,7 @@
 use crate::syntax::{derive, Trait, Type, Types};
 
 impl<'a> Types<'a> {
-    pub fn is_guaranteed_pod(&self, ty: &Type) -> bool {
+    pub(crate) fn is_guaranteed_pod(&self, ty: &Type) -> bool {
         match ty {
             Type::Ident(ident) => {
                 let ident = &ident.rust;
diff --git a/syntax/qualified.rs b/syntax/qualified.rs
index e11ffbc..07c9908 100644
--- a/syntax/qualified.rs
+++ b/syntax/qualified.rs
@@ -2,12 +2,12 @@
 use syn::parse::{Error, ParseStream, Result};
 use syn::{Ident, LitStr, Token};
 
-pub struct QualifiedName {
+pub(crate) struct QualifiedName {
     pub segments: Vec<Ident>,
 }
 
 impl QualifiedName {
-    pub fn parse_quoted(lit: &LitStr) -> Result<Self> {
+    pub(crate) fn parse_quoted(lit: &LitStr) -> Result<Self> {
         if lit.value().is_empty() {
             let segments = Vec::new();
             Ok(QualifiedName { segments })
@@ -19,12 +19,12 @@
         }
     }
 
-    pub fn parse_unquoted(input: ParseStream) -> Result<Self> {
+    pub(crate) fn parse_unquoted(input: ParseStream) -> Result<Self> {
         let allow_raw = true;
         parse_unquoted(input, allow_raw)
     }
 
-    pub fn parse_quoted_or_unquoted(input: ParseStream) -> Result<Self> {
+    pub(crate) fn parse_quoted_or_unquoted(input: ParseStream) -> Result<Self> {
         if input.peek(LitStr) {
             let lit: LitStr = input.parse()?;
             Self::parse_quoted(&lit)
diff --git a/syntax/report.rs b/syntax/report.rs
index d1d8bc9..1997182 100644
--- a/syntax/report.rs
+++ b/syntax/report.rs
@@ -2,24 +2,24 @@
 use std::fmt::Display;
 use syn::{Error, Result};
 
-pub struct Errors {
+pub(crate) struct Errors {
     errors: Vec<Error>,
 }
 
 impl Errors {
-    pub fn new() -> Self {
+    pub(crate) fn new() -> Self {
         Errors { errors: Vec::new() }
     }
 
-    pub fn error(&mut self, sp: impl ToTokens, msg: impl Display) {
+    pub(crate) fn error(&mut self, sp: impl ToTokens, msg: impl Display) {
         self.errors.push(Error::new_spanned(sp, msg));
     }
 
-    pub fn push(&mut self, error: Error) {
+    pub(crate) fn push(&mut self, error: Error) {
         self.errors.push(error);
     }
 
-    pub fn propagate(&mut self) -> Result<()> {
+    pub(crate) fn propagate(&mut self) -> Result<()> {
         let mut iter = self.errors.drain(..);
         let mut all_errors = match iter.next() {
             Some(err) => err,
diff --git a/syntax/resolve.rs b/syntax/resolve.rs
index 3a2635b..b0a4782 100644
--- a/syntax/resolve.rs
+++ b/syntax/resolve.rs
@@ -3,13 +3,13 @@
 use proc_macro2::Ident;
 
 #[derive(Copy, Clone)]
-pub struct Resolution<'a> {
+pub(crate) struct Resolution<'a> {
     pub name: &'a Pair,
     pub generics: &'a Lifetimes,
 }
 
 impl<'a> Types<'a> {
-    pub fn resolve(&self, ident: &impl UnresolvedName) -> Resolution<'a> {
+    pub(crate) fn resolve(&self, ident: &impl UnresolvedName) -> Resolution<'a> {
         let ident = ident.ident();
         match self.try_resolve(ident) {
             Some(resolution) => resolution,
@@ -17,13 +17,13 @@
         }
     }
 
-    pub fn try_resolve(&self, ident: &impl UnresolvedName) -> Option<Resolution<'a>> {
+    pub(crate) fn try_resolve(&self, ident: &impl UnresolvedName) -> Option<Resolution<'a>> {
         let ident = ident.ident();
         self.resolutions.get(ident).copied()
     }
 }
 
-pub trait UnresolvedName {
+pub(crate) trait UnresolvedName {
     fn ident(&self) -> &Ident;
 }
 
diff --git a/syntax/set.rs b/syntax/set.rs
index ca0c43e..0907834 100644
--- a/syntax/set.rs
+++ b/syntax/set.rs
@@ -1,15 +1,14 @@
 use std::fmt::{self, Debug};
 use std::slice;
 
-pub use self::ordered::OrderedSet;
-pub use self::unordered::UnorderedSet;
+pub(crate) use self::ordered::OrderedSet;
+pub(crate) use self::unordered::UnorderedSet;
 
 mod ordered {
     use super::{Iter, UnorderedSet};
-    use std::borrow::Borrow;
     use std::hash::Hash;
 
-    pub struct OrderedSet<T> {
+    pub(crate) struct OrderedSet<T> {
         set: UnorderedSet<T>,
         vec: Vec<T>,
     }
@@ -18,44 +17,28 @@
     where
         T: Hash + Eq,
     {
-        pub fn new() -> Self {
+        pub(crate) fn new() -> Self {
             OrderedSet {
                 set: UnorderedSet::new(),
                 vec: Vec::new(),
             }
         }
 
-        pub fn insert(&mut self, value: &'a T) -> bool {
+        pub(crate) fn insert(&mut self, value: &'a T) -> bool {
             let new = self.set.insert(value);
             if new {
                 self.vec.push(value);
             }
             new
         }
-
-        pub fn contains<Q>(&self, value: &Q) -> bool
-        where
-            &'a T: Borrow<Q>,
-            Q: ?Sized + Hash + Eq,
-        {
-            self.set.contains(value)
-        }
-
-        pub fn get<Q>(&self, value: &Q) -> Option<&'a T>
-        where
-            &'a T: Borrow<Q>,
-            Q: ?Sized + Hash + Eq,
-        {
-            self.set.get(value).copied()
-        }
     }
 
     impl<'a, T> OrderedSet<&'a T> {
-        pub fn is_empty(&self) -> bool {
+        pub(crate) fn is_empty(&self) -> bool {
             self.vec.is_empty()
         }
 
-        pub fn iter(&self) -> Iter<'_, 'a, T> {
+        pub(crate) fn iter(&self) -> Iter<'_, 'a, T> {
             Iter(self.vec.iter())
         }
     }
@@ -76,21 +59,21 @@
 
     // Wrapper prohibits accidentally introducing iteration over the set, which
     // could lead to nondeterministic generated code.
-    pub struct UnorderedSet<T>(HashSet<T>);
+    pub(crate) struct UnorderedSet<T>(HashSet<T>);
 
     impl<T> UnorderedSet<T>
     where
         T: Hash + Eq,
     {
-        pub fn new() -> Self {
+        pub(crate) fn new() -> Self {
             UnorderedSet(HashSet::new())
         }
 
-        pub fn insert(&mut self, value: T) -> bool {
+        pub(crate) fn insert(&mut self, value: T) -> bool {
             self.0.insert(value)
         }
 
-        pub fn contains<Q>(&self, value: &Q) -> bool
+        pub(crate) fn contains<Q>(&self, value: &Q) -> bool
         where
             T: Borrow<Q>,
             Q: ?Sized + Hash + Eq,
@@ -98,7 +81,8 @@
             self.0.contains(value)
         }
 
-        pub fn get<Q>(&self, value: &Q) -> Option<&T>
+        #[allow(dead_code)] // only used by cxx-build, not cxxbridge-cmd
+        pub(crate) fn get<Q>(&self, value: &Q) -> Option<&T>
         where
             T: Borrow<Q>,
             Q: ?Sized + Hash + Eq,
@@ -106,13 +90,13 @@
             self.0.get(value)
         }
 
-        pub fn retain(&mut self, f: impl FnMut(&T) -> bool) {
+        pub(crate) fn retain(&mut self, f: impl FnMut(&T) -> bool) {
             self.0.retain(f);
         }
     }
 }
 
-pub struct Iter<'s, 'a, T>(slice::Iter<'s, &'a T>);
+pub(crate) struct Iter<'s, 'a, T>(slice::Iter<'s, &'a T>);
 
 impl<'s, 'a, T> Iterator for Iter<'s, 'a, T> {
     type Item = &'a T;
diff --git a/syntax/symbol.rs b/syntax/symbol.rs
index 4c1607e..f9fd32c 100644
--- a/syntax/symbol.rs
+++ b/syntax/symbol.rs
@@ -6,7 +6,7 @@
 
 // A mangled symbol consisting of segments separated by '$'.
 // For example: cxxbridge1$string$new
-pub struct Symbol(String);
+pub(crate) struct Symbol(String);
 
 impl Display for Symbol {
     fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
@@ -30,7 +30,7 @@
         assert!(self.0.len() > len_before);
     }
 
-    pub fn from_idents<'a>(it: impl Iterator<Item = &'a dyn Segment>) -> Self {
+    pub(crate) fn from_idents<'a>(it: impl Iterator<Item = &'a dyn Segment>) -> Self {
         let mut symbol = Symbol(String::new());
         for segment in it {
             segment.write(&mut symbol);
@@ -40,7 +40,7 @@
     }
 }
 
-pub trait Segment {
+pub(crate) trait Segment {
     fn write(&self, symbol: &mut Symbol);
 }
 
@@ -100,7 +100,7 @@
     }
 }
 
-pub fn join(segments: &[&dyn Segment]) -> Symbol {
+pub(crate) fn join(segments: &[&dyn Segment]) -> Symbol {
     let mut symbol = Symbol(String::new());
     for segment in segments {
         segment.write(&mut symbol);
diff --git a/syntax/toposort.rs b/syntax/toposort.rs
index 8fe55b8..9c97eb1 100644
--- a/syntax/toposort.rs
+++ b/syntax/toposort.rs
@@ -7,7 +7,7 @@
     Visited,
 }
 
-pub fn sort<'a>(cx: &mut Errors, apis: &'a [Api], types: &Types<'a>) -> Vec<&'a Struct> {
+pub(crate) fn sort<'a>(cx: &mut Errors, apis: &'a [Api], types: &Types<'a>) -> Vec<&'a Struct> {
     let mut sorted = Vec::new();
     let ref mut marks = Map::new();
     for api in apis {
diff --git a/syntax/trivial.rs b/syntax/trivial.rs
index 067e2d7..9533400 100644
--- a/syntax/trivial.rs
+++ b/syntax/trivial.rs
@@ -5,7 +5,7 @@
 use std::fmt::{self, Display};
 
 #[derive(Copy, Clone)]
-pub enum TrivialReason<'a> {
+pub(crate) enum TrivialReason<'a> {
     StructField(&'a Struct),
     FunctionArgument(&'a ExternFn),
     FunctionReturn(&'a ExternFn),
@@ -15,7 +15,7 @@
     UnpinnedMut(&'a ExternFn),
 }
 
-pub fn required_trivial_reasons<'a>(
+pub(crate) fn required_trivial_reasons<'a>(
     apis: &'a [Api],
     all: &Set<&'a Type>,
     structs: &UnorderedMap<&'a Ident, &'a Struct>,
@@ -124,7 +124,7 @@
 // Context:
 // "type {type} should be trivially move constructible and trivially destructible in C++ to be used as {what} in Rust"
 // "needs a cxx::ExternType impl in order to be used as {what}"
-pub fn as_what<'a>(name: &'a Pair, reasons: &'a [TrivialReason]) -> impl Display + 'a {
+pub(crate) fn as_what<'a>(name: &'a Pair, reasons: &'a [TrivialReason]) -> impl Display + 'a {
     struct Description<'a> {
         name: &'a Pair,
         reasons: &'a [TrivialReason<'a>],
diff --git a/syntax/types.rs b/syntax/types.rs
index 82b4530..623a8b8 100644
--- a/syntax/types.rs
+++ b/syntax/types.rs
@@ -12,7 +12,7 @@
 use proc_macro2::Ident;
 use quote::ToTokens;
 
-pub struct Types<'a> {
+pub(crate) struct Types<'a> {
     pub all: OrderedSet<&'a Type>,
     pub structs: UnorderedMap<&'a Ident, &'a Struct>,
     pub enums: UnorderedMap<&'a Ident, &'a Enum>,
@@ -28,7 +28,7 @@
 }
 
 impl<'a> Types<'a> {
-    pub fn collect(cx: &mut Errors, apis: &'a [Api]) -> Self {
+    pub(crate) fn collect(cx: &mut Errors, apis: &'a [Api]) -> Self {
         let mut all = OrderedSet::new();
         let mut structs = UnorderedMap::new();
         let mut enums = UnorderedMap::new();
@@ -241,7 +241,7 @@
         types
     }
 
-    pub fn needs_indirect_abi(&self, ty: &Type) -> bool {
+    pub(crate) fn needs_indirect_abi(&self, ty: &Type) -> bool {
         match ty {
             Type::RustBox(_) | Type::UniquePtr(_) => false,
             Type::Array(_) => true,
@@ -255,7 +255,8 @@
     // refuses to believe that C could know how to supply us with a pointer to a
     // Rust String, even though C could easily have obtained that pointer
     // legitimately from a Rust call.
-    pub fn is_considered_improper_ctype(&self, ty: &Type) -> bool {
+    #[allow(dead_code)] // only used by cxxbridge-macro, not cxx-build
+    pub(crate) fn is_considered_improper_ctype(&self, ty: &Type) -> bool {
         match self.determine_improper_ctype(ty) {
             ImproperCtype::Definite(improper) => improper,
             ImproperCtype::Depends(ident) => self.struct_improper_ctypes.contains(ident),
@@ -264,7 +265,7 @@
 
     // Types which we need to assume could possibly exist by value on the Rust
     // side.
-    pub fn is_maybe_trivial(&self, ty: &Ident) -> bool {
+    pub(crate) fn is_maybe_trivial(&self, ty: &Ident) -> bool {
         self.structs.contains_key(ty)
             || self.enums.contains_key(ty)
             || self.aliases.contains_key(ty)
diff --git a/syntax/visit.rs b/syntax/visit.rs
index 2f31378..e31b8c4 100644
--- a/syntax/visit.rs
+++ b/syntax/visit.rs
@@ -1,12 +1,12 @@
 use crate::syntax::Type;
 
-pub trait Visit<'a> {
+pub(crate) trait Visit<'a> {
     fn visit_type(&mut self, ty: &'a Type) {
         visit_type(self, ty);
     }
 }
 
-pub fn visit_type<'a, V>(visitor: &mut V, ty: &'a Type)
+pub(crate) fn visit_type<'a, V>(visitor: &mut V, ty: &'a Type)
 where
     V: Visit<'a> + ?Sized,
 {
diff --git a/tests/BUCK b/tests/BUCK
index 865eebc..a26ad08 100644
--- a/tests/BUCK
+++ b/tests/BUCK
@@ -1,9 +1,16 @@
+load("//tools/buck:build_mode.bzl", "build_mode")
 load("//tools/buck:rust_cxx_bridge.bzl", "rust_cxx_bridge")
 
+build_mode(
+    name = "build_mode",
+    cell = native.get_cell_name(),
+)
+
 rust_test(
     name = "test",
     srcs = ["test.rs"],
-    edition = "2018",
+    edition = "2021",
+    remote_execution_action_key_providers = ":build_mode",
     deps = [
         ":ffi",
         "//:cxx",
@@ -18,7 +25,7 @@
         "ffi/module.rs",
     ],
     crate = "cxx_test_suite",
-    edition = "2018",
+    edition = "2021",
     deps = [
         ":impl",
         "//:cxx",
@@ -33,11 +40,12 @@
         ":module/source",
     ],
     exported_deps = ["//:core"],
-    exported_headers = {
-        "ffi/lib.rs.h": ":bridge/header",
-        "ffi/module.rs.h": ":module/header",
-        "ffi/tests.h": "ffi/tests.h",
-    },
+    exported_headers = [
+        ":bridge/header",
+        ":module/header",
+        "ffi/tests.h",
+    ],
+    preferred_linkage = "static",
 )
 
 rust_cxx_bridge(
diff --git a/tests/BUILD b/tests/BUILD
index 3c25d96..bccde55 100644
--- a/tests/BUILD
+++ b/tests/BUILD
@@ -6,7 +6,7 @@
     name = "test",
     size = "small",
     srcs = ["test.rs"],
-    edition = "2018",
+    edition = "2021",
     deps = [
         ":cxx_test_suite",
         "//:cxx",
@@ -20,7 +20,7 @@
         "ffi/lib.rs",
         "ffi/module.rs",
     ],
-    edition = "2018",
+    edition = "2021",
     deps = [
         ":impl",
         "//:cxx",
diff --git a/tests/cxx_string.rs b/tests/cxx_string.rs
index 67444fa..8da0c8b 100644
--- a/tests/cxx_string.rs
+++ b/tests/cxx_string.rs
@@ -1,4 +1,12 @@
+#![allow(
+    clippy::incompatible_msrv, // https://github.com/rust-lang/rust-clippy/issues/12257
+    clippy::items_after_statements,
+    clippy::uninlined_format_args,
+    clippy::unused_async
+)]
+
 use cxx::{let_cxx_string, CxxString};
+use std::fmt::Write as _;
 
 #[test]
 fn test_async_cxx_string() {
@@ -15,8 +23,33 @@
 }
 
 #[test]
-fn test_debug() {
-    let_cxx_string!(s = "x\"y\'z");
+fn test_display() {
+    let_cxx_string!(s = b"w\"x\'y\xF1\x80\xF1\x80z");
 
-    assert_eq!(format!("{:?}", s), r#""x\"y'z""#);
+    assert_eq!(format!("{}", s), "w\"x'y\u{fffd}\u{fffd}z");
+}
+
+#[test]
+fn test_debug() {
+    let_cxx_string!(s = b"w\"x\'y\xF1\x80z");
+
+    assert_eq!(format!("{:?}", s), r#""w\"x'y\xf1\x80z""#);
+}
+
+#[test]
+fn test_fmt_write() {
+    let_cxx_string!(s = "");
+
+    let name = "world";
+    write!(s, "Hello, {name}!").unwrap();
+    assert_eq!(s.to_str(), Ok("Hello, world!"));
+}
+
+#[test]
+fn test_io_write() {
+    let_cxx_string!(s = "");
+    let mut reader: &[u8] = b"Hello, world!";
+
+    std::io::copy(&mut reader, &mut s).unwrap();
+    assert_eq!(s.to_str(), Ok("Hello, world!"));
 }
diff --git a/tests/cxx_vector.rs b/tests/cxx_vector.rs
new file mode 100644
index 0000000..de9e8ef
--- /dev/null
+++ b/tests/cxx_vector.rs
@@ -0,0 +1,7 @@
+use cxx::CxxVector;
+
+#[test]
+fn test_cxx_vector_new() {
+    let vector = CxxVector::<i32>::new();
+    assert!(vector.is_empty());
+}
diff --git a/tests/ffi/Cargo.toml b/tests/ffi/Cargo.toml
index ef91f4f..167bbb0 100644
--- a/tests/ffi/Cargo.toml
+++ b/tests/ffi/Cargo.toml
@@ -2,7 +2,7 @@
 name = "cxx-test-suite"
 version = "0.0.0"
 authors = ["David Tolnay <dtolnay@gmail.com>"]
-edition = "2018"
+edition = "2021"
 publish = false
 
 [lib]
diff --git a/tests/ffi/build.rs b/tests/ffi/build.rs
index a1a64b7..7051cf0 100644
--- a/tests/ffi/build.rs
+++ b/tests/ffi/build.rs
@@ -9,7 +9,7 @@
     let sources = vec!["lib.rs", "module.rs"];
     let mut build = cxx_build::bridges(sources);
     build.file("tests.cc");
-    build.flag_if_supported(cxxbridge_flags::STD);
+    build.std(cxxbridge_flags::STD);
     build.warnings_into_errors(cfg!(deny_warnings));
     if cfg!(not(target_env = "msvc")) {
         build.define("CXX_TEST_INSTANTIATIONS", None);
diff --git a/tests/ffi/lib.rs b/tests/ffi/lib.rs
index d6a5f02..f3a8310 100644
--- a/tests/ffi/lib.rs
+++ b/tests/ffi/lib.rs
@@ -1,10 +1,13 @@
+#![forbid(unsafe_op_in_unsafe_fn)]
 #![allow(
     clippy::boxed_local,
     clippy::derive_partial_eq_without_eq,
     clippy::just_underscores_and_digits,
+    clippy::missing_errors_doc,
     clippy::missing_safety_doc,
     clippy::must_use_candidate,
     clippy::needless_lifetimes,
+    clippy::needless_pass_by_ref_mut,
     clippy::needless_pass_by_value,
     clippy::ptr_arg,
     clippy::trivially_copy_pass_by_ref,
@@ -405,7 +408,7 @@
     }
 }
 
-pub struct Reference<'a>(&'a String);
+pub struct Reference<'a>(pub &'a String);
 
 impl ffi::Shared {
     fn r_method_on_shared(&self) -> String {
diff --git a/tests/test.rs b/tests/test.rs
index bcf0a2c..1611d97 100644
--- a/tests/test.rs
+++ b/tests/test.rs
@@ -5,6 +5,7 @@
     clippy::cast_possible_wrap,
     clippy::float_cmp,
     clippy::needless_pass_by_value,
+    clippy::needless_pass_by_ref_mut,
     clippy::unit_cmp,
     clippy::unseparated_literal_suffix
 )]
@@ -16,7 +17,7 @@
 use std::ffi::CStr;
 
 thread_local! {
-    static CORRECT: Cell<bool> = Cell::new(false);
+    static CORRECT: Cell<bool> = const { Cell::new(false) };
 }
 
 #[no_mangle]
diff --git a/tests/ui/derive_noncopy.stderr b/tests/ui/derive_noncopy.stderr
index b4f35d3..359581a 100644
--- a/tests/ui/derive_noncopy.stderr
+++ b/tests/ui/derive_noncopy.stderr
@@ -1,7 +1,7 @@
-error[E0204]: the trait `Copy` cannot be implemented for this type
+error[E0204]: the trait `std::marker::Copy` cannot be implemented for this type
  --> tests/ui/derive_noncopy.rs:4:12
   |
 4 |     struct TryCopy {
   |            ^^^^^^^
 5 |         other: Other,
-  |         ------------ this field does not implement `Copy`
+  |         ------------ this field does not implement `std::marker::Copy`
diff --git a/tests/ui/expected_named.stderr b/tests/ui/expected_named.stderr
index 0068bdf..c0fa04d 100644
--- a/tests/ui/expected_named.stderr
+++ b/tests/ui/expected_named.stderr
@@ -5,7 +5,7 @@
   |                                    ^^^^^^^^ expected named lifetime parameter
   |
   = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
-help: consider using the `'static` lifetime
+help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values
   |
 5 |         fn borrowed() -> UniquePtr<Borrowed<'static>>;
   |                                            +++++++++
diff --git a/tests/ui/missing_unsafe.stderr b/tests/ui/missing_unsafe.stderr
index e7dcba7..31ef9e2 100644
--- a/tests/ui/missing_unsafe.stderr
+++ b/tests/ui/missing_unsafe.stderr
@@ -1,4 +1,4 @@
-error[E0133]: call to unsafe function is unsafe and requires unsafe function or block
+error[E0133]: call to unsafe function `f` is unsafe and requires unsafe function or block
  --> tests/ui/missing_unsafe.rs:4:12
   |
 4 |         fn f(x: i32);
diff --git a/tests/ui/opaque_autotraits.stderr b/tests/ui/opaque_autotraits.stderr
index c6447c5..0a797b4 100644
--- a/tests/ui/opaque_autotraits.stderr
+++ b/tests/ui/opaque_autotraits.stderr
@@ -4,10 +4,14 @@
 13 |     assert_send::<ffi::Opaque>();
    |                   ^^^^^^^^^^^ `*const cxx::void` cannot be sent between threads safely
    |
-   = help: within `ffi::Opaque`, the trait `Send` is not implemented for `*const cxx::void`
-   = note: required because it appears within the type `[*const void; 0]`
-   = note: required because it appears within the type `Opaque`
-note: required because it appears within the type `Opaque`
+   = help: within `ffi::Opaque`, the trait `Send` is not implemented for `*const cxx::void`, which is required by `ffi::Opaque: Send`
+   = note: required because it appears within the type `[*const cxx::void; 0]`
+note: required because it appears within the type `cxx::private::Opaque`
+  --> src/opaque.rs
+   |
+   | pub struct Opaque {
+   |            ^^^^^^
+note: required because it appears within the type `ffi::Opaque`
   --> tests/ui/opaque_autotraits.rs:4:14
    |
 4  |         type Opaque;
@@ -24,10 +28,14 @@
 14 |     assert_sync::<ffi::Opaque>();
    |                   ^^^^^^^^^^^ `*const cxx::void` cannot be shared between threads safely
    |
-   = help: within `ffi::Opaque`, the trait `Sync` is not implemented for `*const cxx::void`
-   = note: required because it appears within the type `[*const void; 0]`
-   = note: required because it appears within the type `Opaque`
-note: required because it appears within the type `Opaque`
+   = help: within `ffi::Opaque`, the trait `Sync` is not implemented for `*const cxx::void`, which is required by `ffi::Opaque: Sync`
+   = note: required because it appears within the type `[*const cxx::void; 0]`
+note: required because it appears within the type `cxx::private::Opaque`
+  --> src/opaque.rs
+   |
+   | pub struct Opaque {
+   |            ^^^^^^
+note: required because it appears within the type `ffi::Opaque`
   --> tests/ui/opaque_autotraits.rs:4:14
    |
 4  |         type Opaque;
@@ -42,12 +50,21 @@
   --> tests/ui/opaque_autotraits.rs:15:20
    |
 15 |     assert_unpin::<ffi::Opaque>();
-   |                    ^^^^^^^^^^^ within `ffi::Opaque`, the trait `Unpin` is not implemented for `PhantomPinned`
+   |                    ^^^^^^^^^^^ within `ffi::Opaque`, the trait `Unpin` is not implemented for `PhantomPinned`, which is required by `ffi::Opaque: Unpin`
    |
-   = note: consider using `Box::pin`
-   = note: required because it appears within the type `PhantomData<PhantomPinned>`
-   = note: required because it appears within the type `Opaque`
-note: required because it appears within the type `Opaque`
+   = note: consider using the `pin!` macro
+           consider using `Box::pin` if you need to access the pinned value outside of the current scope
+note: required because it appears within the type `PhantomData<PhantomPinned>`
+  --> $RUST/core/src/marker.rs
+   |
+   | pub struct PhantomData<T: ?Sized>;
+   |            ^^^^^^^^^^^
+note: required because it appears within the type `cxx::private::Opaque`
+  --> src/opaque.rs
+   |
+   | pub struct Opaque {
+   |            ^^^^^^
+note: required because it appears within the type `ffi::Opaque`
   --> tests/ui/opaque_autotraits.rs:4:14
    |
 4  |         type Opaque;
diff --git a/tests/ui/opaque_not_sized.stderr b/tests/ui/opaque_not_sized.stderr
index 85be4af..732ffeb 100644
--- a/tests/ui/opaque_not_sized.stderr
+++ b/tests/ui/opaque_not_sized.stderr
@@ -4,7 +4,7 @@
 4 |         type TypeR;
   |              ^^^^^ doesn't have a size known at compile-time
   |
-  = help: within `TypeR`, the trait `Sized` is not implemented for `str`
+  = help: within `TypeR`, the trait `Sized` is not implemented for `str`, which is required by `TypeR: Sized`
 note: required because it appears within the type `TypeR`
  --> tests/ui/opaque_not_sized.rs:8:8
   |
diff --git a/tests/ui/ptr_no_const_mut.stderr b/tests/ui/ptr_no_const_mut.stderr
index 4b1bf06..a6d4478 100644
--- a/tests/ui/ptr_no_const_mut.stderr
+++ b/tests/ui/ptr_no_const_mut.stderr
@@ -6,10 +6,10 @@
   |
 help: add `mut` or `const` here
   |
-6 |         fn get_neither_const_nor_mut() -> *const C;
-  |                                            +++++
 6 |         fn get_neither_const_nor_mut() -> *mut C;
   |                                            +++
+6 |         fn get_neither_const_nor_mut() -> *const C;
+  |                                            +++++
 
 error: expected `const` or `mut`
  --> tests/ui/ptr_no_const_mut.rs:6:44
diff --git a/tests/ui/rust_pinned.stderr b/tests/ui/rust_pinned.stderr
index a0fc033..94079d9 100644
--- a/tests/ui/rust_pinned.stderr
+++ b/tests/ui/rust_pinned.stderr
@@ -2,9 +2,10 @@
   --> tests/ui/rust_pinned.rs:6:14
    |
 6  |         type Pinned;
-   |              ^^^^^^ within `Pinned`, the trait `Unpin` is not implemented for `PhantomPinned`
+   |              ^^^^^^ within `Pinned`, the trait `Unpin` is not implemented for `PhantomPinned`, which is required by `Pinned: Unpin`
    |
-   = note: consider using `Box::pin`
+   = note: consider using the `pin!` macro
+           consider using `Box::pin` if you need to access the pinned value outside of the current scope
 note: required because it appears within the type `Pinned`
   --> tests/ui/rust_pinned.rs:10:12
    |
diff --git a/tests/ui/unique_ptr_to_opaque.stderr b/tests/ui/unique_ptr_to_opaque.stderr
index 3c121e5..7aa5d8a 100644
--- a/tests/ui/unique_ptr_to_opaque.stderr
+++ b/tests/ui/unique_ptr_to_opaque.stderr
@@ -14,5 +14,8 @@
 note: required by a bound in `UniquePtr::<T>::new`
   --> src/unique_ptr.rs
    |
+   |     pub fn new(value: T) -> Self
+   |            --- required by a bound in this associated function
+   |     where
    |         T: ExternType<Kind = Trivial>,
    |                       ^^^^^^^^^^^^^^ required by this bound in `UniquePtr::<T>::new`
diff --git a/tests/ui/unpin_impl.stderr b/tests/ui/unpin_impl.stderr
index afe5a80..888d64f 100644
--- a/tests/ui/unpin_impl.stderr
+++ b/tests/ui/unpin_impl.stderr
@@ -1,14 +1,8 @@
-error[E0282]: type annotations needed
+error[E0283]: type annotations needed
  --> tests/ui/unpin_impl.rs:4:14
   |
 4 |         type Opaque;
   |              ^^^^^^ cannot infer type
-
-error[E0283]: type annotations needed
- --> tests/ui/unpin_impl.rs:1:1
-  |
-1 | #[cxx::bridge]
-  | ^^^^^^^^^^^^^^ cannot infer type
   |
 note: multiple `impl`s satisfying `ffi::Opaque: __AmbiguousIfImpl<_>` found
  --> tests/ui/unpin_impl.rs:1:1
diff --git a/tests/ui/unsupported_elided.stderr b/tests/ui/unsupported_elided.stderr
index 4ccac6f..205fcfd 100644
--- a/tests/ui/unsupported_elided.stderr
+++ b/tests/ui/unsupported_elided.stderr
@@ -20,3 +20,11 @@
   |
 8 |         fn f<'a>(t: &'a T<'a>) -> &'a str;
   |             ++++     ++  ++++      ++
+
+error: lifetime may not live long enough
+ --> tests/ui/unsupported_elided.rs:8:12
+  |
+8 |         fn f(t: &T) -> &str;
+  |            ^ - has type `&T<'1>`
+  |            |
+  |            returning this value requires that `'1` must outlive `'static`
diff --git a/tests/ui/vector_autotraits.stderr b/tests/ui/vector_autotraits.stderr
index 8851ced..1f0c522 100644
--- a/tests/ui/vector_autotraits.stderr
+++ b/tests/ui/vector_autotraits.stderr
@@ -4,17 +4,29 @@
 20 |     assert_send::<CxxVector<ffi::NotThreadSafe>>();
    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `*const cxx::void` cannot be sent between threads safely
    |
-   = help: within `CxxVector<NotThreadSafe>`, the trait `Send` is not implemented for `*const cxx::void`
-   = note: required because it appears within the type `[*const void; 0]`
-   = note: required because it appears within the type `Opaque`
+   = help: within `CxxVector<NotThreadSafe>`, the trait `Send` is not implemented for `*const cxx::void`, which is required by `CxxVector<NotThreadSafe>: Send`
+   = note: required because it appears within the type `[*const cxx::void; 0]`
+note: required because it appears within the type `cxx::private::Opaque`
+  --> src/opaque.rs
+   |
+   | pub struct Opaque {
+   |            ^^^^^^
 note: required because it appears within the type `NotThreadSafe`
   --> tests/ui/vector_autotraits.rs:7:14
    |
 7  |         type NotThreadSafe;
    |              ^^^^^^^^^^^^^
    = note: required because it appears within the type `[NotThreadSafe]`
-   = note: required because it appears within the type `PhantomData<[NotThreadSafe]>`
-   = note: required because it appears within the type `CxxVector<NotThreadSafe>`
+note: required because it appears within the type `PhantomData<[NotThreadSafe]>`
+  --> $RUST/core/src/marker.rs
+   |
+   | pub struct PhantomData<T: ?Sized>;
+   |            ^^^^^^^^^^^
+note: required because it appears within the type `CxxVector<NotThreadSafe>`
+  --> src/cxx_vector.rs
+   |
+   | pub struct CxxVector<T> {
+   |            ^^^^^^^^^
 note: required by a bound in `assert_send`
   --> tests/ui/vector_autotraits.rs:16:19
    |
diff --git a/third-party/.cargo/.gitignore b/third-party/.cargo/.gitignore
new file mode 100644
index 0000000..5c5d3c3
--- /dev/null
+++ b/third-party/.cargo/.gitignore
@@ -0,0 +1,4 @@
+/.package-cache
+/.package-cache-mutate
+/config.toml
+/registry/
diff --git a/third-party/.gitignore b/third-party/.gitignore
index b050948..61ead86 100644
--- a/third-party/.gitignore
+++ b/third-party/.gitignore
@@ -1,2 +1 @@
-/.cargo
 /vendor
diff --git a/third-party/BUCK b/third-party/BUCK
index cb756ae..42ef667 100644
--- a/third-party/BUCK
+++ b/third-party/BUCK
@@ -1,132 +1,71 @@
 # @generated by `reindeer buckify`
 
-load("//tools/buck:buildscript.bzl", "buildscript_args")
-load("//tools/buck:third_party.bzl", "third_party_rust_library")
+load("@prelude//rust:cargo_buildscript.bzl", "buildscript_run")
+load("@prelude//rust:cargo_package.bzl", "cargo")
 
-third_party_rust_library(
-    name = "bitflags-1.3.2",
-    srcs = [
-        "vendor/bitflags-1.3.2/src/example_generated.rs",
-        "vendor/bitflags-1.3.2/src/lib.rs",
+http_archive(
+    name = "anstyle-1.0.6.crate",
+    sha256 = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc",
+    strip_prefix = "anstyle-1.0.6",
+    urls = ["https://crates.io/api/v1/crates/anstyle/1.0.6/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
+    name = "anstyle-1.0.6",
+    srcs = [":anstyle-1.0.6.crate"],
+    crate = "anstyle",
+    crate_root = "anstyle-1.0.6.crate/src/lib.rs",
+    edition = "2021",
+    features = [
+        "default",
+        "std",
     ],
-    crate = "bitflags",
-    crate_root = "vendor/bitflags-1.3.2/src/lib.rs",
-    edition = "2018",
-    features = ["default"],
-    rustc_flags = ["--cap-lints=allow"],
     visibility = [],
 )
 
 alias(
     name = "cc",
-    actual = ":cc-1.0.79",
+    actual = ":cc-1.0.89",
     visibility = ["PUBLIC"],
 )
 
-third_party_rust_library(
-    name = "cc-1.0.79",
-    srcs = [
-        "vendor/cc-1.0.79/src/com.rs",
-        "vendor/cc-1.0.79/src/lib.rs",
-        "vendor/cc-1.0.79/src/registry.rs",
-        "vendor/cc-1.0.79/src/setup_config.rs",
-        "vendor/cc-1.0.79/src/vs_instances.rs",
-        "vendor/cc-1.0.79/src/winapi.rs",
-        "vendor/cc-1.0.79/src/windows_registry.rs",
-    ],
+http_archive(
+    name = "cc-1.0.89.crate",
+    sha256 = "a0ba8f7aaa012f30d5b2861462f6708eccd49c3c39863fe083a308035f63d723",
+    strip_prefix = "cc-1.0.89",
+    urls = ["https://crates.io/api/v1/crates/cc/1.0.89/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
+    name = "cc-1.0.89",
+    srcs = [":cc-1.0.89.crate"],
     crate = "cc",
-    crate_root = "vendor/cc-1.0.79/src/lib.rs",
+    crate_root = "cc-1.0.89.crate/src/lib.rs",
     edition = "2018",
-    rustc_flags = ["--cap-lints=allow"],
     visibility = [],
 )
 
 alias(
     name = "clap",
-    actual = ":clap-4.1.10",
+    actual = ":clap-4.5.1",
     visibility = ["PUBLIC"],
 )
 
-third_party_rust_library(
-    name = "clap-4.1.10",
-    srcs = [
-        "vendor/clap-4.1.10/examples/demo.md",
-        "vendor/clap-4.1.10/examples/demo.rs",
-        "vendor/clap-4.1.10/src/_cookbook/cargo_example.rs",
-        "vendor/clap-4.1.10/src/_cookbook/cargo_example_derive.rs",
-        "vendor/clap-4.1.10/src/_cookbook/escaped_positional.rs",
-        "vendor/clap-4.1.10/src/_cookbook/escaped_positional_derive.rs",
-        "vendor/clap-4.1.10/src/_cookbook/find.rs",
-        "vendor/clap-4.1.10/src/_cookbook/git.rs",
-        "vendor/clap-4.1.10/src/_cookbook/git_derive.rs",
-        "vendor/clap-4.1.10/src/_cookbook/mod.rs",
-        "vendor/clap-4.1.10/src/_cookbook/multicall_busybox.rs",
-        "vendor/clap-4.1.10/src/_cookbook/multicall_hostname.rs",
-        "vendor/clap-4.1.10/src/_cookbook/pacman.rs",
-        "vendor/clap-4.1.10/src/_cookbook/repl.rs",
-        "vendor/clap-4.1.10/src/_cookbook/typed_derive.rs",
-        "vendor/clap-4.1.10/src/_derive/_tutorial.rs",
-        "vendor/clap-4.1.10/src/_derive/mod.rs",
-        "vendor/clap-4.1.10/src/_faq.rs",
-        "vendor/clap-4.1.10/src/_features.rs",
-        "vendor/clap-4.1.10/src/_tutorial.rs",
-        "vendor/clap-4.1.10/src/builder/action.rs",
-        "vendor/clap-4.1.10/src/builder/app_settings.rs",
-        "vendor/clap-4.1.10/src/builder/arg.rs",
-        "vendor/clap-4.1.10/src/builder/arg_group.rs",
-        "vendor/clap-4.1.10/src/builder/arg_predicate.rs",
-        "vendor/clap-4.1.10/src/builder/arg_settings.rs",
-        "vendor/clap-4.1.10/src/builder/command.rs",
-        "vendor/clap-4.1.10/src/builder/debug_asserts.rs",
-        "vendor/clap-4.1.10/src/builder/mod.rs",
-        "vendor/clap-4.1.10/src/builder/os_str.rs",
-        "vendor/clap-4.1.10/src/builder/possible_value.rs",
-        "vendor/clap-4.1.10/src/builder/range.rs",
-        "vendor/clap-4.1.10/src/builder/resettable.rs",
-        "vendor/clap-4.1.10/src/builder/str.rs",
-        "vendor/clap-4.1.10/src/builder/styled_str.rs",
-        "vendor/clap-4.1.10/src/builder/tests.rs",
-        "vendor/clap-4.1.10/src/builder/value_hint.rs",
-        "vendor/clap-4.1.10/src/builder/value_parser.rs",
-        "vendor/clap-4.1.10/src/derive.rs",
-        "vendor/clap-4.1.10/src/error/context.rs",
-        "vendor/clap-4.1.10/src/error/format.rs",
-        "vendor/clap-4.1.10/src/error/kind.rs",
-        "vendor/clap-4.1.10/src/error/mod.rs",
-        "vendor/clap-4.1.10/src/lib.rs",
-        "vendor/clap-4.1.10/src/macros.rs",
-        "vendor/clap-4.1.10/src/mkeymap.rs",
-        "vendor/clap-4.1.10/src/output/fmt.rs",
-        "vendor/clap-4.1.10/src/output/help.rs",
-        "vendor/clap-4.1.10/src/output/help_template.rs",
-        "vendor/clap-4.1.10/src/output/mod.rs",
-        "vendor/clap-4.1.10/src/output/textwrap/core.rs",
-        "vendor/clap-4.1.10/src/output/textwrap/mod.rs",
-        "vendor/clap-4.1.10/src/output/textwrap/word_separators.rs",
-        "vendor/clap-4.1.10/src/output/textwrap/wrap_algorithms.rs",
-        "vendor/clap-4.1.10/src/output/usage.rs",
-        "vendor/clap-4.1.10/src/parser/arg_matcher.rs",
-        "vendor/clap-4.1.10/src/parser/error.rs",
-        "vendor/clap-4.1.10/src/parser/features/mod.rs",
-        "vendor/clap-4.1.10/src/parser/features/suggestions.rs",
-        "vendor/clap-4.1.10/src/parser/matches/any_value.rs",
-        "vendor/clap-4.1.10/src/parser/matches/arg_matches.rs",
-        "vendor/clap-4.1.10/src/parser/matches/matched_arg.rs",
-        "vendor/clap-4.1.10/src/parser/matches/mod.rs",
-        "vendor/clap-4.1.10/src/parser/matches/value_source.rs",
-        "vendor/clap-4.1.10/src/parser/mod.rs",
-        "vendor/clap-4.1.10/src/parser/parser.rs",
-        "vendor/clap-4.1.10/src/parser/validator.rs",
-        "vendor/clap-4.1.10/src/util/color.rs",
-        "vendor/clap-4.1.10/src/util/flat_map.rs",
-        "vendor/clap-4.1.10/src/util/flat_set.rs",
-        "vendor/clap-4.1.10/src/util/graph.rs",
-        "vendor/clap-4.1.10/src/util/id.rs",
-        "vendor/clap-4.1.10/src/util/mod.rs",
-        "vendor/clap-4.1.10/src/util/str_to_bool.rs",
-    ],
+http_archive(
+    name = "clap-4.5.1.crate",
+    sha256 = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da",
+    strip_prefix = "clap-4.5.1",
+    urls = ["https://crates.io/api/v1/crates/clap/4.5.1/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
+    name = "clap-4.5.1",
+    srcs = [":clap-4.5.1.crate"],
     crate = "clap",
-    crate_root = "vendor/clap-4.1.10/src/lib.rs",
+    crate_root = "clap-4.5.1.crate/src/lib.rs",
     edition = "2021",
     features = [
         "error-context",
@@ -134,23 +73,52 @@
         "std",
         "usage",
     ],
-    rustc_flags = ["--cap-lints=allow"],
+    visibility = [],
+    deps = [":clap_builder-4.5.1"],
+)
+
+http_archive(
+    name = "clap_builder-4.5.1.crate",
+    sha256 = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb",
+    strip_prefix = "clap_builder-4.5.1",
+    urls = ["https://crates.io/api/v1/crates/clap_builder/4.5.1/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
+    name = "clap_builder-4.5.1",
+    srcs = [":clap_builder-4.5.1.crate"],
+    crate = "clap_builder",
+    crate_root = "clap_builder-4.5.1.crate/src/lib.rs",
+    edition = "2021",
+    features = [
+        "error-context",
+        "help",
+        "std",
+        "usage",
+    ],
     visibility = [],
     deps = [
-        ":bitflags-1.3.2",
-        ":clap_lex-0.3.3",
+        ":anstyle-1.0.6",
+        ":clap_lex-0.7.0",
     ],
 )
 
-third_party_rust_library(
-    name = "clap_lex-0.3.3",
-    srcs = ["vendor/clap_lex-0.3.3/src/lib.rs"],
-    crate = "clap_lex",
-    crate_root = "vendor/clap_lex-0.3.3/src/lib.rs",
-    edition = "2021",
-    rustc_flags = ["--cap-lints=allow"],
+http_archive(
+    name = "clap_lex-0.7.0.crate",
+    sha256 = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce",
+    strip_prefix = "clap_lex-0.7.0",
+    urls = ["https://crates.io/api/v1/crates/clap_lex/0.7.0/download"],
     visibility = [],
-    deps = [":os_str_bytes-6.4.1"],
+)
+
+cargo.rust_library(
+    name = "clap_lex-0.7.0",
+    srcs = [":clap_lex-0.7.0.crate"],
+    crate = "clap_lex",
+    crate_root = "clap_lex-0.7.0.crate/src/lib.rs",
+    edition = "2021",
+    visibility = [],
 )
 
 alias(
@@ -159,45 +127,46 @@
     visibility = ["PUBLIC"],
 )
 
-third_party_rust_library(
+http_archive(
+    name = "codespan-reporting-0.11.1.crate",
+    sha256 = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e",
+    strip_prefix = "codespan-reporting-0.11.1",
+    urls = ["https://crates.io/api/v1/crates/codespan-reporting/0.11.1/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
     name = "codespan-reporting-0.11.1",
-    srcs = [
-        "vendor/codespan-reporting-0.11.1/src/diagnostic.rs",
-        "vendor/codespan-reporting-0.11.1/src/files.rs",
-        "vendor/codespan-reporting-0.11.1/src/lib.rs",
-        "vendor/codespan-reporting-0.11.1/src/term.rs",
-        "vendor/codespan-reporting-0.11.1/src/term/config.rs",
-        "vendor/codespan-reporting-0.11.1/src/term/renderer.rs",
-        "vendor/codespan-reporting-0.11.1/src/term/views.rs",
-    ],
+    srcs = [":codespan-reporting-0.11.1.crate"],
     crate = "codespan_reporting",
-    crate_root = "vendor/codespan-reporting-0.11.1/src/lib.rs",
+    crate_root = "codespan-reporting-0.11.1.crate/src/lib.rs",
     edition = "2018",
-    rustc_flags = ["--cap-lints=allow"],
     visibility = [],
     deps = [
-        ":termcolor-1.2.0",
-        ":unicode-width-0.1.10",
+        ":termcolor-1.4.1",
+        ":unicode-width-0.1.11",
     ],
 )
 
 alias(
     name = "once_cell",
-    actual = ":once_cell-1.17.1",
+    actual = ":once_cell-1.19.0",
     visibility = ["PUBLIC"],
 )
 
-third_party_rust_library(
-    name = "once_cell-1.17.1",
-    srcs = [
-        "vendor/once_cell-1.17.1/src/imp_cs.rs",
-        "vendor/once_cell-1.17.1/src/imp_pl.rs",
-        "vendor/once_cell-1.17.1/src/imp_std.rs",
-        "vendor/once_cell-1.17.1/src/lib.rs",
-        "vendor/once_cell-1.17.1/src/race.rs",
-    ],
+http_archive(
+    name = "once_cell-1.19.0.crate",
+    sha256 = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92",
+    strip_prefix = "once_cell-1.19.0",
+    urls = ["https://crates.io/api/v1/crates/once_cell/1.19.0/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
+    name = "once_cell-1.19.0",
+    srcs = [":once_cell-1.19.0.crate"],
     crate = "once_cell",
-    crate_root = "vendor/once_cell-1.17.1/src/lib.rs",
+    crate_root = "once_cell-1.19.0.crate/src/lib.rs",
     edition = "2021",
     features = [
         "alloc",
@@ -205,241 +174,154 @@
         "race",
         "std",
     ],
-    rustc_flags = ["--cap-lints=allow"],
-    visibility = [],
-)
-
-third_party_rust_library(
-    name = "os_str_bytes-6.4.1",
-    srcs = [
-        "vendor/os_str_bytes-6.4.1/src/common/mod.rs",
-        "vendor/os_str_bytes-6.4.1/src/common/raw.rs",
-        "vendor/os_str_bytes-6.4.1/src/iter.rs",
-        "vendor/os_str_bytes-6.4.1/src/lib.rs",
-        "vendor/os_str_bytes-6.4.1/src/pattern.rs",
-        "vendor/os_str_bytes-6.4.1/src/raw_str.rs",
-        "vendor/os_str_bytes-6.4.1/src/util.rs",
-        "vendor/os_str_bytes-6.4.1/src/wasm/mod.rs",
-        "vendor/os_str_bytes-6.4.1/src/wasm/raw.rs",
-        "vendor/os_str_bytes-6.4.1/src/windows/mod.rs",
-        "vendor/os_str_bytes-6.4.1/src/windows/raw.rs",
-        "vendor/os_str_bytes-6.4.1/src/windows/wtf8/code_points.rs",
-        "vendor/os_str_bytes-6.4.1/src/windows/wtf8/convert.rs",
-        "vendor/os_str_bytes-6.4.1/src/windows/wtf8/mod.rs",
-        "vendor/os_str_bytes-6.4.1/src/windows/wtf8/string.rs",
-    ],
-    crate = "os_str_bytes",
-    crate_root = "vendor/os_str_bytes-6.4.1/src/lib.rs",
-    edition = "2021",
-    features = ["raw_os_str"],
-    rustc_flags = ["--cap-lints=allow"],
     visibility = [],
 )
 
 alias(
     name = "proc-macro2",
-    actual = ":proc-macro2-1.0.52",
+    actual = ":proc-macro2-1.0.78",
     visibility = ["PUBLIC"],
 )
 
-third_party_rust_library(
-    name = "proc-macro2-1.0.52",
-    srcs = [
-        "vendor/proc-macro2-1.0.52/src/detection.rs",
-        "vendor/proc-macro2-1.0.52/src/extra.rs",
-        "vendor/proc-macro2-1.0.52/src/fallback.rs",
-        "vendor/proc-macro2-1.0.52/src/lib.rs",
-        "vendor/proc-macro2-1.0.52/src/location.rs",
-        "vendor/proc-macro2-1.0.52/src/marker.rs",
-        "vendor/proc-macro2-1.0.52/src/parse.rs",
-        "vendor/proc-macro2-1.0.52/src/rcvec.rs",
-        "vendor/proc-macro2-1.0.52/src/wrapper.rs",
-    ],
+http_archive(
+    name = "proc-macro2-1.0.78.crate",
+    sha256 = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae",
+    strip_prefix = "proc-macro2-1.0.78",
+    urls = ["https://crates.io/api/v1/crates/proc-macro2/1.0.78/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
+    name = "proc-macro2-1.0.78",
+    srcs = [":proc-macro2-1.0.78.crate"],
     crate = "proc_macro2",
-    crate_root = "vendor/proc-macro2-1.0.52/src/lib.rs",
-    edition = "2018",
+    crate_root = "proc-macro2-1.0.78.crate/src/lib.rs",
+    edition = "2021",
     features = [
         "default",
         "proc-macro",
         "span-locations",
     ],
-    rustc_flags = [
-        "--cap-lints=allow",
-        "@$(location :proc-macro2-1.0.52-build-script-build-args)",
-    ],
+    rustc_flags = ["@$(location :proc-macro2-1.0.78-build-script-run[rustc_flags])"],
     visibility = [],
-    deps = [":unicode-ident-1.0.8"],
+    deps = [":unicode-ident-1.0.12"],
 )
 
-rust_binary(
-    name = "proc-macro2-1.0.52-build-script-build",
-    srcs = ["vendor/proc-macro2-1.0.52/build.rs"],
+cargo.rust_binary(
+    name = "proc-macro2-1.0.78-build-script-build",
+    srcs = [":proc-macro2-1.0.78.crate"],
     crate = "build_script_build",
-    crate_root = "vendor/proc-macro2-1.0.52/build.rs",
-    edition = "2018",
+    crate_root = "proc-macro2-1.0.78.crate/build.rs",
+    edition = "2021",
     features = [
         "default",
         "proc-macro",
         "span-locations",
     ],
-    rustc_flags = ["--cap-lints=allow"],
     visibility = [],
 )
 
-buildscript_args(
-    name = "proc-macro2-1.0.52-build-script-build-args",
+buildscript_run(
+    name = "proc-macro2-1.0.78-build-script-run",
     package_name = "proc-macro2",
-    buildscript_rule = ":proc-macro2-1.0.52-build-script-build",
+    buildscript_rule = ":proc-macro2-1.0.78-build-script-build",
     features = [
         "default",
         "proc-macro",
         "span-locations",
     ],
-    outfile = "args.txt",
-    version = "1.0.52",
+    version = "1.0.78",
 )
 
 alias(
     name = "quote",
-    actual = ":quote-1.0.26",
+    actual = ":quote-1.0.35",
     visibility = ["PUBLIC"],
 )
 
-third_party_rust_library(
-    name = "quote-1.0.26",
-    srcs = [
-        "vendor/quote-1.0.26/src/ext.rs",
-        "vendor/quote-1.0.26/src/format.rs",
-        "vendor/quote-1.0.26/src/ident_fragment.rs",
-        "vendor/quote-1.0.26/src/lib.rs",
-        "vendor/quote-1.0.26/src/runtime.rs",
-        "vendor/quote-1.0.26/src/spanned.rs",
-        "vendor/quote-1.0.26/src/to_tokens.rs",
-    ],
+http_archive(
+    name = "quote-1.0.35.crate",
+    sha256 = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef",
+    strip_prefix = "quote-1.0.35",
+    urls = ["https://crates.io/api/v1/crates/quote/1.0.35/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
+    name = "quote-1.0.35",
+    srcs = [":quote-1.0.35.crate"],
     crate = "quote",
-    crate_root = "vendor/quote-1.0.26/src/lib.rs",
+    crate_root = "quote-1.0.35.crate/src/lib.rs",
     edition = "2018",
     features = [
         "default",
         "proc-macro",
     ],
-    rustc_flags = [
-        "--cap-lints=allow",
-        "@$(location :quote-1.0.26-build-script-build-args)",
-    ],
     visibility = [],
-    deps = [":proc-macro2-1.0.52"],
-)
-
-rust_binary(
-    name = "quote-1.0.26-build-script-build",
-    srcs = ["vendor/quote-1.0.26/build.rs"],
-    crate = "build_script_build",
-    crate_root = "vendor/quote-1.0.26/build.rs",
-    edition = "2018",
-    features = [
-        "default",
-        "proc-macro",
-    ],
-    rustc_flags = ["--cap-lints=allow"],
-    visibility = [],
-)
-
-buildscript_args(
-    name = "quote-1.0.26-build-script-build-args",
-    package_name = "quote",
-    buildscript_rule = ":quote-1.0.26-build-script-build",
-    features = [
-        "default",
-        "proc-macro",
-    ],
-    outfile = "args.txt",
-    version = "1.0.26",
+    deps = [":proc-macro2-1.0.78"],
 )
 
 alias(
     name = "scratch",
-    actual = ":scratch-1.0.5",
+    actual = ":scratch-1.0.7",
     visibility = ["PUBLIC"],
 )
 
-third_party_rust_library(
-    name = "scratch-1.0.5",
-    srcs = ["vendor/scratch-1.0.5/src/lib.rs"],
+http_archive(
+    name = "scratch-1.0.7.crate",
+    sha256 = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152",
+    strip_prefix = "scratch-1.0.7",
+    urls = ["https://crates.io/api/v1/crates/scratch/1.0.7/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
+    name = "scratch-1.0.7",
+    srcs = [":scratch-1.0.7.crate"],
     crate = "scratch",
-    crate_root = "vendor/scratch-1.0.5/src/lib.rs",
+    crate_root = "scratch-1.0.7.crate/src/lib.rs",
     edition = "2015",
     env = {
-        "OUT_DIR": "generated",
+        "OUT_DIR": "$(location :scratch-1.0.7-build-script-run[out_dir])",
     },
-    rustc_flags = ["--cap-lints=allow"],
     visibility = [],
 )
 
+cargo.rust_binary(
+    name = "scratch-1.0.7-build-script-build",
+    srcs = [":scratch-1.0.7.crate"],
+    crate = "build_script_build",
+    crate_root = "scratch-1.0.7.crate/build.rs",
+    edition = "2015",
+    visibility = [],
+)
+
+buildscript_run(
+    name = "scratch-1.0.7-build-script-run",
+    package_name = "scratch",
+    buildscript_rule = ":scratch-1.0.7-build-script-build",
+    version = "1.0.7",
+)
+
 alias(
     name = "syn",
-    actual = ":syn-2.0.1",
+    actual = ":syn-2.0.52",
     visibility = ["PUBLIC"],
 )
 
-third_party_rust_library(
-    name = "syn-2.0.1",
-    srcs = [
-        "vendor/syn-2.0.1/src/attr.rs",
-        "vendor/syn-2.0.1/src/bigint.rs",
-        "vendor/syn-2.0.1/src/buffer.rs",
-        "vendor/syn-2.0.1/src/custom_keyword.rs",
-        "vendor/syn-2.0.1/src/custom_punctuation.rs",
-        "vendor/syn-2.0.1/src/data.rs",
-        "vendor/syn-2.0.1/src/derive.rs",
-        "vendor/syn-2.0.1/src/discouraged.rs",
-        "vendor/syn-2.0.1/src/drops.rs",
-        "vendor/syn-2.0.1/src/error.rs",
-        "vendor/syn-2.0.1/src/export.rs",
-        "vendor/syn-2.0.1/src/expr.rs",
-        "vendor/syn-2.0.1/src/ext.rs",
-        "vendor/syn-2.0.1/src/file.rs",
-        "vendor/syn-2.0.1/src/gen/clone.rs",
-        "vendor/syn-2.0.1/src/gen/debug.rs",
-        "vendor/syn-2.0.1/src/gen/eq.rs",
-        "vendor/syn-2.0.1/src/gen/fold.rs",
-        "vendor/syn-2.0.1/src/gen/hash.rs",
-        "vendor/syn-2.0.1/src/gen/visit.rs",
-        "vendor/syn-2.0.1/src/gen/visit_mut.rs",
-        "vendor/syn-2.0.1/src/gen_helper.rs",
-        "vendor/syn-2.0.1/src/generics.rs",
-        "vendor/syn-2.0.1/src/group.rs",
-        "vendor/syn-2.0.1/src/ident.rs",
-        "vendor/syn-2.0.1/src/item.rs",
-        "vendor/syn-2.0.1/src/lib.rs",
-        "vendor/syn-2.0.1/src/lifetime.rs",
-        "vendor/syn-2.0.1/src/lit.rs",
-        "vendor/syn-2.0.1/src/lookahead.rs",
-        "vendor/syn-2.0.1/src/mac.rs",
-        "vendor/syn-2.0.1/src/macros.rs",
-        "vendor/syn-2.0.1/src/meta.rs",
-        "vendor/syn-2.0.1/src/op.rs",
-        "vendor/syn-2.0.1/src/parse.rs",
-        "vendor/syn-2.0.1/src/parse_macro_input.rs",
-        "vendor/syn-2.0.1/src/parse_quote.rs",
-        "vendor/syn-2.0.1/src/pat.rs",
-        "vendor/syn-2.0.1/src/path.rs",
-        "vendor/syn-2.0.1/src/print.rs",
-        "vendor/syn-2.0.1/src/punctuated.rs",
-        "vendor/syn-2.0.1/src/restriction.rs",
-        "vendor/syn-2.0.1/src/sealed.rs",
-        "vendor/syn-2.0.1/src/span.rs",
-        "vendor/syn-2.0.1/src/spanned.rs",
-        "vendor/syn-2.0.1/src/stmt.rs",
-        "vendor/syn-2.0.1/src/thread.rs",
-        "vendor/syn-2.0.1/src/token.rs",
-        "vendor/syn-2.0.1/src/tt.rs",
-        "vendor/syn-2.0.1/src/ty.rs",
-        "vendor/syn-2.0.1/src/verbatim.rs",
-        "vendor/syn-2.0.1/src/whitespace.rs",
-    ],
+http_archive(
+    name = "syn-2.0.52.crate",
+    sha256 = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07",
+    strip_prefix = "syn-2.0.52",
+    urls = ["https://crates.io/api/v1/crates/syn/2.0.52/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
+    name = "syn-2.0.52",
+    srcs = [":syn-2.0.52.crate"],
     crate = "syn",
-    crate_root = "vendor/syn-2.0.1/src/lib.rs",
+    crate_root = "syn-2.0.52.crate/src/lib.rs",
     edition = "2021",
     features = [
         "clone-impls",
@@ -451,49 +333,190 @@
         "proc-macro",
         "quote",
     ],
-    rustc_flags = ["--cap-lints=allow"],
     visibility = [],
     deps = [
-        ":proc-macro2-1.0.52",
-        ":quote-1.0.26",
-        ":unicode-ident-1.0.8",
+        ":proc-macro2-1.0.78",
+        ":quote-1.0.35",
+        ":unicode-ident-1.0.12",
     ],
 )
 
-third_party_rust_library(
-    name = "termcolor-1.2.0",
-    srcs = ["vendor/termcolor-1.2.0/src/lib.rs"],
+http_archive(
+    name = "termcolor-1.4.1.crate",
+    sha256 = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755",
+    strip_prefix = "termcolor-1.4.1",
+    urls = ["https://crates.io/api/v1/crates/termcolor/1.4.1/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
+    name = "termcolor-1.4.1",
+    srcs = [":termcolor-1.4.1.crate"],
     crate = "termcolor",
-    crate_root = "vendor/termcolor-1.2.0/src/lib.rs",
+    crate_root = "termcolor-1.4.1.crate/src/lib.rs",
     edition = "2018",
-    rustc_flags = ["--cap-lints=allow"],
+    platform = {
+        "windows-gnu": dict(
+            deps = [":winapi-util-0.1.6"],
+        ),
+        "windows-msvc": dict(
+            deps = [":winapi-util-0.1.6"],
+        ),
+    },
     visibility = [],
 )
 
-third_party_rust_library(
-    name = "unicode-ident-1.0.8",
-    srcs = [
-        "vendor/unicode-ident-1.0.8/src/lib.rs",
-        "vendor/unicode-ident-1.0.8/src/tables.rs",
-    ],
+http_archive(
+    name = "unicode-ident-1.0.12.crate",
+    sha256 = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b",
+    strip_prefix = "unicode-ident-1.0.12",
+    urls = ["https://crates.io/api/v1/crates/unicode-ident/1.0.12/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
+    name = "unicode-ident-1.0.12",
+    srcs = [":unicode-ident-1.0.12.crate"],
     crate = "unicode_ident",
-    crate_root = "vendor/unicode-ident-1.0.8/src/lib.rs",
+    crate_root = "unicode-ident-1.0.12.crate/src/lib.rs",
     edition = "2018",
-    rustc_flags = ["--cap-lints=allow"],
     visibility = [],
 )
 
-third_party_rust_library(
-    name = "unicode-width-0.1.10",
-    srcs = [
-        "vendor/unicode-width-0.1.10/src/lib.rs",
-        "vendor/unicode-width-0.1.10/src/tables.rs",
-        "vendor/unicode-width-0.1.10/src/tests.rs",
-    ],
+http_archive(
+    name = "unicode-width-0.1.11.crate",
+    sha256 = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85",
+    strip_prefix = "unicode-width-0.1.11",
+    urls = ["https://crates.io/api/v1/crates/unicode-width/0.1.11/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
+    name = "unicode-width-0.1.11",
+    srcs = [":unicode-width-0.1.11.crate"],
     crate = "unicode_width",
-    crate_root = "vendor/unicode-width-0.1.10/src/lib.rs",
+    crate_root = "unicode-width-0.1.11.crate/src/lib.rs",
     edition = "2015",
     features = ["default"],
-    rustc_flags = ["--cap-lints=allow"],
+    visibility = [],
+)
+
+http_archive(
+    name = "winapi-0.3.9.crate",
+    sha256 = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419",
+    strip_prefix = "winapi-0.3.9",
+    urls = ["https://crates.io/api/v1/crates/winapi/0.3.9/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
+    name = "winapi-0.3.9",
+    srcs = [":winapi-0.3.9.crate"],
+    crate = "winapi",
+    crate_root = "winapi-0.3.9.crate/src/lib.rs",
+    edition = "2015",
+    features = [
+        "consoleapi",
+        "errhandlingapi",
+        "fileapi",
+        "minwindef",
+        "processenv",
+        "std",
+        "sysinfoapi",
+        "winbase",
+        "wincon",
+        "winerror",
+        "winnt",
+    ],
+    platform = {
+        "windows-gnu": dict(
+            deps = [":winapi-x86_64-pc-windows-gnu-0.4.0"],
+        ),
+    },
+    rustc_flags = ["@$(location :winapi-0.3.9-build-script-run[rustc_flags])"],
+    visibility = [],
+)
+
+cargo.rust_binary(
+    name = "winapi-0.3.9-build-script-build",
+    srcs = [":winapi-0.3.9.crate"],
+    crate = "build_script_build",
+    crate_root = "winapi-0.3.9.crate/build.rs",
+    edition = "2015",
+    features = [
+        "consoleapi",
+        "errhandlingapi",
+        "fileapi",
+        "minwindef",
+        "processenv",
+        "std",
+        "sysinfoapi",
+        "winbase",
+        "wincon",
+        "winerror",
+        "winnt",
+    ],
+    visibility = [],
+)
+
+buildscript_run(
+    name = "winapi-0.3.9-build-script-run",
+    package_name = "winapi",
+    buildscript_rule = ":winapi-0.3.9-build-script-build",
+    features = [
+        "consoleapi",
+        "errhandlingapi",
+        "fileapi",
+        "minwindef",
+        "processenv",
+        "std",
+        "sysinfoapi",
+        "winbase",
+        "wincon",
+        "winerror",
+        "winnt",
+    ],
+    version = "0.3.9",
+)
+
+http_archive(
+    name = "winapi-util-0.1.6.crate",
+    sha256 = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596",
+    strip_prefix = "winapi-util-0.1.6",
+    urls = ["https://crates.io/api/v1/crates/winapi-util/0.1.6/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
+    name = "winapi-util-0.1.6",
+    srcs = [":winapi-util-0.1.6.crate"],
+    crate = "winapi_util",
+    crate_root = "winapi-util-0.1.6.crate/src/lib.rs",
+    edition = "2021",
+    platform = {
+        "windows-gnu": dict(
+            deps = [":winapi-0.3.9"],
+        ),
+        "windows-msvc": dict(
+            deps = [":winapi-0.3.9"],
+        ),
+    },
+    visibility = [],
+)
+
+http_archive(
+    name = "winapi-x86_64-pc-windows-gnu-0.4.0.crate",
+    sha256 = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f",
+    strip_prefix = "winapi-x86_64-pc-windows-gnu-0.4.0",
+    urls = ["https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download"],
+    visibility = [],
+)
+
+cargo.rust_library(
+    name = "winapi-x86_64-pc-windows-gnu-0.4.0",
+    srcs = [":winapi-x86_64-pc-windows-gnu-0.4.0.crate"],
+    crate = "winapi_x86_64_pc_windows_gnu",
+    crate_root = "winapi-x86_64-pc-windows-gnu-0.4.0.crate/src/lib.rs",
+    edition = "2015",
     visibility = [],
 )
diff --git a/third-party/Cargo.lock b/third-party/Cargo.lock
index fd14b81..0de7d7c 100644
--- a/third-party/Cargo.lock
+++ b/third-party/Cargo.lock
@@ -3,35 +3,41 @@
 version = 3
 
 [[package]]
-name = "bitflags"
-version = "1.3.2"
+name = "anstyle"
+version = "1.0.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
 
 [[package]]
 name = "cc"
-version = "1.0.79"
+version = "1.0.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+checksum = "a0ba8f7aaa012f30d5b2861462f6708eccd49c3c39863fe083a308035f63d723"
 
 [[package]]
 name = "clap"
-version = "4.1.10"
+version = "4.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce38afc168d8665cfc75c7b1dd9672e50716a137f433f070991619744a67342a"
+checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da"
 dependencies = [
- "bitflags",
+ "clap_builder",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb"
+dependencies = [
+ "anstyle",
  "clap_lex",
 ]
 
 [[package]]
 name = "clap_lex"
-version = "0.3.3"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "033f6b7a4acb1f358c742aaca805c939ee73b4c6209ae4318ec7aca81c42e646"
-dependencies = [
- "os_str_bytes",
-]
+checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
 
 [[package]]
 name = "codespan-reporting"
@@ -45,45 +51,39 @@
 
 [[package]]
 name = "once_cell"
-version = "1.17.1"
+version = "1.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
-
-[[package]]
-name = "os_str_bytes"
-version = "6.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.52"
+version = "1.0.78"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224"
+checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "quote"
-version = "1.0.26"
+version = "1.0.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
 dependencies = [
  "proc-macro2",
 ]
 
 [[package]]
 name = "scratch"
-version = "1.0.5"
+version = "1.0.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1"
+checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152"
 
 [[package]]
 name = "syn"
-version = "2.0.1"
+version = "2.0.52"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55ee2415bee46ba26eac9cd8e52966995c46bf0e842b6304eb8fcf99826548ed"
+checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -92,9 +92,9 @@
 
 [[package]]
 name = "termcolor"
-version = "1.2.0"
+version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
 dependencies = [
  "winapi-util",
 ]
@@ -115,15 +115,15 @@
 
 [[package]]
 name = "unicode-ident"
-version = "1.0.8"
+version = "1.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 
 [[package]]
 name = "unicode-width"
-version = "0.1.10"
+version = "0.1.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
 
 [[package]]
 name = "winapi"
@@ -143,9 +143,9 @@
 
 [[package]]
 name = "winapi-util"
-version = "0.1.5"
+version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
 dependencies = [
  "winapi",
 ]
diff --git a/third-party/Cargo.toml b/third-party/Cargo.toml
index 5a06981..2160b11 100644
--- a/third-party/Cargo.toml
+++ b/third-party/Cargo.toml
@@ -2,17 +2,18 @@
 [package]
 name = "third-party"
 version = "0.0.0"
+edition = "2021"
 publish = false
 
 [lib]
 path = "/dev/null"
 
 [dependencies]
-cc = "1.0.49"
+cc = "1.0.83"
 clap = { version = "4", default-features = false, features = ["error-context", "help", "std", "usage"] }
 codespan-reporting = "0.11.1"
 once_cell = "1.9"
-proc-macro2 = { version = "1.0.39", features = ["span-locations"] }
+proc-macro2 = { version = "1.0.58", features = ["span-locations"] }
 quote = "1.0.4"
 scratch = "1"
 syn = { version = "2.0.1", features = ["full"] }
diff --git a/third-party/bazel/BUILD.anstyle-1.0.6.bazel b/third-party/bazel/BUILD.anstyle-1.0.6.bazel
new file mode 100644
index 0000000..4297dc8
--- /dev/null
+++ b/third-party/bazel/BUILD.anstyle-1.0.6.bazel
@@ -0,0 +1,85 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @@//third-party:vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "anstyle",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "default",
+        "std",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=anstyle",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.0.6",
+)
diff --git a/third-party/bazel/BUILD.bazel b/third-party/bazel/BUILD.bazel
index d35ae84..a9ac092 100644
--- a/third-party/bazel/BUILD.bazel
+++ b/third-party/bazel/BUILD.bazel
@@ -3,7 +3,7 @@
 # DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
 # regenerate this file, run the following:
 #
-#     bazel run @//third-party:vendor
+#     bazel run @@//third-party:vendor
 ###############################################################################
 
 package(default_visibility = ["//visibility:public"])
@@ -13,27 +13,33 @@
         "cargo-bazel.json",
         "crates.bzl",
         "defs.bzl",
-    ] + glob(["*.bazel"]),
+    ] + glob(
+        include = ["*.bazel"],
+        allow_empty = True,
+    ),
 )
 
 filegroup(
     name = "srcs",
-    srcs = glob([
-        "*.bazel",
-        "*.bzl",
-    ]),
+    srcs = glob(
+        include = [
+            "*.bazel",
+            "*.bzl",
+        ],
+        allow_empty = True,
+    ),
 )
 
 # Workspace Member Dependencies
 alias(
     name = "cc",
-    actual = "@vendor__cc-1.0.79//:cc",
+    actual = "@vendor__cc-1.0.89//:cc",
     tags = ["manual"],
 )
 
 alias(
     name = "clap",
-    actual = "@vendor__clap-4.1.10//:clap",
+    actual = "@vendor__clap-4.5.1//:clap",
     tags = ["manual"],
 )
 
@@ -45,30 +51,30 @@
 
 alias(
     name = "once_cell",
-    actual = "@vendor__once_cell-1.17.1//:once_cell",
+    actual = "@vendor__once_cell-1.19.0//:once_cell",
     tags = ["manual"],
 )
 
 alias(
     name = "proc-macro2",
-    actual = "@vendor__proc-macro2-1.0.52//:proc_macro2",
+    actual = "@vendor__proc-macro2-1.0.78//:proc_macro2",
     tags = ["manual"],
 )
 
 alias(
     name = "quote",
-    actual = "@vendor__quote-1.0.26//:quote",
+    actual = "@vendor__quote-1.0.35//:quote",
     tags = ["manual"],
 )
 
 alias(
     name = "scratch",
-    actual = "@vendor__scratch-1.0.5//:scratch",
+    actual = "@vendor__scratch-1.0.7//:scratch",
     tags = ["manual"],
 )
 
 alias(
     name = "syn",
-    actual = "@vendor__syn-2.0.1//:syn",
+    actual = "@vendor__syn-2.0.52//:syn",
     tags = ["manual"],
 )
diff --git a/third-party/bazel/BUILD.bitflags-1.3.2.bazel b/third-party/bazel/BUILD.bitflags-1.3.2.bazel
deleted file mode 100644
index 39360f2..0000000
--- a/third-party/bazel/BUILD.bitflags-1.3.2.bazel
+++ /dev/null
@@ -1,44 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//third-party:vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# licenses([
-#     "TODO",  # MIT/Apache-2.0
-# ])
-
-rust_library(
-    name = "bitflags",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_features = [
-        "default",
-    ],
-    crate_root = "src/lib.rs",
-    edition = "2018",
-    rustc_flags = ["--cap-lints=allow"],
-    tags = [
-        "cargo-bazel",
-        "crate-name=bitflags",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "1.3.2",
-)
diff --git a/third-party/bazel/BUILD.cc-1.0.79.bazel b/third-party/bazel/BUILD.cc-1.0.79.bazel
deleted file mode 100644
index 102bc5d..0000000
--- a/third-party/bazel/BUILD.cc-1.0.79.bazel
+++ /dev/null
@@ -1,41 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//third-party:vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# licenses([
-#     "TODO",  # MIT OR Apache-2.0
-# ])
-
-rust_library(
-    name = "cc",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2018",
-    rustc_flags = ["--cap-lints=allow"],
-    tags = [
-        "cargo-bazel",
-        "crate-name=cc",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "1.0.79",
-)
diff --git a/third-party/bazel/BUILD.cc-1.0.89.bazel b/third-party/bazel/BUILD.cc-1.0.89.bazel
new file mode 100644
index 0000000..98e2c88
--- /dev/null
+++ b/third-party/bazel/BUILD.cc-1.0.89.bazel
@@ -0,0 +1,81 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @@//third-party:vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "cc",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=cc",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.0.89",
+)
diff --git a/third-party/bazel/BUILD.clap-4.1.10.bazel b/third-party/bazel/BUILD.clap-4.1.10.bazel
deleted file mode 100644
index 7070273..0000000
--- a/third-party/bazel/BUILD.clap-4.1.10.bazel
+++ /dev/null
@@ -1,51 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//third-party:vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# licenses([
-#     "TODO",  # MIT OR Apache-2.0
-# ])
-
-rust_library(
-    name = "clap",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_features = [
-        "error-context",
-        "help",
-        "std",
-        "usage",
-    ],
-    crate_root = "src/lib.rs",
-    edition = "2021",
-    rustc_flags = ["--cap-lints=allow"],
-    tags = [
-        "cargo-bazel",
-        "crate-name=clap",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "4.1.10",
-    deps = [
-        "@vendor__bitflags-1.3.2//:bitflags",
-        "@vendor__clap_lex-0.3.3//:clap_lex",
-    ],
-)
diff --git a/third-party/bazel/BUILD.clap-4.5.1.bazel b/third-party/bazel/BUILD.clap-4.5.1.bazel
new file mode 100644
index 0000000..86ccdf2
--- /dev/null
+++ b/third-party/bazel/BUILD.clap-4.5.1.bazel
@@ -0,0 +1,90 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @@//third-party:vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "clap",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "error-context",
+        "help",
+        "std",
+        "usage",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=clap",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "4.5.1",
+    deps = [
+        "@vendor__clap_builder-4.5.1//:clap_builder",
+    ],
+)
diff --git a/third-party/bazel/BUILD.clap_builder-4.5.1.bazel b/third-party/bazel/BUILD.clap_builder-4.5.1.bazel
new file mode 100644
index 0000000..8706d02
--- /dev/null
+++ b/third-party/bazel/BUILD.clap_builder-4.5.1.bazel
@@ -0,0 +1,91 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @@//third-party:vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "clap_builder",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "error-context",
+        "help",
+        "std",
+        "usage",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=clap_builder",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "4.5.1",
+    deps = [
+        "@vendor__anstyle-1.0.6//:anstyle",
+        "@vendor__clap_lex-0.7.0//:clap_lex",
+    ],
+)
diff --git a/third-party/bazel/BUILD.clap_lex-0.3.3.bazel b/third-party/bazel/BUILD.clap_lex-0.3.3.bazel
deleted file mode 100644
index 60fe11b..0000000
--- a/third-party/bazel/BUILD.clap_lex-0.3.3.bazel
+++ /dev/null
@@ -1,44 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//third-party:vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# licenses([
-#     "TODO",  # MIT OR Apache-2.0
-# ])
-
-rust_library(
-    name = "clap_lex",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2021",
-    rustc_flags = ["--cap-lints=allow"],
-    tags = [
-        "cargo-bazel",
-        "crate-name=clap_lex",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "0.3.3",
-    deps = [
-        "@vendor__os_str_bytes-6.4.1//:os_str_bytes",
-    ],
-)
diff --git a/third-party/bazel/BUILD.clap_lex-0.7.0.bazel b/third-party/bazel/BUILD.clap_lex-0.7.0.bazel
new file mode 100644
index 0000000..30a3006
--- /dev/null
+++ b/third-party/bazel/BUILD.clap_lex-0.7.0.bazel
@@ -0,0 +1,81 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @@//third-party:vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "clap_lex",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=clap_lex",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.7.0",
+)
diff --git a/third-party/bazel/BUILD.codespan-reporting-0.11.1.bazel b/third-party/bazel/BUILD.codespan-reporting-0.11.1.bazel
index a75a136..2db5b31 100644
--- a/third-party/bazel/BUILD.codespan-reporting-0.11.1.bazel
+++ b/third-party/bazel/BUILD.codespan-reporting-0.11.1.bazel
@@ -3,24 +3,25 @@
 # DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
 # regenerate this file, run the following:
 #
-#     bazel run @//third-party:vendor
+#     bazel run @@//third-party:vendor
 ###############################################################################
 
 load("@rules_rust//rust:defs.bzl", "rust_library")
 
 package(default_visibility = ["//visibility:public"])
 
-# licenses([
-#     "TODO",  # Apache-2.0
-# ])
-
 rust_library(
     name = "codespan_reporting",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
+            ".tmp_git_root/**/*",
             "BUILD",
             "BUILD.bazel",
             "WORKSPACE",
@@ -29,7 +30,9 @@
     ),
     crate_root = "src/lib.rs",
     edition = "2018",
-    rustc_flags = ["--cap-lints=allow"],
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
     tags = [
         "cargo-bazel",
         "crate-name=codespan-reporting",
@@ -37,9 +40,46 @@
         "noclippy",
         "norustfmt",
     ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
     version = "0.11.1",
     deps = [
-        "@vendor__termcolor-1.2.0//:termcolor",
-        "@vendor__unicode-width-0.1.10//:unicode_width",
+        "@vendor__termcolor-1.4.1//:termcolor",
+        "@vendor__unicode-width-0.1.11//:unicode_width",
     ],
 )
diff --git a/third-party/bazel/BUILD.once_cell-1.17.1.bazel b/third-party/bazel/BUILD.once_cell-1.17.1.bazel
deleted file mode 100644
index 7132498..0000000
--- a/third-party/bazel/BUILD.once_cell-1.17.1.bazel
+++ /dev/null
@@ -1,47 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//third-party:vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# licenses([
-#     "TODO",  # MIT OR Apache-2.0
-# ])
-
-rust_library(
-    name = "once_cell",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_features = [
-        "alloc",
-        "default",
-        "race",
-        "std",
-    ],
-    crate_root = "src/lib.rs",
-    edition = "2021",
-    rustc_flags = ["--cap-lints=allow"],
-    tags = [
-        "cargo-bazel",
-        "crate-name=once_cell",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "1.17.1",
-)
diff --git a/third-party/bazel/BUILD.once_cell-1.19.0.bazel b/third-party/bazel/BUILD.once_cell-1.19.0.bazel
new file mode 100644
index 0000000..d534c02
--- /dev/null
+++ b/third-party/bazel/BUILD.once_cell-1.19.0.bazel
@@ -0,0 +1,87 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @@//third-party:vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "once_cell",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "alloc",
+        "default",
+        "race",
+        "std",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=once_cell",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.19.0",
+)
diff --git a/third-party/bazel/BUILD.os_str_bytes-6.4.1.bazel b/third-party/bazel/BUILD.os_str_bytes-6.4.1.bazel
deleted file mode 100644
index 2510ac1..0000000
--- a/third-party/bazel/BUILD.os_str_bytes-6.4.1.bazel
+++ /dev/null
@@ -1,44 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//third-party:vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# licenses([
-#     "TODO",  # MIT OR Apache-2.0
-# ])
-
-rust_library(
-    name = "os_str_bytes",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_features = [
-        "raw_os_str",
-    ],
-    crate_root = "src/lib.rs",
-    edition = "2021",
-    rustc_flags = ["--cap-lints=allow"],
-    tags = [
-        "cargo-bazel",
-        "crate-name=os_str_bytes",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "6.4.1",
-)
diff --git a/third-party/bazel/BUILD.proc-macro2-1.0.52.bazel b/third-party/bazel/BUILD.proc-macro2-1.0.52.bazel
deleted file mode 100644
index d93678a..0000000
--- a/third-party/bazel/BUILD.proc-macro2-1.0.52.bazel
+++ /dev/null
@@ -1,92 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//third-party:vendor
-###############################################################################
-
-load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# licenses([
-#     "TODO",  # MIT OR Apache-2.0
-# ])
-
-rust_library(
-    name = "proc_macro2",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_features = [
-        "default",
-        "proc-macro",
-        "span-locations",
-    ],
-    crate_root = "src/lib.rs",
-    edition = "2018",
-    rustc_flags = ["--cap-lints=allow"],
-    tags = [
-        "cargo-bazel",
-        "crate-name=proc-macro2",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "1.0.52",
-    deps = [
-        "@vendor__proc-macro2-1.0.52//:build_script_build",
-        "@vendor__unicode-ident-1.0.8//:unicode_ident",
-    ],
-)
-
-cargo_build_script(
-    name = "proc-macro2_build_script",
-    srcs = glob(["**/*.rs"]),
-    crate_features = [
-        "default",
-        "proc-macro",
-        "span-locations",
-    ],
-    crate_name = "build_script_build",
-    crate_root = "build.rs",
-    data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    edition = "2018",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=proc-macro2",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "1.0.52",
-    visibility = ["//visibility:private"],
-)
-
-alias(
-    name = "build_script_build",
-    actual = "proc-macro2_build_script",
-    tags = ["manual"],
-)
diff --git a/third-party/bazel/BUILD.proc-macro2-1.0.78.bazel b/third-party/bazel/BUILD.proc-macro2-1.0.78.bazel
new file mode 100644
index 0000000..697feaa
--- /dev/null
+++ b/third-party/bazel/BUILD.proc-macro2-1.0.78.bazel
@@ -0,0 +1,137 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @@//third-party:vendor
+###############################################################################
+
+load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "proc_macro2",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "default",
+        "proc-macro",
+        "span-locations",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=proc-macro2",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.0.78",
+    deps = [
+        "@vendor__proc-macro2-1.0.78//:build_script_build",
+        "@vendor__unicode-ident-1.0.12//:unicode_ident",
+    ],
+)
+
+cargo_build_script(
+    name = "proc-macro2_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    crate_features = [
+        "default",
+        "proc-macro",
+        "span-locations",
+    ],
+    crate_name = "build_script_build",
+    crate_root = "build.rs",
+    data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=proc-macro2",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    version = "1.0.78",
+    visibility = ["//visibility:private"],
+)
+
+alias(
+    name = "build_script_build",
+    actual = ":proc-macro2_bs",
+    tags = ["manual"],
+)
diff --git a/third-party/bazel/BUILD.quote-1.0.26.bazel b/third-party/bazel/BUILD.quote-1.0.26.bazel
deleted file mode 100644
index 9cb7431..0000000
--- a/third-party/bazel/BUILD.quote-1.0.26.bazel
+++ /dev/null
@@ -1,90 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//third-party:vendor
-###############################################################################
-
-load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# licenses([
-#     "TODO",  # MIT OR Apache-2.0
-# ])
-
-rust_library(
-    name = "quote",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_features = [
-        "default",
-        "proc-macro",
-    ],
-    crate_root = "src/lib.rs",
-    edition = "2018",
-    rustc_flags = ["--cap-lints=allow"],
-    tags = [
-        "cargo-bazel",
-        "crate-name=quote",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "1.0.26",
-    deps = [
-        "@vendor__proc-macro2-1.0.52//:proc_macro2",
-        "@vendor__quote-1.0.26//:build_script_build",
-    ],
-)
-
-cargo_build_script(
-    name = "quote_build_script",
-    srcs = glob(["**/*.rs"]),
-    crate_features = [
-        "default",
-        "proc-macro",
-    ],
-    crate_name = "build_script_build",
-    crate_root = "build.rs",
-    data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    edition = "2018",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=quote",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "1.0.26",
-    visibility = ["//visibility:private"],
-)
-
-alias(
-    name = "build_script_build",
-    actual = "quote_build_script",
-    tags = ["manual"],
-)
diff --git a/third-party/bazel/BUILD.quote-1.0.35.bazel b/third-party/bazel/BUILD.quote-1.0.35.bazel
new file mode 100644
index 0000000..bcf1e9c
--- /dev/null
+++ b/third-party/bazel/BUILD.quote-1.0.35.bazel
@@ -0,0 +1,88 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @@//third-party:vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "quote",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "default",
+        "proc-macro",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=quote",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.0.35",
+    deps = [
+        "@vendor__proc-macro2-1.0.78//:proc_macro2",
+    ],
+)
diff --git a/third-party/bazel/BUILD.scratch-1.0.5.bazel b/third-party/bazel/BUILD.scratch-1.0.5.bazel
deleted file mode 100644
index ae28c64..0000000
--- a/third-party/bazel/BUILD.scratch-1.0.5.bazel
+++ /dev/null
@@ -1,81 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//third-party:vendor
-###############################################################################
-
-load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# licenses([
-#     "TODO",  # MIT OR Apache-2.0
-# ])
-
-rust_library(
-    name = "scratch",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2015",
-    rustc_flags = ["--cap-lints=allow"],
-    tags = [
-        "cargo-bazel",
-        "crate-name=scratch",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "1.0.5",
-    deps = [
-        "@vendor__scratch-1.0.5//:build_script_build",
-    ],
-)
-
-cargo_build_script(
-    name = "scratch_build_script",
-    srcs = glob(["**/*.rs"]),
-    crate_name = "build_script_build",
-    crate_root = "build.rs",
-    data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    edition = "2015",
-    rustc_flags = [
-        "--cap-lints=allow",
-    ],
-    tags = [
-        "cargo-bazel",
-        "crate-name=scratch",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "1.0.5",
-    visibility = ["//visibility:private"],
-)
-
-alias(
-    name = "build_script_build",
-    actual = "scratch_build_script",
-    tags = ["manual"],
-)
diff --git a/third-party/bazel/BUILD.scratch-1.0.7.bazel b/third-party/bazel/BUILD.scratch-1.0.7.bazel
new file mode 100644
index 0000000..c4ecfa5
--- /dev/null
+++ b/third-party/bazel/BUILD.scratch-1.0.7.bazel
@@ -0,0 +1,126 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @@//third-party:vendor
+###############################################################################
+
+load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "scratch",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2015",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=scratch",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.0.7",
+    deps = [
+        "@vendor__scratch-1.0.7//:build_script_build",
+    ],
+)
+
+cargo_build_script(
+    name = "scratch_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    crate_name = "build_script_build",
+    crate_root = "build.rs",
+    data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    edition = "2015",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=scratch",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    version = "1.0.7",
+    visibility = ["//visibility:private"],
+)
+
+alias(
+    name = "build_script_build",
+    actual = ":scratch_bs",
+    tags = ["manual"],
+)
diff --git a/third-party/bazel/BUILD.syn-2.0.1.bazel b/third-party/bazel/BUILD.syn-2.0.1.bazel
deleted file mode 100644
index 42cdf31..0000000
--- a/third-party/bazel/BUILD.syn-2.0.1.bazel
+++ /dev/null
@@ -1,56 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//third-party:vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# licenses([
-#     "TODO",  # MIT OR Apache-2.0
-# ])
-
-rust_library(
-    name = "syn",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_features = [
-        "clone-impls",
-        "default",
-        "derive",
-        "full",
-        "parsing",
-        "printing",
-        "proc-macro",
-        "quote",
-    ],
-    crate_root = "src/lib.rs",
-    edition = "2021",
-    rustc_flags = ["--cap-lints=allow"],
-    tags = [
-        "cargo-bazel",
-        "crate-name=syn",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "2.0.1",
-    deps = [
-        "@vendor__proc-macro2-1.0.52//:proc_macro2",
-        "@vendor__quote-1.0.26//:quote",
-        "@vendor__unicode-ident-1.0.8//:unicode_ident",
-    ],
-)
diff --git a/third-party/bazel/BUILD.syn-2.0.52.bazel b/third-party/bazel/BUILD.syn-2.0.52.bazel
new file mode 100644
index 0000000..5ceb93d
--- /dev/null
+++ b/third-party/bazel/BUILD.syn-2.0.52.bazel
@@ -0,0 +1,96 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @@//third-party:vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "syn",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "clone-impls",
+        "default",
+        "derive",
+        "full",
+        "parsing",
+        "printing",
+        "proc-macro",
+        "quote",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=syn",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "2.0.52",
+    deps = [
+        "@vendor__proc-macro2-1.0.78//:proc_macro2",
+        "@vendor__quote-1.0.35//:quote",
+        "@vendor__unicode-ident-1.0.12//:unicode_ident",
+    ],
+)
diff --git a/third-party/bazel/BUILD.termcolor-1.2.0.bazel b/third-party/bazel/BUILD.termcolor-1.2.0.bazel
deleted file mode 100644
index fa7481e..0000000
--- a/third-party/bazel/BUILD.termcolor-1.2.0.bazel
+++ /dev/null
@@ -1,53 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//third-party:vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# licenses([
-#     "TODO",  # Unlicense OR MIT
-# ])
-
-rust_library(
-    name = "termcolor",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2018",
-    rustc_flags = ["--cap-lints=allow"],
-    tags = [
-        "cargo-bazel",
-        "crate-name=termcolor",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "1.2.0",
-    deps = select({
-        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
-            "@vendor__winapi-util-0.1.5//:winapi_util",  # cfg(windows)
-        ],
-        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
-            "@vendor__winapi-util-0.1.5//:winapi_util",  # cfg(windows)
-        ],
-        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
-            "@vendor__winapi-util-0.1.5//:winapi_util",  # cfg(windows)
-        ],
-        "//conditions:default": [],
-    }),
-)
diff --git a/third-party/bazel/BUILD.termcolor-1.4.1.bazel b/third-party/bazel/BUILD.termcolor-1.4.1.bazel
new file mode 100644
index 0000000..100fb7e
--- /dev/null
+++ b/third-party/bazel/BUILD.termcolor-1.4.1.bazel
@@ -0,0 +1,93 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @@//third-party:vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "termcolor",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=termcolor",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.4.1",
+    deps = select({
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
+            "@vendor__winapi-util-0.1.6//:winapi_util",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
+            "@vendor__winapi-util-0.1.6//:winapi_util",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
+            "@vendor__winapi-util-0.1.6//:winapi_util",  # cfg(windows)
+        ],
+        "//conditions:default": [],
+    }),
+)
diff --git a/third-party/bazel/BUILD.unicode-ident-1.0.12.bazel b/third-party/bazel/BUILD.unicode-ident-1.0.12.bazel
new file mode 100644
index 0000000..e29b172
--- /dev/null
+++ b/third-party/bazel/BUILD.unicode-ident-1.0.12.bazel
@@ -0,0 +1,81 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @@//third-party:vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "unicode_ident",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=unicode-ident",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "1.0.12",
+)
diff --git a/third-party/bazel/BUILD.unicode-ident-1.0.8.bazel b/third-party/bazel/BUILD.unicode-ident-1.0.8.bazel
deleted file mode 100644
index c831cec..0000000
--- a/third-party/bazel/BUILD.unicode-ident-1.0.8.bazel
+++ /dev/null
@@ -1,41 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//third-party:vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# licenses([
-#     "TODO",  # (MIT OR Apache-2.0) AND Unicode-DFS-2016
-# ])
-
-rust_library(
-    name = "unicode_ident",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2018",
-    rustc_flags = ["--cap-lints=allow"],
-    tags = [
-        "cargo-bazel",
-        "crate-name=unicode-ident",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "1.0.8",
-)
diff --git a/third-party/bazel/BUILD.unicode-width-0.1.10.bazel b/third-party/bazel/BUILD.unicode-width-0.1.10.bazel
deleted file mode 100644
index 103a203..0000000
--- a/third-party/bazel/BUILD.unicode-width-0.1.10.bazel
+++ /dev/null
@@ -1,44 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//third-party:vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# licenses([
-#     "TODO",  # MIT/Apache-2.0
-# ])
-
-rust_library(
-    name = "unicode_width",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_features = [
-        "default",
-    ],
-    crate_root = "src/lib.rs",
-    edition = "2015",
-    rustc_flags = ["--cap-lints=allow"],
-    tags = [
-        "cargo-bazel",
-        "crate-name=unicode-width",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "0.1.10",
-)
diff --git a/third-party/bazel/BUILD.unicode-width-0.1.11.bazel b/third-party/bazel/BUILD.unicode-width-0.1.11.bazel
new file mode 100644
index 0000000..20d9be3
--- /dev/null
+++ b/third-party/bazel/BUILD.unicode-width-0.1.11.bazel
@@ -0,0 +1,84 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @@//third-party:vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "unicode_width",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_features = [
+        "default",
+    ],
+    crate_root = "src/lib.rs",
+    edition = "2015",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=unicode-width",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.1.11",
+)
diff --git a/third-party/bazel/BUILD.winapi-0.3.9.bazel b/third-party/bazel/BUILD.winapi-0.3.9.bazel
index 7af60b1..b7181ef 100644
--- a/third-party/bazel/BUILD.winapi-0.3.9.bazel
+++ b/third-party/bazel/BUILD.winapi-0.3.9.bazel
@@ -3,7 +3,7 @@
 # DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
 # regenerate this file, run the following:
 #
-#     bazel run @//third-party:vendor
+#     bazel run @@//third-party:vendor
 ###############################################################################
 
 load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
@@ -11,17 +11,18 @@
 
 package(default_visibility = ["//visibility:public"])
 
-# licenses([
-#     "TODO",  # MIT/Apache-2.0
-# ])
-
 rust_library(
     name = "winapi",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
+            ".tmp_git_root/**/*",
             "BUILD",
             "BUILD.bazel",
             "WORKSPACE",
@@ -35,6 +36,7 @@
         "minwindef",
         "processenv",
         "std",
+        "sysinfoapi",
         "winbase",
         "wincon",
         "winerror",
@@ -42,7 +44,9 @@
     ],
     crate_root = "src/lib.rs",
     edition = "2015",
-    rustc_flags = ["--cap-lints=allow"],
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
     tags = [
         "cargo-bazel",
         "crate-name=winapi",
@@ -50,6 +54,43 @@
         "noclippy",
         "norustfmt",
     ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
     version = "0.3.9",
     deps = [
         "@vendor__winapi-0.3.9//:build_script_build",
@@ -57,8 +98,11 @@
 )
 
 cargo_build_script(
-    name = "winapi_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_features = [
         "consoleapi",
         "errhandlingapi",
@@ -66,6 +110,7 @@
         "minwindef",
         "processenv",
         "std",
+        "sysinfoapi",
         "winbase",
         "wincon",
         "winerror",
@@ -75,8 +120,10 @@
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
+            ".tmp_git_root/**/*",
             "BUILD",
             "BUILD.bazel",
             "WORKSPACE",
@@ -100,6 +147,6 @@
 
 alias(
     name = "build_script_build",
-    actual = "winapi_build_script",
+    actual = ":winapi_bs",
     tags = ["manual"],
 )
diff --git a/third-party/bazel/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel b/third-party/bazel/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
index ae3de31..2e3a99a 100644
--- a/third-party/bazel/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
+++ b/third-party/bazel/BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel
@@ -3,7 +3,7 @@
 # DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
 # regenerate this file, run the following:
 #
-#     bazel run @//third-party:vendor
+#     bazel run @@//third-party:vendor
 ###############################################################################
 
 load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
@@ -11,17 +11,18 @@
 
 package(default_visibility = ["//visibility:public"])
 
-# licenses([
-#     "TODO",  # MIT/Apache-2.0
-# ])
-
 rust_library(
     name = "winapi_i686_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
+            ".tmp_git_root/**/*",
             "BUILD",
             "BUILD.bazel",
             "WORKSPACE",
@@ -30,7 +31,9 @@
     ),
     crate_root = "src/lib.rs",
     edition = "2015",
-    rustc_flags = ["--cap-lints=allow"],
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
     tags = [
         "cargo-bazel",
         "crate-name=winapi-i686-pc-windows-gnu",
@@ -38,6 +41,43 @@
         "noclippy",
         "norustfmt",
     ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
     version = "0.4.0",
     deps = [
         "@vendor__winapi-i686-pc-windows-gnu-0.4.0//:build_script_build",
@@ -45,14 +85,19 @@
 )
 
 cargo_build_script(
-    name = "winapi-i686-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-i686-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
+            ".tmp_git_root/**/*",
             "BUILD",
             "BUILD.bazel",
             "WORKSPACE",
@@ -76,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = "winapi-i686-pc-windows-gnu_build_script",
+    actual = ":winapi-i686-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/third-party/bazel/BUILD.winapi-util-0.1.5.bazel b/third-party/bazel/BUILD.winapi-util-0.1.5.bazel
deleted file mode 100644
index 6ca7e9a..0000000
--- a/third-party/bazel/BUILD.winapi-util-0.1.5.bazel
+++ /dev/null
@@ -1,53 +0,0 @@
-###############################################################################
-# @generated
-# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
-# regenerate this file, run the following:
-#
-#     bazel run @//third-party:vendor
-###############################################################################
-
-load("@rules_rust//rust:defs.bzl", "rust_library")
-
-package(default_visibility = ["//visibility:public"])
-
-# licenses([
-#     "TODO",  # Unlicense/MIT
-# ])
-
-rust_library(
-    name = "winapi_util",
-    srcs = glob(["**/*.rs"]),
-    compile_data = glob(
-        include = ["**"],
-        exclude = [
-            "**/* *",
-            "BUILD",
-            "BUILD.bazel",
-            "WORKSPACE",
-            "WORKSPACE.bazel",
-        ],
-    ),
-    crate_root = "src/lib.rs",
-    edition = "2018",
-    rustc_flags = ["--cap-lints=allow"],
-    tags = [
-        "cargo-bazel",
-        "crate-name=winapi-util",
-        "manual",
-        "noclippy",
-        "norustfmt",
-    ],
-    version = "0.1.5",
-    deps = select({
-        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
-            "@vendor__winapi-0.3.9//:winapi",  # cfg(windows)
-        ],
-        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
-            "@vendor__winapi-0.3.9//:winapi",  # cfg(windows)
-        ],
-        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
-            "@vendor__winapi-0.3.9//:winapi",  # cfg(windows)
-        ],
-        "//conditions:default": [],
-    }),
-)
diff --git a/third-party/bazel/BUILD.winapi-util-0.1.6.bazel b/third-party/bazel/BUILD.winapi-util-0.1.6.bazel
new file mode 100644
index 0000000..ed51947
--- /dev/null
+++ b/third-party/bazel/BUILD.winapi-util-0.1.6.bazel
@@ -0,0 +1,93 @@
+###############################################################################
+# @generated
+# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
+# regenerate this file, run the following:
+#
+#     bazel run @@//third-party:vendor
+###############################################################################
+
+load("@rules_rust//rust:defs.bzl", "rust_library")
+
+package(default_visibility = ["//visibility:public"])
+
+rust_library(
+    name = "winapi_util",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
+    compile_data = glob(
+        include = ["**"],
+        allow_empty = True,
+        exclude = [
+            "**/* *",
+            ".tmp_git_root/**/*",
+            "BUILD",
+            "BUILD.bazel",
+            "WORKSPACE",
+            "WORKSPACE.bazel",
+        ],
+    ),
+    crate_root = "src/lib.rs",
+    edition = "2021",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-bazel",
+        "crate-name=winapi-util",
+        "manual",
+        "noclippy",
+        "norustfmt",
+    ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
+    version = "0.1.6",
+    deps = select({
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [
+            "@vendor__winapi-0.3.9//:winapi",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [
+            "@vendor__winapi-0.3.9//:winapi",  # cfg(windows)
+        ],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [
+            "@vendor__winapi-0.3.9//:winapi",  # cfg(windows)
+        ],
+        "//conditions:default": [],
+    }),
+)
diff --git a/third-party/bazel/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel b/third-party/bazel/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
index c145846..cabae83 100644
--- a/third-party/bazel/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
+++ b/third-party/bazel/BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel
@@ -3,7 +3,7 @@
 # DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
 # regenerate this file, run the following:
 #
-#     bazel run @//third-party:vendor
+#     bazel run @@//third-party:vendor
 ###############################################################################
 
 load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
@@ -11,17 +11,18 @@
 
 package(default_visibility = ["//visibility:public"])
 
-# licenses([
-#     "TODO",  # MIT/Apache-2.0
-# ])
-
 rust_library(
     name = "winapi_x86_64_pc_windows_gnu",
-    srcs = glob(["**/*.rs"]),
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     compile_data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
+            ".tmp_git_root/**/*",
             "BUILD",
             "BUILD.bazel",
             "WORKSPACE",
@@ -30,7 +31,9 @@
     ),
     crate_root = "src/lib.rs",
     edition = "2015",
-    rustc_flags = ["--cap-lints=allow"],
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
     tags = [
         "cargo-bazel",
         "crate-name=winapi-x86_64-pc-windows-gnu",
@@ -38,6 +41,43 @@
         "noclippy",
         "norustfmt",
     ],
+    target_compatible_with = select({
+        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios": [],
+        "@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
+        "@rules_rust//rust/platform:aarch64-fuchsia": [],
+        "@rules_rust//rust/platform:aarch64-linux-android": [],
+        "@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
+        "@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:armv7-linux-androideabi": [],
+        "@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
+        "@rules_rust//rust/platform:i686-apple-darwin": [],
+        "@rules_rust//rust/platform:i686-linux-android": [],
+        "@rules_rust//rust/platform:i686-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:i686-unknown-freebsd": [],
+        "@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
+        "@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:thumbv7em-none-eabi": [],
+        "@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
+        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
+        "@rules_rust//rust/platform:wasm32-wasi": [],
+        "@rules_rust//rust/platform:x86_64-apple-darwin": [],
+        "@rules_rust//rust/platform:x86_64-apple-ios": [],
+        "@rules_rust//rust/platform:x86_64-fuchsia": [],
+        "@rules_rust//rust/platform:x86_64-linux-android": [],
+        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
+        "@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
+        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
+        "@rules_rust//rust/platform:x86_64-unknown-none": [],
+        "//conditions:default": ["@platforms//:incompatible"],
+    }),
     version = "0.4.0",
     deps = [
         "@vendor__winapi-x86_64-pc-windows-gnu-0.4.0//:build_script_build",
@@ -45,14 +85,19 @@
 )
 
 cargo_build_script(
-    name = "winapi-x86_64-pc-windows-gnu_build_script",
-    srcs = glob(["**/*.rs"]),
+    name = "winapi-x86_64-pc-windows-gnu_bs",
+    srcs = glob(
+        include = ["**/*.rs"],
+        allow_empty = False,
+    ),
     crate_name = "build_script_build",
     crate_root = "build.rs",
     data = glob(
         include = ["**"],
+        allow_empty = True,
         exclude = [
             "**/* *",
+            ".tmp_git_root/**/*",
             "BUILD",
             "BUILD.bazel",
             "WORKSPACE",
@@ -76,6 +121,6 @@
 
 alias(
     name = "build_script_build",
-    actual = "winapi-x86_64-pc-windows-gnu_build_script",
+    actual = ":winapi-x86_64-pc-windows-gnu_bs",
     tags = ["manual"],
 )
diff --git a/third-party/bazel/alias_rules.bzl b/third-party/bazel/alias_rules.bzl
new file mode 100644
index 0000000..14b04c1
--- /dev/null
+++ b/third-party/bazel/alias_rules.bzl
@@ -0,0 +1,47 @@
+"""Alias that transitions its target to `compilation_mode=opt`.  Use `transition_alias="opt"` to enable."""
+
+load("@rules_cc//cc:defs.bzl", "CcInfo")
+load("@rules_rust//rust:rust_common.bzl", "COMMON_PROVIDERS")
+
+def _transition_alias_impl(ctx):
+    # `ctx.attr.actual` is a list of 1 item due to the transition
+    providers = [ctx.attr.actual[0][provider] for provider in COMMON_PROVIDERS]
+    if CcInfo in ctx.attr.actual[0]:
+        providers.append(ctx.attr.actual[0][CcInfo])
+    return providers
+
+def _change_compilation_mode(compilation_mode):
+    def _change_compilation_mode_impl(_settings, _attr):
+        return {
+            "//command_line_option:compilation_mode": compilation_mode,
+        }
+
+    return transition(
+        implementation = _change_compilation_mode_impl,
+        inputs = [],
+        outputs = [
+            "//command_line_option:compilation_mode",
+        ],
+    )
+
+def _transition_alias_rule(compilation_mode):
+    return rule(
+        implementation = _transition_alias_impl,
+        provides = COMMON_PROVIDERS,
+        attrs = {
+            "actual": attr.label(
+                mandatory = True,
+                doc = "`rust_library()` target to transition to `compilation_mode=opt`.",
+                providers = COMMON_PROVIDERS,
+                cfg = _change_compilation_mode(compilation_mode),
+            ),
+            "_allowlist_function_transition": attr.label(
+                default = "@bazel_tools//tools/allowlists/function_transition_allowlist",
+            ),
+        },
+        doc = "Transitions a Rust library crate to the `compilation_mode=opt`.",
+    )
+
+transition_alias_dbg = _transition_alias_rule("dbg")
+transition_alias_fastbuild = _transition_alias_rule("fastbuild")
+transition_alias_opt = _transition_alias_rule("opt")
diff --git a/third-party/bazel/crates.bzl b/third-party/bazel/crates.bzl
index 6d61f64..5a9aa8f 100644
--- a/third-party/bazel/crates.bzl
+++ b/third-party/bazel/crates.bzl
@@ -6,20 +6,26 @@
 ###############################################################################
 """Rules for defining repositories for remote `crates_vendor` repositories"""
 
-load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
-
 # buildifier: disable=bzl-visibility
-load("@cxx.rs//third-party/bazel:defs.bzl", _crate_repositories = "crate_repositories")
+load("@//third-party/bazel:defs.bzl", _crate_repositories = "crate_repositories")
+load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
 
 # buildifier: disable=bzl-visibility
 load("@rules_rust//crate_universe/private:crates_vendor.bzl", "crates_vendor_remote_repository")
 
 def crate_repositories():
+    """Generates repositories for vendored crates.
+
+    Returns:
+      A list of repos visible to the module through the module extension.
+    """
     maybe(
         crates_vendor_remote_repository,
         name = "vendor",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.bazel"),
-        defs_module = Label("@cxx.rs//third-party/bazel:defs.bzl"),
+        build_file = Label("@//third-party/bazel:BUILD.bazel"),
+        defs_module = Label("@//third-party/bazel:defs.bzl"),
     )
 
-    _crate_repositories()
+    direct_deps = [struct(repo = "vendor", is_dev_dep = False)]
+    direct_deps.extend(_crate_repositories())
+    return direct_deps
diff --git a/third-party/bazel/defs.bzl b/third-party/bazel/defs.bzl
index e799b0e..af82f20 100644
--- a/third-party/bazel/defs.bzl
+++ b/third-party/bazel/defs.bzl
@@ -3,7 +3,7 @@
 # DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
 # regenerate this file, run the following:
 #
-#     bazel run @//third-party:vendor
+#     bazel run @@//third-party:vendor
 ###############################################################################
 """
 # `crates_repository` API
@@ -37,7 +37,7 @@
         # name of the workspace this file is defined in.
         "workspace_member_package": {
 
-            # Not all dependnecies are supported for all platforms.
+            # Not all dependencies are supported for all platforms.
             # the condition key is the condition required to be true
             # on the host platform.
             "condition": {
@@ -202,7 +202,10 @@
 
     crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())
     for condition, deps in dependencies.items():
-        crate_deps += selects.with_or({_CONDITIONS[condition]: deps.values()})
+        crate_deps += selects.with_or({
+            tuple(_CONDITIONS[condition]): deps.values(),
+            "//conditions:default": [],
+        })
 
     return crate_deps
 
@@ -274,15 +277,16 @@
 
     # Build a single select statement where each conditional has accounted for the
     # common set of aliases.
-    crate_aliases = {"//conditions:default": common_items}
+    crate_aliases = {"//conditions:default": dict(common_items)}
     for condition, deps in aliases.items():
         condition_triples = _CONDITIONS[condition]
-        if condition_triples in crate_aliases:
-            crate_aliases[condition_triples].update(deps)
-        else:
-            crate_aliases.update({_CONDITIONS[condition]: dict(deps.items() + common_items)})
+        for triple in condition_triples:
+            if triple in crate_aliases:
+                crate_aliases[triple].update(deps)
+            else:
+                crate_aliases.update({triple: dict(deps.items() + common_items)})
 
-    return selects.with_or(crate_aliases)
+    return select(crate_aliases)
 
 ###############################################################################
 # WORKSPACE MEMBER DEPS AND ALIASES
@@ -291,14 +295,14 @@
 _NORMAL_DEPENDENCIES = {
     "third-party": {
         _COMMON_CONDITION: {
-            "cc": "@vendor__cc-1.0.79//:cc",
-            "clap": "@vendor__clap-4.1.10//:clap",
-            "codespan-reporting": "@vendor__codespan-reporting-0.11.1//:codespan_reporting",
-            "once_cell": "@vendor__once_cell-1.17.1//:once_cell",
-            "proc-macro2": "@vendor__proc-macro2-1.0.52//:proc_macro2",
-            "quote": "@vendor__quote-1.0.26//:quote",
-            "scratch": "@vendor__scratch-1.0.5//:scratch",
-            "syn": "@vendor__syn-2.0.1//:syn",
+            "cc": Label("@vendor__cc-1.0.89//:cc"),
+            "clap": Label("@vendor__clap-4.5.1//:clap"),
+            "codespan-reporting": Label("@vendor__codespan-reporting-0.11.1//:codespan_reporting"),
+            "once_cell": Label("@vendor__once_cell-1.19.0//:once_cell"),
+            "proc-macro2": Label("@vendor__proc-macro2-1.0.78//:proc_macro2"),
+            "quote": Label("@vendor__quote-1.0.35//:quote"),
+            "scratch": Label("@vendor__scratch-1.0.7//:scratch"),
+            "syn": Label("@vendor__syn-2.0.52//:syn"),
         },
     },
 }
@@ -361,53 +365,101 @@
 }
 
 _CONDITIONS = {
-    "cfg(windows)": ["aarch64-pc-windows-msvc", "i686-pc-windows-msvc", "x86_64-pc-windows-msvc"],
+    "aarch64-apple-darwin": ["@rules_rust//rust/platform:aarch64-apple-darwin"],
+    "aarch64-apple-ios": ["@rules_rust//rust/platform:aarch64-apple-ios"],
+    "aarch64-apple-ios-sim": ["@rules_rust//rust/platform:aarch64-apple-ios-sim"],
+    "aarch64-fuchsia": ["@rules_rust//rust/platform:aarch64-fuchsia"],
+    "aarch64-linux-android": ["@rules_rust//rust/platform:aarch64-linux-android"],
+    "aarch64-pc-windows-msvc": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc"],
+    "aarch64-unknown-linux-gnu": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu"],
+    "aarch64-unknown-nixos-gnu": ["@rules_rust//rust/platform:aarch64-unknown-nixos-gnu"],
+    "aarch64-unknown-nto-qnx710": ["@rules_rust//rust/platform:aarch64-unknown-nto-qnx710"],
+    "arm-unknown-linux-gnueabi": ["@rules_rust//rust/platform:arm-unknown-linux-gnueabi"],
+    "armv7-linux-androideabi": ["@rules_rust//rust/platform:armv7-linux-androideabi"],
+    "armv7-unknown-linux-gnueabi": ["@rules_rust//rust/platform:armv7-unknown-linux-gnueabi"],
+    "cfg(windows)": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc", "@rules_rust//rust/platform:i686-pc-windows-msvc", "@rules_rust//rust/platform:x86_64-pc-windows-msvc"],
+    "i686-apple-darwin": ["@rules_rust//rust/platform:i686-apple-darwin"],
+    "i686-linux-android": ["@rules_rust//rust/platform:i686-linux-android"],
     "i686-pc-windows-gnu": [],
+    "i686-pc-windows-msvc": ["@rules_rust//rust/platform:i686-pc-windows-msvc"],
+    "i686-unknown-freebsd": ["@rules_rust//rust/platform:i686-unknown-freebsd"],
+    "i686-unknown-linux-gnu": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"],
+    "powerpc-unknown-linux-gnu": ["@rules_rust//rust/platform:powerpc-unknown-linux-gnu"],
+    "riscv32imc-unknown-none-elf": ["@rules_rust//rust/platform:riscv32imc-unknown-none-elf"],
+    "riscv64gc-unknown-none-elf": ["@rules_rust//rust/platform:riscv64gc-unknown-none-elf"],
+    "s390x-unknown-linux-gnu": ["@rules_rust//rust/platform:s390x-unknown-linux-gnu"],
+    "thumbv7em-none-eabi": ["@rules_rust//rust/platform:thumbv7em-none-eabi"],
+    "thumbv8m.main-none-eabi": ["@rules_rust//rust/platform:thumbv8m.main-none-eabi"],
+    "wasm32-unknown-unknown": ["@rules_rust//rust/platform:wasm32-unknown-unknown"],
+    "wasm32-wasi": ["@rules_rust//rust/platform:wasm32-wasi"],
+    "x86_64-apple-darwin": ["@rules_rust//rust/platform:x86_64-apple-darwin"],
+    "x86_64-apple-ios": ["@rules_rust//rust/platform:x86_64-apple-ios"],
+    "x86_64-fuchsia": ["@rules_rust//rust/platform:x86_64-fuchsia"],
+    "x86_64-linux-android": ["@rules_rust//rust/platform:x86_64-linux-android"],
     "x86_64-pc-windows-gnu": [],
+    "x86_64-pc-windows-msvc": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"],
+    "x86_64-unknown-freebsd": ["@rules_rust//rust/platform:x86_64-unknown-freebsd"],
+    "x86_64-unknown-linux-gnu": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu"],
+    "x86_64-unknown-nixos-gnu": ["@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"],
+    "x86_64-unknown-none": ["@rules_rust//rust/platform:x86_64-unknown-none"],
 }
 
 ###############################################################################
 
 def crate_repositories():
-    """A macro for defining repositories for all generated crates"""
+    """A macro for defining repositories for all generated crates.
+
+    Returns:
+      A list of repos visible to the module through the module extension.
+    """
     maybe(
         http_archive,
-        name = "vendor__bitflags-1.3.2",
-        sha256 = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a",
+        name = "vendor__anstyle-1.0.6",
+        sha256 = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/bitflags/1.3.2/download"],
-        strip_prefix = "bitflags-1.3.2",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.bitflags-1.3.2.bazel"),
+        urls = ["https://crates.io/api/v1/crates/anstyle/1.0.6/download"],
+        strip_prefix = "anstyle-1.0.6",
+        build_file = Label("@//third-party/bazel:BUILD.anstyle-1.0.6.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "vendor__cc-1.0.79",
-        sha256 = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f",
+        name = "vendor__cc-1.0.89",
+        sha256 = "a0ba8f7aaa012f30d5b2861462f6708eccd49c3c39863fe083a308035f63d723",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/cc/1.0.79/download"],
-        strip_prefix = "cc-1.0.79",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.cc-1.0.79.bazel"),
+        urls = ["https://crates.io/api/v1/crates/cc/1.0.89/download"],
+        strip_prefix = "cc-1.0.89",
+        build_file = Label("@//third-party/bazel:BUILD.cc-1.0.89.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "vendor__clap-4.1.10",
-        sha256 = "ce38afc168d8665cfc75c7b1dd9672e50716a137f433f070991619744a67342a",
+        name = "vendor__clap-4.5.1",
+        sha256 = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/clap/4.1.10/download"],
-        strip_prefix = "clap-4.1.10",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.clap-4.1.10.bazel"),
+        urls = ["https://crates.io/api/v1/crates/clap/4.5.1/download"],
+        strip_prefix = "clap-4.5.1",
+        build_file = Label("@//third-party/bazel:BUILD.clap-4.5.1.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "vendor__clap_lex-0.3.3",
-        sha256 = "033f6b7a4acb1f358c742aaca805c939ee73b4c6209ae4318ec7aca81c42e646",
+        name = "vendor__clap_builder-4.5.1",
+        sha256 = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/clap_lex/0.3.3/download"],
-        strip_prefix = "clap_lex-0.3.3",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.clap_lex-0.3.3.bazel"),
+        urls = ["https://crates.io/api/v1/crates/clap_builder/4.5.1/download"],
+        strip_prefix = "clap_builder-4.5.1",
+        build_file = Label("@//third-party/bazel:BUILD.clap_builder-4.5.1.bazel"),
+    )
+
+    maybe(
+        http_archive,
+        name = "vendor__clap_lex-0.7.0",
+        sha256 = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce",
+        type = "tar.gz",
+        urls = ["https://crates.io/api/v1/crates/clap_lex/0.7.0/download"],
+        strip_prefix = "clap_lex-0.7.0",
+        build_file = Label("@//third-party/bazel:BUILD.clap_lex-0.7.0.bazel"),
     )
 
     maybe(
@@ -417,97 +469,87 @@
         type = "tar.gz",
         urls = ["https://crates.io/api/v1/crates/codespan-reporting/0.11.1/download"],
         strip_prefix = "codespan-reporting-0.11.1",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.codespan-reporting-0.11.1.bazel"),
+        build_file = Label("@//third-party/bazel:BUILD.codespan-reporting-0.11.1.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "vendor__once_cell-1.17.1",
-        sha256 = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3",
+        name = "vendor__once_cell-1.19.0",
+        sha256 = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/once_cell/1.17.1/download"],
-        strip_prefix = "once_cell-1.17.1",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.once_cell-1.17.1.bazel"),
+        urls = ["https://crates.io/api/v1/crates/once_cell/1.19.0/download"],
+        strip_prefix = "once_cell-1.19.0",
+        build_file = Label("@//third-party/bazel:BUILD.once_cell-1.19.0.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "vendor__os_str_bytes-6.4.1",
-        sha256 = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee",
+        name = "vendor__proc-macro2-1.0.78",
+        sha256 = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/os_str_bytes/6.4.1/download"],
-        strip_prefix = "os_str_bytes-6.4.1",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.os_str_bytes-6.4.1.bazel"),
+        urls = ["https://crates.io/api/v1/crates/proc-macro2/1.0.78/download"],
+        strip_prefix = "proc-macro2-1.0.78",
+        build_file = Label("@//third-party/bazel:BUILD.proc-macro2-1.0.78.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "vendor__proc-macro2-1.0.52",
-        sha256 = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224",
+        name = "vendor__quote-1.0.35",
+        sha256 = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/proc-macro2/1.0.52/download"],
-        strip_prefix = "proc-macro2-1.0.52",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.proc-macro2-1.0.52.bazel"),
+        urls = ["https://crates.io/api/v1/crates/quote/1.0.35/download"],
+        strip_prefix = "quote-1.0.35",
+        build_file = Label("@//third-party/bazel:BUILD.quote-1.0.35.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "vendor__quote-1.0.26",
-        sha256 = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc",
+        name = "vendor__scratch-1.0.7",
+        sha256 = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/quote/1.0.26/download"],
-        strip_prefix = "quote-1.0.26",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.quote-1.0.26.bazel"),
+        urls = ["https://crates.io/api/v1/crates/scratch/1.0.7/download"],
+        strip_prefix = "scratch-1.0.7",
+        build_file = Label("@//third-party/bazel:BUILD.scratch-1.0.7.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "vendor__scratch-1.0.5",
-        sha256 = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1",
+        name = "vendor__syn-2.0.52",
+        sha256 = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/scratch/1.0.5/download"],
-        strip_prefix = "scratch-1.0.5",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.scratch-1.0.5.bazel"),
+        urls = ["https://crates.io/api/v1/crates/syn/2.0.52/download"],
+        strip_prefix = "syn-2.0.52",
+        build_file = Label("@//third-party/bazel:BUILD.syn-2.0.52.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "vendor__syn-2.0.1",
-        sha256 = "55ee2415bee46ba26eac9cd8e52966995c46bf0e842b6304eb8fcf99826548ed",
+        name = "vendor__termcolor-1.4.1",
+        sha256 = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/syn/2.0.1/download"],
-        strip_prefix = "syn-2.0.1",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.syn-2.0.1.bazel"),
+        urls = ["https://crates.io/api/v1/crates/termcolor/1.4.1/download"],
+        strip_prefix = "termcolor-1.4.1",
+        build_file = Label("@//third-party/bazel:BUILD.termcolor-1.4.1.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "vendor__termcolor-1.2.0",
-        sha256 = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6",
+        name = "vendor__unicode-ident-1.0.12",
+        sha256 = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/termcolor/1.2.0/download"],
-        strip_prefix = "termcolor-1.2.0",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.termcolor-1.2.0.bazel"),
+        urls = ["https://crates.io/api/v1/crates/unicode-ident/1.0.12/download"],
+        strip_prefix = "unicode-ident-1.0.12",
+        build_file = Label("@//third-party/bazel:BUILD.unicode-ident-1.0.12.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "vendor__unicode-ident-1.0.8",
-        sha256 = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4",
+        name = "vendor__unicode-width-0.1.11",
+        sha256 = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/unicode-ident/1.0.8/download"],
-        strip_prefix = "unicode-ident-1.0.8",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.unicode-ident-1.0.8.bazel"),
-    )
-
-    maybe(
-        http_archive,
-        name = "vendor__unicode-width-0.1.10",
-        sha256 = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b",
-        type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/unicode-width/0.1.10/download"],
-        strip_prefix = "unicode-width-0.1.10",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.unicode-width-0.1.10.bazel"),
+        urls = ["https://crates.io/api/v1/crates/unicode-width/0.1.11/download"],
+        strip_prefix = "unicode-width-0.1.11",
+        build_file = Label("@//third-party/bazel:BUILD.unicode-width-0.1.11.bazel"),
     )
 
     maybe(
@@ -517,7 +559,7 @@
         type = "tar.gz",
         urls = ["https://crates.io/api/v1/crates/winapi/0.3.9/download"],
         strip_prefix = "winapi-0.3.9",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.winapi-0.3.9.bazel"),
+        build_file = Label("@//third-party/bazel:BUILD.winapi-0.3.9.bazel"),
     )
 
     maybe(
@@ -527,17 +569,17 @@
         type = "tar.gz",
         urls = ["https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download"],
         strip_prefix = "winapi-i686-pc-windows-gnu-0.4.0",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel"),
+        build_file = Label("@//third-party/bazel:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel"),
     )
 
     maybe(
         http_archive,
-        name = "vendor__winapi-util-0.1.5",
-        sha256 = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178",
+        name = "vendor__winapi-util-0.1.6",
+        sha256 = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596",
         type = "tar.gz",
-        urls = ["https://crates.io/api/v1/crates/winapi-util/0.1.5/download"],
-        strip_prefix = "winapi-util-0.1.5",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.winapi-util-0.1.5.bazel"),
+        urls = ["https://crates.io/api/v1/crates/winapi-util/0.1.6/download"],
+        strip_prefix = "winapi-util-0.1.6",
+        build_file = Label("@//third-party/bazel:BUILD.winapi-util-0.1.6.bazel"),
     )
 
     maybe(
@@ -547,5 +589,16 @@
         type = "tar.gz",
         urls = ["https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download"],
         strip_prefix = "winapi-x86_64-pc-windows-gnu-0.4.0",
-        build_file = Label("@cxx.rs//third-party/bazel:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel"),
+        build_file = Label("@//third-party/bazel:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel"),
     )
+
+    return [
+        struct(repo = "vendor__cc-1.0.89", is_dev_dep = False),
+        struct(repo = "vendor__clap-4.5.1", is_dev_dep = False),
+        struct(repo = "vendor__codespan-reporting-0.11.1", is_dev_dep = False),
+        struct(repo = "vendor__once_cell-1.19.0", is_dev_dep = False),
+        struct(repo = "vendor__proc-macro2-1.0.78", is_dev_dep = False),
+        struct(repo = "vendor__quote-1.0.35", is_dev_dep = False),
+        struct(repo = "vendor__scratch-1.0.7", is_dev_dep = False),
+        struct(repo = "vendor__syn-2.0.52", is_dev_dep = False),
+    ]
diff --git a/third-party/fixups/cc/fixups.toml b/third-party/fixups/cc/fixups.toml
deleted file mode 100644
index e148831..0000000
--- a/third-party/fixups/cc/fixups.toml
+++ /dev/null
@@ -1 +0,0 @@
-omit_targets = ["gcc-shim"]
diff --git a/third-party/fixups/clap/fixups.toml b/third-party/fixups/clap/fixups.toml
index 36ad30f..a842611 100644
--- a/third-party/fixups/clap/fixups.toml
+++ b/third-party/fixups/clap/fixups.toml
@@ -1,2 +1 @@
 extra_srcs = ["examples/demo.md", "examples/demo.rs"]
-omit_targets = ["stdio-fixture"]
diff --git a/third-party/fixups/clap_builder/fixups.toml b/third-party/fixups/clap_builder/fixups.toml
new file mode 100644
index 0000000..edd9a20
--- /dev/null
+++ b/third-party/fixups/clap_builder/fixups.toml
@@ -0,0 +1 @@
+extra_srcs = ["README.md"]
diff --git a/third-party/fixups/quote/fixups.toml b/third-party/fixups/libc/fixups.toml
similarity index 100%
rename from third-party/fixups/quote/fixups.toml
rename to third-party/fixups/libc/fixups.toml
diff --git a/third-party/fixups/scratch/fixups.toml b/third-party/fixups/scratch/fixups.toml
index 72f4bdd..ac9ebfb 100644
--- a/third-party/fixups/scratch/fixups.toml
+++ b/third-party/fixups/scratch/fixups.toml
@@ -1,4 +1,2 @@
-buildscript = []
-
-[env]
-OUT_DIR = "generated"
+[[buildscript]]
+[buildscript.gen_srcs]
diff --git a/third-party/fixups/syn/fixups.toml b/third-party/fixups/syn/fixups.toml
deleted file mode 100644
index 5e026f7..0000000
--- a/third-party/fixups/syn/fixups.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-[[buildscript]]
-[buildscript.rustc_flags]
diff --git a/third-party/fixups/winapi-x86_64-pc-windows-gnu/fixups.toml b/third-party/fixups/winapi-x86_64-pc-windows-gnu/fixups.toml
new file mode 100644
index 0000000..db40d72
--- /dev/null
+++ b/third-party/fixups/winapi-x86_64-pc-windows-gnu/fixups.toml
@@ -0,0 +1 @@
+buildscript = []
diff --git a/third-party/fixups/quote/fixups.toml b/third-party/fixups/winapi/fixups.toml
similarity index 100%
copy from third-party/fixups/quote/fixups.toml
copy to third-party/fixups/winapi/fixups.toml
diff --git a/third-party/reindeer.toml b/third-party/reindeer.toml
deleted file mode 100644
index a7daf6e..0000000
--- a/third-party/reindeer.toml
+++ /dev/null
@@ -1,15 +0,0 @@
-precise_srcs = true
-rustc_flags = ["--cap-lints=allow"]
-
-[cargo]
-versioned_dirs = true
-
-[buck]
-generated_file_header = """
-# \u0040generated by `reindeer buckify`
-"""
-buckfile_imports = """
-load("//tools/buck:buildscript.bzl", "buildscript_args")
-load("//tools/buck:third_party.bzl", "third_party_rust_library")
-"""
-rust_library = "third_party_rust_library"
diff --git a/tools/bazel/BUILD b/tools/bazel/BUILD
index d42fc71..63c8db9 100644
--- a/tools/bazel/BUILD
+++ b/tools/bazel/BUILD
@@ -5,3 +5,15 @@
     srcs = glob(["**/*.bzl"]),
     visibility = ["//visibility:public"],
 )
+
+xcode_version(
+    name = "github_actions_xcode_14_2_0",
+    default_macos_sdk_version = "13.1",
+    version = "14.2",
+)
+
+xcode_config(
+    name = "github_actions_xcodes",
+    default = ":github_actions_xcode_14_2_0",
+    versions = [":github_actions_xcode_14_2_0"],
+)
diff --git a/tools/bazel/extension.bzl b/tools/bazel/extension.bzl
new file mode 100644
index 0000000..efde7f2
--- /dev/null
+++ b/tools/bazel/extension.bzl
@@ -0,0 +1,12 @@
+load("//third-party/bazel:defs.bzl", _crate_repositories = "crate_repositories")
+
+def _crate_repositories_impl(module_ctx):
+    direct_deps = _crate_repositories()
+    return module_ctx.extension_metadata(
+        root_module_direct_deps = [repo.repo for repo in direct_deps],
+        root_module_direct_dev_deps = [],
+    )
+
+crate_repositories = module_extension(
+    implementation = _crate_repositories_impl,
+)
diff --git a/tools/buck/.ignore b/tools/buck/.ignore
new file mode 100644
index 0000000..adba186
--- /dev/null
+++ b/tools/buck/.ignore
@@ -0,0 +1 @@
+prelude/
diff --git a/tools/buck/build_mode.bzl b/tools/buck/build_mode.bzl
new file mode 100644
index 0000000..aeff498
--- /dev/null
+++ b/tools/buck/build_mode.bzl
@@ -0,0 +1,14 @@
+load("@prelude//:build_mode.bzl", "BuildModeInfo")
+
+def _build_mode_impl(ctx: AnalysisContext) -> list[Provider]:
+    return [
+        DefaultInfo(),
+        BuildModeInfo(cell = ctx.attrs.cell),
+    ]
+
+build_mode = rule(
+    impl = _build_mode_impl,
+    attrs = {
+        "cell": attrs.string(),
+    },
+)
diff --git a/tools/buck/buildscript.bzl b/tools/buck/buildscript.bzl
deleted file mode 100644
index e4d5e1e..0000000
--- a/tools/buck/buildscript.bzl
+++ /dev/null
@@ -1,17 +0,0 @@
-def buildscript_args(
-        name: str.type,
-        package_name: str.type,
-        buildscript_rule: str.type,
-        outfile: str.type,
-        version: str.type,
-        cfgs: [str.type] = [],
-        features: [str.type] = []):
-    _ = package_name
-    _ = version
-    _ = cfgs
-    _ = features
-    native.genrule(
-        name = name,
-        out = outfile,
-        cmd = "env RUSTC=rustc TARGET= $(exe %s) | sed -n s/^cargo:rustc-cfg=/--cfg=/p > ${OUT}" % buildscript_rule,
-    )
diff --git a/tools/buck/prelude b/tools/buck/prelude
index 08670e1..7b15f7b 160000
--- a/tools/buck/prelude
+++ b/tools/buck/prelude
@@ -1 +1 @@
-Subproject commit 08670e1d9a3fde1fd3cdc12839747a9ea1852a56
+Subproject commit 7b15f7b14e0a1628d4f1081b131aa7846a0404b9
diff --git a/tools/buck/rust_cxx_bridge.bzl b/tools/buck/rust_cxx_bridge.bzl
index 18bb245..1dce395 100644
--- a/tools/buck/rust_cxx_bridge.bzl
+++ b/tools/buck/rust_cxx_bridge.bzl
@@ -1,23 +1,26 @@
 def rust_cxx_bridge(
-        name: str.type,
-        src: str.type,
-        deps: [str.type] = []):
-    native.genrule(
+        name: str,
+        src: str,
+        deps: list[str] = []):
+    native.export_file(
         name = "%s/header" % name,
+        src = ":%s/generated[generated.h]" % name,
         out = src + ".h",
-        cmd = "cp $(location :%s/generated)/generated.h ${OUT}" % name,
     )
 
-    native.genrule(
+    native.export_file(
         name = "%s/source" % name,
+        src = ":%s/generated[generated.cc]" % name,
         out = src + ".cc",
-        cmd = "cp $(location :%s/generated)/generated.cc ${OUT}" % name,
     )
 
     native.genrule(
         name = "%s/generated" % name,
         srcs = [src],
-        out = ".",
+        outs = {
+            "generated.cc": ["generated.cc"],
+            "generated.h": ["generated.h"],
+        },
         cmd = "$(exe //:codegen) ${SRCS} -o ${OUT}/generated.h -o ${OUT}/generated.cc",
         type = "cxxbridge",
     )
diff --git a/tools/buck/third_party.bzl b/tools/buck/third_party.bzl
deleted file mode 100644
index 84e5ca8..0000000
--- a/tools/buck/third_party.bzl
+++ /dev/null
@@ -1,5 +0,0 @@
-def third_party_rust_library(**kwargs):
-    native.rust_library(
-        doctests = False,
-        **kwargs
-    )
diff --git a/tools/buck/toolchains/BUCK b/tools/buck/toolchains/BUCK
index 6984a86..e120a29 100644
--- a/tools/buck/toolchains/BUCK
+++ b/tools/buck/toolchains/BUCK
@@ -1,10 +1,21 @@
 load("@prelude//toolchains:cxx.bzl", "system_cxx_toolchain")
 load("@prelude//toolchains:genrule.bzl", "system_genrule_toolchain")
 load("@prelude//toolchains:python.bzl", "system_python_bootstrap_toolchain")
+load("@prelude//toolchains:remote_test_execution.bzl", "remote_test_execution_toolchain")
 load("@prelude//toolchains:rust.bzl", "system_rust_toolchain")
 
 system_cxx_toolchain(
     name = "cxx",
+    cxx_flags = select({
+        "config//os:linux": ["-std=c++17"],
+        "config//os:macos": ["-std=c++17"],
+        "config//os:windows": [],
+    }),
+    link_flags = select({
+        "config//os:linux": ["-lstdc++"],
+        "config//os:macos": ["-lc++"],
+        "config//os:windows": [],
+    }),
     visibility = ["PUBLIC"],
 )
 
@@ -21,5 +32,11 @@
 system_rust_toolchain(
     name = "rust",
     default_edition = None,
+    doctests = True,
+    visibility = ["PUBLIC"],
+)
+
+remote_test_execution_toolchain(
+    name = "remote_test_execution",
     visibility = ["PUBLIC"],
 )