Fix METADATA files.

See also aosp/3255987.

Generated with "cargo run --bin crate_health -- fix-metadata".

Bug: 339424309
Test: treehugger
Change-Id: I57abbc418fb81a614ad41229d95610060ff0869f
diff --git a/crates/ahash/METADATA b/crates/ahash/METADATA
index 12bba65..7325fd9 100644
--- a/crates/ahash/METADATA
+++ b/crates/ahash/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/ahash
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "ahash"
 description: "A non-cryptographic hash function using AES-NI for high performance"
 third_party {
+  version: "0.8.11"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/aho-corasick/METADATA b/crates/aho-corasick/METADATA
index cd2bd6e..e31f8f8 100644
--- a/crates/aho-corasick/METADATA
+++ b/crates/aho-corasick/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/aho-corasick
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "aho-corasick"
 description: "Fast multiple substring searching."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/aho-corasick"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/aho-corasick/aho-corasick-0.7.20.crate"
-  }
   version: "0.7.20"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 12
     day: 5
   }
+  homepage: "https://crates.io/crates/aho-corasick"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/aho-corasick/aho-corasick-0.7.20.crate"
+    version: "0.7.20"
+  }
 }
diff --git a/crates/android_log-sys/METADATA b/crates/android_log-sys/METADATA
index f1bfedf..f090571 100644
--- a/crates/android_log-sys/METADATA
+++ b/crates/android_log-sys/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/android_log-sys
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "android_log-sys"
 description: "FFI bindings to Android log Library."
 third_party {
+  version: "0.3.1"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/android_logger/METADATA b/crates/android_logger/METADATA
index e259b87..edb7529 100644
--- a/crates/android_logger/METADATA
+++ b/crates/android_logger/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/android_logger
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "android_logger"
 description: "()"
 third_party {
+  version: "0.13.3"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/anes/METADATA b/crates/anes/METADATA
index 73bbb1b..5f8e099 100644
--- a/crates/anes/METADATA
+++ b/crates/anes/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/anes
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "anes"
 description: "ANSI Escape Sequences provider & parser"
 third_party {
+  version: "0.2.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
diff --git a/crates/annotate-snippets/METADATA b/crates/annotate-snippets/METADATA
index 159bb3b..97ad3ec 100644
--- a/crates/annotate-snippets/METADATA
+++ b/crates/annotate-snippets/METADATA
@@ -1,6 +1,7 @@
 name: "annotate-snippets"
 description: "Library for building code annotations"
 third_party {
+  version: "0.9.2"
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
diff --git a/crates/anyhow/METADATA b/crates/anyhow/METADATA
index 447f25e..3600ae8 100644
--- a/crates/anyhow/METADATA
+++ b/crates/anyhow/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/anyhow
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "anyhow"
 description: "Flexible concrete Error type built on std::error::Error"
 third_party {
+  version: "1.0.79"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/argh/METADATA b/crates/argh/METADATA
index b5ae03f..464f47e 100644
--- a/crates/argh/METADATA
+++ b/crates/argh/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/argh
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "argh"
 description: "Derive-based argument parser optimized for code size"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/argh"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/argh/argh-0.1.12.crate"
-  }
   version: "0.1.12"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 10
     day: 19
   }
+  homepage: "https://crates.io/crates/argh"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/argh/argh-0.1.12.crate"
+    version: "0.1.12"
+  }
 }
diff --git a/crates/argh_derive/METADATA b/crates/argh_derive/METADATA
index 7031327..e63502a 100644
--- a/crates/argh_derive/METADATA
+++ b/crates/argh_derive/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/argh_derive
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "argh_derive"
 description: "Derive-based argument parsing optimized for code size"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/argh_derive"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/argh_derive/argh_derive-0.1.12.crate"
-  }
   version: "0.1.12"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 10
     day: 11
   }
+  homepage: "https://crates.io/crates/argh_derive"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/argh_derive/argh_derive-0.1.12.crate"
+    version: "0.1.12"
+  }
 }
diff --git a/crates/argh_shared/METADATA b/crates/argh_shared/METADATA
index 1d5719e..ee3b7ee 100644
--- a/crates/argh_shared/METADATA
+++ b/crates/argh_shared/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/argh_shared
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "argh_shared"
 description: "Derive-based argument parsing optimized for code size"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/argh_shared"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/argh_shared/argh_shared-0.1.12.crate"
-  }
   version: "0.1.12"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 10
     day: 19
   }
+  homepage: "https://crates.io/crates/argh_shared"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/argh_shared/argh_shared-0.1.12.crate"
+    version: "0.1.12"
+  }
 }
diff --git a/crates/ash/METADATA b/crates/ash/METADATA
index 502a932..74cd1da 100644
--- a/crates/ash/METADATA
+++ b/crates/ash/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/ash
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "ash"
 description: "Vulkan bindings for Rust"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/ash"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/ash/ash-0.37.3+1.3.251.crate"
-  }
   version: "0.37.3+1.3.251"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 8
     day: 2
   }
+  homepage: "https://crates.io/crates/ash"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/ash/ash-0.37.3+1.3.251.crate"
+    version: "0.37.3+1.3.251"
+  }
 }
diff --git a/crates/async-stream-impl/METADATA b/crates/async-stream-impl/METADATA
index 935ce70..510a3aa 100644
--- a/crates/async-stream-impl/METADATA
+++ b/crates/async-stream-impl/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/async-stream-impl
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "async-stream-impl"
 description: "proc macros for async-stream crate"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/async-stream-impl"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/async-stream-impl/async-stream-impl-0.3.5.crate"
-  }
   version: "0.3.5"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 11
     day: 10
   }
+  homepage: "https://crates.io/crates/async-stream-impl"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/async-stream-impl/async-stream-impl-0.3.5.crate"
+    version: "0.3.5"
+  }
 }
diff --git a/crates/async-stream/METADATA b/crates/async-stream/METADATA
index dbc0e46..1653269 100644
--- a/crates/async-stream/METADATA
+++ b/crates/async-stream/METADATA
@@ -1,6 +1,7 @@
 name: "async-stream"
 description: "Asynchronous streams using async & await notation"
 third_party {
+  version: "0.3.5"
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
diff --git a/crates/async-task/METADATA b/crates/async-task/METADATA
index c8c9373..686e325 100644
--- a/crates/async-task/METADATA
+++ b/crates/async-task/METADATA
@@ -1,6 +1,7 @@
-name: "async_task"
+name: "async-task"
 description: "Task abstraction for building executors"
 third_party {
+  version: "4.5.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
@@ -10,7 +11,7 @@
   homepage: "https://crates.io/crates/async-task"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/async_task/async_task-4.5.0.crate"
+    value: "https://static.crates.io/crates/async-task/async-task-4.5.0.crate"
     version: "4.5.0"
   }
 }
diff --git a/crates/async-trait/METADATA b/crates/async-trait/METADATA
index eea315b..704eda5 100644
--- a/crates/async-trait/METADATA
+++ b/crates/async-trait/METADATA
@@ -1,6 +1,7 @@
 name: "async-trait"
 description: "Type erasure for async trait methods"
 third_party {
+  version: "0.1.74"
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
diff --git a/crates/atomic/METADATA b/crates/atomic/METADATA
index 917773f..1ad5735 100644
--- a/crates/atomic/METADATA
+++ b/crates/atomic/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/atomic
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "atomic"
 description: "Generic Atomic<T> wrapper type"
 third_party {
+  version: "0.6.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/atty/METADATA b/crates/atty/METADATA
index f258576..4a3dbaf 100644
--- a/crates/atty/METADATA
+++ b/crates/atty/METADATA
@@ -1,14 +1,6 @@
 name: "atty"
 description: "A simple interface for querying atty"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/atty"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/atty/atty-0.2.14.crate"
-  }
   version: "0.2.14"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 12
     day: 21
   }
+  homepage: "https://crates.io/crates/atty"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/atty/atty-0.2.14.crate"
+    version: "0.2.14"
+  }
 }
diff --git a/crates/axum/METADATA b/crates/axum/METADATA
index e2d0894..eb9ce52 100644
--- a/crates/axum/METADATA
+++ b/crates/axum/METADATA
@@ -1,15 +1,6 @@
 name: "axum"
 description: "Web framework that focuses on ergonomics and modularity"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "axum"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/axum/axum-0.6.20.crate"
-    primary_source: true
-  }
   version: "0.6.20"
   license_type: NOTICE
   last_upgrade_date {
@@ -17,4 +8,10 @@
     month: 6
     day: 3
   }
+  homepage: "https://crates.io/crates/axum"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/axum/axum-0.6.20.crate"
+    version: "0.6.20"
+  }
 }
diff --git a/crates/base64/METADATA b/crates/base64/METADATA
index e5d8d65..a397c64 100644
--- a/crates/base64/METADATA
+++ b/crates/base64/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/<absolute path to project>
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "base64"
 description: "encodes and decodes base64 as bytes or utf8"
 third_party {
+  version: "0.22.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/bencher/METADATA b/crates/bencher/METADATA
index b027bcf..52caf6f 100644
--- a/crates/bencher/METADATA
+++ b/crates/bencher/METADATA
@@ -1,14 +1,6 @@
 name: "bencher"
 description: "A port of the libtest (unstable Rust) benchmark runner to Rust stable releases. Supports running benchmarks and filtering based on the name. Benchmark execution works exactly the same way and no more (caveat: black_box is still missing!)."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/bencher"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/bencher/bencher-0.1.5.crate"
-  }
   version: "0.1.5"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 12
     day: 15
   }
+  homepage: "https://crates.io/crates/bencher"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/bencher/bencher-0.1.5.crate"
+    version: "0.1.5"
+  }
 }
diff --git a/crates/bincode/METADATA b/crates/bincode/METADATA
index 26541e1..0710736 100644
--- a/crates/bincode/METADATA
+++ b/crates/bincode/METADATA
@@ -1,15 +1,6 @@
 name: "bincode"
 description: "A binary serialization / deserialization strategy that uses Serde for transforming structs into bytes and vice versa!"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "bincode"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/bincode/bincode-1.3.3.crate"
-    primary_source: true
-  }
   version: "1.3.3"
   license_type: NOTICE
   last_upgrade_date {
@@ -17,4 +8,10 @@
     month: 3
     day: 21
   }
+  homepage: "https://crates.io/crates/bincode"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/bincode/bincode-1.3.3.crate"
+    version: "1.3.3"
+  }
 }
diff --git a/crates/bitreader/METADATA b/crates/bitreader/METADATA
index b998ed7..b7dbcdd 100644
--- a/crates/bitreader/METADATA
+++ b/crates/bitreader/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/bitreader
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "bitreader"
 description: "BitReader helps reading individual bits from a slice of bytes.  You can read \"unusual\" numbers of bits from the byte slice, for example 13 bits at once. The reader internally keeps track of position within the buffer."
 third_party {
+  version: "0.3.8"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/bstr/METADATA b/crates/bstr/METADATA
index 587f058..570653a 100644
--- a/crates/bstr/METADATA
+++ b/crates/bstr/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/bstr
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "bstr"
 description: "A string type that is not required to be valid UTF-8."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/bstr"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/bstr/bstr-1.3.0.crate"
-  }
   version: "1.3.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 3
     day: 2
   }
+  homepage: "https://crates.io/crates/bstr"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/bstr/bstr-1.3.0.crate"
+    version: "1.3.0"
+  }
 }
diff --git a/crates/buddy_system_allocator/METADATA b/crates/buddy_system_allocator/METADATA
index 96c0567..a49ed87 100644
--- a/crates/buddy_system_allocator/METADATA
+++ b/crates/buddy_system_allocator/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/buddy_system_allocator
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "buddy_system_allocator"
 description: "A bare metal allocator that uses buddy system."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/buddy_system_allocator"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/buddy_system_allocator/buddy_system_allocator-0.9.0.crate"
-  }
   version: "0.9.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 2
     day: 1
   }
+  homepage: "https://crates.io/crates/buddy_system_allocator"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/buddy_system_allocator/buddy_system_allocator-0.9.0.crate"
+    version: "0.9.0"
+  }
 }
diff --git a/crates/bytemuck_derive/METADATA b/crates/bytemuck_derive/METADATA
index 24a6777..f1e89fe 100644
--- a/crates/bytemuck_derive/METADATA
+++ b/crates/bytemuck_derive/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/bytemuck_derive
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "bytemuck_derive"
 description: "derive proc-macros for `bytemuck`"
 third_party {
+  version: "1.5.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/byteorder/METADATA b/crates/byteorder/METADATA
index c5a4b7d..6257397 100644
--- a/crates/byteorder/METADATA
+++ b/crates/byteorder/METADATA
@@ -1,14 +1,6 @@
 name: "byteorder"
 description: "Library for reading/writing numbers in big-endian and little-endian."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/byteorder"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/byteorder/byteorder-1.4.3.crate"
-  }
   version: "1.4.3"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 4
     day: 1
   }
+  homepage: "https://crates.io/crates/byteorder"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/byteorder/byteorder-1.4.3.crate"
+    version: "1.4.3"
+  }
 }
diff --git a/crates/bytes/METADATA b/crates/bytes/METADATA
index c5c023c..aa2864e 100644
--- a/crates/bytes/METADATA
+++ b/crates/bytes/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/bytes
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "bytes"
 description: "Types and traits for working with bytes"
 third_party {
+  version: "1.5.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/camino/METADATA b/crates/camino/METADATA
index cc39c21..c29323e 100644
--- a/crates/camino/METADATA
+++ b/crates/camino/METADATA
@@ -1,21 +1,17 @@
 name: "camino"
 description: "UTF-8 paths"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "camino"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/camino/camino-1.1.6.crate"
-    primary_source: true
-  }
   version: "1.1.6"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
     month: 3
     day: 21
   }
+  homepage: "https://crates.io/crates/camino"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/camino/camino-1.1.6.crate"
+    version: "1.1.6"
+  }
 }
diff --git a/crates/cast/METADATA b/crates/cast/METADATA
index 704c63d..869b783 100644
--- a/crates/cast/METADATA
+++ b/crates/cast/METADATA
@@ -1,14 +1,6 @@
 name: "cast"
 description: "Ergonomic, checked cast functions for primitive types"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/cast"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/cast/cast-0.3.0.crate"
-  }
   version: "0.3.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 9
     day: 22
   }
+  homepage: "https://crates.io/crates/cast"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/cast/cast-0.3.0.crate"
+    version: "0.3.0"
+  }
 }
diff --git a/crates/cesu8/METADATA b/crates/cesu8/METADATA
index ae7ceba..d272d21 100644
--- a/crates/cesu8/METADATA
+++ b/crates/cesu8/METADATA
@@ -1,14 +1,6 @@
 name: "cesu8"
 description: "Convert to and from CESU-8 encoding (similar to UTF-8)"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/cesu8"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/cesu8/cesu8-1.1.0.crate"
-  }
   version: "1.1.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 7
     day: 30
   }
+  homepage: "https://crates.io/crates/cesu8"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/cesu8/cesu8-1.1.0.crate"
+    version: "1.1.0"
+  }
 }
diff --git a/crates/cexpr/METADATA b/crates/cexpr/METADATA
index e9c66ec..5f0437f 100644
--- a/crates/cexpr/METADATA
+++ b/crates/cexpr/METADATA
@@ -1,14 +1,6 @@
 name: "cexpr"
 description: "A C expression parser and evaluator"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/cexpr"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/cexpr/cexpr-0.6.0.crate"
-  }
   version: "0.6.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 6
     day: 27
   }
+  homepage: "https://crates.io/crates/cexpr"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/cexpr/cexpr-0.6.0.crate"
+    version: "0.6.0"
+  }
 }
diff --git a/crates/cfg-if/METADATA b/crates/cfg-if/METADATA
index bb80314..9cefa55 100644
--- a/crates/cfg-if/METADATA
+++ b/crates/cfg-if/METADATA
@@ -1,14 +1,6 @@
 name: "cfg-if"
 description: "A macro to ergonomically define an item depending on a large number of #[cfg] parameters. Structured like an if-else chain, the first matching branch is the item that gets emitted."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/cfg-if"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/cfg-if/cfg-if-1.0.0.crate"
-  }
   version: "1.0.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 10
     day: 26
   }
+  homepage: "https://crates.io/crates/cfg-if"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/cfg-if/cfg-if-1.0.0.crate"
+    version: "1.0.0"
+  }
 }
diff --git a/crates/ciborium-io/METADATA b/crates/ciborium-io/METADATA
index 81419cb..0e8542b 100644
--- a/crates/ciborium-io/METADATA
+++ b/crates/ciborium-io/METADATA
@@ -1,17 +1,14 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/ciborium-io
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "ciborium-io"
 description: "Simplified Read/Write traits for no_std usage"
 third_party {
+  version: "0.2.2"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
     month: 1
     day: 24
   }
-  homepage: "https://crates.io/crates/ciborium-io/0.2.0"
+  homepage: "https://crates.io/crates/ciborium-io"
   identifier {
     type: "Archive"
     value: "https://static.crates.io/crates/ciborium-io/ciborium-io-0.2.2.crate"
diff --git a/crates/ciborium-ll/METADATA b/crates/ciborium-ll/METADATA
index 5f9f6fe..bcd3bf3 100644
--- a/crates/ciborium-ll/METADATA
+++ b/crates/ciborium-ll/METADATA
@@ -1,17 +1,14 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/ciborium-ll
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "ciborium-ll"
 description: "Low-level CBOR codec primitives"
 third_party {
+  version: "0.2.2"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
     month: 1
     day: 24
   }
-  homepage: "https://crates.io/crates/ciborium-ll/0.2.0"
+  homepage: "https://crates.io/crates/ciborium-ll"
   identifier {
     type: "Archive"
     value: "https://static.crates.io/crates/ciborium-ll/ciborium-ll-0.2.2.crate"
diff --git a/crates/ciborium/METADATA b/crates/ciborium/METADATA
index 8be55da..c305f4d 100644
--- a/crates/ciborium/METADATA
+++ b/crates/ciborium/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/ciborium
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "ciborium"
 description: "serde implementation of CBOR using ciborium-basic"
 third_party {
+  version: "0.2.2"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/clap_complete/METADATA b/crates/clap_complete/METADATA
index 3fa8034..1ba9cb3 100644
--- a/crates/clap_complete/METADATA
+++ b/crates/clap_complete/METADATA
@@ -1,24 +1,17 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/clap_complete
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "clap_complete"
 description: "Generate shell completion scripts for your clap::Command"
 third_party {
+  version: "4.4.9"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
     month: 2
     day: 1
   }
-  identifier {
-    type: "crates.io"
-    value: "https://static.crates.io/crates/clap_complete/clap_complete-4.4.9.crate"
-    version: "4.4.4"
-  }
+  homepage: "https://crates.io/crates/clap_complete"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/clap_complete/clap_complete-4.4.4.crate"
+    value: "https://static.crates.io/crates/clap_complete/clap_complete-4.4.9.crate"
     version: "4.4.9"
   }
 }
diff --git a/crates/clap_derive/METADATA b/crates/clap_derive/METADATA
index 684ef04..8c4810a 100644
--- a/crates/clap_derive/METADATA
+++ b/crates/clap_derive/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/clap_derive
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "clap_derive"
 description: "Parse command line argument by defining a struct, derive crate."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/clap_derive"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/clap_derive/clap_derive-4.2.0.crate"
-  }
   version: "4.2.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 3
     day: 31
   }
+  homepage: "https://crates.io/crates/clap_derive"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/clap_derive/clap_derive-4.2.0.crate"
+    version: "4.2.0"
+  }
 }
diff --git a/crates/clap_lex/METADATA b/crates/clap_lex/METADATA
index bfc9b1d..c38d80f 100644
--- a/crates/clap_lex/METADATA
+++ b/crates/clap_lex/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/clap_lex
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "clap_lex"
 description: "Minimal, flexible command line parser"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/clap_lex"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/clap_lex/clap_lex-0.3.2.crate"
-  }
   version: "0.3.2"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 3
     day: 2
   }
+  homepage: "https://crates.io/crates/clap_lex"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/clap_lex/clap_lex-0.3.2.crate"
+    version: "0.3.2"
+  }
 }
diff --git a/crates/combine/METADATA b/crates/combine/METADATA
index 6c436fc..ede2263 100644
--- a/crates/combine/METADATA
+++ b/crates/combine/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/combine
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "combine"
 description: "Fast parser combinators on arbitrary streams with zero-copy support."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/combine"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/combine/combine-4.6.6.crate"
-  }
   version: "4.6.6"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 12
     day: 8
   }
+  homepage: "https://crates.io/crates/combine"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/combine/combine-4.6.6.crate"
+    version: "4.6.6"
+  }
 }
diff --git a/crates/command-fds/METADATA b/crates/command-fds/METADATA
index 9187d47..7d7aaa8 100644
--- a/crates/command-fds/METADATA
+++ b/crates/command-fds/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/command-fds
-# For more info, check https://cs.android.com/android/platform/superproject/main/+/main:tools/external_updater/README.md
-
 name: "command-fds"
 description: "A library for passing arbitrary file descriptors when spawning child processes."
 third_party {
+  version: "0.3.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/const-oid/METADATA b/crates/const-oid/METADATA
index ae5263e..7bfe11c 100644
--- a/crates/const-oid/METADATA
+++ b/crates/const-oid/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/const-oid
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "const-oid"
 description: "Const-friendly implementation of the ISO/IEC Object Identifier (OID) standard as defined in ITU X.660, with support for BER/DER encoding/decoding as well as heapless no_std (i.e. embedded) support"
 third_party {
+  version: "0.9.6"
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
diff --git a/crates/coset/METADATA b/crates/coset/METADATA
index 680f70f..20bd3c3 100644
--- a/crates/coset/METADATA
+++ b/crates/coset/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/coset
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "coset"
 description: "Set of types for supporting COSE"
 third_party {
+  version: "0.3.7"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/crc32fast/METADATA b/crates/crc32fast/METADATA
index a92dca4..4537538 100644
--- a/crates/crc32fast/METADATA
+++ b/crates/crc32fast/METADATA
@@ -1,14 +1,6 @@
 name: "crc32fast"
 description: "Fast, SIMD-accelerated CRC32 (IEEE) checksum computation"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/crc32fast"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/crc32fast/crc32fast-1.3.2.crate"
-  }
   version: "1.3.2"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 3
     day: 1
   }
+  homepage: "https://crates.io/crates/crc32fast"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/crc32fast/crc32fast-1.3.2.crate"
+    version: "1.3.2"
+  }
 }
diff --git a/crates/criterion-plot/METADATA b/crates/criterion-plot/METADATA
index 9c18332..faf6d36 100644
--- a/crates/criterion-plot/METADATA
+++ b/crates/criterion-plot/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/criterion-plot
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "criterion-plot"
 description: "Criterion\'s plotting library"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/criterion-plot"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/criterion-plot/criterion-plot-0.5.0.crate"
-  }
   version: "0.5.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 12
     day: 8
   }
+  homepage: "https://crates.io/crates/criterion-plot"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/criterion-plot/criterion-plot-0.5.0.crate"
+    version: "0.5.0"
+  }
 }
diff --git a/crates/criterion/METADATA b/crates/criterion/METADATA
index f28230b..985ae17 100644
--- a/crates/criterion/METADATA
+++ b/crates/criterion/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/criterion
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "criterion"
 description: "Statistics-driven micro-benchmarking library"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/criterion"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/criterion/criterion-0.4.0.crate"
-  }
   version: "0.4.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 2
     day: 15
   }
+  homepage: "https://crates.io/crates/criterion"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/criterion/criterion-0.4.0.crate"
+    version: "0.4.0"
+  }
 }
diff --git a/crates/crossbeam-channel/METADATA b/crates/crossbeam-channel/METADATA
index a372576..2197697 100644
--- a/crates/crossbeam-channel/METADATA
+++ b/crates/crossbeam-channel/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/crossbeam-channel
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "crossbeam-channel"
 description: "Multi-producer multi-consumer channels for message passing"
 third_party {
+  version: "0.5.11"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/crossbeam-deque/METADATA b/crates/crossbeam-deque/METADATA
index 3ede3e1..e305508 100644
--- a/crates/crossbeam-deque/METADATA
+++ b/crates/crossbeam-deque/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/crossbeam-deque
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "crossbeam-deque"
 description: "Concurrent work-stealing deque"
 third_party {
+  version: "0.8.5"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/crossbeam-epoch/METADATA b/crates/crossbeam-epoch/METADATA
index d09d0a6..fa76fa4 100644
--- a/crates/crossbeam-epoch/METADATA
+++ b/crates/crossbeam-epoch/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/crossbeam-epoch
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "crossbeam-epoch"
 description: "Epoch-based garbage collection"
 third_party {
+  version: "0.9.18"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/crossbeam-queue/METADATA b/crates/crossbeam-queue/METADATA
index bf4b62f..77ef110 100644
--- a/crates/crossbeam-queue/METADATA
+++ b/crates/crossbeam-queue/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/crossbeam-queue
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "crossbeam-queue"
 description: "Concurrent queues"
 third_party {
+  version: "0.3.11"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/crossbeam-utils/METADATA b/crates/crossbeam-utils/METADATA
index 7ae191c..d142c67 100644
--- a/crates/crossbeam-utils/METADATA
+++ b/crates/crossbeam-utils/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/crossbeam-utils
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "crossbeam-utils"
 description: "Utilities for concurrent programming"
 third_party {
+  version: "0.8.19"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/darling_core/METADATA b/crates/darling_core/METADATA
index a2848b6..fd866e5 100644
--- a/crates/darling_core/METADATA
+++ b/crates/darling_core/METADATA
@@ -1,15 +1,6 @@
 name: "darling_core"
 description: "()"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "darling_core"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/darling_core/darling_core-0.20.8.crate"
-    primary_source: true
-  }
   version: "0.20.8"
   license_type: NOTICE
   last_upgrade_date {
@@ -17,4 +8,10 @@
     month: 3
     day: 6
   }
+  homepage: "https://crates.io/crates/darling_core"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/darling_core/darling_core-0.20.8.crate"
+    version: "0.20.8"
+  }
 }
diff --git a/crates/darling_macro/METADATA b/crates/darling_macro/METADATA
index 94e6da0..63ba03d 100644
--- a/crates/darling_macro/METADATA
+++ b/crates/darling_macro/METADATA
@@ -1,15 +1,6 @@
 name: "darling_macro"
 description: "()"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "darling_macro"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/darling_macro/darling_macro-0.20.8.crate"
-    primary_source: true
-  }
   version: "0.20.8"
   license_type: NOTICE
   last_upgrade_date {
@@ -17,4 +8,10 @@
     month: 3
     day: 6
   }
+  homepage: "https://crates.io/crates/darling_macro"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/darling_macro/darling_macro-0.20.8.crate"
+    version: "0.20.8"
+  }
 }
diff --git a/crates/dashmap/METADATA b/crates/dashmap/METADATA
index e63fbc9..718f1c0 100644
--- a/crates/dashmap/METADATA
+++ b/crates/dashmap/METADATA
@@ -1,15 +1,6 @@
 name: "dashmap"
 description: "Blazing fast concurrent HashMap for Rust."
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "dashmap"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/dashmap/dashmap-5.5.3.crate"
-    primary_source: true
-  }
   version: "5.5.3"
   license_type: NOTICE
   last_upgrade_date {
@@ -17,4 +8,10 @@
     month: 3
     day: 6
   }
+  homepage: "https://crates.io/crates/dashmap"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/dashmap/dashmap-5.5.3.crate"
+    version: "5.5.3"
+  }
 }
diff --git a/crates/data-encoding/METADATA b/crates/data-encoding/METADATA
index 9fa161f..9083190 100644
--- a/crates/data-encoding/METADATA
+++ b/crates/data-encoding/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/data-encoding
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "data-encoding"
 description: "Efficient and customizable data-encoding functions like base64, base32, and hex"
 third_party {
+  version: "2.5.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/der/METADATA b/crates/der/METADATA
index 234bf10..705d5ea 100644
--- a/crates/der/METADATA
+++ b/crates/der/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/der
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "der"
 description: "Pure Rust embedded-friendly implementation of the Distinguished Encoding Rules (DER) for Abstract Syntax Notation One (ASN.1) as described in ITU X.690."
 third_party {
+  version: "0.7.8"
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
diff --git a/crates/der_derive/METADATA b/crates/der_derive/METADATA
index 0958102..a9e8811 100644
--- a/crates/der_derive/METADATA
+++ b/crates/der_derive/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/der_derive
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "der_derive"
 description: "Custom derive support for the `der` crate\'s `Choice` and `Sequence` traits"
 third_party {
+  version: "0.7.2"
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
diff --git a/crates/derive_arbitrary/METADATA b/crates/derive_arbitrary/METADATA
index b144797..23ddd77 100644
--- a/crates/derive_arbitrary/METADATA
+++ b/crates/derive_arbitrary/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/derive_arbitrary
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "derive_arbitrary"
 description: "Derives arbitrary traits"
 third_party {
+  version: "1.3.2"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/displaydoc/METADATA b/crates/displaydoc/METADATA
index 7fda2bb..db5e3a1 100644
--- a/crates/displaydoc/METADATA
+++ b/crates/displaydoc/METADATA
@@ -1,20 +1,17 @@
 name: "displaydoc"
 description: "()"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "https://crates.io/crates/displaydoc"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/displaydoc/displaydoc-0.2.4.crate"
-  }
   version: "0.2.4"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
     month: 11
     day: 21
   }
+  homepage: "https://crates.io/crates/displaydoc"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/displaydoc/displaydoc-0.2.4.crate"
+    version: "0.2.4"
+  }
 }
diff --git a/crates/document-features/METADATA b/crates/document-features/METADATA
index 6886418..7c84282 100644
--- a/crates/document-features/METADATA
+++ b/crates/document-features/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/document-features
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "document-features"
 description: "Extract documentation for the feature flags from comments in Cargo.toml"
 third_party {
+  version: "0.2.8"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/downcast-rs/METADATA b/crates/downcast-rs/METADATA
index d2243f6..9ff0d22 100644
--- a/crates/downcast-rs/METADATA
+++ b/crates/downcast-rs/METADATA
@@ -1,14 +1,6 @@
 name: "downcast-rs"
 description: "Trait object downcasting support using only safe Rust. It supports type parameters, associated types, and type constraints."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/downcast-rs"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/downcast-rs/downcast-rs-1.2.0.crate"
-  }
   version: "1.2.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 10
     day: 27
   }
+  homepage: "https://crates.io/crates/downcast-rs"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/downcast-rs/downcast-rs-1.2.0.crate"
+    version: "1.2.0"
+  }
 }
diff --git a/crates/drm/METADATA b/crates/drm/METADATA
index 3630f06..56cd1a1 100644
--- a/crates/drm/METADATA
+++ b/crates/drm/METADATA
@@ -1,15 +1,6 @@
 name: "drm"
 description: "Safe, low-level bindings to the Direct Rendering Manager API"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "drm"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/drm/drm-0.11.1.crate"
-    primary_source: true
-  }
   version: "0.11.1"
   license_type: NOTICE
   last_upgrade_date {
@@ -17,4 +8,10 @@
     month: 3
     day: 13
   }
+  homepage: "https://crates.io/crates/drm"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/drm/drm-0.11.1.crate"
+    version: "0.11.1"
+  }
 }
diff --git a/crates/either/METADATA b/crates/either/METADATA
index c2a2a93..9a30e13 100644
--- a/crates/either/METADATA
+++ b/crates/either/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/either
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "either"
 description: "The enum `Either` with variants `Left` and `Right` is a general purpose sum type with two cases."
 third_party {
+  version: "1.9.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/enumn/METADATA b/crates/enumn/METADATA
index eb08662..8d04f61 100644
--- a/crates/enumn/METADATA
+++ b/crates/enumn/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/enumn
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "enumn"
 description: "Convert number to enum"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/enumn"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/enumn/enumn-0.1.8.crate"
-  }
   version: "0.1.8"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 3
     day: 23
   }
+  homepage: "https://crates.io/crates/enumn"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/enumn/enumn-0.1.8.crate"
+    version: "0.1.8"
+  }
 }
diff --git a/crates/env_logger/METADATA b/crates/env_logger/METADATA
index 09f2ed7..b9fec5f 100644
--- a/crates/env_logger/METADATA
+++ b/crates/env_logger/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/env_logger
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "env_logger"
 description: "A logging implementation for `log` which is configured via an environment variable."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/env_logger"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/env_logger/env_logger-0.10.0.crate"
-  }
   version: "0.10.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 12
     day: 9
   }
+  homepage: "https://crates.io/crates/env_logger"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/env_logger/env_logger-0.10.0.crate"
+    version: "0.10.0"
+  }
 }
diff --git a/crates/epoll/METADATA b/crates/epoll/METADATA
index b27c236..98c40fd 100644
--- a/crates/epoll/METADATA
+++ b/crates/epoll/METADATA
@@ -1,14 +1,6 @@
 name: "epoll"
 description: "Safe epoll interface."
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "https://crates.io/crates/epoll"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/epoll/epoll-4.3.3.crate"
-  }
   version: "4.3.3"
   license_type: RECIPROCAL
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 8
     day: 23
   }
+  homepage: "https://crates.io/crates/epoll"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/epoll/epoll-4.3.3.crate"
+    version: "4.3.3"
+  }
 }
diff --git a/crates/errno/METADATA b/crates/errno/METADATA
index fc1a1c6..379297a 100644
--- a/crates/errno/METADATA
+++ b/crates/errno/METADATA
@@ -1,21 +1,17 @@
 name: "errno"
 description: "Cross-platform interface to the `errno` variable."
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "errno"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/errno/errno-0.3.8.crate"
-    primary_source: true
-  }
   version: "0.3.8"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
     month: 3
     day: 20
   }
+  homepage: "https://crates.io/crates/errno"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/errno/errno-0.3.8.crate"
+    version: "0.3.8"
+  }
 }
diff --git a/crates/fallible-iterator/METADATA b/crates/fallible-iterator/METADATA
index e822ea5..84794cd 100644
--- a/crates/fallible-iterator/METADATA
+++ b/crates/fallible-iterator/METADATA
@@ -1,14 +1,6 @@
 name: "fallible-iterator"
 description: "Fallible iterator traits"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/fallible-iterator"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/fallible-iterator/fallible-iterator-0.2.0.crate"
-  }
   version: "0.2.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 6
     day: 11
   }
+  homepage: "https://crates.io/crates/fallible-iterator"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/fallible-iterator/fallible-iterator-0.2.0.crate"
+    version: "0.2.0"
+  }
 }
diff --git a/crates/fallible-streaming-iterator/METADATA b/crates/fallible-streaming-iterator/METADATA
index bd36897..7868f66 100644
--- a/crates/fallible-streaming-iterator/METADATA
+++ b/crates/fallible-streaming-iterator/METADATA
@@ -1,14 +1,6 @@
 name: "fallible-streaming-iterator"
 description: "Fallible streaming iteration"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/fallible-streaming-iterator"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/fallible-streaming-iterator/fallible-streaming-iterator-0.1.9.crate"
-  }
   version: "0.1.9"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 6
     day: 11
   }
+  homepage: "https://crates.io/crates/fallible-streaming-iterator"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/fallible-streaming-iterator/fallible-streaming-iterator-0.1.9.crate"
+    version: "0.1.9"
+  }
 }
diff --git a/crates/fastrand/METADATA b/crates/fastrand/METADATA
index 5ec32de..65a230a 100644
--- a/crates/fastrand/METADATA
+++ b/crates/fastrand/METADATA
@@ -1,20 +1,17 @@
 name: "fastrand"
 description: "A simple and fast random number generator"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/fastrand"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/fastrand/fastrand-1.9.0.crate"
-  }
   version: "1.9.0"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
     month: 2
     day: 17
   }
+  homepage: "https://crates.io/crates/fastrand"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/fastrand/fastrand-1.9.0.crate"
+    version: "1.9.0"
+  }
 }
diff --git a/crates/flagset/METADATA b/crates/flagset/METADATA
index 69a9781..cd1c6d0 100644
--- a/crates/flagset/METADATA
+++ b/crates/flagset/METADATA
@@ -1,14 +1,6 @@
 name: "flagset"
 description: "Data types and a macro for generating enumeration-based bit flags"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/flagset"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/flagset/flagset-0.4.3.crate"
-  }
   version: "0.4.3"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 8
     day: 19
   }
+  homepage: "https://crates.io/crates/flagset"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/flagset/flagset-0.4.3.crate"
+    version: "0.4.3"
+  }
 }
diff --git a/crates/fragile/METADATA b/crates/fragile/METADATA
index 230b483..98eaba9 100644
--- a/crates/fragile/METADATA
+++ b/crates/fragile/METADATA
@@ -1,14 +1,6 @@
 name: "fragile"
 description: "Provides wrapper types for sending non-send values to other threads."
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "https://crates.io/crates/fragile"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/fragile/fragile-2.0.0.crate"
-  }
   version: "2.0.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 11
     day: 6
   }
+  homepage: "https://crates.io/crates/fragile"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/fragile/fragile-2.0.0.crate"
+    version: "2.0.0"
+  }
 }
diff --git a/crates/fs-err/METADATA b/crates/fs-err/METADATA
index d7cfd93..e238e59 100644
--- a/crates/fs-err/METADATA
+++ b/crates/fs-err/METADATA
@@ -1,21 +1,17 @@
 name: "fs-err"
 description: "A drop-in replacement for std::fs with more helpful error messages."
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "fs-err"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/fs-err/fs-err-2.11.0.crate"
-    primary_source: true
-  }
   version: "2.11.0"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
     month: 3
     day: 21
   }
+  homepage: "https://crates.io/crates/fs-err"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/fs-err/fs-err-2.11.0.crate"
+    version: "2.11.0"
+  }
 }
diff --git a/crates/futures-core/METADATA b/crates/futures-core/METADATA
index cda5f1f..9938499 100644
--- a/crates/futures-core/METADATA
+++ b/crates/futures-core/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/futures-core
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "futures-core"
 description: "The core traits and types in for the `futures` library."
 third_party {
+  version: "0.3.30"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/futures-executor/METADATA b/crates/futures-executor/METADATA
index 8759d1a..d2b7608 100644
--- a/crates/futures-executor/METADATA
+++ b/crates/futures-executor/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/futures-executor
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "futures-executor"
 description: "Executors for asynchronous tasks based on the futures-rs library."
 third_party {
+  version: "0.3.30"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/futures-io/METADATA b/crates/futures-io/METADATA
index a75c992..115e78a 100644
--- a/crates/futures-io/METADATA
+++ b/crates/futures-io/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/futures-io
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "futures-io"
 description: "The `AsyncRead`, `AsyncWrite`, `AsyncSeek`, and `AsyncBufRead` traits for the futures-rs library."
 third_party {
+  version: "0.3.30"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/futures-macro/METADATA b/crates/futures-macro/METADATA
index 9f26b93..fc917b8 100644
--- a/crates/futures-macro/METADATA
+++ b/crates/futures-macro/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/futures-macro
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "futures-macro"
 description: "The futures-rs procedural macro implementations."
 third_party {
+  version: "0.3.30"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/futures-sink/METADATA b/crates/futures-sink/METADATA
index a3ebb7f..34cce96 100644
--- a/crates/futures-sink/METADATA
+++ b/crates/futures-sink/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/futures-sink
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "futures-sink"
 description: "The asynchronous `Sink` trait for the futures-rs library."
 third_party {
+  version: "0.3.30"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/futures-task/METADATA b/crates/futures-task/METADATA
index 129b19a..308fd7e 100644
--- a/crates/futures-task/METADATA
+++ b/crates/futures-task/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/futures-task
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "futures-task"
 description: "Tools for working with tasks."
 third_party {
+  version: "0.3.30"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/futures-test/METADATA b/crates/futures-test/METADATA
index b20fd3a..b7b3316 100644
--- a/crates/futures-test/METADATA
+++ b/crates/futures-test/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/futures-test
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "futures-test"
 description: "()"
 third_party {
+  version: "0.3.30"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/futures-util/METADATA b/crates/futures-util/METADATA
index 8ba8c32..86814a6 100644
--- a/crates/futures-util/METADATA
+++ b/crates/futures-util/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/futures-util
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "futures-util"
 description: "Common utilities and extension traits for the futures-rs library."
 third_party {
+  version: "0.3.30"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/futures/METADATA b/crates/futures/METADATA
index 06699ef..b912619 100644
--- a/crates/futures/METADATA
+++ b/crates/futures/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/futures
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "futures"
 description: "An implementation of futures and streams featuring zero allocations, composability, and iterator-like interfaces."
 third_party {
+  version: "0.3.30"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/gbm/METADATA b/crates/gbm/METADATA
index 53181fb..c12dd9f 100644
--- a/crates/gbm/METADATA
+++ b/crates/gbm/METADATA
@@ -1,15 +1,6 @@
 name: "gbm"
 description: "libgbm bindings for rust"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "gbm"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/gbm/gbm-0.14.2.crate"
-    primary_source: true
-  }
   version: "0.14.2"
   license_type: NOTICE
   last_upgrade_date {
@@ -17,4 +8,10 @@
     month: 3
     day: 13
   }
+  homepage: "https://crates.io/crates/gbm"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/gbm/gbm-0.14.2.crate"
+    version: "0.14.2"
+  }
 }
diff --git a/crates/getrandom/METADATA b/crates/getrandom/METADATA
index 1ecb3fe..17f6017 100644
--- a/crates/getrandom/METADATA
+++ b/crates/getrandom/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/getrandom
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "getrandom"
 description: "A small cross-platform library for retrieving random data from system source"
 third_party {
+  version: "0.2.12"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/glob/METADATA b/crates/glob/METADATA
index 976ed60..b4815a1 100644
--- a/crates/glob/METADATA
+++ b/crates/glob/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/glob
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "glob"
 description: "Support for matching file paths against Unix shell style patterns."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/glob"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/glob/glob-0.3.1.crate"
-  }
   version: "0.3.1"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 2
     day: 2
   }
+  homepage: "https://crates.io/crates/glob"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/glob/glob-0.3.1.crate"
+    version: "0.3.1"
+  }
 }
diff --git a/crates/googletest/METADATA b/crates/googletest/METADATA
index 86fc93a..8b0b3e2 100644
--- a/crates/googletest/METADATA
+++ b/crates/googletest/METADATA
@@ -1,24 +1,17 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/googletest
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "googletest"
 description: "A rich assertion and matcher library inspired by GoogleTest for C++"
 third_party {
+  version: "0.11.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
     month: 2
     day: 2
   }
-  identifier {
-    type: "crates.io"
-    value: "https://static.crates.io/crates/googletest/googletest-0.11.0.crate"
-    version: "0.10.0"
-  }
+  homepage: "https://crates.io/crates/googletest"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/googletest/googletest-0.10.0.crate"
+    value: "https://static.crates.io/crates/googletest/googletest-0.11.0.crate"
     version: "0.11.0"
   }
 }
diff --git a/crates/googletest_macro/METADATA b/crates/googletest_macro/METADATA
index a025fb9..61374e5 100644
--- a/crates/googletest_macro/METADATA
+++ b/crates/googletest_macro/METADATA
@@ -1,24 +1,17 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/googletest_macro
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "googletest_macro"
 description: "Procedural macros for GoogleTest Rust"
 third_party {
+  version: "0.11.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
     month: 2
     day: 2
   }
-  identifier {
-    type: "crates.io"
-    value: "https://static.crates.io/crates/googletest_macro/googletest_macro-0.11.0.crate"
-    version: "0.10.0"
-  }
+  homepage: "https://crates.io/crates/googletest_macro"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/googletest_macro/googletest_macro-0.10.0.crate"
+    value: "https://static.crates.io/crates/googletest_macro/googletest_macro-0.11.0.crate"
     version: "0.11.0"
   }
 }
diff --git a/crates/h2/METADATA b/crates/h2/METADATA
index 0179086..31010de 100644
--- a/crates/h2/METADATA
+++ b/crates/h2/METADATA
@@ -1,15 +1,6 @@
 name: "h2"
 description: "An HTTP/2 client and server"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "h2"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/h2/h2-0.4.4.crate"
-    primary_source: true
-  }
   version: "0.4.4"
   license_type: NOTICE
   last_upgrade_date {
@@ -17,4 +8,10 @@
     month: 6
     day: 3
   }
+  homepage: "https://crates.io/crates/h2"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/h2/h2-0.4.4.crate"
+    version: "0.4.4"
+  }
 }
diff --git a/crates/hashbrown/METADATA b/crates/hashbrown/METADATA
index ac50a7a..661f2a7 100644
--- a/crates/hashbrown/METADATA
+++ b/crates/hashbrown/METADATA
@@ -1,14 +1,6 @@
 name: "hashbrown"
 description: "A Rust port of Google\'s SwissTable hash map"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/hashbrown"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/hashbrown/hashbrown-0.12.3.crate"
-  }
   version: "0.12.3"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 7
     day: 25
   }
+  homepage: "https://crates.io/crates/hashbrown"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/hashbrown/hashbrown-0.12.3.crate"
+    version: "0.12.3"
+  }
 }
diff --git a/crates/hashlink/METADATA b/crates/hashlink/METADATA
index 30b5508..3aefecf 100644
--- a/crates/hashlink/METADATA
+++ b/crates/hashlink/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/hashlink
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "hashlink"
 description: "HashMap-like containers that hold their key-value pairs in a user controllable order"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/hashlink"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/hashlink/hashlink-0.8.1.crate"
-  }
   version: "0.8.1"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 12
     day: 12
   }
+  homepage: "https://crates.io/crates/hashlink"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/hashlink/hashlink-0.8.1.crate"
+    version: "0.8.1"
+  }
 }
diff --git a/crates/http-body/METADATA b/crates/http-body/METADATA
index af770ae..9e4fea7 100644
--- a/crates/http-body/METADATA
+++ b/crates/http-body/METADATA
@@ -1,15 +1,6 @@
 name: "http-body"
 description: "Trait representing an asynchronous, streaming, HTTP request or response body."
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "http-body"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/http-body/http-body-0.4.6.crate"
-    primary_source: true
-  }
   version: "0.4.6"
   license_type: NOTICE
   last_upgrade_date {
@@ -17,4 +8,10 @@
     month: 5
     day: 27
   }
+  homepage: "https://crates.io/crates/http-body"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/http-body/http-body-0.4.6.crate"
+    version: "0.4.6"
+  }
 }
diff --git a/crates/httparse/METADATA b/crates/httparse/METADATA
index 703e672..a754450 100644
--- a/crates/httparse/METADATA
+++ b/crates/httparse/METADATA
@@ -1,20 +1,17 @@
 name: "httparse"
 description: "A tiny, safe, speedy, zero-copy HTTP/1.x parser."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/httparse"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/httparse/httparse-1.8.0.crate"
-  }
   version: "1.8.0"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
     month: 6
     day: 7
   }
+  homepage: "https://crates.io/crates/httparse"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/httparse/httparse-1.8.0.crate"
+    version: "1.8.0"
+  }
 }
diff --git a/crates/httpdate/METADATA b/crates/httpdate/METADATA
index 8058040..8aa71bf 100644
--- a/crates/httpdate/METADATA
+++ b/crates/httpdate/METADATA
@@ -1,21 +1,17 @@
 name: "httpdate"
 description: "HTTP date parsing and formatting"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "httpdate"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/httpdate/httpdate-1.0.3.crate"
-    primary_source: true
-  }
   version: "1.0.3"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
     month: 5
     day: 27
   }
+  homepage: "https://crates.io/crates/httpdate"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/httpdate/httpdate-1.0.3.crate"
+    version: "1.0.3"
+  }
 }
diff --git a/crates/idna/METADATA b/crates/idna/METADATA
index b275e0e..1ae88fe 100644
--- a/crates/idna/METADATA
+++ b/crates/idna/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/idna
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "idna"
 description: "IDNA (Internationalizing Domain Names in Applications) and Punycode."
 third_party {
+  version: "0.5.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/instant/METADATA b/crates/instant/METADATA
index 8a1e612..5fb211b 100644
--- a/crates/instant/METADATA
+++ b/crates/instant/METADATA
@@ -1,14 +1,6 @@
 name: "instant"
 description: "A partial replacement for std::time::Instant that works on WASM too."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/instant"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/instant/instant-0.1.12.crate"
-  }
   version: "0.1.12"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 3
     day: 1
   }
+  homepage: "https://crates.io/crates/instant"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/instant/instant-0.1.12.crate"
+    version: "0.1.12"
+  }
 }
diff --git a/crates/intrusive-collections/METADATA b/crates/intrusive-collections/METADATA
index 1788616..8265c77 100644
--- a/crates/intrusive-collections/METADATA
+++ b/crates/intrusive-collections/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/intrusive-collections
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "intrusive-collections"
 description: "Intrusive collections for Rust (linked list and red-black tree)"
 third_party {
+  version: "0.9.6"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/itertools/METADATA b/crates/itertools/METADATA
index 074c4e6..6bb1771 100644
--- a/crates/itertools/METADATA
+++ b/crates/itertools/METADATA
@@ -8,6 +8,7 @@
     month: 9
     day: 4
   }
+  homepage: "https://crates.io/crates/itertools"
   identifier {
     type: "Archive"
     value: "https://static.crates.io/crates/itertools/itertools-0.13.0.crate"
diff --git a/crates/jni-sys/METADATA b/crates/jni-sys/METADATA
index 1cd4d98..4544884 100644
--- a/crates/jni-sys/METADATA
+++ b/crates/jni-sys/METADATA
@@ -1,20 +1,17 @@
 name: "jni-sys"
 description: "Rust definitions corresponding to jni.h"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/jni-sys"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/jni-sys/jni-sys-0.3.0.crate"
-  }
   version: "0.3.0"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2021
     month: 7
     day: 30
   }
+  homepage: "https://crates.io/crates/jni-sys"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/jni-sys/jni-sys-0.3.0.crate"
+    version: "0.3.0"
+  }
 }
diff --git a/crates/lazy_static/METADATA b/crates/lazy_static/METADATA
index c648752..14dc67e 100644
--- a/crates/lazy_static/METADATA
+++ b/crates/lazy_static/METADATA
@@ -1,14 +1,6 @@
 name: "lazy_static"
 description: "A macro for declaring lazily evaluated statics in Rust."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/lazy_static"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/lazy_static/lazy_static-1.4.0.crate"
-  }
   version: "1.4.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 3
     day: 31
   }
+  homepage: "https://crates.io/crates/lazy_static"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/lazy_static/lazy_static-1.4.0.crate"
+    version: "1.4.0"
+  }
 }
diff --git a/crates/libc/METADATA b/crates/libc/METADATA
index ca5490c..1fd5047 100644
--- a/crates/libc/METADATA
+++ b/crates/libc/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/libc
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "libc"
 description: "()"
 third_party {
+  version: "0.2.153"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/libloading/METADATA b/crates/libloading/METADATA
index f69259e..433eb64 100644
--- a/crates/libloading/METADATA
+++ b/crates/libloading/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/libloading
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "libloading"
 description: "Bindings around the platform\'s dynamic library loading primitives with greatly improved memory safety."
 third_party {
+  version: "0.8.3"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/linked-hash-map/METADATA b/crates/linked-hash-map/METADATA
index 126b8e6..ac51721 100644
--- a/crates/linked-hash-map/METADATA
+++ b/crates/linked-hash-map/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/linked-hash-map
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "linked-hash-map"
 description: "A HashMap wrapper that holds key-value pairs in insertion order"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/linked-hash-map"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/linked-hash-map/linked-hash-map-0.5.6.crate"
-  }
   version: "0.5.6"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 12
     day: 12
   }
+  homepage: "https://crates.io/crates/linked-hash-map"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/linked-hash-map/linked-hash-map-0.5.6.crate"
+    version: "0.5.6"
+  }
 }
diff --git a/crates/linkme/METADATA b/crates/linkme/METADATA
index 1371a67..b10cbcc 100644
--- a/crates/linkme/METADATA
+++ b/crates/linkme/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/linkme
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "linkme"
 description: "Safe cross-platform linker shenanigans"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/linkme"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/linkme/linkme-0.3.10.crate"
-  }
   version: "0.3.10"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 6
     day: 1
   }
+  homepage: "https://crates.io/crates/linkme"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/linkme/linkme-0.3.10.crate"
+    version: "0.3.10"
+  }
 }
diff --git a/crates/litrs/METADATA b/crates/litrs/METADATA
index e70e7d5..fb25f66 100644
--- a/crates/litrs/METADATA
+++ b/crates/litrs/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/litrs
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "litrs"
 description: "Parse and inspect Rust literals (i.e. tokens in the Rust programming language representing fixed values). Particularly useful for proc macros, but can also be used outside of a proc-macro context."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/litrs"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/litrs/litrs-0.3.0.crate"
-  }
   version: "0.3.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 2
     day: 3
   }
+  homepage: "https://crates.io/crates/litrs"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/litrs/litrs-0.3.0.crate"
+    version: "0.3.0"
+  }
 }
diff --git a/crates/lock_api/METADATA b/crates/lock_api/METADATA
index 832bc1e..0546a29 100644
--- a/crates/lock_api/METADATA
+++ b/crates/lock_api/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/lock_api
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "lock_api"
 description: "Wrappers to create fully-featured Mutex and RwLock types. Compatible with no_std."
 third_party {
+  version: "0.4.11"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/log/METADATA b/crates/log/METADATA
index 1078fee..25d8912 100644
--- a/crates/log/METADATA
+++ b/crates/log/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/log
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "log"
 description: "A lightweight logging facade for Rust"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/log"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/log/log-0.4.17.crate"
-  }
   version: "0.4.17"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 12
     day: 12
   }
+  homepage: "https://crates.io/crates/log"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/log/log-0.4.17.crate"
+    version: "0.4.17"
+  }
 }
diff --git a/crates/lru-cache/METADATA b/crates/lru-cache/METADATA
index e2da34b..650e6ce 100644
--- a/crates/lru-cache/METADATA
+++ b/crates/lru-cache/METADATA
@@ -1,14 +1,6 @@
 name: "lru-cache"
 description: "A cache that holds a limited number of key-value pairs"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/lru-cache"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/lru-cache/lru-cache-0.1.2.crate"
-  }
   version: "0.1.2"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 6
     day: 11
   }
+  homepage: "https://crates.io/crates/lru-cache"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/lru-cache/lru-cache-0.1.2.crate"
+    version: "0.1.2"
+  }
 }
diff --git a/crates/lz4_flex/METADATA b/crates/lz4_flex/METADATA
index 858b3d6..79e5f59 100644
--- a/crates/lz4_flex/METADATA
+++ b/crates/lz4_flex/METADATA
@@ -1,14 +1,6 @@
 name: "lz4_flex"
 description: "Fastest LZ4 implementation in Rust, no unsafe by default."
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "https://crates.io/crates/lz4_flex"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/lz4_flex/lz4_flex-0.11.2.crate"
-  }
   version: "0.11.2"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 1
     day: 17
   }
+  homepage: "https://crates.io/crates/lz4_flex"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/lz4_flex/lz4_flex-0.11.2.crate"
+    version: "0.11.2"
+  }
 }
diff --git a/crates/macaddr/METADATA b/crates/macaddr/METADATA
index 5e8da4e..bc938c6 100644
--- a/crates/macaddr/METADATA
+++ b/crates/macaddr/METADATA
@@ -1,20 +1,17 @@
 name: "macaddr"
 description: "MAC address types"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/macaddr"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/macaddr/macaddr-1.0.1.crate"
-  }
   version: "1.0.1"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2021
     month: 3
     day: 17
   }
+  homepage: "https://crates.io/crates/macaddr"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/macaddr/macaddr-1.0.1.crate"
+    version: "1.0.1"
+  }
 }
diff --git a/crates/managed/METADATA b/crates/managed/METADATA
index 5fafde8..7f7f502 100644
--- a/crates/managed/METADATA
+++ b/crates/managed/METADATA
@@ -1,14 +1,6 @@
 name: "managed"
 description: "An interface for logically owning objects, whether or not heap allocation is available."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/managed"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/managed/managed-0.8.0.crate"
-  }
   version: "0.8.0"
   license_type: UNENCUMBERED
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 2
     day: 28
   }
+  homepage: "https://crates.io/crates/managed"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/managed/managed-0.8.0.crate"
+    version: "0.8.0"
+  }
 }
diff --git a/crates/maybe-async/METADATA b/crates/maybe-async/METADATA
index 9ca0a6b..33d751a 100644
--- a/crates/maybe-async/METADATA
+++ b/crates/maybe-async/METADATA
@@ -1,15 +1,6 @@
 name: "maybe-async"
 description: "A procedure macro to unify SYNC and ASYNC implementation"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "maybe-async"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/maybe-async/maybe-async-0.2.10.crate"
-    primary_source: true
-  }
   version: "0.2.10"
   license_type: NOTICE
   last_upgrade_date {
@@ -17,4 +8,10 @@
     month: 2
     day: 22
   }
+  homepage: "https://crates.io/crates/maybe-async"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/maybe-async/maybe-async-0.2.10.crate"
+    version: "0.2.10"
+  }
 }
diff --git a/crates/memchr/METADATA b/crates/memchr/METADATA
index f399b7e..11d3b0f 100644
--- a/crates/memchr/METADATA
+++ b/crates/memchr/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/memchr
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "memchr"
 description: "Safe interface to memchr."
 third_party {
+  version: "2.7.1"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/memoffset/METADATA b/crates/memoffset/METADATA
index 1bf6b94..6b3f9f6 100644
--- a/crates/memoffset/METADATA
+++ b/crates/memoffset/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/memoffset
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "memoffset"
 description: "offset_of functionality for Rust structs."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/memoffset"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/memoffset/memoffset-0.9.0.crate"
-  }
   version: "0.9.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 9
     day: 5
   }
+  homepage: "https://crates.io/crates/memoffset"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/memoffset/memoffset-0.9.0.crate"
+    version: "0.9.0"
+  }
 }
diff --git a/crates/miette/METADATA b/crates/miette/METADATA
index 72c5386..d75074a 100644
--- a/crates/miette/METADATA
+++ b/crates/miette/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/miette
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "miette"
 description: "Fancy diagnostic reporting library and protocol for us mere mortals who aren\'t compiler hackers."
 third_party {
+  version: "5.10.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/mime/METADATA b/crates/mime/METADATA
index 4f1674f..45ad46a 100644
--- a/crates/mime/METADATA
+++ b/crates/mime/METADATA
@@ -1,21 +1,17 @@
 name: "mime"
 description: "Strongly Typed Mimes"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "mime"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/mime/mime-0.3.17.crate"
-    primary_source: true
-  }
   version: "0.3.17"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
     month: 5
     day: 27
   }
+  homepage: "https://crates.io/crates/mime"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/mime/mime-0.3.17.crate"
+    version: "0.3.17"
+  }
 }
diff --git a/crates/mio/METADATA b/crates/mio/METADATA
index 11a32f7..f8d0c4d 100644
--- a/crates/mio/METADATA
+++ b/crates/mio/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/mio
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "mio"
 description: "Lightweight non-blocking I/O."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/mio"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/mio/mio-0.8.6.crate"
-  }
   version: "0.8.6"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 2
     day: 16
   }
+  homepage: "https://crates.io/crates/mio"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/mio/mio-0.8.6.crate"
+    version: "0.8.6"
+  }
 }
diff --git a/crates/mls-rs-codec-derive/METADATA b/crates/mls-rs-codec-derive/METADATA
index a20aed3..2862c45 100644
--- a/crates/mls-rs-codec-derive/METADATA
+++ b/crates/mls-rs-codec-derive/METADATA
@@ -1,24 +1,17 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/mls-rs-codec-derive
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "mls-rs-codec-derive"
 description: "Derive macro crate for mls-rs-codec"
 third_party {
+  version: "0.1.1"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
     month: 4
     day: 26
   }
-  identifier {
-    type: "crates.io"
-    value: "https://static.crates.io/crates/mls-rs-codec-derive/mls-rs-codec-derive-0.1.1.crate"
-    version: "0.1.0"
-  }
+  homepage: "https://crates.io/crates/mls-rs-codec-derive"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/mls-rs-codec-derive/mls-rs-codec-derive-0.1.0.crate"
+    value: "https://static.crates.io/crates/mls-rs-codec-derive/mls-rs-codec-derive-0.1.1.crate"
     version: "0.1.1"
   }
 }
diff --git a/crates/mls-rs-codec/METADATA b/crates/mls-rs-codec/METADATA
index 8ee2324..3406d3d 100644
--- a/crates/mls-rs-codec/METADATA
+++ b/crates/mls-rs-codec/METADATA
@@ -1,25 +1,17 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/mls-rs-codec
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "mls-rs-codec"
 description: "TLS codec and MLS specific encoding used by mls-rs"
 third_party {
+  version: "0.5.3"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
     month: 4
     day: 26
   }
-  identifier {
-    type: "crates.io"
-    value: "https://static.crates.io/crates/mls-rs-codec/mls-rs-codec-0.5.3.crate"
-    version: "0.5.1"
-  }
+  homepage: "https://crates.io/crates/mls-rs-codec"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/mls-rs-codec/mls-rs-codec-0.5.1.crate"
+    value: "https://static.crates.io/crates/mls-rs-codec/mls-rs-codec-0.5.3.crate"
     version: "0.5.3"
-    primary_source: true
   }
 }
diff --git a/crates/mls-rs-core/METADATA b/crates/mls-rs-core/METADATA
index 1b60a94..6f029dd 100644
--- a/crates/mls-rs-core/METADATA
+++ b/crates/mls-rs-core/METADATA
@@ -1,25 +1,17 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/mls-rs-core
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "mls-rs-core"
 description: "Core components and traits for mls-rs"
 third_party {
+  version: "0.18.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
     month: 4
     day: 26
   }
-  identifier {
-    type: "crates.io"
-    value: "https://static.crates.io/crates/mls-rs-core/mls-rs-core-0.18.0.crate"
-    version: "0.17.1"
-  }
+  homepage: "https://crates.io/crates/mls-rs-core"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/mls-rs-core/mls-rs-core-0.17.1.crate"
+    value: "https://static.crates.io/crates/mls-rs-core/mls-rs-core-0.18.0.crate"
     version: "0.18.0"
-    primary_source: true
   }
 }
diff --git a/crates/mockall/METADATA b/crates/mockall/METADATA
index c75c11d..e823863 100644
--- a/crates/mockall/METADATA
+++ b/crates/mockall/METADATA
@@ -1,24 +1,17 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/mockall
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "mockall"
 description: "()"
 third_party {
+  version: "0.12.1"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
     month: 4
     day: 25
   }
-  identifier {
-    type: "crates.io"
-    value: "https://static.crates.io/crates/mockall/mockall-0.12.1.crate"
-    version: "0.11.4"
-  }
+  homepage: "https://crates.io/crates/mockall"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/mockall/mockall-0.11.4.crate"
+    value: "https://static.crates.io/crates/mockall/mockall-0.12.1.crate"
     version: "0.12.1"
   }
 }
diff --git a/crates/named-lock/METADATA b/crates/named-lock/METADATA
index 4083bb6..078172c 100644
--- a/crates/named-lock/METADATA
+++ b/crates/named-lock/METADATA
@@ -1,14 +1,6 @@
 name: "named-lock"
 description: "Cross-platform implementation of cross-process named locks"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/named-lock"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/named-lock/named-lock-0.3.0.crate"
-  }
   version: "0.3.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 4
     day: 19
   }
+  homepage: "https://crates.io/crates/named-lock"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/named-lock/named-lock-0.3.0.crate"
+    version: "0.3.0"
+  }
 }
diff --git a/crates/no-panic/METADATA b/crates/no-panic/METADATA
index 62031ac..0d4e302 100644
--- a/crates/no-panic/METADATA
+++ b/crates/no-panic/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/no-panic
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "no-panic"
 description: "Attribute macro to require that the compiler prove a function can\'t ever panic."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/no-panic"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/no-panic/no-panic-0.1.26.crate"
-  }
   version: "0.1.26"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 11
     day: 14
   }
+  homepage: "https://crates.io/crates/no-panic"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/no-panic/no-panic-0.1.26.crate"
+    version: "0.1.26"
+  }
 }
diff --git a/crates/nom/METADATA b/crates/nom/METADATA
index e948955..d8b9c32 100644
--- a/crates/nom/METADATA
+++ b/crates/nom/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/nom
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "nom"
 description: "A byte-oriented, zero-copy, parser combinators library"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/nom"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/nom/nom-7.1.3.crate"
-  }
   version: "7.1.3"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 2
     day: 3
   }
+  homepage: "https://crates.io/crates/nom"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/nom/nom-7.1.3.crate"
+    version: "7.1.3"
+  }
 }
diff --git a/crates/num-integer/METADATA b/crates/num-integer/METADATA
index cf4e458..46b3336 100644
--- a/crates/num-integer/METADATA
+++ b/crates/num-integer/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/num-integer
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "num-integer"
 description: "Integer traits and functions"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/num-integer"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/num-integer/num-integer-0.1.45.crate"
-  }
   version: "0.1.45"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 12
     day: 13
   }
+  homepage: "https://crates.io/crates/num-integer"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/num-integer/num-integer-0.1.45.crate"
+    version: "0.1.45"
+  }
 }
diff --git a/crates/num-traits/METADATA b/crates/num-traits/METADATA
index 735d36f..7cc0cf5 100644
--- a/crates/num-traits/METADATA
+++ b/crates/num-traits/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/num-traits
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "num-traits"
 description: "Numeric traits for generic mathematics"
 third_party {
+  version: "0.2.19"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/num_cpus/METADATA b/crates/num_cpus/METADATA
index 99d86cb..ee50ea7 100644
--- a/crates/num_cpus/METADATA
+++ b/crates/num_cpus/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/num_cpus
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "num_cpus"
 description: "Get the number of CPUs on a machine."
 third_party {
+  version: "1.16.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/oorandom/METADATA b/crates/oorandom/METADATA
index d237f95..3bb2aa0 100644
--- a/crates/oorandom/METADATA
+++ b/crates/oorandom/METADATA
@@ -1,14 +1,6 @@
 name: "oorandom"
 description: "A tiny, robust PRNG implementation."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/oorandom"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/oorandom/oorandom-11.1.3.crate"
-  }
   version: "11.1.3"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 12
     day: 21
   }
+  homepage: "https://crates.io/crates/oorandom"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/oorandom/oorandom-11.1.3.crate"
+    version: "11.1.3"
+  }
 }
diff --git a/crates/os_str_bytes/METADATA b/crates/os_str_bytes/METADATA
index b1fd452..11ee79c 100644
--- a/crates/os_str_bytes/METADATA
+++ b/crates/os_str_bytes/METADATA
@@ -1,20 +1,17 @@
 name: "os_str_bytes"
 description: "()"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/os_str_bytes"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/os_str_bytes/os_str_bytes-6.4.1.crate"
-  }
   version: "6.4.1"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2022
     month: 12
     day: 13
   }
+  homepage: "https://crates.io/crates/os_str_bytes"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/os_str_bytes/os_str_bytes-6.4.1.crate"
+    version: "6.4.1"
+  }
 }
diff --git a/crates/p9/METADATA b/crates/p9/METADATA
index 228cef0..f9cae35 100644
--- a/crates/p9/METADATA
+++ b/crates/p9/METADATA
@@ -1,14 +1,6 @@
 name: "p9"
 description: "Server implementation of the 9p file system protocol"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "https://crates.io/crates/p9"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/p9/p9-0.2.3.crate"
-  }
   version: "0.2.3"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 1
     day: 17
   }
+  homepage: "https://crates.io/crates/p9"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/p9/p9-0.2.3.crate"
+    version: "0.2.3"
+  }
 }
diff --git a/crates/p9_wire_format_derive/METADATA b/crates/p9_wire_format_derive/METADATA
index 00ab429..4033072 100644
--- a/crates/p9_wire_format_derive/METADATA
+++ b/crates/p9_wire_format_derive/METADATA
@@ -1,14 +1,6 @@
 name: "p9_wire_format_derive"
 description: "Supporting proc-macro for the `p9` crate."
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "https://crates.io/crates/p9_wire_format_derive"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/p9_wire_format_derive/p9_wire_format_derive-0.2.3.crate"
-  }
   version: "0.2.3"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 1
     day: 17
   }
+  homepage: "https://crates.io/crates/p9_wire_format_derive"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/p9_wire_format_derive/p9_wire_format_derive-0.2.3.crate"
+    version: "0.2.3"
+  }
 }
diff --git a/crates/parking_lot/METADATA b/crates/parking_lot/METADATA
index 0cb5945..839eac7 100644
--- a/crates/parking_lot/METADATA
+++ b/crates/parking_lot/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/parking_lot
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "parking_lot"
 description: "More compact and efficient implementations of the standard synchronization primitives."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/parking_lot"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/parking_lot/parking_lot-0.12.1.crate"
-  }
   version: "0.12.1"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 12
     day: 13
   }
+  homepage: "https://crates.io/crates/parking_lot"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/parking_lot/parking_lot-0.12.1.crate"
+    version: "0.12.1"
+  }
 }
diff --git a/crates/parking_lot_core/METADATA b/crates/parking_lot_core/METADATA
index ae5b535..cb24db5 100644
--- a/crates/parking_lot_core/METADATA
+++ b/crates/parking_lot_core/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/parking_lot_core
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "parking_lot_core"
 description: "An advanced API for creating custom synchronization primitives."
 third_party {
+  version: "0.9.9"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/pathdiff/METADATA b/crates/pathdiff/METADATA
index aab0f6a..818d733 100644
--- a/crates/pathdiff/METADATA
+++ b/crates/pathdiff/METADATA
@@ -1,20 +1,17 @@
 name: "pathdiff"
 description: "Library for diffing paths to obtain relative paths"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/pathdiff"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/pathdiff/pathdiff-0.2.1.crate"
-  }
   version: "0.2.1"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
     month: 6
     day: 12
   }
+  homepage: "https://crates.io/crates/pathdiff"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/pathdiff/pathdiff-0.2.1.crate"
+    version: "0.2.1"
+  }
 }
diff --git a/crates/pdl-runtime/METADATA b/crates/pdl-runtime/METADATA
index 33cc4e2..207ab19 100644
--- a/crates/pdl-runtime/METADATA
+++ b/crates/pdl-runtime/METADATA
@@ -1,24 +1,17 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/pdl-runtime
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "pdl-runtime"
 description: "PDL\'s runtime library"
 third_party {
+  version: "0.3.1"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
     month: 7
     day: 15
   }
-  identifier {
-    type: "crates.io"
-    value: "https://static.crates.io/crates/pdl-runtime/pdl-runtime-0.3.1.crate"
-    version: "0.3.1"
-  }
+  homepage: "https://crates.io/crates/pdl-runtime"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/pdl-runtime/pdl-runtime-0.2.2.crate"
-    version: "0.2.3"
+    value: "https://static.crates.io/crates/pdl-runtime/pdl-runtime-0.3.1.crate"
+    version: "0.3.1"
   }
 }
diff --git a/crates/pest/METADATA b/crates/pest/METADATA
index 6493748..54dd437 100644
--- a/crates/pest/METADATA
+++ b/crates/pest/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/pest
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "pest"
 description: "The Elegant Parser"
 third_party {
+  version: "2.7.6"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/pest_derive/METADATA b/crates/pest_derive/METADATA
index 54c0aed..78f7c1a 100644
--- a/crates/pest_derive/METADATA
+++ b/crates/pest_derive/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/pest_derive
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "pest_derive"
 description: "pest\'s derive macro"
 third_party {
+  version: "2.7.6"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/pest_generator/METADATA b/crates/pest_generator/METADATA
index d58c07d..331a5f5 100644
--- a/crates/pest_generator/METADATA
+++ b/crates/pest_generator/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/pest_generator
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "pest_generator"
 description: "pest code generator"
 third_party {
+  version: "2.7.6"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/pest_meta/METADATA b/crates/pest_meta/METADATA
index 2df455b..b03b94f 100644
--- a/crates/pest_meta/METADATA
+++ b/crates/pest_meta/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/pest_meta
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "pest_meta"
 description: "pest meta language parser and validator"
 third_party {
+  version: "2.7.6"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/pin-project-internal/METADATA b/crates/pin-project-internal/METADATA
index cb08287..9e9bb4f 100644
--- a/crates/pin-project-internal/METADATA
+++ b/crates/pin-project-internal/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/pin-project-internal
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "pin-project-internal"
 description: "Implementation detail of the `pin-project` crate."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/pin-project-internal"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/pin-project-internal/pin-project-internal-1.1.3.crate"
-  }
   version: "1.1.3"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 11
     day: 14
   }
+  homepage: "https://crates.io/crates/pin-project-internal"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/pin-project-internal/pin-project-internal-1.1.3.crate"
+    version: "1.1.3"
+  }
 }
diff --git a/crates/pin-project-lite/METADATA b/crates/pin-project-lite/METADATA
index ba19ea9..cec00e4 100644
--- a/crates/pin-project-lite/METADATA
+++ b/crates/pin-project-lite/METADATA
@@ -1,16 +1,6 @@
-# This project was upgraded manually.
-
 name: "pin-project-lite"
 description: "A lightweight version of pin-project written with declarative macros."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/pin-project-lite"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/pin-project-lite/pin-project-lite-0.2.9.crate"
-  }
   version: "0.2.13"
   license_type: NOTICE
   last_upgrade_date {
@@ -18,4 +8,10 @@
     month: 10
     day: 25
   }
+  homepage: "https://crates.io/crates/pin-project-lite"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/pin-project-lite/pin-project-lite-0.2.13.crate"
+    version: "0.2.13"
+  }
 }
diff --git a/crates/pin-project/METADATA b/crates/pin-project/METADATA
index 95dfea0..5a25223 100644
--- a/crates/pin-project/METADATA
+++ b/crates/pin-project/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/pin-project
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "pin-project"
 description: "A crate for safe and ergonomic pin-projection."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/pin-project"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/pin-project/pin-project-1.1.3.crate"
-  }
   version: "1.1.3"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 11
     day: 14
   }
+  homepage: "https://crates.io/crates/pin-project"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/pin-project/pin-project-1.1.3.crate"
+    version: "1.1.3"
+  }
 }
diff --git a/crates/pkcs1/METADATA b/crates/pkcs1/METADATA
index 434f1c5..e3d3968 100644
--- a/crates/pkcs1/METADATA
+++ b/crates/pkcs1/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/pkcs1
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "pkcs1"
 description: "Pure Rust implementation of Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.2 (RFC 8017)."
 third_party {
+  version: "0.7.5"
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
diff --git a/crates/pkcs8/METADATA b/crates/pkcs8/METADATA
index 3b0922c..9d8cde2 100644
--- a/crates/pkcs8/METADATA
+++ b/crates/pkcs8/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/pkcs8
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "pkcs8"
 description: "Pure Rust implementation of Public-Key Cryptography Standards (PKCS) #8: Private-Key Information Syntax Specification (RFC 5208)."
 third_party {
+  version: "0.10.2"
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
diff --git a/crates/plotters-backend/METADATA b/crates/plotters-backend/METADATA
index 98e69cc..0a6b1f4 100644
--- a/crates/plotters-backend/METADATA
+++ b/crates/plotters-backend/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/plotters-backend
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "plotters-backend"
 description: "Plotters Backend API"
 third_party {
+  version: "0.3.5"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/plotters-svg/METADATA b/crates/plotters-svg/METADATA
index 76b5a17..10b9f73 100644
--- a/crates/plotters-svg/METADATA
+++ b/crates/plotters-svg/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/plotters-svg
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "plotters-svg"
 description: "Plotters SVG backend"
 third_party {
+  version: "0.3.5"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/ppv-lite86/METADATA b/crates/ppv-lite86/METADATA
index ecc14e6..3ea5fa7 100644
--- a/crates/ppv-lite86/METADATA
+++ b/crates/ppv-lite86/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/ppv-lite86
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "ppv-lite86"
 description: "Implementation of the crypto-simd API for x86"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/ppv-lite86"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/ppv-lite86/ppv-lite86-0.2.17.crate"
-  }
   version: "0.2.17"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 12
     day: 19
   }
+  homepage: "https://crates.io/crates/ppv-lite86"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/ppv-lite86/ppv-lite86-0.2.17.crate"
+    version: "0.2.17"
+  }
 }
diff --git a/crates/predicates-core/METADATA b/crates/predicates-core/METADATA
index cd32702..0373078 100644
--- a/crates/predicates-core/METADATA
+++ b/crates/predicates-core/METADATA
@@ -1,20 +1,17 @@
 name: "predicates-core"
 description: "An API for boolean-valued predicate functions."
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "https://crates.io/crates/predicates-core"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/predicates-core/predicates-core-1.0.6.crate"
-  }
   version: "1.0.6"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
     month: 11
     day: 6
   }
+  homepage: "https://crates.io/crates/predicates-core"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/predicates-core/predicates-core-1.0.6.crate"
+    version: "1.0.6"
+  }
 }
diff --git a/crates/predicates-tree/METADATA b/crates/predicates-tree/METADATA
index a9e26f8..195961f 100644
--- a/crates/predicates-tree/METADATA
+++ b/crates/predicates-tree/METADATA
@@ -1,20 +1,17 @@
 name: "predicates-tree"
 description: "Render boolean-valued predicate functions results as a tree."
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "https://crates.io/crates/predicates-tree"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/predicates-tree/predicates-tree-1.0.9.crate"
-  }
   version: "1.0.9"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
     month: 11
     day: 6
   }
+  homepage: "https://crates.io/crates/predicates-tree"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/predicates-tree/predicates-tree-1.0.9.crate"
+    version: "1.0.9"
+  }
 }
diff --git a/crates/prettyplease/METADATA b/crates/prettyplease/METADATA
index 6d6bed3..a4e5466 100644
--- a/crates/prettyplease/METADATA
+++ b/crates/prettyplease/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/prettyplease
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "prettyplease"
 description: "A minimal `syn` syntax tree pretty-printer"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/prettyplease"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/prettyplease/prettyplease-0.2.6.crate"
-  }
   version: "0.2.6"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 5
     day: 23
   }
+  homepage: "https://crates.io/crates/prettyplease"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/prettyplease/prettyplease-0.2.6.crate"
+    version: "0.2.6"
+  }
 }
diff --git a/crates/proc-macro2/METADATA b/crates/proc-macro2/METADATA
index 34f90ff..359f77f 100644
--- a/crates/proc-macro2/METADATA
+++ b/crates/proc-macro2/METADATA
@@ -1,23 +1,17 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/proc-macro2
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "proc-macro2"
 description: "A substitute implementation of the compiler\'s `proc_macro` API to decouple token-based libraries from the procedural macro use case."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/proc-macro2"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/proc-macro2/proc-macro2-1.0.66.crate"
-  }
-  version: "1.0.66"
+  version: "1.0.69"
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
     month: 8
     day: 15
   }
+  homepage: "https://crates.io/crates/proc-macro2"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/proc-macro2/proc-macro2-1.0.69.crate"
+    version: "1.0.69"
+  }
 }
diff --git a/crates/rand/METADATA b/crates/rand/METADATA
index 2449ce5..7d427c1 100644
--- a/crates/rand/METADATA
+++ b/crates/rand/METADATA
@@ -1,14 +1,6 @@
 name: "rand"
 description: "Random number generators and other randomness functionality."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/rand"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/rand/rand-0.8.5.crate"
-  }
   version: "0.8.5"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 3
     day: 1
   }
+  homepage: "https://crates.io/crates/rand"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/rand/rand-0.8.5.crate"
+    version: "0.8.5"
+  }
 }
diff --git a/crates/rand_chacha/METADATA b/crates/rand_chacha/METADATA
index 72cd107..859be19 100644
--- a/crates/rand_chacha/METADATA
+++ b/crates/rand_chacha/METADATA
@@ -1,14 +1,6 @@
 name: "rand_chacha"
 description: "ChaCha random number generator"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/rand_chacha"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/rand_chacha/rand_chacha-0.3.1.crate"
-  }
   version: "0.3.1"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 6
     day: 21
   }
+  homepage: "https://crates.io/crates/rand_chacha"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/rand_chacha/rand_chacha-0.3.1.crate"
+    version: "0.3.1"
+  }
 }
diff --git a/crates/rand_core/METADATA b/crates/rand_core/METADATA
index 88a399e..04fed0b 100644
--- a/crates/rand_core/METADATA
+++ b/crates/rand_core/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/rand_core
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "rand_core"
 description: "Core random number generator traits and tools for implementation."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/rand_core"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/rand_core/rand_core-0.6.4.crate"
-  }
   version: "0.6.4"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 12
     day: 13
   }
+  homepage: "https://crates.io/crates/rand_core"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/rand_core/rand_core-0.6.4.crate"
+    version: "0.6.4"
+  }
 }
diff --git a/crates/rand_xorshift/METADATA b/crates/rand_xorshift/METADATA
index f53f05c..683ad79 100644
--- a/crates/rand_xorshift/METADATA
+++ b/crates/rand_xorshift/METADATA
@@ -1,14 +1,6 @@
 name: "rand_xorshift"
 description: "Xorshift random number generator"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/rand_xorshift"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/rand_xorshift/rand_xorshift-0.3.0.crate"
-  }
   version: "0.3.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 12
     day: 18
   }
+  homepage: "https://crates.io/crates/rand_xorshift"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/rand_xorshift/rand_xorshift-0.3.0.crate"
+    version: "0.3.0"
+  }
 }
diff --git a/crates/rayon-core/METADATA b/crates/rayon-core/METADATA
index 1eb7dcd..3e155dc 100644
--- a/crates/rayon-core/METADATA
+++ b/crates/rayon-core/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/rayon-core
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "rayon-core"
 description: "Core APIs for Rayon"
 third_party {
+  version: "1.12.1"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/rayon/METADATA b/crates/rayon/METADATA
index 4b10622..6fe2f9d 100644
--- a/crates/rayon/METADATA
+++ b/crates/rayon/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/rayon
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "rayon"
 description: "Simple work-stealing parallelism for Rust"
 third_party {
+  version: "1.8.1"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/regex-syntax/METADATA b/crates/regex-syntax/METADATA
index 5af87a5..efc7488 100644
--- a/crates/regex-syntax/METADATA
+++ b/crates/regex-syntax/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/regex-syntax
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "regex-syntax"
 description: "A regular expression parser."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/regex-syntax"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/regex-syntax/regex-syntax-0.6.29.crate"
-  }
   version: "0.6.29"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 4
     day: 3
   }
+  homepage: "https://crates.io/crates/regex-syntax"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/regex-syntax/regex-syntax-0.6.29.crate"
+    version: "0.6.29"
+  }
 }
diff --git a/crates/regex/METADATA b/crates/regex/METADATA
index f8d1a17..7aa82de 100644
--- a/crates/regex/METADATA
+++ b/crates/regex/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/regex
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "regex"
 description: "An implementation of regular expressions for Rust. This implementation uses finite automata and guarantees linear time matching on all inputs."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/regex"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/regex/regex-1.7.3.crate"
-  }
   version: "1.7.3"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 4
     day: 3
   }
+  homepage: "https://crates.io/crates/regex"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/regex/regex-1.7.3.crate"
+    version: "1.7.3"
+  }
 }
diff --git a/crates/rusqlite/METADATA b/crates/rusqlite/METADATA
index 17cfd9b..8ab8d55 100644
--- a/crates/rusqlite/METADATA
+++ b/crates/rusqlite/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/rusqlite
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "rusqlite"
 description: "Ergonomic wrapper for SQLite"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/rusqlite"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/rusqlite/rusqlite-0.29.0.crate"
-  }
   version: "0.29.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 5
     day: 25
   }
+  homepage: "https://crates.io/crates/rusqlite"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/rusqlite/rusqlite-0.29.0.crate"
+    version: "0.29.0"
+  }
 }
diff --git a/crates/rustc-demangle/METADATA b/crates/rustc-demangle/METADATA
index a03a568..69397d1 100644
--- a/crates/rustc-demangle/METADATA
+++ b/crates/rustc-demangle/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/rustc-demangle
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "rustc-demangle"
 description: "Rust compiler symbol demangling."
 third_party {
+  version: "0.1.23"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/rustc-hash/METADATA b/crates/rustc-hash/METADATA
index 6f1612e..857c91a 100644
--- a/crates/rustc-hash/METADATA
+++ b/crates/rustc-hash/METADATA
@@ -1,14 +1,6 @@
 name: "rustc-hash"
 description: "speed, non-cryptographic hash used in rustc"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/rustc-hash"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/rustc-hash/rustc-hash-1.1.0.crate"
-  }
   version: "1.1.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 3
     day: 31
   }
+  homepage: "https://crates.io/crates/rustc-hash"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/rustc-hash/rustc-hash-1.1.0.crate"
+    version: "1.1.0"
+  }
 }
diff --git a/crates/rustversion/METADATA b/crates/rustversion/METADATA
index 9d4120c..76711c7 100644
--- a/crates/rustversion/METADATA
+++ b/crates/rustversion/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/rustversion
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "rustversion"
 description: "Conditional compilation according to rustc compiler version"
 third_party {
+  version: "1.0.14"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/scopeguard/METADATA b/crates/scopeguard/METADATA
index 63329c7..cde58d4 100644
--- a/crates/scopeguard/METADATA
+++ b/crates/scopeguard/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/scopeguard
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "scopeguard"
 description: "A RAII scope guard that will run a given closure when it goes out of scope, even if the code between panics (assuming unwinding panic).  Defines the macros `defer!`, `defer_on_unwind!`, `defer_on_success!` as shorthands for guards with one of the implemented strategies."
 third_party {
+  version: "1.2.0"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/sec1/METADATA b/crates/sec1/METADATA
index 309de68..2246fc4 100644
--- a/crates/sec1/METADATA
+++ b/crates/sec1/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/sec1
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "sec1"
 description: "Pure Rust implementation of SEC1: Elliptic Curve Cryptography encoding formats including ASN.1 DER-serialized private keys (also described in RFC5915) as well as the Elliptic-Curve-Point-to-Octet-String and Octet-String-to-Elliptic Curve-Point encoding algorithms."
 third_party {
+  version: "0.7.3"
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
diff --git a/crates/semver/METADATA b/crates/semver/METADATA
index c963f72..b0c834e 100644
--- a/crates/semver/METADATA
+++ b/crates/semver/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/semver
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "semver"
 description: "Parser and evaluator for Cargo\'s flavor of Semantic Versioning"
 third_party {
+  version: "1.0.21"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/serde_cbor/METADATA b/crates/serde_cbor/METADATA
index 6997441..640e96e 100644
--- a/crates/serde_cbor/METADATA
+++ b/crates/serde_cbor/METADATA
@@ -1,14 +1,6 @@
 name: "serde_cbor"
 description: "CBOR support for serde."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/serde_cbor"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/serde_cbor/serde_cbor-0.11.2.crate"
-  }
   version: "0.11.2"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 9
     day: 22
   }
+  homepage: "https://crates.io/crates/serde_cbor"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/serde_cbor/serde_cbor-0.11.2.crate"
+    version: "0.11.2"
+  }
 }
diff --git a/crates/serde_derive/METADATA b/crates/serde_derive/METADATA
index cc6c728..dcafee4 100644
--- a/crates/serde_derive/METADATA
+++ b/crates/serde_derive/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/serde_derive
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "serde_derive"
 description: "Macros 1.1 implementation of #[derive(Serialize, Deserialize)]"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/serde_derive"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/serde_derive/serde_derive-1.0.158.crate"
-  }
   version: "1.0.158"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 3
     day: 20
   }
+  homepage: "https://crates.io/crates/serde_derive"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/serde_derive/serde_derive-1.0.158.crate"
+    version: "1.0.158"
+  }
 }
diff --git a/crates/shared_library/METADATA b/crates/shared_library/METADATA
index 0b6518d..8b72fe0 100644
--- a/crates/shared_library/METADATA
+++ b/crates/shared_library/METADATA
@@ -1,20 +1,17 @@
 name: "shared_library"
 description: "Easily bind to and load shared libraries"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/shared_library"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/shared_library/shared_library-0.1.9.crate"
-  }
   version: "0.1.9"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2021
     month: 8
     day: 30
   }
+  homepage: "https://crates.io/crates/shared_library"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/shared_library/shared_library-0.1.9.crate"
+    version: "0.1.9"
+  }
 }
diff --git a/crates/slab/METADATA b/crates/slab/METADATA
index 2f44dfc..f468d55 100644
--- a/crates/slab/METADATA
+++ b/crates/slab/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/slab
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "slab"
 description: "Pre-allocated storage for a uniform data type"
 third_party {
+  version: "0.4.9"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/smallvec/METADATA b/crates/smallvec/METADATA
index 6449035..dcb7b20 100644
--- a/crates/smallvec/METADATA
+++ b/crates/smallvec/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/smallvec
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "smallvec"
 description: "\'Small vector\' optimization: store up to a small number of items on the stack"
 third_party {
+  version: "1.13.1"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/smccc/METADATA b/crates/smccc/METADATA
index c4d7f0b..617e625 100644
--- a/crates/smccc/METADATA
+++ b/crates/smccc/METADATA
@@ -1,20 +1,17 @@
 name: "smccc"
 description: "Functions and constants for the Arm SMC Calling Convention (SMCCC) 1.4 and Arm Power State Coordination Interface (PSCI) 1.1 on aarch64."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/smccc"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/smccc/smccc-0.1.1.crate"
-  }
   version: "0.1.1"
-  # Dual-licensed, using the least restrictive per go/thirdpartylicenses#same.
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
     month: 5
     day: 10
   }
+  homepage: "https://crates.io/crates/smccc"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/smccc/smccc-0.1.1.crate"
+    version: "0.1.1"
+  }
 }
diff --git a/crates/socket2/METADATA b/crates/socket2/METADATA
index 73ea070..2c550f2 100644
--- a/crates/socket2/METADATA
+++ b/crates/socket2/METADATA
@@ -1,16 +1,6 @@
-# This project was upgraded manually.
-
 name: "socket2"
 description: "Utilities for handling networking sockets with a maximal amount of configuration possible intended."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/socket2"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/socket2/socket2-0.5.5.crate"
-  }
   version: "0.5.5"
   license_type: NOTICE
   last_upgrade_date {
@@ -18,4 +8,10 @@
     month: 10
     day: 25
   }
+  homepage: "https://crates.io/crates/socket2"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/socket2/socket2-0.5.5.crate"
+    version: "0.5.5"
+  }
 }
diff --git a/crates/spin/METADATA b/crates/spin/METADATA
index b1dd979..e95a05b 100644
--- a/crates/spin/METADATA
+++ b/crates/spin/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/spin
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "spin"
 description: "Spin-based synchronization primitives"
 third_party {
+  version: "0.9.8"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/spki/METADATA b/crates/spki/METADATA
index 0fa8081..8672f8a 100644
--- a/crates/spki/METADATA
+++ b/crates/spki/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/spki
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "spki"
 description: "X.509 Subject Public Key Info types describing public keys as well as their associated AlgorithmIdentifiers (i.e. OIDs)."
 third_party {
+  version: "0.7.3"
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
diff --git a/crates/strsim/METADATA b/crates/strsim/METADATA
index 008980c..21501d6 100644
--- a/crates/strsim/METADATA
+++ b/crates/strsim/METADATA
@@ -1,15 +1,6 @@
 name: "strsim"
 description: "()"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "strsim"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/strsim/strsim-0.11.0.crate"
-    primary_source: true
-  }
   version: "0.11.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -17,4 +8,10 @@
     month: 2
     day: 22
   }
+  homepage: "https://crates.io/crates/strsim"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/strsim/strsim-0.11.0.crate"
+    version: "0.11.0"
+  }
 }
diff --git a/crates/strum/METADATA b/crates/strum/METADATA
index 16697ae..e08a926 100644
--- a/crates/strum/METADATA
+++ b/crates/strum/METADATA
@@ -1,14 +1,6 @@
 name: "strum"
 description: "Helpful macros for working with enums and strings"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "https://crates.io/crates/strum"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/strum/strum-0.25.0.crate"
-  }
   version: "0.25.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 1
     day: 17
   }
+  homepage: "https://crates.io/crates/strum"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/strum/strum-0.25.0.crate"
+    version: "0.25.0"
+  }
 }
diff --git a/crates/strum_macros/METADATA b/crates/strum_macros/METADATA
index 705441a..9df3aeb 100644
--- a/crates/strum_macros/METADATA
+++ b/crates/strum_macros/METADATA
@@ -1,14 +1,6 @@
 name: "strum_macros"
 description: "Helpful macros for working with enums and strings"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "https://crates.io/crates/strum_macros"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/strum_macros/strum_macros-0.25.3.crate"
-  }
   version: "0.25.3"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 1
     day: 17
   }
+  homepage: "https://crates.io/crates/strum_macros"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/strum_macros/strum_macros-0.25.3.crate"
+    version: "0.25.3"
+  }
 }
diff --git a/crates/syn-mid/METADATA b/crates/syn-mid/METADATA
index df66819..15d2967 100644
--- a/crates/syn-mid/METADATA
+++ b/crates/syn-mid/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/syn-mid
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "syn-mid"
 description: "Providing the features between \"full\" and \"derive\" of syn."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/syn-mid"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/syn-mid/syn-mid-0.6.0.crate"
-  }
   version: "0.6.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 11
     day: 15
   }
+  homepage: "https://crates.io/crates/syn-mid"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/syn-mid/syn-mid-0.6.0.crate"
+    version: "0.6.0"
+  }
 }
diff --git a/crates/sync_wrapper/METADATA b/crates/sync_wrapper/METADATA
index 82a2319..c114fdc 100644
--- a/crates/sync_wrapper/METADATA
+++ b/crates/sync_wrapper/METADATA
@@ -1,15 +1,6 @@
 name: "sync_wrapper"
 description: "A tool for enlisting the compiler\'s help in proving the absence of concurrency"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "sync_wrapper"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/sync_wrapper/sync_wrapper-1.0.1.crate"
-    primary_source: true
-  }
   version: "1.0.1"
   license_type: NOTICE
   last_upgrade_date {
@@ -17,4 +8,10 @@
     month: 6
     day: 3
   }
+  homepage: "https://crates.io/crates/sync_wrapper"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/sync_wrapper/sync_wrapper-1.0.1.crate"
+    version: "1.0.1"
+  }
 }
diff --git a/crates/synstructure/METADATA b/crates/synstructure/METADATA
index 760b301..21553d8 100644
--- a/crates/synstructure/METADATA
+++ b/crates/synstructure/METADATA
@@ -1,14 +1,6 @@
 name: "synstructure"
 description: "Helper methods and macros for custom derives"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/synstructure"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/synstructure/synstructure-0.12.6.crate"
-  }
   version: "0.12.6"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 9
     day: 6
   }
+  homepage: "https://crates.io/crates/synstructure"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/synstructure/synstructure-0.12.6.crate"
+    version: "0.12.6"
+  }
 }
diff --git a/crates/tempfile/METADATA b/crates/tempfile/METADATA
index 92ec9f7..6add873 100644
--- a/crates/tempfile/METADATA
+++ b/crates/tempfile/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/tempfile
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "tempfile"
 description: "A library for managing temporary files and directories."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/tempfile"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/tempfile/tempfile-3.3.0.crate"
-  }
   version: "3.3.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 2
     day: 6
   }
+  homepage: "https://crates.io/crates/tempfile"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/tempfile/tempfile-3.3.0.crate"
+    version: "3.3.0"
+  }
 }
diff --git a/crates/termcolor/METADATA b/crates/termcolor/METADATA
index 46e39c0..24da4d6 100644
--- a/crates/termcolor/METADATA
+++ b/crates/termcolor/METADATA
@@ -1,10 +1,7 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update external/rust/crates/termcolor
-# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
-
 name: "termcolor"
 description: "A simple cross platform library for writing colored text to a terminal."
 third_party {
+  version: "1.4.1"
   license_type: NOTICE
   last_upgrade_date {
     year: 2024
diff --git a/crates/termtree/METADATA b/crates/termtree/METADATA
index 8bc6904..e4eabf1 100644
--- a/crates/termtree/METADATA
+++ b/crates/termtree/METADATA
@@ -1,14 +1,6 @@
 name: "termtree"
 description: "Visualize tree-like data on the command-line"
 third_party {
-  identifier {
-    type: "crates.io"
-    value: "https://crates.io/crates/termtree"
-  }
-  identifier {
-    type: "Archive"
-    value: "https://static.crates.io/crates/termtree/termtree-0.4.1.crate"
-  }
   version: "0.4.1"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 11
     day: 6
   }
+  homepage: "https://crates.io/crates/termtree"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/termtree/termtree-0.4.1.crate"
+    version: "0.4.1"
+  }
 }
diff --git a/crates/textwrap/METADATA b/crates/textwrap/METADATA
index 8236055..603f080 100644
--- a/crates/textwrap/METADATA
+++ b/crates/textwrap/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/textwrap
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "textwrap"
 description: "Library for word wrapping, indenting, and dedenting strings. Has optional support for Unicode and emojis as well as machine hyphenation."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/textwrap"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/textwrap/textwrap-0.16.0.crate"
-  }
   version: "0.16.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 12
     day: 19
   }
+  homepage: "https://crates.io/crates/textwrap"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/textwrap/textwrap-0.16.0.crate"
+    version: "0.16.0"
+  }
 }
diff --git a/crates/thiserror/METADATA b/crates/thiserror/METADATA
index 77a19a5..fd43528 100644
--- a/crates/thiserror/METADATA
+++ b/crates/thiserror/METADATA
@@ -1,23 +1,17 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/thiserror
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "thiserror"
 description: "derive(Error)"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/thiserror"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/thiserror/thiserror-1.0.40.crate"
-  }
-  version: "1.0.40"
+  version: "1.0.49"
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
     month: 3
     day: 23
   }
+  homepage: "https://crates.io/crates/thiserror"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/thiserror/thiserror-1.0.49.crate"
+    version: "1.0.49"
+  }
 }
diff --git a/crates/thread_local/METADATA b/crates/thread_local/METADATA
index 0466287..81b24bd 100644
--- a/crates/thread_local/METADATA
+++ b/crates/thread_local/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/thread_local
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "thread_local"
 description: "Per-object thread-local storage"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/thread_local"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/thread_local/thread_local-1.1.7.crate"
-  }
   version: "1.1.7"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 2
     day: 17
   }
+  homepage: "https://crates.io/crates/thread_local"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/thread_local/thread_local-1.1.7.crate"
+    version: "1.1.7"
+  }
 }
diff --git a/crates/tinytemplate/METADATA b/crates/tinytemplate/METADATA
index c4c386e..2c44a72 100644
--- a/crates/tinytemplate/METADATA
+++ b/crates/tinytemplate/METADATA
@@ -1,14 +1,6 @@
 name: "tinytemplate"
 description: "Simple, lightweight template engine"
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/tinytemplate"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/tinytemplate/tinytemplate-1.2.1.crate"
-  }
   version: "1.2.1"
   license_type: NOTICE
   last_upgrade_date {
@@ -16,4 +8,10 @@
     month: 4
     day: 2
   }
+  homepage: "https://crates.io/crates/tinytemplate"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/tinytemplate/tinytemplate-1.2.1.crate"
+    version: "1.2.1"
+  }
 }
diff --git a/crates/tokio-macros/METADATA b/crates/tokio-macros/METADATA
index d71aedd..acd2216 100644
--- a/crates/tokio-macros/METADATA
+++ b/crates/tokio-macros/METADATA
@@ -1,18 +1,6 @@
-# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update rust/crates/tokio-macros
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
-
 name: "tokio-macros"
 description: "Tokio\'s proc macros."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/tokio-macros"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/tokio-macros/tokio-macros-2.1.0.crate"
-  }
   version: "2.1.0"
   license_type: NOTICE
   last_upgrade_date {
@@ -20,4 +8,10 @@
     month: 11
     day: 1
   }
+  homepage: "https://crates.io/crates/tokio-macros"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/tokio-macros/tokio-macros-2.1.0.crate"
+    version: "2.1.0"
+  }
 }