git: 00f9ff281549 - main - security/pdfrip: Update to 3.0.0
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 21 Mar 2026 14:47:31 UTC
The branch main has been updated by fox:
URL: https://cgit.FreeBSD.org/ports/commit/?id=00f9ff281549e7957b3bd85d6474a72daba867cb
commit 00f9ff281549e7957b3bd85d6474a72daba867cb
Author: Santhosh Raju <fox@FreeBSD.org>
AuthorDate: 2026-03-21 13:06:10 +0000
Commit: Santhosh Raju <fox@FreeBSD.org>
CommitDate: 2026-03-21 14:44:13 +0000
security/pdfrip: Update to 3.0.0
Changes since 2.0.1:
PDFRip v3.0.0 is a trust/performance/compatibility release focused on
making
pdfrip more correct, measurable, and useful on real password-cracking
workloads.
Highlights
Prepared verifier hot path
* Password attempts no longer rebuild general PDF parsing/storage
state on
every try
* The release extracts the security envelope once, prepares a direct
verifier
once, and reuses it across attempts
* Verified against deterministic qpdf fixtures for Standard Security
Handler
revisions R2 through R6
Better compatibility coverage
The fixture and verifier matrix now covers:
* R2 / R3 / R4 RC4
* R4 AES-128
* R5 / R6 AES-256
* Unicode R5 / R6 passwords
* Blank user passwords
* Object streams and xref streams
* Linearized PDFs
* EncryptMetadata=false
Exact progress and resume
* Progress is now based on verified attempts, not merely queued work
* Historical "100%, ETA 0s, but still running" behavior is fixed
* Checkpoint/resume is now a first-class workflow with exact
verified-prefix
recovery
New and improved search workflows
* New mask mode for bounded structured passwords
* New contains-word mode for "known substring + brute-force the rest"
workflows
* Date --format now supports custom shapes
* Custom-query now supports literal-only queries and fixes bugs
* Numeric ranges are inclusive and sized exactly
* Default-query now enumerates printable ASCII correctly and can test
blank
passwords
Better UX and reporting
* Success output distinguishes user vs owner passwords when revision
allows
it
* Blank passwords render explicitly as ""
* Structured JSON output available with --json
* Malformed inputs return normal user-facing errors instead of panics
* Documentation matches measured reality and current workflows
New opt-in fast mode
* --user-password-only skips owner-password checks for
document-opening
password workflows
* Can reduce end-to-end time on R5/R6 workloads
Measured improvements
Representative local measurements on Apple M3 Pro showed:
* Synthetic R5 prepared verifier: 15.5x lower latency than legacy path
* Large bundled R3 example: 4.5x lower latency
* 10,000-candidate mask exhaustion: 3.4x faster at 4 workers vs 1
worker
* User-password-only speedups: 1.31x-2.77x faster depending on
revision
Build and release hardening
* Exact dependency pinning for sensitive direct crates
* Tracked Cargo.lock with --locked CI/release flows
* CI coverage on Linux/macOS/Windows for stable + nightly
* Cargo install smoke testing
* Benchmark-harness build coverage
* PDF fixtures marked binary-safe across platforms
---
security/pdfrip/Makefile | 3 +-
security/pdfrip/Makefile.crates | 167 +++++++-----
security/pdfrip/distinfo | 340 +++++++++++++++----------
security/pdfrip/files/patch-Cargo.toml | 13 -
security/pdfrip/files/patch-src_core_engine.rs | 16 --
5 files changed, 307 insertions(+), 232 deletions(-)
diff --git a/security/pdfrip/Makefile b/security/pdfrip/Makefile
index 078869c08d59..2a82663c4725 100644
--- a/security/pdfrip/Makefile
+++ b/security/pdfrip/Makefile
@@ -1,7 +1,6 @@
PORTNAME= pdfrip
DISTVERSIONPREFIX= v
-DISTVERSION= 2.0.1
-PORTREVISION= 5
+DISTVERSION= 3.0.0
CATEGORIES= security
MAINTAINER= fox@FreeBSD.org
diff --git a/security/pdfrip/Makefile.crates b/security/pdfrip/Makefile.crates
index 12bce5f83a0a..f028c70e6cdd 100644
--- a/security/pdfrip/Makefile.crates
+++ b/security/pdfrip/Makefile.crates
@@ -1,126 +1,161 @@
CARGO_CRATES= adler32-1.2.0 \
aes-0.8.4 \
- aho-corasick-1.1.3 \
- anstream-0.6.19 \
- anstyle-1.0.11 \
- anstyle-parse-0.2.7 \
- anstyle-query-1.1.3 \
- anstyle-wincon-3.0.9 \
- anyhow-1.0.98 \
- async-trait-0.1.88 \
+ aho-corasick-1.1.4 \
+ allocator-api2-0.2.21 \
+ anes-0.1.6 \
+ anstream-1.0.0 \
+ anstyle-1.0.14 \
+ anstyle-parse-1.0.0 \
+ anstyle-query-1.1.5 \
+ anstyle-wincon-3.0.11 \
+ anyhow-1.0.102 \
+ async-trait-0.1.89 \
autocfg-1.5.0 \
bitflags-1.3.2 \
+ bitflags-2.11.0 \
block-buffer-0.10.4 \
block-padding-0.3.3 \
- bumpalo-3.19.0 \
+ block2-0.6.2 \
+ bumpalo-3.20.2 \
bytecount-0.6.9 \
+ cast-0.3.0 \
cbc-0.1.2 \
- cfg-if-1.0.1 \
+ cfg-if-1.0.4 \
+ cfg_aliases-0.2.1 \
+ ciborium-0.2.2 \
+ ciborium-io-0.2.2 \
+ ciborium-ll-0.2.2 \
cipher-0.4.4 \
- clap-4.5.41 \
- clap_builder-4.5.41 \
- clap_derive-4.5.41 \
- clap_lex-0.7.5 \
- colorchoice-1.0.4 \
+ clap-4.6.0 \
+ clap_builder-4.6.0 \
+ clap_derive-4.6.0 \
+ clap_lex-1.1.0 \
+ colorchoice-1.0.5 \
colored-2.2.0 \
- console-0.16.0 \
+ console-0.15.11 \
+ core2-0.4.0 \
cpufeatures-0.2.17 \
+ crc32fast-1.5.0 \
+ criterion-0.5.1 \
+ criterion-plot-0.5.0 \
crossbeam-0.8.4 \
crossbeam-channel-0.5.15 \
crossbeam-deque-0.8.6 \
crossbeam-epoch-0.9.18 \
crossbeam-queue-0.3.12 \
crossbeam-utils-0.8.21 \
- crypto-common-0.1.6 \
+ crunchy-0.2.4 \
+ crypto-common-0.1.7 \
+ ctrlc-3.5.2 \
+ dary_heap-0.3.8 \
datasize-0.2.15 \
datasize_derive-0.2.15 \
deflate-1.0.0 \
digest-0.10.7 \
- doc-comment-0.3.3 \
+ dispatch2-0.3.1 \
+ doc-comment-0.3.4 \
either-1.15.0 \
encode_unicode-1.0.0 \
env_logger-0.10.2 \
- fax-0.2.4 \
- fax_derive-0.1.0 \
+ equivalent-1.0.2 \
+ fax-0.2.6 \
+ fax_derive-0.2.0 \
+ foldhash-0.2.0 \
generic-array-0.14.7 \
globalcache-0.2.4 \
+ half-2.7.1 \
+ hashbrown-0.16.1 \
heck-0.4.1 \
heck-0.5.0 \
hermit-abi-0.5.2 \
- humantime-2.2.0 \
- indicatif-0.18.0 \
- inflate-0.4.5 \
+ humantime-2.3.0 \
+ indexmap-2.13.0 \
+ indicatif-0.17.11 \
inout-0.1.4 \
- is-terminal-0.4.16 \
- is_terminal_polyfill-1.70.1 \
+ is-terminal-0.4.17 \
+ is_terminal_polyfill-1.70.2 \
istring-0.3.4 \
itertools-0.10.5 \
+ itoa-1.0.17 \
jpeg-decoder-0.3.2 \
- js-sys-0.3.77 \
+ js-sys-0.3.91 \
lazy_static-1.5.0 \
- libc-0.2.174 \
- log-0.4.27 \
+ libc-0.2.183 \
+ libflate-2.2.1 \
+ libflate_lz77-2.2.0 \
+ log-0.4.19 \
md5-0.7.0 \
- memchr-2.7.5 \
+ memchr-2.8.0 \
+ nix-0.31.2 \
num-traits-0.2.19 \
- once_cell-1.21.3 \
- once_cell_polyfill-1.70.1 \
- pdf-0.8.1 \
- pdf_derive-0.1.22 \
- portable-atomic-1.11.1 \
+ number_prefix-0.4.0 \
+ objc2-0.6.4 \
+ objc2-encode-4.1.0 \
+ once_cell-1.21.4 \
+ once_cell_polyfill-1.70.2 \
+ oorandom-11.1.5 \
+ pdf-0.9.0 \
+ pdf_derive-0.2.0 \
+ plotters-0.3.7 \
+ plotters-backend-0.3.7 \
+ plotters-svg-0.3.7 \
+ portable-atomic-1.13.1 \
pretty_env_logger-0.5.0 \
- proc-macro2-1.0.95 \
- quote-1.0.40 \
- regex-1.11.1 \
- regex-automata-0.4.9 \
- regex-syntax-0.8.5 \
- serde-1.0.219 \
- serde_derive-1.0.219 \
+ proc-macro2-1.0.106 \
+ quote-1.0.45 \
+ rayon-1.11.0 \
+ rayon-core-1.13.0 \
+ regex-1.12.3 \
+ regex-automata-0.4.14 \
+ regex-syntax-0.8.10 \
+ rle-decode-fast-1.0.3 \
+ rustversion-1.0.22 \
+ same-file-1.0.6 \
+ serde-1.0.228 \
+ serde_core-1.0.228 \
+ serde_derive-1.0.228 \
+ serde_json-1.0.149 \
sha2-0.10.9 \
snafu-0.7.5 \
snafu-derive-0.7.5 \
stringprep-0.1.5 \
strsim-0.11.1 \
syn-1.0.109 \
- syn-2.0.104 \
+ syn-2.0.117 \
termcolor-1.4.1 \
- tinyvec-1.9.0 \
+ tinytemplate-1.2.1 \
+ tinyvec-1.11.0 \
tinyvec_macros-0.1.1 \
tuple-0.5.2 \
- typenum-1.18.0 \
+ typenum-1.19.0 \
unicode-bidi-0.3.18 \
- unicode-ident-1.0.18 \
- unicode-normalization-0.1.24 \
- unicode-properties-0.1.3 \
- unicode-width-0.2.1 \
- unit-prefix-0.5.1 \
+ unicode-ident-1.0.24 \
+ unicode-normalization-0.1.25 \
+ unicode-properties-0.1.4 \
+ unicode-width-0.2.2 \
utf8parse-0.2.2 \
version_check-0.9.5 \
- wasm-bindgen-0.2.100 \
- wasm-bindgen-backend-0.2.100 \
- wasm-bindgen-macro-0.2.100 \
- wasm-bindgen-macro-support-0.2.100 \
- wasm-bindgen-shared-0.2.100 \
+ walkdir-2.5.0 \
+ wasm-bindgen-0.2.114 \
+ wasm-bindgen-macro-0.2.114 \
+ wasm-bindgen-macro-support-0.2.114 \
+ wasm-bindgen-shared-0.2.114 \
+ web-sys-0.3.91 \
web-time-1.1.0 \
- weezl-0.1.10 \
- winapi-util-0.1.9 \
+ weezl-0.1.12 \
+ winapi-util-0.1.11 \
+ windows-link-0.2.1 \
windows-sys-0.59.0 \
- windows-sys-0.60.2 \
+ windows-sys-0.61.2 \
windows-targets-0.52.6 \
- windows-targets-0.53.2 \
windows_aarch64_gnullvm-0.52.6 \
- windows_aarch64_gnullvm-0.53.0 \
windows_aarch64_msvc-0.52.6 \
- windows_aarch64_msvc-0.53.0 \
windows_i686_gnu-0.52.6 \
- windows_i686_gnu-0.53.0 \
windows_i686_gnullvm-0.52.6 \
- windows_i686_gnullvm-0.53.0 \
windows_i686_msvc-0.52.6 \
- windows_i686_msvc-0.53.0 \
windows_x86_64_gnu-0.52.6 \
- windows_x86_64_gnu-0.53.0 \
windows_x86_64_gnullvm-0.52.6 \
- windows_x86_64_gnullvm-0.53.0 \
windows_x86_64_msvc-0.52.6 \
- windows_x86_64_msvc-0.53.0
+ zerocopy-0.8.42 \
+ zerocopy-derive-0.8.42 \
+ zmij-1.0.21
diff --git a/security/pdfrip/distinfo b/security/pdfrip/distinfo
index 0dd2e09cc065..3c3539c5880f 100644
--- a/security/pdfrip/distinfo
+++ b/security/pdfrip/distinfo
@@ -1,58 +1,84 @@
-TIMESTAMP = 1753650285
+TIMESTAMP = 1774026742
SHA256 (rust/crates/adler32-1.2.0.crate) = aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234
SIZE (rust/crates/adler32-1.2.0.crate) = 6411
SHA256 (rust/crates/aes-0.8.4.crate) = b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0
SIZE (rust/crates/aes-0.8.4.crate) = 124812
-SHA256 (rust/crates/aho-corasick-1.1.3.crate) = 8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916
-SIZE (rust/crates/aho-corasick-1.1.3.crate) = 183311
-SHA256 (rust/crates/anstream-0.6.19.crate) = 301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933
-SIZE (rust/crates/anstream-0.6.19.crate) = 28767
-SHA256 (rust/crates/anstyle-1.0.11.crate) = 862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd
-SIZE (rust/crates/anstyle-1.0.11.crate) = 15880
-SHA256 (rust/crates/anstyle-parse-0.2.7.crate) = 4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2
-SIZE (rust/crates/anstyle-parse-0.2.7.crate) = 21707
-SHA256 (rust/crates/anstyle-query-1.1.3.crate) = 6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9
-SIZE (rust/crates/anstyle-query-1.1.3.crate) = 10190
-SHA256 (rust/crates/anstyle-wincon-3.0.9.crate) = 403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882
-SIZE (rust/crates/anstyle-wincon-3.0.9.crate) = 12561
-SHA256 (rust/crates/anyhow-1.0.98.crate) = e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487
-SIZE (rust/crates/anyhow-1.0.98.crate) = 53334
-SHA256 (rust/crates/async-trait-0.1.88.crate) = e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5
-SIZE (rust/crates/async-trait-0.1.88.crate) = 32084
+SHA256 (rust/crates/aho-corasick-1.1.4.crate) = ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301
+SIZE (rust/crates/aho-corasick-1.1.4.crate) = 184015
+SHA256 (rust/crates/allocator-api2-0.2.21.crate) = 683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923
+SIZE (rust/crates/allocator-api2-0.2.21.crate) = 63622
+SHA256 (rust/crates/anes-0.1.6.crate) = 4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299
+SIZE (rust/crates/anes-0.1.6.crate) = 23857
+SHA256 (rust/crates/anstream-1.0.0.crate) = 824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d
+SIZE (rust/crates/anstream-1.0.0.crate) = 28916
+SHA256 (rust/crates/anstyle-1.0.14.crate) = 940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000
+SIZE (rust/crates/anstyle-1.0.14.crate) = 17787
+SHA256 (rust/crates/anstyle-parse-1.0.0.crate) = 52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e
+SIZE (rust/crates/anstyle-parse-1.0.0.crate) = 22042
+SHA256 (rust/crates/anstyle-query-1.1.5.crate) = 40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc
+SIZE (rust/crates/anstyle-query-1.1.5.crate) = 10264
+SHA256 (rust/crates/anstyle-wincon-3.0.11.crate) = 291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d
+SIZE (rust/crates/anstyle-wincon-3.0.11.crate) = 12638
+SHA256 (rust/crates/anyhow-1.0.102.crate) = 7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c
+SIZE (rust/crates/anyhow-1.0.102.crate) = 48658
+SHA256 (rust/crates/async-trait-0.1.89.crate) = 9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb
+SIZE (rust/crates/async-trait-0.1.89.crate) = 32171
SHA256 (rust/crates/autocfg-1.5.0.crate) = c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8
SIZE (rust/crates/autocfg-1.5.0.crate) = 18729
SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitflags-2.11.0.crate) = 843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af
+SIZE (rust/crates/bitflags-2.11.0.crate) = 48906
SHA256 (rust/crates/block-buffer-0.10.4.crate) = 3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71
SIZE (rust/crates/block-buffer-0.10.4.crate) = 10538
SHA256 (rust/crates/block-padding-0.3.3.crate) = a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93
SIZE (rust/crates/block-padding-0.3.3.crate) = 8504
-SHA256 (rust/crates/bumpalo-3.19.0.crate) = 46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43
-SIZE (rust/crates/bumpalo-3.19.0.crate) = 96414
+SHA256 (rust/crates/block2-0.6.2.crate) = cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5
+SIZE (rust/crates/block2-0.6.2.crate) = 34505
+SHA256 (rust/crates/bumpalo-3.20.2.crate) = 5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb
+SIZE (rust/crates/bumpalo-3.20.2.crate) = 97696
SHA256 (rust/crates/bytecount-0.6.9.crate) = 175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e
SIZE (rust/crates/bytecount-0.6.9.crate) = 18695
+SHA256 (rust/crates/cast-0.3.0.crate) = 37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5
+SIZE (rust/crates/cast-0.3.0.crate) = 11452
SHA256 (rust/crates/cbc-0.1.2.crate) = 26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6
SIZE (rust/crates/cbc-0.1.2.crate) = 23501
-SHA256 (rust/crates/cfg-if-1.0.1.crate) = 9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268
-SIZE (rust/crates/cfg-if-1.0.1.crate) = 8683
+SHA256 (rust/crates/cfg-if-1.0.4.crate) = 9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801
+SIZE (rust/crates/cfg-if-1.0.4.crate) = 9360
+SHA256 (rust/crates/cfg_aliases-0.2.1.crate) = 613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724
+SIZE (rust/crates/cfg_aliases-0.2.1.crate) = 6355
+SHA256 (rust/crates/ciborium-0.2.2.crate) = 42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e
+SIZE (rust/crates/ciborium-0.2.2.crate) = 35611
+SHA256 (rust/crates/ciborium-io-0.2.2.crate) = 05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757
+SIZE (rust/crates/ciborium-io-0.2.2.crate) = 6697
+SHA256 (rust/crates/ciborium-ll-0.2.2.crate) = 57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9
+SIZE (rust/crates/ciborium-ll-0.2.2.crate) = 14695
SHA256 (rust/crates/cipher-0.4.4.crate) = 773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad
SIZE (rust/crates/cipher-0.4.4.crate) = 19073
-SHA256 (rust/crates/clap-4.5.41.crate) = be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9
-SIZE (rust/crates/clap-4.5.41.crate) = 58298
-SHA256 (rust/crates/clap_builder-4.5.41.crate) = 707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d
-SIZE (rust/crates/clap_builder-4.5.41.crate) = 169633
-SHA256 (rust/crates/clap_derive-4.5.41.crate) = ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491
-SIZE (rust/crates/clap_derive-4.5.41.crate) = 33493
-SHA256 (rust/crates/clap_lex-0.7.5.crate) = b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675
-SIZE (rust/crates/clap_lex-0.7.5.crate) = 13469
-SHA256 (rust/crates/colorchoice-1.0.4.crate) = b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75
-SIZE (rust/crates/colorchoice-1.0.4.crate) = 8196
+SHA256 (rust/crates/clap-4.6.0.crate) = b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351
+SIZE (rust/crates/clap-4.6.0.crate) = 62930
+SHA256 (rust/crates/clap_builder-4.6.0.crate) = 714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f
+SIZE (rust/crates/clap_builder-4.6.0.crate) = 171122
+SHA256 (rust/crates/clap_derive-4.6.0.crate) = 1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a
+SIZE (rust/crates/clap_derive-4.6.0.crate) = 33435
+SHA256 (rust/crates/clap_lex-1.1.0.crate) = c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9
+SIZE (rust/crates/clap_lex-1.1.0.crate) = 13470
+SHA256 (rust/crates/colorchoice-1.0.5.crate) = 1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570
+SIZE (rust/crates/colorchoice-1.0.5.crate) = 8187
SHA256 (rust/crates/colored-2.2.0.crate) = 117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c
SIZE (rust/crates/colored-2.2.0.crate) = 35062
-SHA256 (rust/crates/console-0.16.0.crate) = 2e09ced7ebbccb63b4c65413d821f2e00ce54c5ca4514ddc6b3c892fdbcbc69d
-SIZE (rust/crates/console-0.16.0.crate) = 39107
+SHA256 (rust/crates/console-0.15.11.crate) = 054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8
+SIZE (rust/crates/console-0.15.11.crate) = 37822
+SHA256 (rust/crates/core2-0.4.0.crate) = b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505
+SIZE (rust/crates/core2-0.4.0.crate) = 37075
SHA256 (rust/crates/cpufeatures-0.2.17.crate) = 59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280
SIZE (rust/crates/cpufeatures-0.2.17.crate) = 13466
+SHA256 (rust/crates/crc32fast-1.5.0.crate) = 9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511
+SIZE (rust/crates/crc32fast-1.5.0.crate) = 40723
+SHA256 (rust/crates/criterion-0.5.1.crate) = f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f
+SIZE (rust/crates/criterion-0.5.1.crate) = 110088
+SHA256 (rust/crates/criterion-plot-0.5.0.crate) = 6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1
+SIZE (rust/crates/criterion-plot-0.5.0.crate) = 22706
SHA256 (rust/crates/crossbeam-0.8.4.crate) = 1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8
SIZE (rust/crates/crossbeam-0.8.4.crate) = 10500
SHA256 (rust/crates/crossbeam-channel-0.5.15.crate) = 82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2
@@ -65,8 +91,14 @@ SHA256 (rust/crates/crossbeam-queue-0.3.12.crate) = 0f58bbc28f91df819d0aa2a2c00c
SIZE (rust/crates/crossbeam-queue-0.3.12.crate) = 16270
SHA256 (rust/crates/crossbeam-utils-0.8.21.crate) = d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28
SIZE (rust/crates/crossbeam-utils-0.8.21.crate) = 42691
-SHA256 (rust/crates/crypto-common-0.1.6.crate) = 1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3
-SIZE (rust/crates/crypto-common-0.1.6.crate) = 8760
+SHA256 (rust/crates/crunchy-0.2.4.crate) = 460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5
+SIZE (rust/crates/crunchy-0.2.4.crate) = 3887
+SHA256 (rust/crates/crypto-common-0.1.7.crate) = 78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a
+SIZE (rust/crates/crypto-common-0.1.7.crate) = 9619
+SHA256 (rust/crates/ctrlc-3.5.2.crate) = e0b1fab2ae45819af2d0731d60f2afe17227ebb1a1538a236da84c93e9a60162
+SIZE (rust/crates/ctrlc-3.5.2.crate) = 14194
+SHA256 (rust/crates/dary_heap-0.3.8.crate) = 06d2e3287df1c007e74221c49ca10a95d557349e54b3a75dc2fb14712c751f04
+SIZE (rust/crates/dary_heap-0.3.8.crate) = 26544
SHA256 (rust/crates/datasize-0.2.15.crate) = e65c07d59e45d77a8bda53458c24a828893a99ac6cdd9c84111e09176ab739a2
SIZE (rust/crates/datasize-0.2.15.crate) = 10414
SHA256 (rust/crates/datasize_derive-0.2.15.crate) = 613e4ee15899913285b7612004bbd490abd605be7b11d35afada5902fb6b91d5
@@ -75,86 +107,132 @@ SHA256 (rust/crates/deflate-1.0.0.crate) = c86f7e25f518f4b81808a2cf1c50996a61f5c
SIZE (rust/crates/deflate-1.0.0.crate) = 62722
SHA256 (rust/crates/digest-0.10.7.crate) = 9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292
SIZE (rust/crates/digest-0.10.7.crate) = 19557
-SHA256 (rust/crates/doc-comment-0.3.3.crate) = fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10
-SIZE (rust/crates/doc-comment-0.3.3.crate) = 4123
+SHA256 (rust/crates/dispatch2-0.3.1.crate) = 1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38
+SIZE (rust/crates/dispatch2-0.3.1.crate) = 55299
+SHA256 (rust/crates/doc-comment-0.3.4.crate) = 780955b8b195a21ab8e4ac6b60dd1dbdcec1dc6c51c0617964b08c81785e12c9
+SIZE (rust/crates/doc-comment-0.3.4.crate) = 4341
SHA256 (rust/crates/either-1.15.0.crate) = 48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719
SIZE (rust/crates/either-1.15.0.crate) = 20114
SHA256 (rust/crates/encode_unicode-1.0.0.crate) = 34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0
SIZE (rust/crates/encode_unicode-1.0.0.crate) = 56986
SHA256 (rust/crates/env_logger-0.10.2.crate) = 4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580
SIZE (rust/crates/env_logger-0.10.2.crate) = 36402
-SHA256 (rust/crates/fax-0.2.4.crate) = b03e33ad0e71af414ef9d2b0a94d23ff59115bb068e6a6a06c0952f2c22ffd77
-SIZE (rust/crates/fax-0.2.4.crate) = 12554
-SHA256 (rust/crates/fax_derive-0.1.0.crate) = 3c1d7ffc9f2dc8316348c75281a99c8fdc60c1ddf4f82a366d117bf1b74d5a39
-SIZE (rust/crates/fax_derive-0.1.0.crate) = 3974
+SHA256 (rust/crates/equivalent-1.0.2.crate) = 877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f
+SIZE (rust/crates/equivalent-1.0.2.crate) = 7419
+SHA256 (rust/crates/fax-0.2.6.crate) = f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab
+SIZE (rust/crates/fax-0.2.6.crate) = 13279
+SHA256 (rust/crates/fax_derive-0.2.0.crate) = a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d
+SIZE (rust/crates/fax_derive-0.2.0.crate) = 4442
+SHA256 (rust/crates/foldhash-0.2.0.crate) = 77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb
+SIZE (rust/crates/foldhash-0.2.0.crate) = 23329
SHA256 (rust/crates/generic-array-0.14.7.crate) = 85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a
SIZE (rust/crates/generic-array-0.14.7.crate) = 15950
SHA256 (rust/crates/globalcache-0.2.4.crate) = 240a3059d86f2ba6859ac79f95ff94e65606abc775c1bc0ecf9b6590fb35dc04
SIZE (rust/crates/globalcache-0.2.4.crate) = 4454
+SHA256 (rust/crates/half-2.7.1.crate) = 6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b
+SIZE (rust/crates/half-2.7.1.crate) = 61040
+SHA256 (rust/crates/hashbrown-0.16.1.crate) = 841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100
+SIZE (rust/crates/hashbrown-0.16.1.crate) = 147785
SHA256 (rust/crates/heck-0.4.1.crate) = 95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8
SIZE (rust/crates/heck-0.4.1.crate) = 11567
SHA256 (rust/crates/heck-0.5.0.crate) = 2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea
SIZE (rust/crates/heck-0.5.0.crate) = 11517
SHA256 (rust/crates/hermit-abi-0.5.2.crate) = fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c
SIZE (rust/crates/hermit-abi-0.5.2.crate) = 17435
-SHA256 (rust/crates/humantime-2.2.0.crate) = 9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f
-SIZE (rust/crates/humantime-2.2.0.crate) = 20646
-SHA256 (rust/crates/indicatif-0.18.0.crate) = 70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd
-SIZE (rust/crates/indicatif-0.18.0.crate) = 67969
-SHA256 (rust/crates/inflate-0.4.5.crate) = 1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff
-SIZE (rust/crates/inflate-0.4.5.crate) = 17715
+SHA256 (rust/crates/humantime-2.3.0.crate) = 135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424
+SIZE (rust/crates/humantime-2.3.0.crate) = 23242
+SHA256 (rust/crates/indexmap-2.13.0.crate) = 7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017
+SIZE (rust/crates/indexmap-2.13.0.crate) = 102206
+SHA256 (rust/crates/indicatif-0.17.11.crate) = 183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235
+SIZE (rust/crates/indicatif-0.17.11.crate) = 66577
SHA256 (rust/crates/inout-0.1.4.crate) = 879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01
SIZE (rust/crates/inout-0.1.4.crate) = 11280
-SHA256 (rust/crates/is-terminal-0.4.16.crate) = e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9
-SIZE (rust/crates/is-terminal-0.4.16.crate) = 7811
-SHA256 (rust/crates/is_terminal_polyfill-1.70.1.crate) = 7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf
-SIZE (rust/crates/is_terminal_polyfill-1.70.1.crate) = 7492
+SHA256 (rust/crates/is-terminal-0.4.17.crate) = 3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46
+SIZE (rust/crates/is-terminal-0.4.17.crate) = 7458
+SHA256 (rust/crates/is_terminal_polyfill-1.70.2.crate) = a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695
+SIZE (rust/crates/is_terminal_polyfill-1.70.2.crate) = 7548
SHA256 (rust/crates/istring-0.3.4.crate) = 875cc6fb9aecbc1a9bd736f2d18b12e0756b4c80c5e35e28262154abcb077a39
SIZE (rust/crates/istring-0.3.4.crate) = 9292
SHA256 (rust/crates/itertools-0.10.5.crate) = b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473
SIZE (rust/crates/itertools-0.10.5.crate) = 115354
+SHA256 (rust/crates/itoa-1.0.17.crate) = 92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2
+SIZE (rust/crates/itoa-1.0.17.crate) = 15905
SHA256 (rust/crates/jpeg-decoder-0.3.2.crate) = 00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07
SIZE (rust/crates/jpeg-decoder-0.3.2.crate) = 745371
-SHA256 (rust/crates/js-sys-0.3.77.crate) = 1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f
-SIZE (rust/crates/js-sys-0.3.77.crate) = 55538
+SHA256 (rust/crates/js-sys-0.3.91.crate) = b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c
+SIZE (rust/crates/js-sys-0.3.91.crate) = 91416
SHA256 (rust/crates/lazy_static-1.5.0.crate) = bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe
SIZE (rust/crates/lazy_static-1.5.0.crate) = 14025
-SHA256 (rust/crates/libc-0.2.174.crate) = 1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776
-SIZE (rust/crates/libc-0.2.174.crate) = 779933
-SHA256 (rust/crates/log-0.4.27.crate) = 13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94
-SIZE (rust/crates/log-0.4.27.crate) = 48120
+SHA256 (rust/crates/libc-0.2.183.crate) = b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d
+SIZE (rust/crates/libc-0.2.183.crate) = 816918
+SHA256 (rust/crates/libflate-2.2.1.crate) = e3248b8d211bd23a104a42d81b4fa8bb8ac4a3b75e7a43d85d2c9ccb6179cd74
+SIZE (rust/crates/libflate-2.2.1.crate) = 40550
+SHA256 (rust/crates/libflate_lz77-2.2.0.crate) = a599cb10a9cd92b1300debcef28da8f70b935ec937f44fcd1b70a7c986a11c5c
+SIZE (rust/crates/libflate_lz77-2.2.0.crate) = 7627
+SHA256 (rust/crates/log-0.4.19.crate) = b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4
+SIZE (rust/crates/log-0.4.19.crate) = 38073
SHA256 (rust/crates/md5-0.7.0.crate) = 490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771
SIZE (rust/crates/md5-0.7.0.crate) = 6671
-SHA256 (rust/crates/memchr-2.7.5.crate) = 32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0
-SIZE (rust/crates/memchr-2.7.5.crate) = 97603
+SHA256 (rust/crates/memchr-2.8.0.crate) = f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79
+SIZE (rust/crates/memchr-2.8.0.crate) = 97780
+SHA256 (rust/crates/nix-0.31.2.crate) = 5d6d0705320c1e6ba1d912b5e37cf18071b6c2e9b7fa8215a1e8a7651966f5d3
+SIZE (rust/crates/nix-0.31.2.crate) = 346284
SHA256 (rust/crates/num-traits-0.2.19.crate) = 071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841
SIZE (rust/crates/num-traits-0.2.19.crate) = 51631
-SHA256 (rust/crates/once_cell-1.21.3.crate) = 42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d
-SIZE (rust/crates/once_cell-1.21.3.crate) = 34534
-SHA256 (rust/crates/once_cell_polyfill-1.70.1.crate) = a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad
-SIZE (rust/crates/once_cell_polyfill-1.70.1.crate) = 7510
-SHA256 (rust/crates/pdf-0.8.1.crate) = e375ec076445f61d4dbc4636e9e788f841d279c65d6fea8a3875caddd4f2dd82
-SIZE (rust/crates/pdf-0.8.1.crate) = 83247
-SHA256 (rust/crates/pdf_derive-0.1.22.crate) = 7f4007262775d0798de87b15cbc64cf1aed5f7ee87eec847e297b69d8ed4b4f8
-SIZE (rust/crates/pdf_derive-0.1.22.crate) = 6284
-SHA256 (rust/crates/portable-atomic-1.11.1.crate) = f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483
-SIZE (rust/crates/portable-atomic-1.11.1.crate) = 185506
+SHA256 (rust/crates/number_prefix-0.4.0.crate) = 830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3
+SIZE (rust/crates/number_prefix-0.4.0.crate) = 6922
+SHA256 (rust/crates/objc2-0.6.4.crate) = 3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f
+SIZE (rust/crates/objc2-0.6.4.crate) = 275200
+SHA256 (rust/crates/objc2-encode-4.1.0.crate) = ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33
+SIZE (rust/crates/objc2-encode-4.1.0.crate) = 21004
+SHA256 (rust/crates/once_cell-1.21.4.crate) = 9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50
+SIZE (rust/crates/once_cell-1.21.4.crate) = 35010
+SHA256 (rust/crates/once_cell_polyfill-1.70.2.crate) = 384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe
+SIZE (rust/crates/once_cell_polyfill-1.70.2.crate) = 7448
+SHA256 (rust/crates/oorandom-11.1.5.crate) = d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e
+SIZE (rust/crates/oorandom-11.1.5.crate) = 23750
+SHA256 (rust/crates/pdf-0.9.0.crate) = 3afc7e745846405d572daba57a429f30a198d955602aff8a1a9e437c2abfcaa2
+SIZE (rust/crates/pdf-0.9.0.crate) = 92207
+SHA256 (rust/crates/pdf_derive-0.2.0.crate) = 1038b9cb38dec35eeee9f23eacfb2480087982f9b7e9221efa8034eea9ca2360
+SIZE (rust/crates/pdf_derive-0.2.0.crate) = 7079
+SHA256 (rust/crates/plotters-0.3.7.crate) = 5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747
+SIZE (rust/crates/plotters-0.3.7.crate) = 149031
+SHA256 (rust/crates/plotters-backend-0.3.7.crate) = df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a
+SIZE (rust/crates/plotters-backend-0.3.7.crate) = 13709
+SHA256 (rust/crates/plotters-svg-0.3.7.crate) = 51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670
+SIZE (rust/crates/plotters-svg-0.3.7.crate) = 6715
+SHA256 (rust/crates/portable-atomic-1.13.1.crate) = c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49
+SIZE (rust/crates/portable-atomic-1.13.1.crate) = 197001
SHA256 (rust/crates/pretty_env_logger-0.5.0.crate) = 865724d4dbe39d9f3dd3b52b88d859d66bcb2d6a0acfd5ea68a65fb66d4bdc1c
SIZE (rust/crates/pretty_env_logger-0.5.0.crate) = 9810
-SHA256 (rust/crates/proc-macro2-1.0.95.crate) = 02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778
-SIZE (rust/crates/proc-macro2-1.0.95.crate) = 51820
-SHA256 (rust/crates/quote-1.0.40.crate) = 1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d
-SIZE (rust/crates/quote-1.0.40.crate) = 31063
-SHA256 (rust/crates/regex-1.11.1.crate) = b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191
-SIZE (rust/crates/regex-1.11.1.crate) = 254170
-SHA256 (rust/crates/regex-automata-0.4.9.crate) = 809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908
-SIZE (rust/crates/regex-automata-0.4.9.crate) = 618525
-SHA256 (rust/crates/regex-syntax-0.8.5.crate) = 2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c
-SIZE (rust/crates/regex-syntax-0.8.5.crate) = 357541
-SHA256 (rust/crates/serde-1.0.219.crate) = 5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6
-SIZE (rust/crates/serde-1.0.219.crate) = 78983
-SHA256 (rust/crates/serde_derive-1.0.219.crate) = 5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00
-SIZE (rust/crates/serde_derive-1.0.219.crate) = 57798
+SHA256 (rust/crates/proc-macro2-1.0.106.crate) = 8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934
+SIZE (rust/crates/proc-macro2-1.0.106.crate) = 59765
+SHA256 (rust/crates/quote-1.0.45.crate) = 41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924
+SIZE (rust/crates/quote-1.0.45.crate) = 31564
+SHA256 (rust/crates/rayon-1.11.0.crate) = 368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f
+SIZE (rust/crates/rayon-1.11.0.crate) = 182470
+SHA256 (rust/crates/rayon-core-1.13.0.crate) = 22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91
+SIZE (rust/crates/rayon-core-1.13.0.crate) = 73151
+SHA256 (rust/crates/regex-1.12.3.crate) = e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276
+SIZE (rust/crates/regex-1.12.3.crate) = 153392
+SHA256 (rust/crates/regex-automata-0.4.14.crate) = 6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f
+SIZE (rust/crates/regex-automata-0.4.14.crate) = 618012
+SHA256 (rust/crates/regex-syntax-0.8.10.crate) = dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a
+SIZE (rust/crates/regex-syntax-0.8.10.crate) = 358781
+SHA256 (rust/crates/rle-decode-fast-1.0.3.crate) = 3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422
+SIZE (rust/crates/rle-decode-fast-1.0.3.crate) = 62086
+SHA256 (rust/crates/rustversion-1.0.22.crate) = b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d
+SIZE (rust/crates/rustversion-1.0.22.crate) = 21096
+SHA256 (rust/crates/same-file-1.0.6.crate) = 93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502
+SIZE (rust/crates/same-file-1.0.6.crate) = 10183
+SHA256 (rust/crates/serde-1.0.228.crate) = 9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e
+SIZE (rust/crates/serde-1.0.228.crate) = 83652
+SHA256 (rust/crates/serde_core-1.0.228.crate) = 41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad
+SIZE (rust/crates/serde_core-1.0.228.crate) = 63111
+SHA256 (rust/crates/serde_derive-1.0.228.crate) = d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79
+SIZE (rust/crates/serde_derive-1.0.228.crate) = 59605
+SHA256 (rust/crates/serde_json-1.0.149.crate) = 83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86
+SIZE (rust/crates/serde_json-1.0.149.crate) = 155994
SHA256 (rust/crates/sha2-0.10.9.crate) = a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283
SIZE (rust/crates/sha2-0.10.9.crate) = 29271
SHA256 (rust/crates/snafu-0.7.5.crate) = e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6
@@ -167,89 +245,81 @@ SHA256 (rust/crates/strsim-0.11.1.crate) = 7da8b5736845d9f2fcb837ea5d9e2628564b3
SIZE (rust/crates/strsim-0.11.1.crate) = 14266
SHA256 (rust/crates/syn-1.0.109.crate) = 72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237
SIZE (rust/crates/syn-1.0.109.crate) = 237611
-SHA256 (rust/crates/syn-2.0.104.crate) = 17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40
-SIZE (rust/crates/syn-2.0.104.crate) = 299699
+SHA256 (rust/crates/syn-2.0.117.crate) = e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99
+SIZE (rust/crates/syn-2.0.117.crate) = 306011
SHA256 (rust/crates/termcolor-1.4.1.crate) = 06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755
SIZE (rust/crates/termcolor-1.4.1.crate) = 18773
-SHA256 (rust/crates/tinyvec-1.9.0.crate) = 09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71
-SIZE (rust/crates/tinyvec-1.9.0.crate) = 54137
+SHA256 (rust/crates/tinytemplate-1.2.1.crate) = be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc
+SIZE (rust/crates/tinytemplate-1.2.1.crate) = 26490
+SHA256 (rust/crates/tinyvec-1.11.0.crate) = 3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3
+SIZE (rust/crates/tinyvec-1.11.0.crate) = 53096
SHA256 (rust/crates/tinyvec_macros-0.1.1.crate) = 1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20
SIZE (rust/crates/tinyvec_macros-0.1.1.crate) = 5865
SHA256 (rust/crates/tuple-0.5.2.crate) = 9bb9f6bd73479481158ba8ee3edf17aca93354623d13f02e96a2014fdbc1c37e
SIZE (rust/crates/tuple-0.5.2.crate) = 10289
-SHA256 (rust/crates/typenum-1.18.0.crate) = 1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f
-SIZE (rust/crates/typenum-1.18.0.crate) = 74871
+SHA256 (rust/crates/typenum-1.19.0.crate) = 562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb
+SIZE (rust/crates/typenum-1.19.0.crate) = 76414
SHA256 (rust/crates/unicode-bidi-0.3.18.crate) = 5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5
SIZE (rust/crates/unicode-bidi-0.3.18.crate) = 58300
-SHA256 (rust/crates/unicode-ident-1.0.18.crate) = 5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512
-SIZE (rust/crates/unicode-ident-1.0.18.crate) = 47743
-SHA256 (rust/crates/unicode-normalization-0.1.24.crate) = 5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956
-SIZE (rust/crates/unicode-normalization-0.1.24.crate) = 126536
-SHA256 (rust/crates/unicode-properties-0.1.3.crate) = e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0
-SIZE (rust/crates/unicode-properties-0.1.3.crate) = 42252
-SHA256 (rust/crates/unicode-width-0.2.1.crate) = 4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c
-SIZE (rust/crates/unicode-width-0.2.1.crate) = 279344
-SHA256 (rust/crates/unit-prefix-0.5.1.crate) = 323402cff2dd658f39ca17c789b502021b3f18707c91cdf22e3838e1b4023817
-SIZE (rust/crates/unit-prefix-0.5.1.crate) = 7627
+SHA256 (rust/crates/unicode-ident-1.0.24.crate) = e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75
+SIZE (rust/crates/unicode-ident-1.0.24.crate) = 49298
+SHA256 (rust/crates/unicode-normalization-0.1.25.crate) = 5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8
+SIZE (rust/crates/unicode-normalization-0.1.25.crate) = 128462
+SHA256 (rust/crates/unicode-properties-0.1.4.crate) = 7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d
+SIZE (rust/crates/unicode-properties-0.1.4.crate) = 42752
+SHA256 (rust/crates/unicode-width-0.2.2.crate) = b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254
+SIZE (rust/crates/unicode-width-0.2.2.crate) = 282768
SHA256 (rust/crates/utf8parse-0.2.2.crate) = 06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821
SIZE (rust/crates/utf8parse-0.2.2.crate) = 13499
SHA256 (rust/crates/version_check-0.9.5.crate) = 0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a
SIZE (rust/crates/version_check-0.9.5.crate) = 15554
-SHA256 (rust/crates/wasm-bindgen-0.2.100.crate) = 1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5
-SIZE (rust/crates/wasm-bindgen-0.2.100.crate) = 48288
-SHA256 (rust/crates/wasm-bindgen-backend-0.2.100.crate) = 2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6
-SIZE (rust/crates/wasm-bindgen-backend-0.2.100.crate) = 32111
-SHA256 (rust/crates/wasm-bindgen-macro-0.2.100.crate) = 7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407
-SIZE (rust/crates/wasm-bindgen-macro-0.2.100.crate) = 9663
-SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.100.crate) = 8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de
-SIZE (rust/crates/wasm-bindgen-macro-support-0.2.100.crate) = 26243
-SHA256 (rust/crates/wasm-bindgen-shared-0.2.100.crate) = 1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d
-SIZE (rust/crates/wasm-bindgen-shared-0.2.100.crate) = 8570
+SHA256 (rust/crates/walkdir-2.5.0.crate) = 29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b
+SIZE (rust/crates/walkdir-2.5.0.crate) = 23951
+SHA256 (rust/crates/wasm-bindgen-0.2.114.crate) = 6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e
+SIZE (rust/crates/wasm-bindgen-0.2.114.crate) = 59350
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.114.crate) = 18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6
+SIZE (rust/crates/wasm-bindgen-macro-0.2.114.crate) = 9289
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.114.crate) = 03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.114.crate) = 63445
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.114.crate) = 75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16
+SIZE (rust/crates/wasm-bindgen-shared-0.2.114.crate) = 10538
+SHA256 (rust/crates/web-sys-0.3.91.crate) = 854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9
+SIZE (rust/crates/web-sys-0.3.91.crate) = 669788
SHA256 (rust/crates/web-time-1.1.0.crate) = 5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb
SIZE (rust/crates/web-time-1.1.0.crate) = 18026
-SHA256 (rust/crates/weezl-0.1.10.crate) = a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3
-SIZE (rust/crates/weezl-0.1.10.crate) = 46418
-SHA256 (rust/crates/winapi-util-0.1.9.crate) = cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb
-SIZE (rust/crates/winapi-util-0.1.9.crate) = 12464
+SHA256 (rust/crates/weezl-0.1.12.crate) = a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88
+SIZE (rust/crates/weezl-0.1.12.crate) = 46045
+SHA256 (rust/crates/winapi-util-0.1.11.crate) = c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22
+SIZE (rust/crates/winapi-util-0.1.11.crate) = 13368
+SHA256 (rust/crates/windows-link-0.2.1.crate) = f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5
+SIZE (rust/crates/windows-link-0.2.1.crate) = 6133
SHA256 (rust/crates/windows-sys-0.59.0.crate) = 1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b
SIZE (rust/crates/windows-sys-0.59.0.crate) = 2387323
-SHA256 (rust/crates/windows-sys-0.60.2.crate) = f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb
-SIZE (rust/crates/windows-sys-0.60.2.crate) = 2518479
+SHA256 (rust/crates/windows-sys-0.61.2.crate) = ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc
+SIZE (rust/crates/windows-sys-0.61.2.crate) = 2517186
SHA256 (rust/crates/windows-targets-0.52.6.crate) = 9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973
SIZE (rust/crates/windows-targets-0.52.6.crate) = 6403
-SHA256 (rust/crates/windows-targets-0.53.2.crate) = c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef
-SIZE (rust/crates/windows-targets-0.53.2.crate) = 7046
SHA256 (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3
SIZE (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 435718
-SHA256 (rust/crates/windows_aarch64_gnullvm-0.53.0.crate) = 86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764
-SIZE (rust/crates/windows_aarch64_gnullvm-0.53.0.crate) = 782443
SHA256 (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469
SIZE (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 832615
-SHA256 (rust/crates/windows_aarch64_msvc-0.53.0.crate) = c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c
-SIZE (rust/crates/windows_aarch64_msvc-0.53.0.crate) = 834446
SHA256 (rust/crates/windows_i686_gnu-0.52.6.crate) = 8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b
SIZE (rust/crates/windows_i686_gnu-0.52.6.crate) = 880402
-SHA256 (rust/crates/windows_i686_gnu-0.53.0.crate) = c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3
-SIZE (rust/crates/windows_i686_gnu-0.53.0.crate) = 936973
SHA256 (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66
SIZE (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 475940
-SHA256 (rust/crates/windows_i686_gnullvm-0.53.0.crate) = 9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11
-SIZE (rust/crates/windows_i686_gnullvm-0.53.0.crate) = 854056
SHA256 (rust/crates/windows_i686_msvc-0.52.6.crate) = 240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66
SIZE (rust/crates/windows_i686_msvc-0.52.6.crate) = 901163
-SHA256 (rust/crates/windows_i686_msvc-0.53.0.crate) = 581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d
-SIZE (rust/crates/windows_i686_msvc-0.53.0.crate) = 903450
SHA256 (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78
SIZE (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 836363
-SHA256 (rust/crates/windows_x86_64_gnu-0.53.0.crate) = 2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba
-SIZE (rust/crates/windows_x86_64_gnu-0.53.0.crate) = 902585
SHA256 (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d
SIZE (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 435707
-SHA256 (rust/crates/windows_x86_64_gnullvm-0.53.0.crate) = 0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57
-SIZE (rust/crates/windows_x86_64_gnullvm-0.53.0.crate) = 782434
SHA256 (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec
SIZE (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 832564
-SHA256 (rust/crates/windows_x86_64_msvc-0.53.0.crate) = 271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486
-SIZE (rust/crates/windows_x86_64_msvc-0.53.0.crate) = 834400
-SHA256 (mufeedvh-pdfrip-v2.0.1_GH0.tar.gz) = 60f284d79bac98c97e6eaa1a2f29d66055de5b3c8a129eb14b24057a7cb31cd3
-SIZE (mufeedvh-pdfrip-v2.0.1_GH0.tar.gz) = 5524108
+SHA256 (rust/crates/zerocopy-0.8.42.crate) = f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3
+SIZE (rust/crates/zerocopy-0.8.42.crate) = 275035
+SHA256 (rust/crates/zerocopy-derive-0.8.42.crate) = 7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f
+SIZE (rust/crates/zerocopy-derive-0.8.42.crate) = 97730
+SHA256 (rust/crates/zmij-1.0.21.crate) = b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa
+SIZE (rust/crates/zmij-1.0.21.crate) = 26665
+SHA256 (mufeedvh-pdfrip-v3.0.0_GH0.tar.gz) = e75bb5bcc2b58f80189dd10ba18e3cb8673935316172b8bd7a63822859cba11b
+SIZE (mufeedvh-pdfrip-v3.0.0_GH0.tar.gz) = 5593559
diff --git a/security/pdfrip/files/patch-Cargo.toml b/security/pdfrip/files/patch-Cargo.toml
deleted file mode 100644
index 2ecb0896f735..000000000000
--- a/security/pdfrip/files/patch-Cargo.toml
+++ /dev/null
@@ -1,13 +0,0 @@
-Update the library to fix build breakage.
-
---- Cargo.toml.orig 2025-07-27 21:02:59 UTC
-+++ Cargo.toml
-@@ -5,7 +5,7 @@ authors = ["Mufeed VH <mufeed@lyminal.space>", "Pommaq
- authors = ["Mufeed VH <mufeed@lyminal.space>", "Pommaq"]
-
- [dependencies]
--indicatif = "0.16.2"
-+indicatif = "0.18.0"
- log = "0.4.19"
- anyhow = "1.0.72"
- crossbeam = "0.8.2"
diff --git a/security/pdfrip/files/patch-src_core_engine.rs b/security/pdfrip/files/patch-src_core_engine.rs
deleted file mode 100644
index ed1f65578d73..000000000000
--- a/security/pdfrip/files/patch-src_core_engine.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-Patch the code to be compatible with the library bump.
-
---- src/core/engine.rs.orig 2024-01-09 13:27:28 UTC
-+++ src/core/engine.rs
-@@ -48,9 +48,9 @@ pub fn crack_file(
- let mut success = None;
-
- let progress_bar = ProgressBar::new(producer.size() as u64);
-- progress_bar.set_draw_delta(1000);
- progress_bar.set_style(ProgressStyle::default_bar()
-- .template("{spinner:.green} [{elapsed_precise}] [{bar:40.cyan/blue}] {pos:>7}/{len:7} {percent}% {per_sec} ETA: {eta}"));
-+ .template("{spinner:.green} [{elapsed_precise}] [{bar:40.cyan/blue}] {pos:>7}/{len:7} {percent}% {per_sec} ETA: {eta}")
-+ .unwrap());
-
- loop {
- match success_reader.try_recv() {