From 791f3ae9c8f9e32857f04b23427712e1291e7c6f Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Thu, 15 Aug 2024 15:07:10 +0900 Subject: [PATCH 1/4] test(test_record_samples): added size_t test refs: https://github.com/omerbenamram/evtx/pull/232 --- tests/test_record_samples.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/test_record_samples.rs b/tests/test_record_samples.rs index ef57a99..ce733c4 100644 --- a/tests/test_record_samples.rs +++ b/tests/test_record_samples.rs @@ -184,6 +184,24 @@ fn test_event_xml_sample_with_entity_ref_2() { insta::assert_display_snapshot!(record.data); } +#[test] +fn test_event_json_with_size_t() { + ensure_env_logger_initialized(); + let evtx_file = include_bytes!("../samples/Security_with_size_t.evtx"); + let mut parser = EvtxParser::from_buffer(evtx_file.to_vec()) + .unwrap() + .with_configuration(ParserSettings::new().num_threads(1)); + + let record = parser + .records_json() + .filter_map(|record| record.ok()) + .find(|record| record.event_record_id == 196) + .expect("record to parse correctly"); + + let value: Value = serde_json::from_str(&record.data).expect("to parse correctly"); + insta::assert_json_snapshot!(&value); +} + #[test] fn test_event_json_with_multiple_nodes_same_name() { ensure_env_logger_initialized(); From 29243a0adc3de2e6c5698325ce2fa4363f4290a7 Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Thu, 15 Aug 2024 16:09:13 +0900 Subject: [PATCH 2/4] adapted clap v4 refs: https://github.com/omerbenamram/evtx/pull/233 --- Cargo.lock | 119 +++--------------------------- Cargo.toml | 2 +- src/bin/evtx_dump.rs | 138 ++++++++++++++++++----------------- src/lib.rs | 1 - src/utils/time.rs | 19 ++--- tests/test_record_samples.rs | 32 ++------ 6 files changed, 95 insertions(+), 216 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 84ec943..8d0d74d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -120,17 +120,6 @@ dependencies = [ "wait-timeout", ] -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - [[package]] name = "autocfg" version = "1.3.0" @@ -269,21 +258,6 @@ dependencies = [ "half", ] -[[package]] -name = "clap" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" -dependencies = [ - "atty", - "bitflags 1.3.2", - "clap_lex 0.2.4", - "indexmap", - "strsim", - "termcolor", - "textwrap", -] - [[package]] name = "clap" version = "4.5.8" @@ -299,17 +273,10 @@ version = "4.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1c09dd5ada6c6c78075d6fd0da3f90d8080651e2d6cc8eb2f1aaa4034ced708" dependencies = [ + "anstream", "anstyle", - "clap_lex 0.7.1", -] - -[[package]] -name = "clap_lex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", + "clap_lex", + "strsim", ] [[package]] @@ -367,7 +334,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.8", + "clap", "criterion-plot", "is-terminal", "itertools", @@ -583,13 +550,13 @@ dependencies = [ "bitflags 2.6.0", "byteorder", "chrono", - "clap 3.2.25", + "clap", "crc32fast", "criterion", "dialoguer", "encoding", "env_logger", - "hashbrown 0.14.5", + "hashbrown", "indoc", "insta", "jemallocator", @@ -639,12 +606,6 @@ dependencies = [ "crunchy", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.14.5" @@ -655,15 +616,6 @@ dependencies = [ "allocator-api2", ] -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - [[package]] name = "hermit-abi" version = "0.3.9" @@ -699,16 +651,6 @@ dependencies = [ "cc", ] -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - [[package]] name = "indoc" version = "2.0.5" @@ -735,7 +677,7 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi", "libc", "windows-sys", ] @@ -887,12 +829,6 @@ version = "11.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" -[[package]] -name = "os_str_bytes" -version = "6.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" - [[package]] name = "pin-utils" version = "0.1.0" @@ -1190,9 +1126,9 @@ dependencies = [ [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" @@ -1228,27 +1164,12 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - [[package]] name = "termtree" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" -[[package]] -name = "textwrap" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" - [[package]] name = "thiserror" version = "1.0.61" @@ -1395,22 +1316,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - [[package]] name = "winapi-util" version = "0.1.8" @@ -1420,12 +1325,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - [[package]] name = "windows-core" version = "0.52.0" diff --git a/Cargo.toml b/Cargo.toml index 4dba7ac..9f9c6d9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ memchr = "2.*" # `evtx_dump` dependencies anyhow = { version = "*", optional = true } -clap = { version = "3.2", optional = true } +clap = { version = "4", optional = true } dialoguer = { version = "*", optional = true } indoc = { version = "*", optional = true } diff --git a/src/bin/evtx_dump.rs b/src/bin/evtx_dump.rs index ecb5ff1..856d3bb 100644 --- a/src/bin/evtx_dump.rs +++ b/src/bin/evtx_dump.rs @@ -1,7 +1,7 @@ #![allow(clippy::upper_case_acronyms)] use anyhow::{bail, format_err, Context, Result}; -use clap::{AppSettings, Arg, ArgMatches, Command}; +use clap::{Arg, ArgAction, ArgMatches, Command}; use dialoguer::Confirm; use indoc::indoc; @@ -48,19 +48,23 @@ impl EvtxDump { pub fn from_cli_matches(matches: &ArgMatches) -> Result { let input = PathBuf::from( matches - .value_of("INPUT") + .get_one::("INPUT") .expect("This is a required argument"), ); - let output_format = match matches.value_of("output-format").unwrap_or_default() { + let output_format = match matches + .get_one::("output-format") + .expect("has default") + .as_str() + { "xml" => EvtxOutputFormat::XML, "json" | "jsonl" => EvtxOutputFormat::JSON, _ => EvtxOutputFormat::XML, }; let no_indent = match ( - matches.is_present("no-indent"), - matches.value_of("output-format"), + matches.get_flag("no-indent"), + matches.get_one::("output-format"), ) { // "jsonl" --> --no-indent (false, Some(fmt)) => fmt == "jsonl", @@ -74,13 +78,13 @@ impl EvtxDump { } (v, None) => v, }; - let display_allocation = matches.is_present("display-allocation"); - let separate_json_attrib_flag = matches.is_present("separate-json-attributes"); - let parse_empty_chunks_flag = matches.is_present("parse-empty-chunks"); + let display_allocation = matches.get_flag("display-allocation"); + let separate_json_attrib_flag = matches.get_flag("separate-json-attributes"); + let parse_empty_chunks_flag = matches.get_flag("parse-empty-chunks"); let no_show_record_number = match ( - matches.is_present("no-show-record-number"), - matches.value_of("output-format"), + matches.get_flag("no-show-record-number"), + matches.get_one::("output-format"), ) { // "jsonl" --> --no-show-record-number (false, Some(fmt)) => fmt == "jsonl", @@ -95,28 +99,25 @@ impl EvtxDump { (v, None) => v, }; - let num_threads = matches - .value_of("num-threads") - .map(|value| value.parse::().expect("used validator")); + let num_threads: u32 = *matches.get_one("num-threads").expect("has default"); let num_threads = match (cfg!(feature = "multithreading"), num_threads) { - (true, Some(number)) => number, - (true, None) => 0, + (true, number) => number, (false, _) => { eprintln!("turned on threads, but library was compiled without `multithreading` feature! using fallback sync iterator"); 1 } }; - let validate_checksums = matches.is_present("validate-checksums"); - let stop_after_error = matches.is_present("stop-after-one-error"); + let validate_checksums = matches.get_flag("validate-checksums"); + let stop_after_error = matches.get_flag("stop-after-one-error"); let event_ranges = matches - .value_of("event-ranges") + .get_one::<&String>("event-ranges") .map(|s| Ranges::from_str(s).expect("used validator")); // hayabusa-evtx does not use logging, so this is commented out. - // let verbosity_level = match matches.occurrences_of("verbose") { + // let verbosity_level = match matches.get_count("verbose") { // 0 => None, // 1 => Some(Level::Info), // 2 => Some(Level::Debug), @@ -129,12 +130,19 @@ impl EvtxDump { let ansi_codec = encodings() .iter() - .find(|c| c.name() == matches.value_of("ansi-codec").expect("has set default")) + .find(|c| { + c.name() + == matches + .get_one::<&String>("ansi-codec") + .expect("has set default") + .as_str() + }) .expect("possible values are derived from `encodings()`"); - let output: Box = if let Some(path) = matches.value_of("output-target") { + let output: Box = if let Some(path) = matches.get_one::<&String>("output-target") + { Box::new(BufWriter::new( - Self::create_output_file(path, !matches.is_present("no-confirm-overwrite")) + Self::create_output_file(path, !matches.get_flag("no-confirm-overwrite")) .with_context(|| { format!("An error occurred while creating output file at `{path}`") })?, @@ -145,7 +153,7 @@ impl EvtxDump { Ok(EvtxDump { parser_settings: ParserSettings::new() - .num_threads(num_threads) + .num_threads(num_threads.try_into().expect("u32 -> usize")) .validate_checksums(validate_checksums) .separate_json_attributes(separate_json_attrib_flag) .parse_empty_chunks(parse_empty_chunks_flag) @@ -201,7 +209,7 @@ impl EvtxDump { if p.exists() { if prompt { match Confirm::new() - .with_prompt(&format!( + .with_prompt(format!( "Are you sure you want to override output file at {}", p.display() )) @@ -280,13 +288,6 @@ impl EvtxDump { } } -fn is_a_non_negative_number(value: &str) -> Result<(), String> { - match value.to_string().parse::() { - Ok(_) => Ok(()), - Err(_) => Err("Expected value to be a positive number.".to_owned()), - } -} - struct Ranges(Vec>); impl Ranges { @@ -360,25 +361,30 @@ fn test_ranges() { } fn main() -> Result<()> { + let all_encodings = encodings() + .iter() + .filter(|&e| e.raw_decoder().is_ascii_compatible()) + .map(|e| e.name()) + .collect::>(); + let matches = Command::new("EVTX Parser") .version(env!("CARGO_PKG_VERSION")) - .setting(AppSettings::DeriveDisplayOrder) .author("Omer B. ") .about("Utility to parse EVTX files") .arg(Arg::new("INPUT").required(true)) .arg( Arg::new("num-threads") .short('t') - .long("--threads") + .long("threads") .default_value("0") - .validator(is_a_non_negative_number) + .value_parser(clap::value_parser!(u32).range(0..)) .help("Sets the number of worker threads, defaults to number of CPU cores."), ) .arg( Arg::new("output-format") .short('o') - .long("--format") - .possible_values(["json", "xml", "jsonl"]) + .long("format") + .value_parser(["json", "xml", "jsonl"]) .default_value("xml") .help("Sets the output format") .long_help(indoc!( @@ -390,24 +396,24 @@ fn main() -> Result<()> { ) .arg( Arg::new("output-target") - .long("--output") + .long("output") .short('f') - .takes_value(true) + .action(ArgAction::Set) .help(indoc!("Writes output to the file specified instead of stdout, errors will still be printed to stderr. Will ask for confirmation before overwriting files, to allow overwriting, pass `--no-confirm-overwrite` Will create parent directories if needed.")), ) .arg( Arg::new("no-confirm-overwrite") - .long("--no-confirm-overwrite") - .takes_value(false) + .long("no-confirm-overwrite") + .action(ArgAction::SetTrue) .help(indoc!("When set, will not ask for confirmation before overwriting files, useful for automation")), ) .arg( - Arg::with_name("event-ranges") - .long("--events") - .takes_value(true) - .validator(matches_ranges) + Arg::new("event-ranges") + .long("events") + .action(ArgAction::Set) + .value_parser(matches_ranges) .help(indoc!("When set, only the specified events (offseted reltaive to file) will be outputted. For example: --events=1 will output the first event. @@ -415,62 +421,58 @@ fn main() -> Result<()> { ")), ) .arg( - Arg::with_name("validate-checksums") - .long("--validate-checksums") - .takes_value(false) + Arg::new("validate-checksums") + .long("validate-checksums") + .action(ArgAction::SetTrue) .help(indoc!("When set, chunks with invalid checksums will not be parsed. \ Usually dirty files have bad checksums, so using this flag will result in fewer records.")), ) .arg( Arg::new("no-indent") - .long("--no-indent") - .takes_value(false) + .long("no-indent") + .action(ArgAction::SetTrue) .help("When set, output will not be indented."), ) .arg( Arg::new("separate-json-attributes") - .long("--separate-json-attributes") - .takes_value(false) + .long("separate-json-attributes") + .action(ArgAction::SetTrue) .help("If outputting JSON, XML Element's attributes will be stored in a separate object named '_attributes', with containing the value of the node."), ) .arg( - Arg::with_name("parse-empty-chunks") - .long("--parse-empty-chunks") - .takes_value(false) + Arg::new("parse-empty-chunks") + .long("parse-empty-chunks") + .action(ArgAction::SetTrue) .help(indoc!("Attempt to recover records from empty chunks.")), ) .arg( - Arg::with_name("display-allocation") - .long("--display-allocation") - .takes_value(false) + Arg::new("display-allocation") + .long("display-allocation") + .action(ArgAction::SetTrue) .help(indoc!("Display allocation status in output.")), ) .arg( Arg::new("no-show-record-number") - .long("--dont-show-record-number") - .takes_value(false) + .long("dont-show-record-number") + .action(ArgAction::SetTrue) .help("When set, `Record ` will not be printed."), ) .arg( Arg::new("ansi-codec") - .long("--ansi-codec") - .possible_values(&encodings().iter() - .filter(|&e| e.raw_decoder().is_ascii_compatible()) - .map(|e| e.name()) - .collect::>()) + .long("ansi-codec") + .value_parser(all_encodings) .default_value(encoding::all::WINDOWS_1252.name()) .help("When set, controls the codec of ansi encoded strings the file."), ) .arg( Arg::new("stop-after-one-error") - .long("--stop-after-one-error") - .takes_value(false) + .long("stop-after-one-error") + .action(ArgAction::SetTrue) .help("When set, will exit after any failure of reading a record. Useful for debugging."), ) .arg(Arg::new("verbose") .short('v') - .multiple_occurrences(true) - .takes_value(false) + .action(ArgAction::Count) .help(indoc!(r#" Sets debug prints level for the application: -v - info diff --git a/src/lib.rs b/src/lib.rs index 354a654..da226ac 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,4 @@ #![deny(unused_must_use)] -#![cfg_attr(backtraces, feature(backtrace))] #![forbid(unsafe_code)] #![allow(clippy::upper_case_acronyms)] // Don't allow dbg! prints in release. diff --git a/src/utils/time.rs b/src/utils/time.rs index 69c2f35..f7afdd0 100644 --- a/src/utils/time.rs +++ b/src/utils/time.rs @@ -23,21 +23,19 @@ pub fn read_systemtime(r: &mut R) -> DeserializationResult(r: &mut R) -> DeserializationResult::from_naive_utc_and_offset( - NaiveDate::from_ymd_opt(2019, 3, 8) + let expected_date = Utc.from_utc_datetime( + &NaiveDate::from_ymd_opt(2019, 3, 8) .unwrap() .and_hms_nano_opt(23, 22, 5, 0) .unwrap(), - Utc, ); assert_eq!(date, expected_date); } diff --git a/tests/test_record_samples.rs b/tests/test_record_samples.rs index ce733c4..b270840 100644 --- a/tests/test_record_samples.rs +++ b/tests/test_record_samples.rs @@ -18,7 +18,7 @@ fn test_event_xml_sample() { .expect("to have records") .expect("record to parse correctly"); - insta::assert_display_snapshot!(first_record.data); + insta::assert_snapshot!(first_record.data); } #[test] @@ -71,7 +71,7 @@ fn test_event_xml_sample_with_event_data() { .expect("to have records") .expect("record to parse correctly"); - insta::assert_display_snapshot!(first_record.data); + insta::assert_snapshot!(first_record.data); } #[test] @@ -124,7 +124,7 @@ fn test_event_xml_sample_with_event_data_with_attributes_and_text() { .expect("to have records") .expect("record to parse correctly"); - insta::assert_display_snapshot!(first_record.data); + insta::assert_snapshot!(first_record.data); } #[test] @@ -143,7 +143,7 @@ fn test_event_xml_sample_with_user_data() { .expect("to have records") .expect("record to parse correctly"); - insta::assert_display_snapshot!(first_record.data); + insta::assert_snapshot!(first_record.data); } #[test] @@ -162,7 +162,7 @@ fn test_event_xml_sample_with_entity_ref() { .find(|record| record.event_record_id == 28) .expect("record to parse correctly"); - insta::assert_display_snapshot!(record.data); + insta::assert_snapshot!(record.data); } #[test] @@ -181,25 +181,7 @@ fn test_event_xml_sample_with_entity_ref_2() { .find(|record| record.event_record_id == 25) .expect("record to parse correctly"); - insta::assert_display_snapshot!(record.data); -} - -#[test] -fn test_event_json_with_size_t() { - ensure_env_logger_initialized(); - let evtx_file = include_bytes!("../samples/Security_with_size_t.evtx"); - let mut parser = EvtxParser::from_buffer(evtx_file.to_vec()) - .unwrap() - .with_configuration(ParserSettings::new().num_threads(1)); - - let record = parser - .records_json() - .filter_map(|record| record.ok()) - .find(|record| record.event_record_id == 196) - .expect("record to parse correctly"); - - let value: Value = serde_json::from_str(&record.data).expect("to parse correctly"); - insta::assert_json_snapshot!(&value); + insta::assert_snapshot!(record.data); } #[test] @@ -258,7 +240,7 @@ fn test_event_json_with_multiple_data_elements() { .expect("to have records") .expect("record to parse correctly"); - insta::assert_display_snapshot!(&first_record_xml.data); + insta::assert_snapshot!(&first_record_xml.data); let first_record = parser .records_json() From 13c607bc517e668f3ad43a1aeef2f0ca64b1584f Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Thu, 15 Aug 2024 16:19:46 +0900 Subject: [PATCH 3/4] fixed type error --- src/bin/evtx_dump.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/bin/evtx_dump.rs b/src/bin/evtx_dump.rs index 856d3bb..3fa06eb 100644 --- a/src/bin/evtx_dump.rs +++ b/src/bin/evtx_dump.rs @@ -133,13 +133,12 @@ impl EvtxDump { .find(|c| { c.name() == matches - .get_one::<&String>("ansi-codec") + .get_one::("ansi-codec") .expect("has set default") - .as_str() }) .expect("possible values are derived from `encodings()`"); - let output: Box = if let Some(path) = matches.get_one::<&String>("output-target") + let output: Box = if let Some(path) = matches.get_one::("output-target") { Box::new(BufWriter::new( Self::create_output_file(path, !matches.get_flag("no-confirm-overwrite")) From 31eb8d43e321ef608af770dbd61f117bf4c1bb40 Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Thu, 15 Aug 2024 16:29:45 +0900 Subject: [PATCH 4/4] cargo update --- Cargo.lock | 248 +++++++++++++++++++++++++++++------------------------ 1 file changed, 135 insertions(+), 113 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8d0d74d..c2eed62 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -52,9 +52,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -67,36 +67,36 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -107,13 +107,14 @@ checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "assert_cmd" -version = "2.0.14" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed72493ac66d5804837f480ab3766c72bdfab91a65e565fc54fa9e42db0073a8" +checksum = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d" dependencies = [ "anstyle", "bstr", "doc-comment", + "libc", "predicates", "predicates-core", "predicates-tree", @@ -140,9 +141,9 @@ checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bstr" -version = "1.9.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", "regex-automata", @@ -206,9 +207,12 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.104" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74b6a57f98764a267ff415d50a25e6e166f3831a5071af4995296ea97d210490" +checksum = "5fb8dd288a69fc53a1996d7ecfbf4a20d59065bff137ce7e56bbd620de191189" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -260,18 +264,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.8" +version = "4.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b3edb18336f4df585bc9aa31dd99c036dfa5dc5e9a2939a722a188f3a8970d" +checksum = "11d8838454fda655dafd3accb2b6e2bea645b9e4078abe84a22ceb947235c5cc" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.8" +version = "4.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1c09dd5ada6c6c78075d6fd0da3f90d8080651e2d6cc8eb2f1aaa4034ced708" +checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" dependencies = [ "anstream", "anstyle", @@ -281,15 +285,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "comma" @@ -307,14 +311,14 @@ dependencies = [ "lazy_static", "libc", "unicode-width", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "crc32fast" @@ -501,9 +505,9 @@ checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" [[package]] name = "env_filter" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" dependencies = [ "log", "regex", @@ -511,9 +515,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" dependencies = [ "anstream", "anstyle", @@ -529,7 +533,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -618,9 +622,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] name = "humantime" @@ -673,20 +677,20 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ "hermit-abi", "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" @@ -725,9 +729,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -825,9 +829,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "oorandom" -version = "11.1.3" +version = "11.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "pin-utils" @@ -871,9 +875,9 @@ dependencies = [ [[package]] name = "predicates" -version = "3.1.0" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8" +checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" dependencies = [ "anstyle", "difflib", @@ -885,15 +889,15 @@ dependencies = [ [[package]] name = "predicates-core" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" +checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" [[package]] name = "predicates-tree" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" dependencies = [ "predicates-core", "termtree", @@ -931,9 +935,9 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.35.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86e446ed58cef1bbfe847bc2fda0e2e4ea9f0e57b90c507d4781292590d72a4e" +checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc" dependencies = [ "memchr", ] @@ -969,9 +973,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.5" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -1039,7 +1043,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -1068,31 +1072,32 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.203" +version = "1.0.207" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "5665e14a49a4ea1b91029ba7d3bca9f299e1f7cfa194388ccc20f14743e784f2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.207" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "6aea2634c86b0e8ef2cfdc0c340baede54ec27b1e46febd7f80dffb2aa44a00e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", ] [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -1103,11 +1108,17 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "similar" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" [[package]] name = "skeptic" @@ -1143,9 +1154,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.68" +version = "2.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" +checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" dependencies = [ "proc-macro2", "quote", @@ -1154,14 +1165,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", "fastrand", + "once_cell", "rustix", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -1172,22 +1184,22 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", ] [[package]] @@ -1229,9 +1241,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wait-timeout" @@ -1254,34 +1266,35 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1289,28 +1302,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -1318,11 +1331,11 @@ dependencies = [ [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -1343,11 +1356,20 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -1361,51 +1383,51 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winstructs" @@ -1456,7 +1478,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.74", ] [[package]]