From 4c259ee89ab388bc89ba9451ccf762c65af88e36 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Thu, 18 Mar 2021 18:54:25 -0700 Subject: [PATCH 01/82] Updates the byond testing version to tgstation ver (#66) --- .github/workflows/rust.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 75aa5a71..a3cd16f8 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -34,7 +34,7 @@ jobs: runs-on: ubuntu-latest env: BYOND_MAJOR: 513 - BYOND_MINOR: 1521 + BYOND_MINOR: 1536 PKG_CONFIG_ALLOW_CROSS: 1 steps: - uses: actions/checkout@v1 From 9e3ef67376821752dd5a2db30e3560c4f1ad3932 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Thu, 18 Mar 2021 19:07:33 -0700 Subject: [PATCH 02/82] runs cargo fmt (#63) --- src/dmi.rs | 7 ++++++- src/error.rs | 6 +++--- src/hash.rs | 10 ++++------ src/lib.rs | 8 ++++---- src/unzip.rs | 15 +++++---------- 5 files changed, 22 insertions(+), 24 deletions(-) diff --git a/src/dmi.rs b/src/dmi.rs index 0a4a4ecd..7bf50fbb 100644 --- a/src/dmi.rs +++ b/src/dmi.rs @@ -76,7 +76,12 @@ fn create_png(path: &str, width: &str, height: &str, data: &str) -> Result<()> { Ok(writer.write_image_data(&result)?) } -fn resize_png>(path: P, width: &str, height: &str, resizetype: image::imageops::FilterType) -> std::result::Result<(), Error> { +fn resize_png>( + path: P, + width: &str, + height: &str, + resizetype: image::imageops::FilterType, +) -> std::result::Result<(), Error> { let width = u32::from_str_radix(width, 10)?; let height = u32::from_str_radix(height, 10)?; diff --git a/src/error.rs b/src/error.rs index d1a7e1ff..64545fa5 100644 --- a/src/error.rs +++ b/src/error.rs @@ -7,9 +7,9 @@ use std::{ use thiserror::Error; #[cfg(feature = "png")] -use png::{DecodingError, EncodingError}; +use image::error::ImageError; #[cfg(feature = "png")] -use image::error::{ImageError}; +use png::{DecodingError, EncodingError}; #[cfg(feature = "unzip")] use zip::result::ZipError; @@ -51,7 +51,7 @@ pub enum Error { SerializationError(#[from] serde_json::Error), #[cfg(feature = "unzip")] #[error(transparent)] - UnzipError(#[from] ZipError) + UnzipError(#[from] ZipError), } impl From for Error { diff --git a/src/hash.rs b/src/hash.rs index 15914912..1d10b840 100644 --- a/src/hash.rs +++ b/src/hash.rs @@ -1,17 +1,15 @@ use crate::error::{Error, Result}; -use const_random::const_random ; +use const_random::const_random; const XXHASH_SEED: u64 = const_random!(u64); -use twox_hash::XxHash64; use md5::Md5; use sha1::Sha1; use sha2::{Digest, Sha256, Sha512}; use std::{ fs::File, - io::{BufReader, Read}, hash::Hasher, + io::{BufReader, Read}, }; - - +use twox_hash::XxHash64; byond_fn! { hash_string(algorithm, string) { string_hash(algorithm, string).ok() @@ -46,7 +44,7 @@ fn hash_algorithm>(name: &str, bytes: B) -> Result { "xxh64" => { let mut hasher = XxHash64::with_seed(XXHASH_SEED); hasher.write(bytes.as_ref()); - Ok(format!("{:x}",hasher.finish())) + Ok(format!("{:x}", hasher.finish())) } _ => Err(Error::InvalidAlgorithm), } diff --git a/src/lib.rs b/src/lib.rs index b2c779ad..2e3bf729 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,6 +6,8 @@ mod error; #[cfg(feature = "jobs")] mod jobs; +#[cfg(feature = "cellularnoise")] +pub mod cellularnoise; #[cfg(feature = "dmi")] pub mod dmi; #[cfg(feature = "file")] @@ -24,12 +26,10 @@ pub mod log; pub mod noise_gen; #[cfg(feature = "sql")] pub mod sql; -#[cfg(feature = "url")] -pub mod url; #[cfg(feature = "unzip")] pub mod unzip; -#[cfg(feature = "cellularnoise")] -pub mod cellularnoise; +#[cfg(feature = "url")] +pub mod url; #[cfg(not(target_pointer_width = "32"))] compile_error!("rust-g must be compiled for a 32-bit target"); diff --git a/src/unzip.rs b/src/unzip.rs index 48a17a76..8ddc7460 100644 --- a/src/unzip.rs +++ b/src/unzip.rs @@ -1,4 +1,4 @@ -use crate::{error::Result, jobs, http::HTTP_CLIENT}; +use crate::{error::Result, http::HTTP_CLIENT, jobs}; use reqwest::blocking::RequestBuilder; use std::fs; use std::io::Write; @@ -10,14 +10,10 @@ struct UnzipPrep { unzip_directory: String, } -fn construct_unzip( - url: &str, - unzip_directory: &str -) -> UnzipPrep { - +fn construct_unzip(url: &str, unzip_directory: &str) -> UnzipPrep { let req = HTTP_CLIENT.get(url); let dir_copy = unzip_directory.to_string(); - + UnzipPrep { req, unzip_directory: dir_copy, @@ -40,12 +36,11 @@ fn do_unzip_download(prep: UnzipPrep) -> Result { let reader = std::io::Cursor::new(content); let mut archive = ZipArchive::new(reader)?; - for i in 0..archive.len() - { + for i in 0..archive.len() { let mut entry = archive.by_index(i)?; let file_path = unzip_path.join(entry.name()); - + if let Some(parent) = file_path.parent() { fs::create_dir_all(parent)? } From 564b0f52cb354a5be4af2e4930360d78656a22ac Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Thu, 18 Mar 2021 19:34:48 -0700 Subject: [PATCH 03/82] Sets the debug and test linux build to use all features (#67) Problem: PRs and all features aren't properly running created unit tests. Nor are they actually being fully compiled (only checked) on Linux. Solution: Only have the release builds that are distributed as artifacts run with the default features. This way, tests can cover all features. --- .github/workflows/rust.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index a3cd16f8..c18e6668 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -21,7 +21,8 @@ jobs: toolchain: stable command: check args: --target i686-pc-windows-msvc --all-features - - uses: actions-rs/cargo@v1 + - name: Build (release) (default features) + uses: actions-rs/cargo@v1 with: toolchain: stable command: build @@ -53,21 +54,21 @@ jobs: toolchain: stable command: check args: --target i686-unknown-linux-gnu --all-features - - name: Build (Debug) + - name: Build (Debug) (all features) uses: actions-rs/cargo@v1 with: toolchain: stable command: build - args: --target i686-unknown-linux-gnu - - name: Run tests + args: --target i686-unknown-linux-gnu --all-features + - name: Run tests (all features) uses: actions-rs/cargo@v1 with: toolchain: stable command: test - args: --target i686-unknown-linux-gnu + args: --target i686-unknown-linux-gnu --all-features env: BYOND_BIN: /home/runner/BYOND/byond/bin - - name: Build (release) + - name: Build (release) (default features) uses: actions-rs/cargo@v1 with: toolchain: stable From f1f33c6e54eeb34385b1d3316fec03fbde204c9f Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Sat, 20 Mar 2021 12:44:54 -0700 Subject: [PATCH 04/82] Base64 encoding (#65) * Adds base64 encoding * Adds tests * Commented out import * Fixes the naming of variables * ...of course it was a typo * Update Cargo.toml Co-authored-by: William Wallace --- Cargo.lock | 15 ++++++++++++--- Cargo.toml | 3 ++- dmsrc/hash.dm | 1 + src/hash.rs | 3 +++ tests/dm-tests.rs | 6 ++++++ tests/dm/hash.dme | 23 +++++++++++++++++++++++ 6 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 tests/dm/hash.dme diff --git a/Cargo.lock b/Cargo.lock index 8895a377..e7e5254a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "adler32" version = "1.2.0" @@ -48,6 +50,12 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + [[package]] name = "bigdecimal" version = "0.1.2" @@ -1091,7 +1099,7 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de63b87a5f24c5db252418a6f04abb2f62823bd838dc9b1d7fdb8ae972ef76cf" dependencies = [ - "base64", + "base64 0.12.3", "bigdecimal", "bitflags", "byteorder", @@ -1543,7 +1551,7 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9eaa17ac5d7b838b7503d118fa16ad88f440498bf9ffe5424e621f93190d61e" dependencies = [ - "base64", + "base64 0.12.3", "bytes", "encoding_rs", "futures-core", @@ -1592,6 +1600,7 @@ dependencies = [ name = "rust-g" version = "0.4.7" dependencies = [ + "base64 0.13.0", "chrono", "const-random", "dashmap", @@ -1643,7 +1652,7 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81" dependencies = [ - "base64", + "base64 0.12.3", "log", "ring", "sct", diff --git a/Cargo.toml b/Cargo.toml index 07ecbc7f..52d66db5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,7 @@ lto = true thiserror = "1.0" flume = { version = "0.9", optional = true } chrono = { version = "0.4", optional = true } +base64 = { version = "0.13", optional = true} md-5 = { version = "0.9", optional = true } twox-hash = { version = "1.6.0", optional = true } const-random = { version = "0.1.13", optional = true } @@ -56,7 +57,7 @@ log = ["chrono"] sql = ["mysql", "serde", "serde_json", "once_cell", "dashmap", "jobs"] # non-default features -hash = ["md-5", "sha-1", "sha2", "hex", "twox-hash", "const-random"] +hash = ["base64", "const-random", "md-5", "hex", "sha-1", "sha2", "twox-hash"] url = ["url-dep", "percent-encoding"] unzip = ["zip", "jobs"] diff --git a/dmsrc/hash.dm b/dmsrc/hash.dm index 3ecedc6f..3599b0bd 100644 --- a/dmsrc/hash.dm +++ b/dmsrc/hash.dm @@ -6,6 +6,7 @@ #define RUSTG_HASH_SHA256 "sha256" #define RUSTG_HASH_SHA512 "sha512" #define RUSTG_HASH_XXH64 "xxh64" +#define RUSTG_HASH_BASE64 "base64" #ifdef RUSTG_OVERRIDE_BUILTINS #define md5(thing) (isfile(thing) ? rustg_hash_file(RUSTG_HASH_MD5, "[thing]") : rustg_hash_string(RUSTG_HASH_MD5, thing)) diff --git a/src/hash.rs b/src/hash.rs index 1d10b840..a9cd11ed 100644 --- a/src/hash.rs +++ b/src/hash.rs @@ -46,6 +46,9 @@ fn hash_algorithm>(name: &str, bytes: B) -> Result { hasher.write(bytes.as_ref()); Ok(format!("{:x}", hasher.finish())) } + "base64" => { + Ok(base64::encode(bytes.as_ref())) + } _ => Err(Error::InvalidAlgorithm), } } diff --git a/tests/dm-tests.rs b/tests/dm-tests.rs index cfffdbbb..c3f8b569 100644 --- a/tests/dm-tests.rs +++ b/tests/dm-tests.rs @@ -12,6 +12,12 @@ fn url() { run_dm_tests("url"); } +#[cfg(feature = "hash")] +#[test] +fn hash() { + run_dm_tests("hash"); +} + fn run_dm_tests(name: &str) { std::env::remove_var("RUST_BACKTRACE"); diff --git a/tests/dm/hash.dme b/tests/dm/hash.dme new file mode 100644 index 00000000..dcd5411f --- /dev/null +++ b/tests/dm/hash.dme @@ -0,0 +1,23 @@ +#include "common.dm" + +var/list/reference = list() + +/proc/check_hash_base64(input) + var/expected = reference[input] + var/rust = rustg_hash_string("base64", input) + // Case sensitive + if (!cmptextEx(expected, rust)) + CRASH("[input]\n expected: [expected]\n rustg: [rust]") + +/test/proc/various_hash_base64() + reference["The quick brown fox jumps over the lazy dog."] = \ + "VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4=" + + reference["Résumé"] = \ + "UsOpc3Vtw6k=" + + reference["https://example.com/?foo=bar+baz&bar\[]=baz#foo"] = \ + "aHR0cHM6Ly9leGFtcGxlLmNvbS8/Zm9vPWJhcitiYXomYmFyW109YmF6I2Zvbw==" + + for (var/entry in reference) + check_hash_base64(entry) From ce13e5a0b89c25858e1fc194f6342739616d9802 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Wed, 5 May 2021 02:32:06 -0700 Subject: [PATCH 05/82] Clippy tweaks (#62) * this `else { if .. }` block can be collapsed * question mark operator is useless here * this call to `from_str_radix` can be replaced with a call to `str::parse` * equality checks against true are unnecessary * Revert "question mark operator is useless here" This reverts commit 01272c520b056b0cc9f6439add85684205fea8f7. --- src/cellularnoise.rs | 11 +++++------ src/dmi.rs | 8 ++++---- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/cellularnoise.rs b/src/cellularnoise.rs index 3c837e27..9ffac6b9 100644 --- a/src/cellularnoise.rs +++ b/src/cellularnoise.rs @@ -68,19 +68,18 @@ fn noise_gen( } } - if zplane_old[i][j] == true { + if zplane_old[i][j] { if sum < death_limit { zplane[i][j] = false; } else { zplane[i][j] = true; } + } else if sum > birth_limit { + zplane[i][j] = true; } else { - if sum > birth_limit { - zplane[i][j] = true; - } else { - zplane[i][j] = false; - } + zplane[i][j] = false; } + } } } diff --git a/src/dmi.rs b/src/dmi.rs index 7bf50fbb..ceefd5ac 100644 --- a/src/dmi.rs +++ b/src/dmi.rs @@ -48,8 +48,8 @@ fn write_png(path: &str, info: OutputInfo, image: Vec) -> Result<()> { } fn create_png(path: &str, width: &str, height: &str, data: &str) -> Result<()> { - let width = u32::from_str_radix(width, 10)?; - let height = u32::from_str_radix(height, 10)?; + let width = width.parse::()?; + let height = height.parse::()?; let bytes = data.as_bytes(); if bytes.len() % 7 != 0 { @@ -82,8 +82,8 @@ fn resize_png>( height: &str, resizetype: image::imageops::FilterType, ) -> std::result::Result<(), Error> { - let width = u32::from_str_radix(width, 10)?; - let height = u32::from_str_radix(height, 10)?; + let width = width.parse::()?; + let height = height.parse::()?; let img = image::open(path.as_ref())?; From 2c18ccab84f57a70639ff6546a46ed65e455c15c Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Wed, 5 May 2021 02:32:17 -0700 Subject: [PATCH 06/82] Cargo update (#64) * updates cargo dependencies versions to latest * Fixes perlin noise generation to use an inclusive range * Update src/cellularnoise.rs Co-authored-by: William Wallace * Updates cargo.lock Co-authored-by: William Wallace --- Cargo.lock | 1135 +++++++++++++++++++----------------------- Cargo.toml | 10 +- src/cellularnoise.rs | 2 +- 3 files changed, 508 insertions(+), 639 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e7e5254a..238ce2d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + [[package]] name = "adler32" version = "1.2.0" @@ -10,27 +16,24 @@ checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "ahash" -version = "0.3.8" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8fd72866655d1904d6b0997d0b07ba561047d070fbe29de039031c641b61217" -dependencies = [ - "const-random", -] +checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" [[package]] name = "aho-corasick" -version = "0.7.14" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b476ce7103678b0c6d3d395dbbae31d48ff910bd28be979ba5d48c6351131d0d" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" dependencies = [ "memchr", ] [[package]] name = "arrayvec" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "autocfg" @@ -40,9 +43,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "base-x" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b20b618342cf9891c292c4f5ac2cde7287cc5c87e87e9c769d617793607dec1" +checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" [[package]] name = "base64" @@ -64,7 +67,7 @@ checksum = "1374191e2dd25f9ae02e3aa95041ed5d747fc77b3c102b49fe2dd9a8117a6244" dependencies = [ "num-bigint", "num-integer", - "num-traits 0.2.12", + "num-traits", "serde", ] @@ -83,7 +86,7 @@ dependencies = [ "block-padding", "byte-tools", "byteorder", - "generic-array 0.12.3", + "generic-array 0.12.4", ] [[package]] @@ -112,9 +115,9 @@ checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" [[package]] name = "bumpalo" -version = "3.4.0" +version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" +checksum = "63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe" [[package]] name = "byte-tools" @@ -124,15 +127,15 @@ checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "bytemuck" -version = "1.4.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41aa2ec95ca3b5c54cf73c91acf06d24f4495d5f1b1c12506ae3483d646177ac" +checksum = "bed57e2090563b83ba8f83366628ce535a7584c9afa4c9fc0612a03925c6df58" [[package]] name = "byteorder" -version = "1.3.4" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" @@ -140,6 +143,12 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" +[[package]] +name = "bytes" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" + [[package]] name = "bzip2" version = "0.3.3" @@ -152,9 +161,9 @@ dependencies = [ [[package]] name = "bzip2-sys" -version = "0.1.9+1.0.8" +version = "0.1.10+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad3b39a260062fca31f7b0b12f207e8f2590a67d32ec7d59c20484b07ea7285e" +checksum = "17fa3d1ac1ca21c5c4e36a97f3c3eb25084576f6fc47bf0139c1123434216c6c" dependencies = [ "cc", "libc", @@ -163,9 +172,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.61" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed67cbde08356238e75fc4656be4749481eeffb09e19f320a25237d5221c985d" +checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" dependencies = [ "jobserver", ] @@ -176,6 +185,12 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + [[package]] name = "chrono" version = "0.4.19" @@ -184,19 +199,10 @@ checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" dependencies = [ "libc", "num-integer", - "num-traits 0.2.12", + "num-traits", "serde", - "time 0.1.44", - "winapi 0.3.9", -] - -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -dependencies = [ - "bitflags", + "time 0.1.43", + "winapi", ] [[package]] @@ -221,7 +227,7 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "615f6e27d000a2bffbc7f2f6a8669179378fa27ee4d0a509e985dfc0a7defb40" dependencies = [ - "getrandom 0.2.0", + "getrandom 0.2.2", "lazy_static", "proc-macro-hack", "tiny-keccak", @@ -229,15 +235,15 @@ dependencies = [ [[package]] name = "const_fn" -version = "0.4.2" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce90df4c658c62f12d78f7508cf92f9173e5184a539c10bfe54a3107b3ffd0f2" +checksum = "402da840495de3f976eaefc3485b7f5eb5b0bf9761f9a47be27fe975b3b8c2ec" [[package]] name = "core-foundation" -version = "0.7.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" dependencies = [ "core-foundation-sys", "libc", @@ -245,9 +251,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.7.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" +checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" [[package]] name = "cpuid-bool" @@ -257,57 +263,55 @@ checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634" [[package]] name = "crc32fast" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] name = "crossbeam-channel" -version = "0.4.4" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" +checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" dependencies = [ + "cfg-if 1.0.0", "crossbeam-utils", - "maybe-uninit", ] [[package]] name = "crossbeam-deque" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" +checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" dependencies = [ + "cfg-if 1.0.0", "crossbeam-epoch", "crossbeam-utils", - "maybe-uninit", ] [[package]] name = "crossbeam-epoch" -version = "0.8.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" +checksum = "52fb27eab85b17fbb9f6fd667089e07d6a2eb8743d02639ee7f6a7a7729c9c94" dependencies = [ - "autocfg", - "cfg-if", + "cfg-if 1.0.0", "crossbeam-utils", "lazy_static", - "maybe-uninit", "memoffset", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.7.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +checksum = "4feb231f0d4d6af81aed15928e58ecf5816aa62a2393e2c82f46973e92a9a278" dependencies = [ "autocfg", - "cfg-if", + "cfg-if 1.0.0", "lazy_static", ] @@ -319,25 +323,14 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "dashmap" -version = "3.11.10" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f260e2fc850179ef410018660006951c1b55b79e8087e87111a2c388994b9b5" +checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" dependencies = [ - "ahash", - "cfg-if", + "cfg-if 1.0.0", "num_cpus", ] -[[package]] -name = "deflate" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707b6a7b384888a70c8d2e8650b3e60170dfc6a67bb4aa67b6dfca57af4bedb4" -dependencies = [ - "adler32", - "byteorder", -] - [[package]] name = "deflate" version = "0.8.6" @@ -350,9 +343,9 @@ dependencies = [ [[package]] name = "derive_utils" -version = "0.10.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df5480412da86cdf5d6b7f3b682422c84359ff7399aa658df1d15ee83244b1d" +checksum = "532b4c15dccee12c7044f1fcad956e98410860b22231e44a3b827464797ca7bf" dependencies = [ "proc-macro2", "quote", @@ -365,7 +358,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" dependencies = [ - "generic-array 0.12.3", + "generic-array 0.12.4", ] [[package]] @@ -383,12 +376,6 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" -[[package]] -name = "dtoa" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134951f4028bdadb9b84baf4232681efbf277da25144b9b0ad65df75946c422b" - [[package]] name = "either" version = "1.6.1" @@ -397,20 +384,11 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "encoding_rs" -version = "0.8.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a51b8cf747471cb9499b6d59e59b0444f4c90eba8968c4e44874e92b5b64ace2" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "enum_primitive" -version = "0.1.1" +version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4551092f4d519593039259a9ed8daedf0da12e5109c5280338073eaeb81180" +checksum = "80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065" dependencies = [ - "num-traits 0.1.43", + "cfg-if 1.0.0", ] [[package]] @@ -421,26 +399,27 @@ checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" [[package]] name = "flate2" -version = "1.0.14" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cfff41391129e0a856d6d822600b8d71179d46879e310417eb9c762eb178b42" +checksum = "cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "crc32fast", "libc", "libz-sys", - "miniz_oxide", + "miniz_oxide 0.4.4", ] [[package]] name = "flume" -version = "0.9.1" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9e818efa7776f4dd7df0e542f877f7a5a87bddd6a1a10f59a7732b71ffb9d55" +checksum = "fa9d66b91e902db43baefd8e40c8678ce29db2cf1d88ebd715174368d5fe70a9" dependencies = [ "futures-core", "futures-sink", - "rand 0.7.3", + "nanorand", + "pin-project", "spinning_top", ] @@ -466,53 +445,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" - -[[package]] -name = "fuchsia-zircon" -version = "0.3.3" +name = "form_urlencoded" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" dependencies = [ - "bitflags", - "fuchsia-zircon-sys", + "matches", + "percent-encoding", ] -[[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" - [[package]] name = "futures-channel" -version = "0.3.6" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a4d35f7401e948629c9c3d6638fb9bf94e0b2121e96c3b428cc4e631f3eb74" +checksum = "ce79c6a52a299137a6013061e0cf0e688fce5d7f1bc60125f520912fdb29ec25" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.6" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d674eaa0056896d5ada519900dbf97ead2e46a7b6621e8160d79e2f2e1e2784b" +checksum = "098cd1c6dda6ca01650f1a37a794245eb73181d0d4d4e955e2f3c37db7af1815" [[package]] name = "futures-io" -version = "0.3.6" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc94b64bb39543b4e432f1790b6bf18e3ee3b74653c5449f63310e9a74b123c" +checksum = "365a1a1fb30ea1c03a830fdb2158f5236833ac81fa0ad12fe35b29cddc35cb04" [[package]] name = "futures-macro" -version = "0.3.6" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f57ed14da4603b2554682e9f2ff3c65d7567b53188db96cb71538217fc64581b" +checksum = "668c6733a182cd7deb4f1de7ba3bf2120823835b3bcfbeacf7d2c4a773c1bb8b" dependencies = [ "proc-macro-hack", "proc-macro2", @@ -522,31 +489,28 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.6" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8764258ed64ebc5d9ed185cf86a95db5cac810269c5d20ececb32e0088abbd" +checksum = "5c5629433c555de3d82861a7a4e3794a4c40040390907cfbfd7143a92a426c23" [[package]] name = "futures-task" -version = "0.3.6" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd26820a9f3637f1302da8bceba3ff33adbe53464b54ca24d4e2d4f1db30f94" -dependencies = [ - "once_cell", -] +checksum = "ba7aa51095076f3ba6d9a1f702f74bd05ec65f555d70d2033d55ba8d69f581bc" [[package]] name = "futures-util" -version = "0.3.6" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a894a0acddba51a2d49a6f4263b1e64b8c579ece8af50fa86503d52cd1eea34" +checksum = "3c144ad54d60f23927f0a6b6d816e4271278b64f005ad65e4e35291d2de9c025" dependencies = [ "futures-core", "futures-io", "futures-macro", "futures-task", "memchr", - "pin-project", + "pin-project-lite", "pin-utils", "proc-macro-hack", "proc-macro-nested", @@ -555,9 +519,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" dependencies = [ "typenum", ] @@ -574,41 +538,33 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] [[package]] name = "getrandom" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee8025cf36f917e6a52cce185b7c7177689b838b7ec138364e50cc2277a56cf4" +checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", + "js-sys", "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - -[[package]] -name = "gif" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e41945ba23db3bf51b24756d73d81acb4f28d85c3dccc32c6fae904438c25f" -dependencies = [ - "color_quant", - "lzw", + "wasi 0.10.2+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] name = "gif" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02efba560f227847cb41463a7395c514d127d4f74fff12ef0137fff1b84b96c4" +checksum = "5a668f699973d0f573d15749b7002a9ac9e1f9c6b220e7b165601334c173d8de" dependencies = [ "color_quant", "weezl", @@ -616,9 +572,9 @@ dependencies = [ [[package]] name = "git2" -version = "0.13.11" +version = "0.13.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e094214efbc7fdbbdee952147e493b00e99a4e52817492277e98967ae918165" +checksum = "b483c6c2145421099df1b4efd50e0f6205479a072199460eff852fa15e5603c7" dependencies = [ "bitflags", "libc", @@ -629,11 +585,11 @@ dependencies = [ [[package]] name = "h2" -version = "0.2.6" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993f9e0baeed60001cf565546b0d3dbe6a6ad23f2bd31644a133c641eccf6d53" +checksum = "825343c4eef0b63f541f8903f395dc5beb362a979b5799a84062527ef1e37726" dependencies = [ - "bytes", + "bytes 1.0.1", "fnv", "futures-core", "futures-sink", @@ -648,75 +604,69 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.8.2" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b62f79061a0bc2e046024cb7ba44b08419ed238ecbd9adbd787434b9e8c25" +checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" dependencies = [ "ahash", - "autocfg", ] -[[package]] -name = "hashbrown" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" - [[package]] name = "hermit-abi" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" +checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" dependencies = [ "libc", ] [[package]] name = "hex" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "http" -version = "0.2.1" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9" +checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11" dependencies = [ - "bytes", + "bytes 1.0.1", "fnv", "itoa", ] [[package]] name = "http-body" -version = "0.3.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" +checksum = "5dfb77c123b4e2f72a2069aeae0b4b4949cc7e966df277813fc16347e7549737" dependencies = [ - "bytes", + "bytes 1.0.1", "http", + "pin-project-lite", ] [[package]] name = "httparse" -version = "1.3.4" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" +checksum = "4a1ce40d6fc9764887c2fdc7305c3dcc429ba11ff981c1509416afd5697e4437" [[package]] name = "httpdate" -version = "0.3.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" +checksum = "05842d0d43232b23ccb7060ecb0f0626922c21f30012e97b767b30afd4a5d4b9" [[package]] name = "hyper" -version = "0.13.8" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f3afcfae8af5ad0576a31e768415edb627824129e8e5a29b8bfccb2f234e835" +checksum = "1e5f105c494081baa3bf9e200b279e27ec1623895cd504c7dbef8d0b080fcf54" dependencies = [ - "bytes", + "bytes 1.0.1", "futures-channel", "futures-core", "futures-util", @@ -727,7 +677,7 @@ dependencies = [ "httpdate", "itoa", "pin-project", - "socket2", + "socket2 0.4.0", "tokio", "tower-service", "tracing", @@ -736,11 +686,10 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.21.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37743cc83e8ee85eacfce90f2f4102030d9ff0a95244098d781e9bee4a90abb6" +checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" dependencies = [ - "bytes", "futures-util", "hyper", "log", @@ -752,9 +701,9 @@ dependencies = [ [[package]] name = "idna" -version = "0.2.0" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" dependencies = [ "matches", "unicode-bidi", @@ -763,78 +712,45 @@ dependencies = [ [[package]] name = "image" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545f000e8aa4e569e93f49c446987133452e0091c2494ac3efd3606aa3d309f2" -dependencies = [ - "byteorder", - "enum_primitive", - "gif 0.9.2", - "jpeg-decoder", - "num-iter", - "num-rational 0.1.42", - "num-traits 0.1.43", - "png 0.11.0", - "scoped_threadpool", -] - -[[package]] -name = "image" -version = "0.23.10" +version = "0.23.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "985fc06b1304d19c28d5c562ed78ef5316183f2b0053b46763a0b94862373c34" +checksum = "24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1" dependencies = [ "bytemuck", "byteorder", - "gif 0.11.1", + "color_quant", + "gif", "jpeg-decoder", "num-iter", - "num-rational 0.3.0", - "num-traits 0.2.12", - "png 0.16.7", + "num-rational", + "num-traits", + "png", "scoped_threadpool", "tiff", ] [[package]] name = "indexmap" -version = "1.6.0" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2" +checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3" dependencies = [ "autocfg", - "hashbrown 0.9.1", -] - -[[package]] -name = "inflate" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5f9f47468e9a76a6452271efadc88fe865a82be91fe75e6c0c57b87ccea59d4" -dependencies = [ - "adler32", + "hashbrown", ] [[package]] name = "io-enum" -version = "0.2.3" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e467fc10409cca1c49840b62ccd7993463f2137cab21f863d917b316b2287336" +checksum = "94534fd32a986dd34d97ddefe5198630d5ed99efd4e9b9b9ed4359e6b23a9cf7" dependencies = [ + "autocfg", "derive_utils", "quote", "syn", ] -[[package]] -name = "iovec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -dependencies = [ - "libc", -] - [[package]] name = "ipnet" version = "2.3.0" @@ -843,48 +759,37 @@ checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" [[package]] name = "itoa" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" +checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" [[package]] name = "jobserver" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" +checksum = "972f5ae5d1cb9c6ae417789196c803205313edde988685da5e3aae0827b9e7fd" dependencies = [ "libc", ] [[package]] name = "jpeg-decoder" -version = "0.1.20" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc797adac5f083b8ff0ca6f6294a999393d76e197c36488e2ef732c4715f6fa3" +checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2" dependencies = [ - "byteorder", "rayon", ] [[package]] name = "js-sys" -version = "0.3.45" +version = "0.3.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8" +checksum = "2d99f9e3e84b8f67f846ef5b4cbbc3b1c29f6c759fcbce6f01aa0e73d932a24c" dependencies = [ "wasm-bindgen", ] -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - [[package]] name = "lazy_static" version = "1.4.0" @@ -893,38 +798,38 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "lexical" -version = "5.2.0" +version = "5.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28ff8a57641758c89a37b2d28556a68978b3ea3f709f39953e153acea3dbacf" +checksum = "f404a90a744e32e8be729034fc33b90cf2a56418fbf594d69aa3c0214ad414e5" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "lexical-core", ] [[package]] name = "lexical-core" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db65c6da02e61f55dae90a0ae427b2a5f6b3e8db09f58d10efab23af92592616" +checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" dependencies = [ "arrayvec", "bitflags", - "cfg-if", + "cfg-if 1.0.0", "ryu", "static_assertions", ] [[package]] name = "libc" -version = "0.2.79" +version = "0.2.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2448f6066e80e3bfc792e9c98bf705b4b0fc6e8ef5b43e5889aff0eaa9c58743" +checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" [[package]] name = "libgit2-sys" -version = "0.12.13+1.0.1" +version = "0.12.19+1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069eea34f76ec15f2822ccf78fe0cdb8c9016764d0a12865278585a74dbdeae5" +checksum = "f322155d574c8b9ebe991a04f6908bb49e68a79463338d24a43d6274cb6443e6" dependencies = [ "cc", "libc", @@ -934,9 +839,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602113192b08db8f38796c4e85c39e960c145965140e918018bcde1952429655" +checksum = "de5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66" dependencies = [ "cc", "libc", @@ -946,49 +851,37 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28247cc5a5be2f05fbcd76dd0cf2c7d3b5400cb978a28042abcd4fa0b3f8261c" +checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb" dependencies = [ "scopeguard", ] [[package]] name = "log" -version = "0.4.11" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] name = "lru" -version = "0.6.0" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "111b945ac72ec09eb7bc62a0fbdc3cc6e80555a7245f52a69d3921a75b53b153" +checksum = "1f374d42cdfc1d7dbf3d3dec28afab2eb97ffbf43a3234d795b5986dbf4b90ba" dependencies = [ - "hashbrown 0.8.2", + "hashbrown", ] -[[package]] -name = "lzw" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d947cbb889ed21c2a84be6ffbaebf5b4e0f4340638cba0444907e38b56be084" - [[package]] name = "matches" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - [[package]] name = "md-5" version = "0.9.1" @@ -1002,15 +895,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" +checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" [[package]] name = "memoffset" -version = "0.5.6" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" +checksum = "f83fb6581e8ed1f85fd45c116db8405483899489e38406156c25eb743554361d" dependencies = [ "autocfg", ] @@ -1022,60 +915,51 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" [[package]] -name = "mime_guess" -version = "2.0.3" +name = "miniz_oxide" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212" +checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" dependencies = [ - "mime", - "unicase", + "adler32", ] [[package]] name = "miniz_oxide" -version = "0.3.7" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" dependencies = [ - "adler32", + "adler", + "autocfg", ] [[package]] name = "mio" -version = "0.6.22" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" +checksum = "cf80d3e903b34e0bd7282b218398aec54e082c840d9baf8339e0080a0c542956" dependencies = [ - "cfg-if", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", "libc", "log", "miow", - "net2", - "slab", - "winapi 0.2.8", + "ntapi", + "winapi", ] [[package]] name = "miow" -version = "0.2.1" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", + "winapi", ] [[package]] name = "mysql" -version = "20.0.1" +version = "20.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07a360b3963beb8898d6c8ae85d149be065a924832c80bf21334dd3d77e0cf26" +checksum = "e5a8660184af84975ac1639aa692a539c37739cec8a22a414de3db9cb573c1aa" dependencies = [ "bufstream", "io-enum", @@ -1085,10 +969,11 @@ dependencies = [ "named_pipe", "native-tls", "nix", + "pem", "percent-encoding", "serde", "serde_json", - "socket2", + "socket2 0.3.19", "twox-hash", "url", ] @@ -1103,13 +988,13 @@ dependencies = [ "bigdecimal", "bitflags", "byteorder", - "bytes", + "bytes 0.5.6", "chrono", "flate2", "lazy_static", "lexical", "num-bigint", - "num-traits 0.2.12", + "num-traits", "rand 0.7.3", "regex", "rust_decimal", @@ -1117,7 +1002,7 @@ dependencies = [ "serde_json", "sha1", "sha2 0.8.2", - "time 0.2.22", + "time 0.2.26", "twox-hash", "uuid", ] @@ -1128,14 +1013,23 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad9c443cce91fc3e12f017290db75dde490d685cdaaf508d7159d7cf41f0eb2b" dependencies = [ - "winapi 0.3.9", + "winapi", +] + +[[package]] +name = "nanorand" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1378b66f7c93a1c0f8464a19bf47df8795083842e5090f4b7305973d5a22d0" +dependencies = [ + "getrandom 0.2.2", ] [[package]] name = "native-tls" -version = "0.2.4" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b0d88c06fe90d5ee94048ba40409ef1d9315d86f6f38c2efdaad4fb50c58b2d" +checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4" dependencies = [ "lazy_static", "libc", @@ -1150,36 +1044,35 @@ dependencies = [ ] [[package]] -name = "net2" -version = "0.2.35" +name = "nix" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853" +checksum = "b2ccba0cfe4fdf15982d1674c69b1fd80bad427d293849982668dfe454bd61f2" dependencies = [ - "cfg-if", + "bitflags", + "cc", + "cfg-if 1.0.0", "libc", - "winapi 0.3.9", ] [[package]] -name = "nix" -version = "0.18.0" +name = "noise" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83450fe6a6142ddd95fb064b746083fc4ef1705fe81f64a64e1d4b39f54a1055" +checksum = "82051dd6745d5184c6efb7bc8be14892a7f6d4f3ad6dbf754d1c7d7d5fe24b43" dependencies = [ - "bitflags", - "cc", - "cfg-if", - "libc", + "image", + "rand 0.7.3", + "rand_xorshift", ] [[package]] -name = "noise" -version = "0.6.0" +name = "ntapi" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "337525774dd8a197b613a01ea88058ef0ed023e5ed1e4b7e93de478e1f2bf770" +checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" dependencies = [ - "image 0.18.0", - "rand 0.5.6", + "winapi", ] [[package]] @@ -1190,65 +1083,46 @@ checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" dependencies = [ "autocfg", "num-integer", - "num-traits 0.2.12", + "num-traits", ] [[package]] name = "num-integer" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" dependencies = [ "autocfg", - "num-traits 0.2.12", + "num-traits", ] [[package]] name = "num-iter" -version = "0.1.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6e6b7c748f995c4c29c5f5ae0248536e04a5739927c74ec0fa564805094b9f" -dependencies = [ - "autocfg", - "num-integer", - "num-traits 0.2.12", -] - -[[package]] -name = "num-rational" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee314c74bd753fc86b4780aa9475da469155f3848473a261d2d18e35245a784e" +checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" dependencies = [ + "autocfg", "num-integer", - "num-traits 0.2.12", + "num-traits", ] [[package]] name = "num-rational" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5b4d7360f362cfb50dde8143501e6940b22f644be75a4cc90b2d81968908138" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" dependencies = [ "autocfg", "num-integer", - "num-traits 0.2.12", + "num-traits", ] [[package]] name = "num-traits" -version = "0.1.43" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" -dependencies = [ - "num-traits 0.2.12", -] - -[[package]] -name = "num-traits" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ "autocfg", ] @@ -1265,9 +1139,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.4.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad" +checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3" [[package]] name = "opaque-debug" @@ -1283,15 +1157,15 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.30" +version = "0.10.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4" +checksum = "6d7830286ad6a3973c0f1d9b73738f69c76b739301d0229c4b96501695cbe4c8" dependencies = [ "bitflags", - "cfg-if", + "cfg-if 1.0.0", "foreign-types", - "lazy_static", "libc", + "once_cell", "openssl-sys", ] @@ -1303,9 +1177,9 @@ checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" [[package]] name = "openssl-sys" -version = "0.9.58" +version = "0.9.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de" +checksum = "fa52160d45fa2e7608d504b7c3a3355afed615e6d8b627a74458634ba21b69bd" dependencies = [ "autocfg", "cc", @@ -1314,6 +1188,17 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "pem" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd56cbd21fea48d0c440b41cd69c589faacade08c992d9a54e471b79d0fd13eb" +dependencies = [ + "base64 0.13.0", + "once_cell", + "regex", +] + [[package]] name = "percent-encoding" version = "2.1.0" @@ -1322,18 +1207,18 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "pin-project" -version = "0.4.27" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15" +checksum = "c7509cc106041c40a4518d2af7a61530e1eed0e6285296a3d8c5472806ccc4a4" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "0.4.27" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65ad2ae56b6abe3a1ee25f15ee605bacadb9a764edaba9c2bf4103800d4a1895" +checksum = "48c950132583b500556b1efd71d45b319029f2b71518d979fcc208e16b42426f" dependencies = [ "proc-macro2", "quote", @@ -1342,9 +1227,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.1.10" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e555d9e657502182ac97b539fb3dae8b79cda19e3e4f8ffb5e8de4f18df93c95" +checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905" [[package]] name = "pin-utils" @@ -1360,88 +1245,75 @@ checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" [[package]] name = "png" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b0cabbbd20c2d7f06dbf015e06aad59b6ca3d9ed14848783e98af9aaf19925" -dependencies = [ - "bitflags", - "deflate 0.7.20", - "inflate", - "num-iter", -] - -[[package]] -name = "png" -version = "0.16.7" +version = "0.16.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfe7f9f1c730833200b134370e1d5098964231af8450bce9b78ee3ab5278b970" +checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" dependencies = [ "bitflags", "crc32fast", - "deflate 0.8.6", - "miniz_oxide", + "deflate", + "miniz_oxide 0.3.7", ] [[package]] name = "ppv-lite86" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" [[package]] name = "proc-macro-hack" -version = "0.5.18" +version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99c605b9a0adc77b7211c6b1f722dcb613d68d66859a44f3d485a6da332b0598" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro-nested" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" +checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" [[package]] name = "proc-macro2" -version = "1.0.24" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" dependencies = [ "unicode-xid", ] [[package]] name = "quote" -version = "1.0.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.5.6" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "cloudabi", - "fuchsia-cprng", + "getrandom 0.1.16", "libc", - "rand_core 0.3.1", - "winapi 0.3.9", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc 0.2.0", ] [[package]] name = "rand" -version = "0.7.3" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" dependencies = [ - "getrandom 0.1.15", "libc", - "rand_chacha", - "rand_core 0.5.1", - "rand_hc", + "rand_chacha 0.3.0", + "rand_core 0.6.2", + "rand_hc 0.3.0", ] [[package]] @@ -1455,27 +1327,31 @@ dependencies = [ ] [[package]] -name = "rand_core" -version = "0.3.1" +name = "rand_chacha" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" dependencies = [ - "rand_core 0.4.2", + "ppv-lite86", + "rand_core 0.6.2", ] [[package]] name = "rand_core" -version = "0.4.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] [[package]] name = "rand_core" -version = "0.5.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" dependencies = [ - "getrandom 0.1.15", + "getrandom 0.2.2", ] [[package]] @@ -1487,11 +1363,29 @@ dependencies = [ "rand_core 0.5.1", ] +[[package]] +name = "rand_hc" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" +dependencies = [ + "rand_core 0.6.2", +] + +[[package]] +name = "rand_xorshift" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77d416b86801d23dde1aa643023b775c3a462efc0ed96443add11546cdf1dca8" +dependencies = [ + "rand_core 0.5.1", +] + [[package]] name = "rayon" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf6960dc9a5b4ee8d3e4c5787b4a112a8818e0290a42ff664ad60692fdf2032" +checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" dependencies = [ "autocfg", "crossbeam-deque", @@ -1501,9 +1395,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c4fec834fb6e6d2dd5eece3c7b432a52f0ba887cf40e595190c4107edc08bf" +checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -1514,27 +1408,29 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.1.57" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" +checksum = "85dd92e586f7355c633911e11f77f3d12f04b1b1bd76a198bd34ae3af8341ef2" +dependencies = [ + "bitflags", +] [[package]] name = "regex" -version = "1.4.0" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f45b719a674bf4b828ff318906d6c133264c793eff7a41e30074a45b5099e2" +checksum = "ce5f1ceb7f74abbce32601642fcf8e8508a8a8991e0621c7d750295b9095702b" dependencies = [ "aho-corasick", "memchr", "regex-syntax", - "thread_local", ] [[package]] name = "regex-syntax" -version = "0.6.19" +version = "0.6.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17be88d9eaa858870aa5e48cc406c206e4600e983fc4f06bbe5750d93d09761" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" [[package]] name = "remove_dir_all" @@ -1542,17 +1438,17 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] name = "reqwest" -version = "0.10.8" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9eaa17ac5d7b838b7503d118fa16ad88f440498bf9ffe5424e621f93190d61e" +checksum = "2296f2fac53979e8ccbc4a1136b25dcefd37be9ed7e4a1f6b05a6029c84ff124" dependencies = [ - "base64 0.12.3", - "bytes", + "base64 0.13.0", + "bytes 1.0.1", "encoding_rs", "futures-core", "futures-util", @@ -1565,7 +1461,6 @@ dependencies = [ "lazy_static", "log", "mime", - "mime_guess", "percent-encoding", "pin-project-lite", "rustls", @@ -1583,9 +1478,9 @@ dependencies = [ [[package]] name = "ring" -version = "0.16.15" +version = "0.16.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "952cd6b98c85bbc30efa1ba5783b8abf12fec8b3287ffa52605b9432313e34e4" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" dependencies = [ "cc", "libc", @@ -1593,7 +1488,7 @@ dependencies = [ "spin", "untrusted", "web-sys", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1607,20 +1502,20 @@ dependencies = [ "flume", "git2", "hex", - "image 0.23.10", + "image", "lazy_static", "md-5", "mysql", "noise", "once_cell", "percent-encoding", - "png 0.16.7", - "rand 0.7.3", + "png", + "rand 0.8.3", "reqwest", "serde", "serde_json", "sha-1", - "sha2 0.9.1", + "sha2 0.9.3", "thiserror", "twox-hash", "url", @@ -1629,11 +1524,12 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.8.1" +version = "1.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e81662973c7a8d9663e64a0de4cd642b89a21d64966e3d99606efdc5fb0cc6" +checksum = "3358e4d417d8f4ae6b972d8c2bf4d5d9a39bda57d00a968af06f10e3fed400fd" dependencies = [ - "num-traits 0.2.12", + "arrayvec", + "num-traits", "serde", ] @@ -1648,11 +1544,11 @@ dependencies = [ [[package]] name = "rustls" -version = "0.18.1" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81" +checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" dependencies = [ - "base64 0.12.3", + "base64 0.13.0", "log", "ring", "sct", @@ -1672,7 +1568,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" dependencies = [ "lazy_static", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1689,9 +1585,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "sct" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" +checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" dependencies = [ "ring", "untrusted", @@ -1699,9 +1595,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "0.4.4" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64808902d7d99f78eaddd2b4e2509713babc3dc3c85ad6f4c447680f3c01e535" +checksum = "3670b1d2fdf6084d192bc71ead7aabe6c06aa2ea3fbd9cc3ac111fa5c2b1bd84" dependencies = [ "bitflags", "core-foundation", @@ -1712,9 +1608,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "0.4.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17bf11d99252f512695eb468de5516e5cf75455521e69dfe343f3b74e4748405" +checksum = "3676258fd3cfe2c9a0ec99ce3038798d847ce3e4bb17746373eb9f0f1ac16339" dependencies = [ "core-foundation-sys", "libc", @@ -1737,18 +1633,18 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.116" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96fe57af81d28386a513cbc6858332abc6117cfdb5999647c6444b8f43a370a5" +checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.116" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f630a6370fd8e457873b4bd2ffdae75408bc291ba72be773772a4c2a065d9ae8" +checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" dependencies = [ "proc-macro2", "quote", @@ -1757,9 +1653,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.59" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95" +checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" dependencies = [ "itoa", "ryu", @@ -1768,24 +1664,24 @@ dependencies = [ [[package]] name = "serde_urlencoded" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97" +checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" dependencies = [ - "dtoa", + "form_urlencoded", "itoa", + "ryu", "serde", - "url", ] [[package]] name = "sha-1" -version = "0.9.1" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170a36ea86c864a3f16dd2687712dd6646f7019f301e57537c7f4dc9f5916770" +checksum = "dfebf75d25bd900fd1e7d11501efab59bc846dbc76196839663e6637bba9f25f" dependencies = [ "block-buffer 0.9.0", - "cfg-if", + "cfg-if 1.0.0", "cpuid-bool", "digest 0.9.0", "opaque-debug 0.3.0", @@ -1811,12 +1707,12 @@ dependencies = [ [[package]] name = "sha2" -version = "0.9.1" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2933378ddfeda7ea26f48c555bdad8bb446bf8a3d17832dc83e380d444cfb8c1" +checksum = "fa827a14b29ab7f44778d14a88d3cb76e949c45083f7dbfa507d0cb699dc12de" dependencies = [ "block-buffer 0.9.0", - "cfg-if", + "cfg-if 1.0.0", "cpuid-bool", "digest 0.9.0", "opaque-debug 0.3.0", @@ -1824,20 +1720,29 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" [[package]] name = "socket2" -version = "0.3.15" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44" +checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", - "redox_syscall", - "winapi 0.3.9", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2" +dependencies = [ + "libc", + "winapi", ] [[package]] @@ -1848,18 +1753,18 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "spinning_top" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e529d73e80d64b5f2631f9035113347c578a1c9c7774b83a2b880788459ab36" +checksum = "8bd0ab6b8c375d2d963503b90d3770010d95bc3b5f98036f948dee24bf4e8879" dependencies = [ "lock_api", ] [[package]] name = "standback" -version = "0.2.11" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e0831040d2cf2bdfd51b844be71885783d489898a192f254ae25d57cce725c" +checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" dependencies = [ "version_check", ] @@ -1921,9 +1826,9 @@ checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" [[package]] name = "syn" -version = "1.0.44" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e03e57e4fcbfe7749842d53e24ccb9aa12b7252dbe5e91d2acad31834c8b8fdd" +checksum = "ad184cc9470f9117b2ac6817bfe297307418819ba40552f9b3846f05c33d5373" dependencies = [ "proc-macro2", "quote", @@ -1932,74 +1837,64 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" +checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", - "rand 0.7.3", + "rand 0.8.3", "redox_syscall", "remove_dir_all", - "winapi 0.3.9", + "winapi", ] [[package]] name = "thiserror" -version = "1.0.21" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "318234ffa22e0920fe9a40d7b8369b5f649d490980cf7aadcf1eb91594869b42" +checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.21" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae2447b6282786c3493999f40a9be2a6ad20cb8bd268b0a0dbf5a065535c0ab" +checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" dependencies = [ "proc-macro2", "quote", "syn", ] -[[package]] -name = "thread_local" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" -dependencies = [ - "lazy_static", -] - [[package]] name = "tiff" -version = "0.5.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f3b8a87c4da944c3f27e5943289171ac71a6150a79ff6bacfff06d159dfff2f" +checksum = "9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437" dependencies = [ - "byteorder", - "lzw", - "miniz_oxide", + "jpeg-decoder", + "miniz_oxide 0.4.4", + "weezl", ] [[package]] name = "time" -version = "0.1.44" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" dependencies = [ "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi 0.3.9", + "winapi", ] [[package]] name = "time" -version = "0.2.22" +version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55b7151c9065e80917fbf285d9a5d1432f60db41d170ccafc749a136b41a93af" +checksum = "08a8cbfbf47955132d0202d1662f49b2423ae35862aee471f3ba4b133358f372" dependencies = [ "const_fn", "libc", @@ -2007,7 +1902,7 @@ dependencies = [ "stdweb", "time-macros", "version_check", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -2044,35 +1939,40 @@ dependencies = [ [[package]] name = "tinyvec" -version = "0.3.4" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117" +checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "0.2.22" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccd" +checksum = "83f0c8e7c0addab50b663055baf787d0af7f413a46e6e7fb9559a4e4db7137a5" dependencies = [ - "bytes", - "fnv", - "futures-core", - "iovec", - "lazy_static", + "autocfg", + "bytes 1.0.1", + "libc", "memchr", "mio", "num_cpus", "pin-project-lite", - "slab", ] [[package]] name = "tokio-rustls" -version = "0.14.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12831b255bcfa39dc0436b01e19fea231a37db570686c06ee72c423479f889a" +checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" dependencies = [ - "futures-core", "rustls", "tokio", "webpki", @@ -2080,11 +1980,11 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.3.1" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" +checksum = "940a12c99365c31ea8dd9ba04ec1be183ffe4920102bb7122c2f515437601e8e" dependencies = [ - "bytes", + "bytes 1.0.1", "futures-core", "futures-sink", "log", @@ -2094,27 +1994,26 @@ dependencies = [ [[package]] name = "tower-service" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" +checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.21" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27" +checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" dependencies = [ - "cfg-if", - "log", + "cfg-if 1.0.0", "pin-project-lite", "tracing-core", ] [[package]] name = "tracing-core" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" +checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052" dependencies = [ "lazy_static", ] @@ -2131,49 +2030,40 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04f8ab788026715fa63b31960869617cba39117e520eb415b0139543e325ab59" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "rand 0.7.3", "static_assertions", ] [[package]] name = "typenum" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" - -[[package]] -name = "unicase" -version = "2.6.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -dependencies = [ - "version_check", -] +checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" [[package]] name = "unicode-bidi" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0" dependencies = [ "matches", ] [[package]] name = "unicode-normalization" -version = "0.1.13" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977" +checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" dependencies = [ "tinyvec", ] [[package]] name = "unicode-xid" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "untrusted" @@ -2183,10 +2073,11 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.1.1" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" +checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b" dependencies = [ + "form_urlencoded", "idna", "matches", "percent-encoding", @@ -2194,21 +2085,21 @@ dependencies = [ [[package]] name = "uuid" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fde2f6a4bea1d6e007c4ad38c6839fa71cbb63b6dbf5b595aa38dc9b1093c11" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" [[package]] name = "vcpkg" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" +checksum = "cbdbff6266a24120518560b5dc983096efb98462e51d0d68169895b237be3e5d" [[package]] name = "version_check" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" [[package]] name = "want" @@ -2228,17 +2119,17 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" +version = "0.10.2+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" [[package]] name = "wasm-bindgen" -version = "0.2.68" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" +checksum = "83240549659d187488f91f33c0f8547cbfef0b2088bc470c116d1d260ef623d9" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "serde", "serde_json", "wasm-bindgen-macro", @@ -2246,9 +2137,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.68" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68" +checksum = "ae70622411ca953215ca6d06d3ebeb1e915f0f6613e3b495122878d7ebec7dae" dependencies = [ "bumpalo", "lazy_static", @@ -2261,11 +2152,11 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.18" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7866cab0aa01de1edf8b5d7936938a7e397ee50ce24119aef3e1eaa3b6171da" +checksum = "81b8b767af23de6ac18bf2168b690bed2902743ddf0fb39252e36f9e2bfc63ea" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "js-sys", "wasm-bindgen", "web-sys", @@ -2273,9 +2164,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.68" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038" +checksum = "3e734d91443f177bfdb41969de821e15c516931c3c3db3d318fa1b68975d0f6f" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2283,9 +2174,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.68" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" +checksum = "d53739ff08c8a68b0fdbcd54c372b8ab800b1449ab3c9d706503bc7dd1621b2c" dependencies = [ "proc-macro2", "quote", @@ -2296,15 +2187,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.68" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" +checksum = "d9a543ae66aa233d14bb765ed9af4a33e81b8b58d1584cf1b47ff8cd0b9e4489" [[package]] name = "web-sys" -version = "0.3.45" +version = "0.3.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d" +checksum = "a905d57e488fec8861446d3393670fb50d27a262344013181c2cdf9fff5481be" dependencies = [ "js-sys", "wasm-bindgen", @@ -2312,9 +2203,9 @@ dependencies = [ [[package]] name = "webpki" -version = "0.21.3" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab146130f5f790d45f82aeeb09e55a256573373ec64409fc19a6fb82fb1032ae" +checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" dependencies = [ "ring", "untrusted", @@ -2322,24 +2213,18 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.19.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8eff4b7516a57307f9349c64bf34caa34b940b66fed4b2fb3136cb7386e5739" +checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" dependencies = [ "webpki", ] [[package]] name = "weezl" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0e26e7a4d998e3d7949c69444b8b4916bac810da0d3a82ae612c89e952782f4" - -[[package]] -name = "winapi" -version = "0.2.8" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" +checksum = "d8b77fdfd5a253be4ab714e4ffa3c49caf146b4de743e97510c0656cf90f1e8e" [[package]] name = "winapi" @@ -2351,12 +2236,6 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" - [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -2375,29 +2254,19 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -dependencies = [ - "winapi 0.2.8", - "winapi-build", + "winapi", ] [[package]] name = "zip" -version = "0.5.8" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "543adf038106b64cfca4711c82c917d785e3540e04f7996554488f988ec43124" +checksum = "9c83dc9b784d252127720168abd71ea82bf8c3d96b17dc565b5e2a02854f2b27" dependencies = [ "byteorder", "bzip2", "crc32fast", "flate2", "thiserror", - "time 0.1.44", + "time 0.1.43", ] diff --git a/Cargo.toml b/Cargo.toml index 52d66db5..0052169e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ lto = true [dependencies] thiserror = "1.0" -flume = { version = "0.9", optional = true } +flume = { version = "0.10", optional = true } chrono = { version = "0.4", optional = true } base64 = { version = "0.13", optional = true} md-5 = { version = "0.9", optional = true } @@ -31,16 +31,16 @@ url-dep = { version = "2.1", package = "url", optional = true } png = { version = "0.16", optional = true } image = { version = "0.23.10", optional = true } git2 = { version = "0.13", optional = true, default-features = false } -noise = { version = "0.6", optional = true} -reqwest = { version = "0.10", optional = true, default-features = false, features = ["blocking", "rustls-tls"] } +noise = { version = "0.7", optional = true} +reqwest = { version = "0.11", optional = true, default-features = false, features = ["blocking", "rustls-tls"] } serde = { version = "1.0", optional = true, features = ["derive"] } serde_json = { version = "1.0", optional = true } lazy_static = { version = "1.4", optional = true } once_cell = { version = "1.4", optional = true } mysql = { version = "20.0", optional = true } -dashmap = { version = "3.11", optional = true } +dashmap = { version = "4.0", optional = true } zip = { version = "0.5.8", optional = true } -rand = {version = "0.7", optional = true} +rand = {version = "0.8", optional = true} [features] diff --git a/src/cellularnoise.rs b/src/cellularnoise.rs index 9ffac6b9..fbab9f1a 100644 --- a/src/cellularnoise.rs +++ b/src/cellularnoise.rs @@ -25,7 +25,7 @@ fn noise_gen( let mut zplane = vec![vec![false; width]; height]; for row in zplane.iter_mut() { for cell in row.iter_mut() { - *cell = rand::thread_rng().gen_range(0, 100) < percentage; + *cell = rand::thread_rng().gen_range(0..100) < percentage; } } From 475ece09d624da1e0255457922afebf8aa79a528 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Wed, 5 May 2021 02:32:27 -0700 Subject: [PATCH 07/82] Basic version getter (#68) --- dmsrc/main.dm | 3 +++ src/byond.rs | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/dmsrc/main.dm b/dmsrc/main.dm index 80099ca0..bd4497ad 100644 --- a/dmsrc/main.dm +++ b/dmsrc/main.dm @@ -37,3 +37,6 @@ #define RUST_G (__rust_g || __detect_rust_g()) #endif + +/// Gets the version of rust_g +/proc/rustg_get_version() return call(RUST_G, "get_version")() diff --git a/src/byond.rs b/src/byond.rs index 68925ce3..8be0aba3 100644 --- a/src/byond.rs +++ b/src/byond.rs @@ -75,3 +75,8 @@ macro_rules! byond_fn { } }; } + +// Easy version checker. It's in this file so it is always included +byond_fn! { get_version() { + Some(env!("CARGO_PKG_VERSION")) +} } From efc88c0a05d0bc3fea59fe9d6dd2f63cf82104a9 Mon Sep 17 00:00:00 2001 From: oranges Date: Mon, 28 Jun 2021 06:53:15 +0000 Subject: [PATCH 08/82] Bump Version sto v0.4.8 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 238ce2d1..9c3cf574 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1493,7 +1493,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "0.4.7" +version = "0.4.8" dependencies = [ "base64 0.13.0", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 0052169e..184fbc77 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rust-g" edition = "2018" -version = "0.4.7" +version = "0.4.8" authors = ["Bjorn Neergaard "] repository = "https://github.com/tgstation/rust-g" license-file = "LICENSE" From dc43630b20c84fb7dc535dc0f4310fb60f3489bd Mon Sep 17 00:00:00 2001 From: oranges Date: Wed, 30 Jun 2021 04:09:13 +1200 Subject: [PATCH 09/82] Setup cross compiling using the cross project (#70) --- Cross.toml | 11 +++++++++++ docker/Dockerfile.i686-unknown-linux-gnu | 5 +++++ scripts/prepare_binaries.sh | 12 +++++++++--- 3 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 Cross.toml create mode 100644 docker/Dockerfile.i686-unknown-linux-gnu diff --git a/Cross.toml b/Cross.toml new file mode 100644 index 00000000..31a39d64 --- /dev/null +++ b/Cross.toml @@ -0,0 +1,11 @@ +[target.i686-pc-windows-gnu] +image = "rustembedded/cross:i686-pc-windows-gnu" + +[target.i686-unknown-linux-gnu] +image = "rustg/i686-unknown-linux-gnu" + +[build.env] +passthrough = [ + "PKG_CONFIG_ALLOW_CROSS" +] + diff --git a/docker/Dockerfile.i686-unknown-linux-gnu b/docker/Dockerfile.i686-unknown-linux-gnu new file mode 100644 index 00000000..f37a8bfd --- /dev/null +++ b/docker/Dockerfile.i686-unknown-linux-gnu @@ -0,0 +1,5 @@ +FROM rustembedded/cross:i686-unknown-linux-gnu + +RUN dpkg --add-architecture i386 && \ + apt-get update && \ + apt-get install --assume-yes zlib1g-dev:i386 libssl-dev:i386 pkg-config:i386 diff --git a/scripts/prepare_binaries.sh b/scripts/prepare_binaries.sh index 73afd201..20a22b80 100755 --- a/scripts/prepare_binaries.sh +++ b/scripts/prepare_binaries.sh @@ -3,16 +3,18 @@ set -euo pipefail touch build.rs +echo '==== Make sure cross is installed ====' +cargo install cross + echo '==== Linux build ====' # ------------------------------------------------ rustup target add i686-unknown-linux-gnu env PKG_CONFIG_ALLOW_CROSS=1 \ - cargo build --release --target i686-unknown-linux-gnu + cargo build --release --target i686-unknown-linux-gnu mv target/rust_g.dm target/rust_g.linux.dm echo '==== Windows build ====' # ---------------------------------------------- -rustup target add i686-pc-windows-gnu -cargo build --release --target i686-pc-windows-gnu +cross build --release --target i686-pc-windows-gnu # https://github.com/rust-lang/rust/issues/12859#issuecomment-62255275 # Most distros ship 32-bit toolchains with SJLJ unwinding, but for 32-bit Rust # can only cross-compile targeting DWARF. All 64-bit toolchains use SEH, where @@ -27,6 +29,10 @@ cargo build --release --target i686-pc-windows-gnu # tar xf rust-mingw-nightly-i686-pc-windows-gnu.tar.gz # ./rust-mingw-nightly-i686-pc-windows-gnu/install.sh --prefix=$(rustc --print sysroot) +# Luckily we are taking the third workaround, which is using the cross projects i686 +# windows toolchain docker which comes with an updated version of mingw that supports +# the DWARF based unwinding, freeing us from such earthly concerns + # Make sure the `rust_g.dm` produced for each platform are the same, just in # case. cmp target/rust_g.dm target/rust_g.linux.dm From 2529beed640ac8d344d2761bbd5387e6dfc40a01 Mon Sep 17 00:00:00 2001 From: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Date: Thu, 15 Jul 2021 21:26:38 -0700 Subject: [PATCH 10/82] Make the url feature default (#71) Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com> --- Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 184fbc77..7b1439f6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,7 +44,7 @@ rand = {version = "0.8", optional = true} [features] -default = ["cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "sql"] +default = ["cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "sql", "url"] # default features cellularnoise = ["rand"] @@ -55,10 +55,10 @@ http = ["reqwest", "serde", "serde_json", "once_cell", "jobs"] json = ["serde", "serde_json"] log = ["chrono"] sql = ["mysql", "serde", "serde_json", "once_cell", "dashmap", "jobs"] +url = ["url-dep", "percent-encoding"] # non-default features hash = ["base64", "const-random", "md-5", "hex", "sha-1", "sha2", "twox-hash"] -url = ["url-dep", "percent-encoding"] unzip = ["zip", "jobs"] # internal feature-like things From 15cbab61b71db69ca4ed773877dccbff51b460fd Mon Sep 17 00:00:00 2001 From: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com> Date: Fri, 16 Jul 2021 02:18:06 -0700 Subject: [PATCH 11/82] 0.4.9 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9c3cf574..5e6af67d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1493,7 +1493,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "0.4.8" +version = "0.4.9" dependencies = [ "base64 0.13.0", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 7b1439f6..7e8fdb65 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rust-g" edition = "2018" -version = "0.4.8" +version = "0.4.9" authors = ["Bjorn Neergaard "] repository = "https://github.com/tgstation/rust-g" license-file = "LICENSE" From d453428d25563dc63bb6c138b0b977bd1614eaad Mon Sep 17 00:00:00 2001 From: Mark Suckerberg <29362068+MarkSuckerberg@users.noreply.github.com> Date: Fri, 6 Aug 2021 17:21:24 -0500 Subject: [PATCH 12/82] Runs cargo update (#72) most importantly git2, which made it error when trying to build on linux with the latest rust version --- Cargo.lock | 432 +++++++++++++++++++++++++++-------------------------- 1 file changed, 218 insertions(+), 214 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5e6af67d..ffef0972 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -16,9 +16,14 @@ checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "ahash" -version = "0.4.7" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" +checksum = "43bb833f0bf979d8475d38fbf09ed3b8a55e1885fe93ad3f93239fc6a4f17b98" +dependencies = [ + "getrandom 0.2.3", + "once_cell", + "version_check", +] [[package]] name = "aho-corasick" @@ -115,9 +120,9 @@ checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" [[package]] name = "bumpalo" -version = "3.6.1" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe" +checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631" [[package]] name = "byte-tools" @@ -127,9 +132,9 @@ checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "bytemuck" -version = "1.5.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bed57e2090563b83ba8f83366628ce535a7584c9afa4c9fc0612a03925c6df58" +checksum = "72957246c41db82b8ef88a5486143830adeb8227ef9837740bdec67724cf2c5b" [[package]] name = "byteorder" @@ -151,9 +156,9 @@ checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" [[package]] name = "bzip2" -version = "0.3.3" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42b7c3cbf0fa9c1b82308d57191728ca0256cb821220f4e2fd410a72ade26e3b" +checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0" dependencies = [ "bzip2-sys", "libc", @@ -161,9 +166,9 @@ dependencies = [ [[package]] name = "bzip2-sys" -version = "0.1.10+1.0.8" +version = "0.1.11+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17fa3d1ac1ca21c5c4e36a97f3c3eb25084576f6fc47bf0139c1123434216c6c" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" dependencies = [ "cc", "libc", @@ -172,19 +177,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.67" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" +checksum = "e70cc2f62c6ce1868963827bd677764c62d07c3d9a3e1fb1177ee1a9ab199eb2" dependencies = [ "jobserver", ] -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - [[package]] name = "cfg-if" version = "1.0.0" @@ -227,7 +226,7 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "615f6e27d000a2bffbc7f2f6a8669179378fa27ee4d0a509e985dfc0a7defb40" dependencies = [ - "getrandom 0.2.2", + "getrandom 0.2.3", "lazy_static", "proc-macro-hack", "tiny-keccak", @@ -235,9 +234,9 @@ dependencies = [ [[package]] name = "const_fn" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402da840495de3f976eaefc3485b7f5eb5b0bf9761f9a47be27fe975b3b8c2ec" +checksum = "f92cfa0fd5690b3cf8c1ef2cabbd9b7ef22fa53cf5e1f92b05103f6d5d1cf6e7" [[package]] name = "core-foundation" @@ -256,10 +255,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" [[package]] -name = "cpuid-bool" -version = "0.1.2" +name = "cpufeatures" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634" +checksum = "66c99696f6c9dd7f35d486b9d04d7e6e202aa3e8c40d553f2fdf5e7e0c6a71ef" +dependencies = [ + "libc", +] [[package]] name = "crc32fast" @@ -267,7 +269,7 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -276,28 +278,28 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" +checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52fb27eab85b17fbb9f6fd667089e07d6a2eb8743d02639ee7f6a7a7729c9c94" +checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "crossbeam-utils", "lazy_static", "memoffset", @@ -306,12 +308,11 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4feb231f0d4d6af81aed15928e58ecf5816aa62a2393e2c82f46973e92a9a278" +checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" dependencies = [ - "autocfg", - "cfg-if 1.0.0", + "cfg-if", "lazy_static", ] @@ -327,7 +328,7 @@ version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "num_cpus", ] @@ -388,7 +389,7 @@ version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -403,7 +404,7 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "crc32fast", "libc", "libz-sys", @@ -412,9 +413,9 @@ dependencies = [ [[package]] name = "flume" -version = "0.10.5" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa9d66b91e902db43baefd8e40c8678ce29db2cf1d88ebd715174368d5fe70a9" +checksum = "ddad16e8529759736a9ce4cdf078ed702e45d3c5b0474a1c65f5149e9fa7f1eb" dependencies = [ "futures-core", "futures-sink", @@ -456,31 +457,32 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.14" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce79c6a52a299137a6013061e0cf0e688fce5d7f1bc60125f520912fdb29ec25" +checksum = "74ed2411805f6e4e3d9bc904c95d5d423b89b3b25dc0250aa74729de20629ff9" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.14" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "098cd1c6dda6ca01650f1a37a794245eb73181d0d4d4e955e2f3c37db7af1815" +checksum = "af51b1b4a7fdff033703db39de8802c673eb91855f2e0d47dcf3bf2c0ef01f99" [[package]] name = "futures-io" -version = "0.3.14" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "365a1a1fb30ea1c03a830fdb2158f5236833ac81fa0ad12fe35b29cddc35cb04" +checksum = "0b0e06c393068f3a6ef246c75cdca793d6a46347e75286933e5e75fd2fd11582" [[package]] name = "futures-macro" -version = "0.3.14" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668c6733a182cd7deb4f1de7ba3bf2120823835b3bcfbeacf7d2c4a773c1bb8b" +checksum = "c54913bae956fb8df7f4dc6fc90362aa72e69148e3f39041fbe8742d21e0ac57" dependencies = [ + "autocfg", "proc-macro-hack", "proc-macro2", "quote", @@ -489,22 +491,23 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.14" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5629433c555de3d82861a7a4e3794a4c40040390907cfbfd7143a92a426c23" +checksum = "c0f30aaa67363d119812743aa5f33c201a7a66329f97d1a887022971feea4b53" [[package]] name = "futures-task" -version = "0.3.14" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba7aa51095076f3ba6d9a1f702f74bd05ec65f555d70d2033d55ba8d69f581bc" +checksum = "bbe54a98670017f3be909561f6ad13e810d9a51f3f061b902062ca3da80799f2" [[package]] name = "futures-util" -version = "0.3.14" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c144ad54d60f23927f0a6b6d816e4271278b64f005ad65e4e35291d2de9c025" +checksum = "67eb846bfd58e44a8481a00049e82c43e0ccb5d61f8dc071057cb19249dd4d78" dependencies = [ + "autocfg", "futures-core", "futures-io", "futures-macro", @@ -542,18 +545,18 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] [[package]] name = "getrandom" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "libc", "wasi 0.10.2+wasi-snapshot-preview1", @@ -572,9 +575,9 @@ dependencies = [ [[package]] name = "git2" -version = "0.13.18" +version = "0.13.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b483c6c2145421099df1b4efd50e0f6205479a072199460eff852fa15e5603c7" +checksum = "d9831e983241f8c5591ed53f17d874833e2fa82cac2625f3888c50cbfe136cba" dependencies = [ "bitflags", "libc", @@ -604,18 +607,18 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.9.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ "ahash", ] [[package]] name = "hermit-abi" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ "libc", ] @@ -639,9 +642,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfb77c123b4e2f72a2069aeae0b4b4949cc7e966df277813fc16347e7549737" +checksum = "60daa14be0e0786db0f03a9e57cb404c9d756eed2b6c62b9ea98ec5743ec75a9" dependencies = [ "bytes 1.0.1", "http", @@ -650,21 +653,21 @@ dependencies = [ [[package]] name = "httparse" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1ce40d6fc9764887c2fdc7305c3dcc429ba11ff981c1509416afd5697e4437" +checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68" [[package]] name = "httpdate" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05842d0d43232b23ccb7060ecb0f0626922c21f30012e97b767b30afd4a5d4b9" +checksum = "6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440" [[package]] name = "hyper" -version = "0.14.7" +version = "0.14.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e5f105c494081baa3bf9e200b279e27ec1623895cd504c7dbef8d0b080fcf54" +checksum = "0b61cf2d1aebcf6e6352c97b81dc2244ca29194be1b276f5d8ad5c6330fffb11" dependencies = [ "bytes 1.0.1", "futures-channel", @@ -676,8 +679,8 @@ dependencies = [ "httparse", "httpdate", "itoa", - "pin-project", - "socket2 0.4.0", + "pin-project-lite", + "socket2 0.4.1", "tokio", "tower-service", "tracing", @@ -731,9 +734,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.6.2" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3" +checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" dependencies = [ "autocfg", "hashbrown", @@ -753,9 +756,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" +checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" [[package]] name = "itoa" @@ -765,9 +768,9 @@ checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" [[package]] name = "jobserver" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "972f5ae5d1cb9c6ae417789196c803205313edde988685da5e3aae0827b9e7fd" +checksum = "f5ca711fd837261e14ec9e674f092cbb931d3fa1482b017ae59328ddc6f3212b" dependencies = [ "libc", ] @@ -783,9 +786,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.50" +version = "0.3.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d99f9e3e84b8f67f846ef5b4cbbc3b1c29f6c759fcbce6f01aa0e73d932a24c" +checksum = "ce791b7ca6638aae45be056e068fc756d871eb3b3b10b8efa62d1c9cec616752" dependencies = [ "wasm-bindgen", ] @@ -802,7 +805,7 @@ version = "5.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f404a90a744e32e8be729034fc33b90cf2a56418fbf594d69aa3c0214ad414e5" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "lexical-core", ] @@ -814,22 +817,22 @@ checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" dependencies = [ "arrayvec", "bitflags", - "cfg-if 1.0.0", + "cfg-if", "ryu", "static_assertions", ] [[package]] name = "libc" -version = "0.2.94" +version = "0.2.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" +checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790" [[package]] name = "libgit2-sys" -version = "0.12.19+1.1.0" +version = "0.12.21+1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f322155d574c8b9ebe991a04f6908bb49e68a79463338d24a43d6274cb6443e6" +checksum = "86271bacd72b2b9e854c3dcfb82efd538f15f870e4c11af66900effb462f6825" dependencies = [ "cc", "libc", @@ -864,14 +867,14 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] name = "lru" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f374d42cdfc1d7dbf3d3dec28afab2eb97ffbf43a3234d795b5986dbf4b90ba" +checksum = "7ea2d928b485416e8908cff2d97d621db22b27f7b3b6729e438bcf42c671ba91" dependencies = [ "hashbrown", ] @@ -901,9 +904,9 @@ checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" [[package]] name = "memoffset" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83fb6581e8ed1f85fd45c116db8405483899489e38406156c25eb743554361d" +checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" dependencies = [ "autocfg", ] @@ -935,9 +938,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.7.11" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf80d3e903b34e0bd7282b218398aec54e082c840d9baf8339e0080a0c542956" +checksum = "8c2bdb6314ec10835cd3293dd268473a835c02b7b352e788be788b3c6ca6bb16" dependencies = [ "libc", "log", @@ -1002,7 +1005,7 @@ dependencies = [ "serde_json", "sha1", "sha2 0.8.2", - "time 0.2.26", + "time 0.2.27", "twox-hash", "uuid", ] @@ -1022,7 +1025,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac1378b66f7c93a1c0f8464a19bf47df8795083842e5090f4b7305973d5a22d0" dependencies = [ - "getrandom 0.2.2", + "getrandom 0.2.3", ] [[package]] @@ -1051,7 +1054,7 @@ checksum = "b2ccba0cfe4fdf15982d1674c69b1fd80bad427d293849982668dfe454bd61f2" dependencies = [ "bitflags", "cc", - "cfg-if 1.0.0", + "cfg-if", "libc", ] @@ -1139,9 +1142,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3" +checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" [[package]] name = "opaque-debug" @@ -1157,12 +1160,12 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.34" +version = "0.10.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7830286ad6a3973c0f1d9b73738f69c76b739301d0229c4b96501695cbe4c8" +checksum = "549430950c79ae24e6d02e0b7404534ecf311d94cc9f861e9e4020187d13d885" dependencies = [ "bitflags", - "cfg-if 1.0.0", + "cfg-if", "foreign-types", "libc", "once_cell", @@ -1171,15 +1174,15 @@ dependencies = [ [[package]] name = "openssl-probe" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" +checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "openssl-sys" -version = "0.9.62" +version = "0.9.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52160d45fa2e7608d504b7c3a3355afed615e6d8b627a74458634ba21b69bd" +checksum = "7a7907e3bfa08bb85105209cdfcb6c63d109f8f6c1ed6ca318fff5c1853fbc1d" dependencies = [ "autocfg", "cc", @@ -1207,18 +1210,18 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "pin-project" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7509cc106041c40a4518d2af7a61530e1eed0e6285296a3d8c5472806ccc4a4" +checksum = "576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c950132583b500556b1efd71d45b319029f2b71518d979fcc208e16b42426f" +checksum = "6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389" dependencies = [ "proc-macro2", "quote", @@ -1227,9 +1230,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905" +checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" [[package]] name = "pin-utils" @@ -1275,9 +1278,9 @@ checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" [[package]] name = "proc-macro2" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" +checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" dependencies = [ "unicode-xid", ] @@ -1306,14 +1309,14 @@ dependencies = [ [[package]] name = "rand" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" +checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" dependencies = [ "libc", - "rand_chacha 0.3.0", - "rand_core 0.6.2", - "rand_hc 0.3.0", + "rand_chacha 0.3.1", + "rand_core 0.6.3", + "rand_hc 0.3.1", ] [[package]] @@ -1328,12 +1331,12 @@ dependencies = [ [[package]] name = "rand_chacha" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.2", + "rand_core 0.6.3", ] [[package]] @@ -1347,11 +1350,11 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.2", + "getrandom 0.2.3", ] [[package]] @@ -1365,11 +1368,11 @@ dependencies = [ [[package]] name = "rand_hc" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" +checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" dependencies = [ - "rand_core 0.6.2", + "rand_core 0.6.3", ] [[package]] @@ -1383,9 +1386,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" +checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" dependencies = [ "autocfg", "crossbeam-deque", @@ -1395,9 +1398,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" +checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -1408,18 +1411,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.7" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85dd92e586f7355c633911e11f77f3d12f04b1b1bd76a198bd34ae3af8341ef2" +checksum = "5ab49abadf3f9e1c4bc499e8845e152ad87d2ad2d30371841171169e9d75feee" dependencies = [ "bitflags", ] [[package]] name = "regex" -version = "1.5.3" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce5f1ceb7f74abbce32601642fcf8e8508a8a8991e0621c7d750295b9095702b" +checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" dependencies = [ "aho-corasick", "memchr", @@ -1443,9 +1446,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.3" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2296f2fac53979e8ccbc4a1136b25dcefd37be9ed7e4a1f6b05a6029c84ff124" +checksum = "246e9f61b9bb77df069a947682be06e31ac43ea37862e244a69f177694ea6d22" dependencies = [ "base64 0.13.0", "bytes 1.0.1", @@ -1510,12 +1513,12 @@ dependencies = [ "once_cell", "percent-encoding", "png", - "rand 0.8.3", + "rand 0.8.4", "reqwest", "serde", "serde_json", "sha-1", - "sha2 0.9.3", + "sha2 0.9.5", "thiserror", "twox-hash", "url", @@ -1524,9 +1527,9 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.12.4" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3358e4d417d8f4ae6b972d8c2bf4d5d9a39bda57d00a968af06f10e3fed400fd" +checksum = "c5446d1cf2dfe2d6367c8b27f2082bdf011e60e76fa1fcd140047f535156d6e7" dependencies = [ "arrayvec", "num-traits", @@ -1595,9 +1598,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3670b1d2fdf6084d192bc71ead7aabe6c06aa2ea3fbd9cc3ac111fa5c2b1bd84" +checksum = "23a2ac85147a3a11d77ecf1bc7166ec0b92febfa4461c37944e180f319ece467" dependencies = [ "bitflags", "core-foundation", @@ -1608,9 +1611,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3676258fd3cfe2c9a0ec99ce3038798d847ce3e4bb17746373eb9f0f1ac16339" +checksum = "7e4effb91b4b8b6fb7732e670b6cee160278ff8e6bf485c7805d9e319d76e284" dependencies = [ "core-foundation-sys", "libc", @@ -1633,18 +1636,18 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.125" +version = "1.0.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" +checksum = "f03b9878abf6d14e6779d3f24f07b2cfa90352cfec4acc5aab8f1ac7f146fae8" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.125" +version = "1.0.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" +checksum = "a024926d3432516606328597e0f224a51355a493b49fdd67e9209187cbe55ecc" dependencies = [ "proc-macro2", "quote", @@ -1653,9 +1656,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.64" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" +checksum = "336b10da19a12ad094b59d870ebde26a45402e5b470add4b5fd03c5048a32127" dependencies = [ "itoa", "ryu", @@ -1676,13 +1679,13 @@ dependencies = [ [[package]] name = "sha-1" -version = "0.9.4" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfebf75d25bd900fd1e7d11501efab59bc846dbc76196839663e6637bba9f25f" +checksum = "1a0c8611594e2ab4ebbf06ec7cbbf0a99450b8570e96cbf5188b5d5f6ef18d81" dependencies = [ "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpuid-bool", + "cfg-if", + "cpufeatures", "digest 0.9.0", "opaque-debug 0.3.0", ] @@ -1707,13 +1710,13 @@ dependencies = [ [[package]] name = "sha2" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa827a14b29ab7f44778d14a88d3cb76e949c45083f7dbfa507d0cb699dc12de" +checksum = "b362ae5752fd2137731f9fa25fd4d9058af34666ca1966fb969119cc35719f12" dependencies = [ "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpuid-bool", + "cfg-if", + "cpufeatures", "digest 0.9.0", "opaque-debug 0.3.0", ] @@ -1730,16 +1733,16 @@ version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "winapi", ] [[package]] name = "socket2" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2" +checksum = "765f090f0e423d2b55843402a07915add955e7d60657db13707a159727326cad" dependencies = [ "libc", "winapi", @@ -1753,9 +1756,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "spinning_top" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bd0ab6b8c375d2d963503b90d3770010d95bc3b5f98036f948dee24bf4e8879" +checksum = "75adad84ee84b521fb2cca2d4fd0f1dab1d8d026bda3c5bea4ca63b5f9f9293c" dependencies = [ "lock_api", ] @@ -1826,9 +1829,9 @@ checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" [[package]] name = "syn" -version = "1.0.71" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad184cc9470f9117b2ac6817bfe297307418819ba40552f9b3846f05c33d5373" +checksum = "1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c" dependencies = [ "proc-macro2", "quote", @@ -1841,9 +1844,9 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", - "rand 0.8.3", + "rand 0.8.4", "redox_syscall", "remove_dir_all", "winapi", @@ -1851,18 +1854,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.24" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" +checksum = "93119e4feac1cbe6c798c34d3a53ea0026b0b1de6a120deef895137c0529bfe2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.24" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" +checksum = "060d69a0afe7796bf42e9e2ff91f5ee691fb15c53d38b4b62a9a53eb23164745" dependencies = [ "proc-macro2", "quote", @@ -1892,9 +1895,9 @@ dependencies = [ [[package]] name = "time" -version = "0.2.26" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a8cbfbf47955132d0202d1662f49b2423ae35862aee471f3ba4b133358f372" +checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" dependencies = [ "const_fn", "libc", @@ -1917,9 +1920,9 @@ dependencies = [ [[package]] name = "time-macros-impl" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5c3be1edfad6027c69f5491cf4cb310d1a71ecd6af742788c6ff8bced86b8fa" +checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" dependencies = [ "proc-macro-hack", "proc-macro2", @@ -1939,9 +1942,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" +checksum = "848a1e1181b9f6753b5e96a092749e29b11d19ede67dfbbd6c7dc7e0f49b5338" dependencies = [ "tinyvec_macros", ] @@ -1954,9 +1957,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.5.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83f0c8e7c0addab50b663055baf787d0af7f413a46e6e7fb9559a4e4db7137a5" +checksum = "4b7b349f11a7047e6d1276853e612d152f5e8a352c61917887cc2169e2366b4c" dependencies = [ "autocfg", "bytes 1.0.1", @@ -1965,6 +1968,7 @@ dependencies = [ "mio", "num_cpus", "pin-project-lite", + "winapi", ] [[package]] @@ -1980,9 +1984,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "940a12c99365c31ea8dd9ba04ec1be183ffe4920102bb7122c2f515437601e8e" +checksum = "1caa0b0c8d94a049db56b5acf8cba99dc0623aab1b26d5b5f5e2d945846b3592" dependencies = [ "bytes 1.0.1", "futures-core", @@ -2004,7 +2008,7 @@ version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "pin-project-lite", "tracing-core", ] @@ -2026,12 +2030,12 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "twox-hash" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f8ab788026715fa63b31960869617cba39117e520eb415b0139543e325ab59" +checksum = "1f559b464de2e2bdabcac6a210d12e9b5a5973c251e102c44c585c71d51bd78e" dependencies = [ - "cfg-if 0.1.10", - "rand 0.7.3", + "cfg-if", + "rand 0.8.4", "static_assertions", ] @@ -2052,9 +2056,9 @@ dependencies = [ [[package]] name = "unicode-normalization" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" +checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" dependencies = [ "tinyvec", ] @@ -2073,9 +2077,9 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.2.1" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" dependencies = [ "form_urlencoded", "idna", @@ -2091,9 +2095,9 @@ checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" [[package]] name = "vcpkg" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbdbff6266a24120518560b5dc983096efb98462e51d0d68169895b237be3e5d" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" @@ -2125,11 +2129,11 @@ checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" [[package]] name = "wasm-bindgen" -version = "0.2.73" +version = "0.2.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83240549659d187488f91f33c0f8547cbfef0b2088bc470c116d1d260ef623d9" +checksum = "b608ecc8f4198fe8680e2ed18eccab5f0cd4caaf3d83516fa5fb2e927fda2586" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "serde", "serde_json", "wasm-bindgen-macro", @@ -2137,9 +2141,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.73" +version = "0.2.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae70622411ca953215ca6d06d3ebeb1e915f0f6613e3b495122878d7ebec7dae" +checksum = "580aa3a91a63d23aac5b6b267e2d13cb4f363e31dce6c352fca4752ae12e479f" dependencies = [ "bumpalo", "lazy_static", @@ -2152,11 +2156,11 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.23" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b8b767af23de6ac18bf2168b690bed2902743ddf0fb39252e36f9e2bfc63ea" +checksum = "16646b21c3add8e13fdb8f20172f8a28c3dbf62f45406bcff0233188226cfe0c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "wasm-bindgen", "web-sys", @@ -2164,9 +2168,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.73" +version = "0.2.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e734d91443f177bfdb41969de821e15c516931c3c3db3d318fa1b68975d0f6f" +checksum = "171ebf0ed9e1458810dfcb31f2e766ad6b3a89dbda42d8901f2b268277e5f09c" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2174,9 +2178,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.73" +version = "0.2.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53739ff08c8a68b0fdbcd54c372b8ab800b1449ab3c9d706503bc7dd1621b2c" +checksum = "6c2657dd393f03aa2a659c25c6ae18a13a4048cebd220e147933ea837efc589f" dependencies = [ "proc-macro2", "quote", @@ -2187,15 +2191,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.73" +version = "0.2.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9a543ae66aa233d14bb765ed9af4a33e81b8b58d1584cf1b47ff8cd0b9e4489" +checksum = "2e0c4a743a309662d45f4ede961d7afa4ba4131a59a639f29b0069c3798bbcc2" [[package]] name = "web-sys" -version = "0.3.50" +version = "0.3.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a905d57e488fec8861446d3393670fb50d27a262344013181c2cdf9fff5481be" +checksum = "01c70a82d842c9979078c772d4a1344685045f1a5628f677c2b2eab4dd7d2696" dependencies = [ "js-sys", "wasm-bindgen", @@ -2259,9 +2263,9 @@ dependencies = [ [[package]] name = "zip" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c83dc9b784d252127720168abd71ea82bf8c3d96b17dc565b5e2a02854f2b27" +checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" dependencies = [ "byteorder", "bzip2", From d6b6b1d257bcaafe4f3af5f2b27dc8d4cd811269 Mon Sep 17 00:00:00 2001 From: Gamer025 <33846895+Gamer025@users.noreply.github.com> Date: Wed, 11 Aug 2021 23:19:11 +0200 Subject: [PATCH 13/82] Stringify url_encode and decode input before sending it to Rust (#73) Co-authored-by: Jordan Brown --- dmsrc/url.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dmsrc/url.dm b/dmsrc/url.dm index 914b8bb9..b56131be 100644 --- a/dmsrc/url.dm +++ b/dmsrc/url.dm @@ -1,4 +1,4 @@ -#define rustg_url_encode(text) call(RUST_G, "url_encode")(text) +#define rustg_url_encode(text) call(RUST_G, "url_encode")("[text]") #define rustg_url_decode(text) call(RUST_G, "url_decode")(text) #ifdef RUSTG_OVERRIDE_BUILTINS From f6b2172b60d583c6b37bf923d66ccdc3b268d101 Mon Sep 17 00:00:00 2001 From: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com> Date: Wed, 11 Aug 2021 22:33:29 -0700 Subject: [PATCH 14/82] 0.4.10 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ffef0972..dcf5293c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1496,7 +1496,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "0.4.9" +version = "0.4.10" dependencies = [ "base64 0.13.0", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 7e8fdb65..ab24a3e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rust-g" edition = "2018" -version = "0.4.9" +version = "0.4.10" authors = ["Bjorn Neergaard "] repository = "https://github.com/tgstation/rust-g" license-file = "LICENSE" From 03c0c37ad93b8aa9637cfc52f154c5b3ccf34b30 Mon Sep 17 00:00:00 2001 From: EdgeLordExe <42111655+EdgeLordExe@users.noreply.github.com> Date: Tue, 7 Sep 2021 01:31:03 +0200 Subject: [PATCH 15/82] Add worley noise optional feature (#74) * worley_noise * a simple fix, forgot to ad dmsort as a necessary package * replaces .unwrap() with ? * forgot to save :cryingintoheavens: * IM SORRY I CANT USE ? IN CLOSURES * Completely reworks how the code works, massively optimizing it. Generation lost a tiny bit of it's fidelity but oh well, looks fantastic rn * one last change * tfw errors * makes the noise generate pretties noise * cargo fmt --- Cargo.lock | 7 ++ Cargo.toml | 3 +- README.md | 1 + src/lib.rs | 2 + src/worleynoise.rs | 229 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 241 insertions(+), 1 deletion(-) create mode 100644 src/worleynoise.rs diff --git a/Cargo.lock b/Cargo.lock index dcf5293c..19ffa233 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -377,6 +377,12 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" +[[package]] +name = "dmsort" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4699f5cb7678f099b747ffdc1e6ce6cdc42579e29d28315aa715b9fd10324fc" + [[package]] name = "either" version = "1.6.1" @@ -1502,6 +1508,7 @@ dependencies = [ "chrono", "const-random", "dashmap", + "dmsort", "flume", "git2", "hex", diff --git a/Cargo.toml b/Cargo.toml index ab24a3e4..7402a218 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,7 +41,7 @@ mysql = { version = "20.0", optional = true } dashmap = { version = "4.0", optional = true } zip = { version = "0.5.8", optional = true } rand = {version = "0.8", optional = true} - +dmsort = {version = "1.0.0", optional = true} [features] default = ["cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "sql", "url"] @@ -60,6 +60,7 @@ url = ["url-dep", "percent-encoding"] # non-default features hash = ["base64", "const-random", "md-5", "hex", "sha-1", "sha2", "twox-hash"] unzip = ["zip", "jobs"] +worleynoise = ["rand","dmsort"] # internal feature-like things jobs = ["flume"] diff --git a/README.md b/README.md index 74eb3342..676d51f4 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,7 @@ Additional features are: * hash: Faster replacement for `md5`, support for SHA-1, SHA-256, and SHA-512. Requires OpenSSL on Linux. * url: Faster replacements for `url_encode` and `url_decode`. * unzip: Function to download a .zip from a URL and unzip it to a directory. +* worleynoise: Function that generates a type of nice looking cellular noise, more expensive than cellularnoise ## Installing diff --git a/src/lib.rs b/src/lib.rs index 2e3bf729..7fc7c6e2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -30,6 +30,8 @@ pub mod sql; pub mod unzip; #[cfg(feature = "url")] pub mod url; +#[cfg(feature = "worleynoise")] +pub mod worleynoise; #[cfg(not(target_pointer_width = "32"))] compile_error!("rust-g must be compiled for a 32-bit target"); diff --git a/src/worleynoise.rs b/src/worleynoise.rs new file mode 100644 index 00000000..a22d7525 --- /dev/null +++ b/src/worleynoise.rs @@ -0,0 +1,229 @@ +use crate::error::Result; +use rand::*; +use std::fmt::Write; +use std::rc::Rc; + +byond_fn! { worley_generate(region_size, threshold, node_per_region_chance, width, height) { + worley_noise(region_size, threshold, node_per_region_chance, width, height).ok() +} } + +// This is a quite complex algorithm basically what it does is it creates 2 maps, one filled with cells and the other with 'regions' that map onto these cells. +// Each region can spawn 1 node, the cell then determines wether it is true or false depending on the distance from it to the nearest node in the region minus the second closest node. +// If this distance is greater than the threshold then the cell is true, otherwise it is false. +fn worley_noise( + str_reg_size: &str, + str_positive_threshold: &str, + str_node_per_region_chance: &str, + str_width: &str, + str_height: &str, +) -> Result { + let region_size = str_reg_size.parse::()?; + let positive_threshold = str_positive_threshold.parse::()?; + let width = str_width.parse::()?; + let height = str_height.parse::()?; + let node_per_region_chance = str_node_per_region_chance.parse::()?; + + //i fucking mixed up width and height again. it really doesnt matter but here is a comment just warning you. + let mut map = Map::new(region_size, height, width, node_per_region_chance); + + map.generate_noise(positive_threshold as f32); + + let mut output = String::new(); + + for row in map.cell_map { + for cell in row { + if cell.value { + let _ = write!(output, "1"); + } else { + let _ = write!(output, "0"); + } + } + } + Ok(output) +} + +struct Map { + region_size: i32, + region_map: Vec>>, + cell_map: Vec>, + cell_map_width: i32, + cell_map_height: i32, + node_chance: f32, +} + +impl Map { + fn new(region_size: i32, cell_map_width: i32, cell_map_height: i32, node_chance: f32) -> Map { + let mut map = Map { + region_size: region_size, + region_map: Vec::new(), + cell_map: Vec::new(), + cell_map_width: cell_map_width, + cell_map_height: cell_map_height, + node_chance: node_chance, + }; + + map.init_regions(); + + for x in 0..cell_map_width { + map.cell_map.push(Vec::new()); + for y in 0..cell_map_height { + let cell = Cell::new( + x, + y, + map.region_map[(x / region_size) as usize][(y / region_size) as usize].clone(), + ); + map.cell_map[(x) as usize].push(cell); + } + } + map + } + fn init_regions(&mut self) { + let mut rng = rand::thread_rng(); + + let regions_x = self.cell_map_width / self.region_size; + let regions_y = self.cell_map_height / self.region_size; + //those two variables ensure that we dont EVER panic due to not having enough nodes spawned for the distance algorithm to function. + let mut node_count = 0; + let mut distance_in_regions_since_last_node = 0; + + for i in 0..regions_x { + distance_in_regions_since_last_node += 1; + self.region_map.push(Vec::new()); + for j in 0..regions_y { + distance_in_regions_since_last_node += 1; + let mut region = Region::new(i, j); + if rng.gen_range(0..100) as f32 <= self.node_chance || node_count < 2 { + let xcord = rng.gen_range(0..self.region_size); + let ycord = rng.gen_range(0..self.region_size); + let node = + Node::new(xcord + i * self.region_size, ycord + j * self.region_size); + region.node = Some(node); + node_count += 1; + distance_in_regions_since_last_node = 0; + } + + if distance_in_regions_since_last_node > 3 { + node_count = 0; + } + + let rcregion = Rc::new(region); + + self.region_map[i as usize].push(rcregion); + } + } + } + + fn get_regions_in_bound(&self, x: i32, y: i32, radius: i32) -> Vec<&Region> { + let mut regions = Vec::new(); + let x_min = x - radius; + let x_max = x + radius; + let y_min = y - radius; + let y_max = y + radius; + for i in x_min..x_max { + for j in y_min..y_max { + let region_x = i; + let region_y = j; + if region_x >= 0 + && region_x < self.region_map.len() as i32 + && region_y >= 0 + && region_y < self.region_map[region_x as usize].len() as i32 + { + let region = &self.region_map[region_x as usize][region_y as usize]; + regions.push(region.as_ref()); + } + } + } + regions + } + + fn generate_noise(&mut self, threshold: f32) { + for i in 0..self.cell_map.len() { + for j in 0..self.cell_map[i as usize].len() { + let cell = &self.cell_map[i as usize][j as usize]; + let region = &self.region_map[cell.region.as_ref().reg_x as usize] + [cell.region.as_ref().reg_y as usize]; + let neighbours = self.get_regions_in_bound(region.reg_x, region.reg_y, 3); + + let mut node_vec = Vec::new(); + for neighbour in neighbours { + if neighbour.node.is_some() { + let node = neighbour.node.as_ref().unwrap(); + node_vec.push(node); + } + } + + dmsort::sort_by(&mut node_vec, |a, b| { + quick_distance_from_to(cell.x, cell.y, a.x, a.y) + .partial_cmp(&quick_distance_from_to(cell.x, cell.y, b.x, b.y)) + .unwrap() + }); + let dist = distance_from_to(cell.x, cell.y, node_vec[0].x, node_vec[0].y) + - distance_from_to(cell.x, cell.y, node_vec[1].x, node_vec[1].y); + // + let mutable_cell = &mut self.cell_map[i as usize][j as usize]; + if dist.abs() > threshold { + mutable_cell.value = true; + } + } + } + } +} + +fn distance_from_to(x1: i32, y1: i32, x2: i32, y2: i32) -> f32 { + let x_diff = x1 - x2; + let y_diff = y1 - y2; + let distance = (((x_diff * x_diff) + (y_diff * y_diff)) as f32).sqrt(); + distance +} + +fn quick_distance_from_to(x1: i32, y1: i32, x2: i32, y2: i32) -> f32 { + let x_diff = x1 - x2; + let y_diff = y1 - y2; + let distance = (x_diff.abs() + y_diff.abs()) as f32; + distance +} + +struct Cell { + x: i32, + y: i32, + value: bool, + region: Rc, +} + +impl Cell { + fn new(x: i32, y: i32, region: Rc) -> Cell { + Cell { + x: x, + y: y, + value: false, + region: region, + } + } +} + +struct Region { + reg_x: i32, + reg_y: i32, + node: Option, +} + +impl Region { + fn new(reg_x: i32, reg_y: i32) -> Region { + Region { + reg_x: reg_x, + reg_y: reg_y, + node: None, + } + } +} + +struct Node { + x: i32, + y: i32, +} + +impl Node { + fn new(x: i32, y: i32) -> Node { + Node { x: x, y: y } + } +} From fb02e5942d05f4b4828943e1d09a951e58e9dcc0 Mon Sep 17 00:00:00 2001 From: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Date: Sun, 19 Sep 2021 23:05:06 -0700 Subject: [PATCH 16/82] Add TOML feature (#75) Adds rustg_read_toml_file, which takes a filepath and spits out the output after decoding (a list, probably). Uses the rust-toml lib --- Cargo.lock | 10 ++++++++++ Cargo.toml | 4 +++- README.md | 1 + dmsrc/toml.dm | 1 + src/error.rs | 3 +++ src/lib.rs | 2 ++ src/toml.rs | 13 +++++++++++++ tests/dm-tests.rs | 6 ++++++ tests/dm/toml.dme | 23 +++++++++++++++++++++++ 9 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 dmsrc/toml.dm create mode 100644 src/toml.rs create mode 100644 tests/dm/toml.dme diff --git a/Cargo.lock b/Cargo.lock index 19ffa233..d9aae65d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1527,6 +1527,7 @@ dependencies = [ "sha-1", "sha2 0.9.5", "thiserror", + "toml", "twox-hash", "url", "zip", @@ -2003,6 +2004,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +dependencies = [ + "serde", +] + [[package]] name = "tower-service" version = "0.3.1" diff --git a/Cargo.toml b/Cargo.toml index 7402a218..9ef4526a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,9 +42,10 @@ dashmap = { version = "4.0", optional = true } zip = { version = "0.5.8", optional = true } rand = {version = "0.8", optional = true} dmsort = {version = "1.0.0", optional = true} +toml-dep = { version = "0.5.8", package="toml", optional = true } [features] -default = ["cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "sql", "url"] +default = ["cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "sql", "toml", "url"] # default features cellularnoise = ["rand"] @@ -55,6 +56,7 @@ http = ["reqwest", "serde", "serde_json", "once_cell", "jobs"] json = ["serde", "serde_json"] log = ["chrono"] sql = ["mysql", "serde", "serde_json", "once_cell", "dashmap", "jobs"] +toml = ["serde", "serde_json", "toml-dep"] url = ["url-dep", "percent-encoding"] # non-default features diff --git a/README.md b/README.md index 676d51f4..ede6685f 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,7 @@ The default features are: * log: Faster log output. * sql: Asynchronous MySQL/MariaDB client library. * noise: 2d Perlin noise. +* toml: TOML parser. Additional features are: * hash: Faster replacement for `md5`, support for SHA-1, SHA-256, and SHA-512. Requires OpenSSL on Linux. diff --git a/dmsrc/toml.dm b/dmsrc/toml.dm new file mode 100644 index 00000000..e4033018 --- /dev/null +++ b/dmsrc/toml.dm @@ -0,0 +1 @@ +#define rustg_read_toml_file(path) json_decode(call(RUST_G, "toml_file_to_json")(path) || "null") diff --git a/src/error.rs b/src/error.rs index 64545fa5..5d26dfa0 100644 --- a/src/error.rs +++ b/src/error.rs @@ -46,6 +46,9 @@ pub enum Error { #[cfg(feature = "http")] #[error(transparent)] RequestError(#[from] reqwest::Error), + #[cfg(feature = "toml")] + #[error(transparent)] + TomlDeserializationError(#[from] toml_dep::de::Error), #[cfg(feature = "http")] #[error(transparent)] SerializationError(#[from] serde_json::Error), diff --git a/src/lib.rs b/src/lib.rs index 7fc7c6e2..f875f457 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -26,6 +26,8 @@ pub mod log; pub mod noise_gen; #[cfg(feature = "sql")] pub mod sql; +#[cfg(feature = "toml")] +pub mod toml; #[cfg(feature = "unzip")] pub mod unzip; #[cfg(feature = "url")] diff --git a/src/toml.rs b/src/toml.rs new file mode 100644 index 00000000..323043f6 --- /dev/null +++ b/src/toml.rs @@ -0,0 +1,13 @@ +use crate::error::Result; + +byond_fn! { toml_file_to_json(path) { + toml_file_to_json_impl(path).ok() +} } + +fn toml_file_to_json_impl(path: &str) -> Result { + Ok(serde_json::to_string(&toml_dep::from_str::< + toml_dep::Value, + >(&std::fs::read_to_string( + path, + )?)?)?) +} diff --git a/tests/dm-tests.rs b/tests/dm-tests.rs index c3f8b569..40ed85e4 100644 --- a/tests/dm-tests.rs +++ b/tests/dm-tests.rs @@ -6,6 +6,12 @@ fn git() { run_dm_tests("git"); } +#[cfg(feature = "toml")] +#[test] +fn toml() { + run_dm_tests("toml"); +} + #[cfg(feature = "url")] #[test] fn url() { diff --git a/tests/dm/toml.dme b/tests/dm/toml.dme new file mode 100644 index 00000000..f07eb45d --- /dev/null +++ b/tests/dm/toml.dme @@ -0,0 +1,23 @@ +#include "common.dm" + +var/test_toml = @{" +[database] +enabled = true +ports = [ 8000, 25565 ] +data = [ ["delta", "phi"] ] +temp_targets = { cpu = 79, case = 72 } +"} + +var/test_json = @{" +{"database":{"data":[["delta","phi"]],"enabled":true,"ports":[8000,25565],"temp_targets":{"case":72,"cpu":79}}} +"} + +/test/proc/check_toml_file2json() + rustg_file_write(test_toml, "test.toml") + + var/toml_output = json_encode(rustg_read_toml_file("test.toml")) + var/test_output = json_encode(json_decode(test_json)) // Double-encode so true becomes 1 + + // ~= checks for structural equality + if (toml_output != test_output) + CRASH("test:\n[test_toml]\n \nexpected:\n[test_output]\n \nrustg:\n[toml_output]") From 539c948a5132c3617045026f2fedfaeb23d5c99a Mon Sep 17 00:00:00 2001 From: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com> Date: Mon, 20 Sep 2021 05:59:51 -0700 Subject: [PATCH 17/82] 0.5.0 Cargo updates --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d9aae65d..94f44378 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1502,7 +1502,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "0.4.10" +version = "0.5.0" dependencies = [ "base64 0.13.0", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 9ef4526a..cb14795b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rust-g" edition = "2018" -version = "0.4.10" +version = "0.5.0" authors = ["Bjorn Neergaard "] repository = "https://github.com/tgstation/rust-g" license-file = "LICENSE" From 995c39ca5ea89061d0b8662f378c6561af3e6324 Mon Sep 17 00:00:00 2001 From: adamsong Date: Mon, 4 Oct 2021 04:38:30 -0500 Subject: [PATCH 18/82] Adds TOTP generator to the hash feature (#76) * Adds TOTP generator to the hash feature * Updated TOTP based on requested changes, added a function that allow specification of a tolerance, also updated the hash.dm file to reflect the new functions * Remove debug print, convert offset output to be JSON, added a test * Added comments * Added some error handling * Improves error handling again * cargo fmt hash.rs * separate mod block for hash tests --- Cargo.toml | 2 +- dmsrc/hash.dm | 2 + src/error.rs | 3 ++ src/hash.rs | 113 ++++++++++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 116 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index cb14795b..785f036a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -60,7 +60,7 @@ toml = ["serde", "serde_json", "toml-dep"] url = ["url-dep", "percent-encoding"] # non-default features -hash = ["base64", "const-random", "md-5", "hex", "sha-1", "sha2", "twox-hash"] +hash = ["base64", "const-random", "md-5", "hex", "sha-1", "sha2", "twox-hash", "serde", "serde_json"] unzip = ["zip", "jobs"] worleynoise = ["rand","dmsort"] diff --git a/dmsrc/hash.dm b/dmsrc/hash.dm index 3599b0bd..867b00ee 100644 --- a/dmsrc/hash.dm +++ b/dmsrc/hash.dm @@ -1,5 +1,7 @@ #define rustg_hash_string(algorithm, text) call(RUST_G, "hash_string")(algorithm, text) #define rustg_hash_file(algorithm, fname) call(RUST_G, "hash_file")(algorithm, fname) +#define rustg_hash_generate_totp(seed) call(RUST_G, "generate_totp")(seed) +#define rustg_hash_generate_totp_tolerance(seed, tolerance) call(RUST_G, "generate_totp_tolerance")(seed, tolerance) #define RUSTG_HASH_MD5 "md5" #define RUSTG_HASH_SHA1 "sha1" diff --git a/src/error.rs b/src/error.rs index 5d26dfa0..cccd2915 100644 --- a/src/error.rs +++ b/src/error.rs @@ -55,6 +55,9 @@ pub enum Error { #[cfg(feature = "unzip")] #[error(transparent)] UnzipError(#[from] ZipError), + #[cfg(feature = "hash")] + #[error("Unable to decode hex value.")] + HexDecodeError, } impl From for Error { diff --git a/src/hash.rs b/src/hash.rs index a9cd11ed..084589fe 100644 --- a/src/hash.rs +++ b/src/hash.rs @@ -5,9 +5,11 @@ use md5::Md5; use sha1::Sha1; use sha2::{Digest, Sha256, Sha512}; use std::{ + convert::TryInto, fs::File, hash::Hasher, io::{BufReader, Read}, + time::{SystemTime, UNIX_EPOCH}, }; use twox_hash::XxHash64; @@ -19,6 +21,24 @@ byond_fn! { hash_file(algorithm, string) { file_hash(algorithm, string).ok() } } +byond_fn! { generate_totp(hex_seed) { + match totp_generate(hex_seed, 0, None) { + Ok(value) => Some(value), + Err(error) => return Some(format!("ERROR: {:?}", error)) + } +} } + +byond_fn! { generate_totp_tolerance(hex_seed, tolerance) { + let tolerance_value: i32 = match tolerance.parse() { + Ok(value) => value, + Err(_) => return Some(String::from("ERROR: Tolerance not a valid integer")) + }; + match totp_generate_tolerance(hex_seed, tolerance_value, None) { + Ok(value) => Some(value), + Err(error) => return Some(format!("ERROR: {:?}", error)) + } +} } + fn hash_algorithm>(name: &str, bytes: B) -> Result { match name { "md5" => { @@ -46,9 +66,7 @@ fn hash_algorithm>(name: &str, bytes: B) -> Result { hasher.write(bytes.as_ref()); Ok(format!("{:x}", hasher.finish())) } - "base64" => { - Ok(base64::encode(bytes.as_ref())) - } + "base64" => Ok(base64::encode(bytes.as_ref())), _ => Err(Error::InvalidAlgorithm), } } @@ -64,3 +82,92 @@ fn file_hash(algorithm: &str, path: &str) -> Result { Ok(hash_algorithm(algorithm, &bytes)?) } + +/// Generates multiple TOTP codes from 20 character hex_seed, with time step +-tolerance +/// time_override is used as the current unix time instead of the current system time for testing +fn totp_generate_tolerance( + hex_seed: &str, + tolerance: i32, + time_override: Option, +) -> Result { + let mut results: Vec = Vec::new(); + for i in -tolerance..(tolerance + 1) { + let result = totp_generate(hex_seed, i.try_into().unwrap(), time_override)?; + results.push(result) + } + Ok(serde_json::to_string(&results)?) +} + +/// Generates a single TOTP code from 20 character hex_seed, offset by offset time steps +/// time_override is used as the current unix time instead of the current system time for testing +/// TOTP algorithm described https://blogs.unimelb.edu.au/sciencecommunication/2021/09/30/totp/ +/// HMAC algorithm described https://csrc.nist.gov/csrc/media/publications/fips/198/1/final/documents/fips-198-1_final.pdf +fn totp_generate(hex_seed: &str, offset: i64, time_override: Option) -> Result { + let mut seed: [u8; 64] = [0; 64]; + + match hex::decode_to_slice(hex_seed, &mut seed[..10] as &mut [u8]) { + Ok(value) => value, + Err(_) => return Err(Error::HexDecodeError), + }; + + let ipad: [u8; 64] = seed.map(|x| x ^ 0x36); // HMAC Step 4 + let opad: [u8; 64] = seed.map(|x| x ^ 0x5C); // HMAC Step 7 + + // Will panic if the date is not between Jan 1 1970 and the year ~200 billion + let curr_time: i64 = time_override.unwrap_or( + SystemTime::now() + .duration_since(UNIX_EPOCH) + .expect("SystemTime is before Unix Epoc") + .as_secs() + .try_into() + .unwrap(), + ) / 30; + let time: u64 = (curr_time + offset) as u64; + + let time_bytes: [u8; 8] = time.to_be_bytes(); + + // HMAC Step 5 and 6 + let mut hasher = Sha1::new(); + hasher.update(ipad); + hasher.update(time_bytes); + let ipad_time_hash = hasher.finalize(); + + // HMAC Step 8 and 9 + hasher = Sha1::new(); + hasher.update(opad); + hasher.update(ipad_time_hash); + let hmac = hasher.finalize(); + + let offset: usize = (hmac[19] & 0x0F).into(); + + let result_bytes: [u8; 4] = hmac[offset..(offset + 4)].try_into().unwrap(); + + let full_result: u32 = u32::from_be_bytes(result_bytes); + let result: u32 = (full_result & 0x7FFFFFFF) % 1000000; + + Ok(result.to_string()) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn totp_generate_test() { + // The big offset is so that it always uses the same time, allowing for verification that the algorithm is correct + // Seed, time, and result for zero offset taken from https://blogs.unimelb.edu.au/sciencecommunication/2021/09/30/totp/ + let result = totp_generate("B93F9893199AEF85739C", 0, Some(54424722i64 * 30 + 29)); + assert_eq!(result.unwrap(), "417714"); + let result2 = totp_generate("B93F9893199AEF85739C", -1, Some(54424722i64 * 30 + 29)); + assert_eq!(result2.unwrap(), "358747"); + let result3 = totp_generate("B93F9893199AEF85739C", 1, Some(54424722i64 * 30 + 29)); + assert_eq!(result3.unwrap(), "539257"); + let result4 = totp_generate("B93F9893199AEF85739C", 2, Some(54424722i64 * 30 + 29)); + assert_eq!(result4.unwrap(), "679828"); + let json_result = + totp_generate_tolerance("B93F9893199AEF85739C", 1, Some(54424722i64 * 30 + 29)); + assert_eq!(json_result.unwrap(), "[\"358747\",\"417714\",\"539257\"]"); + let err_result = totp_generate_tolerance("66", 0, None); + assert!(err_result.is_err()); + } +} From c587418423c49b44dc04a27ce4467813bfd4f3ee Mon Sep 17 00:00:00 2001 From: pali <6pali6@gmail.com> Date: Mon, 29 Nov 2021 03:02:04 +0100 Subject: [PATCH 19/82] Functions for more precise time measurement (#77) --- Cargo.toml | 3 ++- README.md | 1 + dmsrc/time.dm | 3 +++ src/lib.rs | 2 ++ src/time.rs | 38 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 dmsrc/time.dm create mode 100644 src/time.rs diff --git a/Cargo.toml b/Cargo.toml index 785f036a..fa416777 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,7 +45,7 @@ dmsort = {version = "1.0.0", optional = true} toml-dep = { version = "0.5.8", package="toml", optional = true } [features] -default = ["cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "sql", "toml", "url"] +default = ["cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "sql", "time", "toml", "url"] # default features cellularnoise = ["rand"] @@ -56,6 +56,7 @@ http = ["reqwest", "serde", "serde_json", "once_cell", "jobs"] json = ["serde", "serde_json"] log = ["chrono"] sql = ["mysql", "serde", "serde_json", "once_cell", "dashmap", "jobs"] +time = [] toml = ["serde", "serde_json", "toml-dep"] url = ["url-dep", "percent-encoding"] diff --git a/README.md b/README.md index ede6685f..a997702a 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,7 @@ The default features are: * sql: Asynchronous MySQL/MariaDB client library. * noise: 2d Perlin noise. * toml: TOML parser. +* time: High-accuracy time measuring. Additional features are: * hash: Faster replacement for `md5`, support for SHA-1, SHA-256, and SHA-512. Requires OpenSSL on Linux. diff --git a/dmsrc/time.dm b/dmsrc/time.dm new file mode 100644 index 00000000..56e1b0c7 --- /dev/null +++ b/dmsrc/time.dm @@ -0,0 +1,3 @@ +#define rustg_time_microseconds(id) text2num(call(RUST_G, "time_microseconds")(id)) +#define rustg_time_milliseconds(id) text2num(call(RUST_G, "time_milliseconds")(id)) +#define rustg_time_reset(id) call(RUST_G, "time_reset")(id) diff --git a/src/lib.rs b/src/lib.rs index f875f457..33ca3dc0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -26,6 +26,8 @@ pub mod log; pub mod noise_gen; #[cfg(feature = "sql")] pub mod sql; +#[cfg(feature = "time")] +pub mod time; #[cfg(feature = "toml")] pub mod toml; #[cfg(feature = "unzip")] diff --git a/src/time.rs b/src/time.rs new file mode 100644 index 00000000..9a9960af --- /dev/null +++ b/src/time.rs @@ -0,0 +1,38 @@ +use std::{ + cell::RefCell, + collections::hash_map::{Entry, HashMap}, + time::Instant, +}; + +thread_local!( static INSTANTS: RefCell> = RefCell::new(HashMap::new()) ); + +byond_fn! { time_microseconds(instant_id) { + INSTANTS.with(|instants| { + let mut map = instants.borrow_mut(); + let instant = match map.entry(instant_id.into()) { + Entry::Occupied(elem) => elem.into_mut(), + Entry::Vacant(elem) => elem.insert(Instant::now()), + }; + Some(instant.elapsed().as_micros().to_string()) + }) +} } + +byond_fn! { time_milliseconds(instant_id) { + INSTANTS.with(|instants| { + let mut map = instants.borrow_mut(); + let instant = match map.entry(instant_id.into()) { + Entry::Occupied(elem) => elem.into_mut(), + Entry::Vacant(elem) => elem.insert(Instant::now()), + }; + Some(instant.elapsed().as_millis().to_string()) + }) +} } + +byond_fn! { time_reset(instant_id) { + INSTANTS.with(|instants| { + let mut map = instants.borrow_mut(); + map.insert(instant_id.into(), Instant::now()); + Some("") + }) +} } + From ccb557571328be4c6b8eab9702409c283f985c3a Mon Sep 17 00:00:00 2001 From: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Date: Thu, 23 Dec 2021 18:00:04 +0000 Subject: [PATCH 20/82] fix linux ci by removing pkg-config requirement This isnt needed --- .github/workflows/rust.yml | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index c18e6668..41a85bfe 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -42,7 +42,7 @@ jobs: - run: | sudo dpkg --add-architecture i386 sudo apt-get update - sudo apt-get install g++-multilib zlib1g-dev:i386 libssl-dev:i386 pkg-config:i386 + sudo apt-get install g++-multilib zlib1g-dev:i386 libssl-dev:i386 ./scripts/install_byond.sh - uses: actions-rs/toolchain@v1 with: diff --git a/README.md b/README.md index a997702a..ce403962 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ System libraries: ```sh sudo dpkg --add-architecture i386 sudo apt-get update - sudo apt-get install zlib1g-dev:i386 libssl-dev:i386 pkg-config:i386 + sudo apt-get install zlib1g-dev:i386 libssl-dev:i386 ``` * Other Linux distributions install the appropriate **32-bit development** and **32-bit runtime** packages. From 4ff5775c9b74627cf851395f6f85e17f8ff2ea25 Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Sat, 25 Dec 2021 00:25:20 +0200 Subject: [PATCH 21/82] Aho-Corasick string replacements to help clean up replaceText spam (#82) --- Cargo.toml | 4 +++- dmsrc/acreplace.dm | 2 ++ src/acreplace.rs | 38 ++++++++++++++++++++++++++++++++++++++ src/lib.rs | 2 ++ 4 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 dmsrc/acreplace.dm create mode 100644 src/acreplace.rs diff --git a/Cargo.toml b/Cargo.toml index fa416777..a1297f1d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,9 +43,10 @@ zip = { version = "0.5.8", optional = true } rand = {version = "0.8", optional = true} dmsort = {version = "1.0.0", optional = true} toml-dep = { version = "0.5.8", package="toml", optional = true } +aho-corasick = { version = "0.7.18", optional = true} [features] -default = ["cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "sql", "time", "toml", "url"] +default = ["cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "sql", "time", "toml", "url", "acreplace"] # default features cellularnoise = ["rand"] @@ -59,6 +60,7 @@ sql = ["mysql", "serde", "serde_json", "once_cell", "dashmap", "jobs"] time = [] toml = ["serde", "serde_json", "toml-dep"] url = ["url-dep", "percent-encoding"] +acreplace = ["aho-corasick"] # non-default features hash = ["base64", "const-random", "md-5", "hex", "sha-1", "sha2", "twox-hash", "serde", "serde_json"] diff --git a/dmsrc/acreplace.dm b/dmsrc/acreplace.dm new file mode 100644 index 00000000..efe1362a --- /dev/null +++ b/dmsrc/acreplace.dm @@ -0,0 +1,2 @@ +#define rustg_setup_acreplace(text, patterns, replacements) call(RUST_G, "setup_acreplace")(text, json_encode(patterns), json_encode(replacements)) +#define rustg_acreplace(key, text) call(RUST_G, "acreplace")(key, text) diff --git a/src/acreplace.rs b/src/acreplace.rs new file mode 100644 index 00000000..d91ccb79 --- /dev/null +++ b/src/acreplace.rs @@ -0,0 +1,38 @@ +use aho_corasick::AhoCorasickBuilder; +use aho_corasick::AhoCorasick; +use std::{ + cell::RefCell, + collections::hash_map::HashMap +}; + +struct Replacements { + pub automaton: AhoCorasick, + pub replacements: Vec +} + +thread_local! { + static CREPLACE_MAP: RefCell> = RefCell::new(HashMap::new()); +} + +byond_fn! { setup_acreplace(key, patternsjson, replacementsjson) { + let patterns: Vec = serde_json::from_str(patternsjson.clone()).ok()?; + let replacements: Vec = serde_json::from_str(replacementsjson.clone()).ok()?; + let ac = AhoCorasickBuilder::new().auto_configure(&patterns).build(&patterns); + CREPLACE_MAP.with(|cell| { + let mut map = cell.borrow_mut(); + map.insert(key.to_owned(), Replacements { automaton: ac, replacements: replacements }); + }); + Some("") +} } + + +byond_fn! { acreplace(key, text) { + CREPLACE_MAP.with(|cell| -> Option { + let map = cell.borrow_mut(); + match map.get(&key.to_owned()) { + Some(replacements) => Some(replacements.automaton.replace_all(text, &replacements.replacements)), + None => None + } + }) +} } + diff --git a/src/lib.rs b/src/lib.rs index 33ca3dc0..b6f75146 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -36,6 +36,8 @@ pub mod unzip; pub mod url; #[cfg(feature = "worleynoise")] pub mod worleynoise; +#[cfg(feature = "acreplace")] +pub mod acreplace; #[cfg(not(target_pointer_width = "32"))] compile_error!("rust-g must be compiled for a 32-bit target"); From 274fb1836d83836d8b613cf300435d75870d7a1b Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Mon, 27 Dec 2021 01:25:14 +0200 Subject: [PATCH 22/82] Cleanups and additions for the Aho-Corasick replacement stuff (#83) --- Cargo.toml | 4 +-- README.md | 5 +-- dmsrc/acreplace.dm | 42 +++++++++++++++++++++++- src/acreplace.rs | 81 ++++++++++++++++++++++++++++++++++++++++------ src/lib.rs | 5 +-- 5 files changed, 120 insertions(+), 17 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a1297f1d..afbbc3bc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,9 +46,10 @@ toml-dep = { version = "0.5.8", package="toml", optional = true } aho-corasick = { version = "0.7.18", optional = true} [features] -default = ["cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "sql", "time", "toml", "url", "acreplace"] +default = ["acreplace", "cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "sql", "time", "toml", "url"] # default features +acreplace = ["aho-corasick"] cellularnoise = ["rand"] dmi = ["png", "image"] file = [] @@ -60,7 +61,6 @@ sql = ["mysql", "serde", "serde_json", "once_cell", "dashmap", "jobs"] time = [] toml = ["serde", "serde_json", "toml-dep"] url = ["url-dep", "percent-encoding"] -acreplace = ["aho-corasick"] # non-default features hash = ["base64", "const-random", "md-5", "hex", "sha-1", "sha2", "twox-hash", "serde", "serde_json"] diff --git a/README.md b/README.md index ce403962..c4ed4ea3 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,7 @@ cargo build --release --target i686-pc-windows-msvc To get additional features, pass a list to `--features`, for example `--features hash,url`. To get all features, pass `--all-features`. To disable the default features, pass `--no-default-features`. The default features are: +* acreplace: Aho-Corasick string matching and replacement. * cellularnoise: Function to generate cellular automata-based noise. * dmi: DMI manipulations which are impossible from within BYOND. Used by the asset cache subsystem to improve load times. @@ -86,10 +87,10 @@ The default features are: * http: Asynchronous HTTP(s) client supporting most standard methods. * json: Function to check JSON validity. * log: Faster log output. -* sql: Asynchronous MySQL/MariaDB client library. * noise: 2d Perlin noise. -* toml: TOML parser. +* sql: Asynchronous MySQL/MariaDB client library. * time: High-accuracy time measuring. +* toml: TOML parser. Additional features are: * hash: Faster replacement for `md5`, support for SHA-1, SHA-256, and SHA-512. Requires OpenSSL on Linux. diff --git a/dmsrc/acreplace.dm b/dmsrc/acreplace.dm index efe1362a..08107f0e 100644 --- a/dmsrc/acreplace.dm +++ b/dmsrc/acreplace.dm @@ -1,2 +1,42 @@ -#define rustg_setup_acreplace(text, patterns, replacements) call(RUST_G, "setup_acreplace")(text, json_encode(patterns), json_encode(replacements)) + +/** + * Sets up the Aho-Corasick automaton with its default options. + * + * The search patterns list and the replacements must be of the same length when replace is run, but an empty replacements list is allowed if replacements are supplied with the replace call + * Arguments: + * * key - The key for the automaton, to be used with subsequent rustg_acreplace/rustg_acreplace_with_replacements calls + * * patterns - A non-associative list of strings to search for + * * replacements - Default replacements for this automaton, used with rustg_acreplace + */ +#define rustg_setup_acreplace(key, patterns, replacements) call(RUST_G, "setup_acreplace")(key, json_encode(patterns), json_encode(replacements)) + +/** + * Sets up the Aho-Corasick automaton using supplied options. + * + * The search patterns list and the replacements must be of the same length when replace is run, but an empty replacements list is allowed if replacements are supplied with the replace call + * Arguments: + * * key - The key for the automaton, to be used with subsequent rustg_acreplace/rustg_acreplace_with_replacements calls + * * options - An associative list like list("anchored" = 0, "ascii_case_insensitive" = 0, "match_kind" = "Standard"). The values shown on the example are the defaults, and default values may be omitted. See the identically named methods at https://docs.rs/aho-corasick/latest/aho_corasick/struct.AhoCorasickBuilder.html to see what the options do. + * * patterns - A non-associative list of strings to search for + * * replacements - Default replacements for this automaton, used with rustg_acreplace + */ +#define rustg_setup_acreplace_with_options(key, options, patterns, replacements) call(RUST_G, "setup_acreplace")(key, json_encode(options), json_encode(patterns), json_encode(replacements)) + +/** + * Run the specified replacement engine with the provided haystack text to replace, returning replaced text. + * + * Arguments: + * * key - The key for the automaton + * * text - Text to run replacements on + */ #define rustg_acreplace(key, text) call(RUST_G, "acreplace")(key, text) + +/** + * Run the specified replacement engine with the provided haystack text to replace, returning replaced text. + * + * Arguments: + * * key - The key for the automaton + * * text - Text to run replacements on + * * replacements - Replacements for this call. Must be the same length as the set-up patterns + */ +#define rustg_acreplace_with_replacements(key, text, replacements) call(RUST_G, "acreplace_with_replacements")(key, text, json_encode(replacements)) diff --git a/src/acreplace.rs b/src/acreplace.rs index d91ccb79..f1e0c247 100644 --- a/src/acreplace.rs +++ b/src/acreplace.rs @@ -1,22 +1,64 @@ -use aho_corasick::AhoCorasickBuilder; -use aho_corasick::AhoCorasick; +use aho_corasick::{AhoCorasick, AhoCorasickBuilder, MatchKind}; use std::{ cell::RefCell, collections::hash_map::HashMap }; +use serde::Deserialize; struct Replacements { pub automaton: AhoCorasick, - pub replacements: Vec + pub replacements: Vec, +} + +#[derive(Deserialize)] +struct AhoCorasickOptions { + #[serde(default, deserialize_with = "deserialize_byond_bool")] + pub anchored: bool, + #[serde(default, deserialize_with = "deserialize_byond_bool")] + pub ascii_case_insensitive: bool, + #[serde(default, deserialize_with = "deserialize_matchkind")] + pub match_kind: MatchKind, +} + +impl AhoCorasickOptions { + fn auto_configure_and_build(&self, patterns: &Vec) -> AhoCorasick { + AhoCorasickBuilder::new() + .anchored(self.anchored) + .ascii_case_insensitive(self.ascii_case_insensitive) + .match_kind(self.match_kind) + .auto_configure(patterns) + .build(patterns) + } +} + +fn deserialize_byond_bool<'de, D>(deserializer: D) -> Result +where + D: serde::de::Deserializer<'de>, +{ + match u8::deserialize(deserializer)? { + 0 => Ok(false), + _ => Ok(true), + } +} + +fn deserialize_matchkind<'de, D>(deserializer: D) -> Result +where + D: serde::de::Deserializer<'de>, +{ + match String::deserialize(deserializer)?.as_ref() { + "LeftmostFirst" => Ok(MatchKind::LeftmostFirst), + "LeftmostLongest" => Ok(MatchKind::LeftmostLongest), + _ => Ok(MatchKind::Standard), + } } thread_local! { static CREPLACE_MAP: RefCell> = RefCell::new(HashMap::new()); } -byond_fn! { setup_acreplace(key, patternsjson, replacementsjson) { - let patterns: Vec = serde_json::from_str(patternsjson.clone()).ok()?; - let replacements: Vec = serde_json::from_str(replacementsjson.clone()).ok()?; +byond_fn! { setup_acreplace(key, patterns_json, replacements_json) { + let patterns: Vec = serde_json::from_str(&patterns_json).ok()?; + let replacements: Vec = serde_json::from_str(&replacements_json).ok()?; let ac = AhoCorasickBuilder::new().auto_configure(&patterns).build(&patterns); CREPLACE_MAP.with(|cell| { let mut map = cell.borrow_mut(); @@ -25,14 +67,33 @@ byond_fn! { setup_acreplace(key, patternsjson, replacementsjson) { Some("") } } +byond_fn! { setup_acreplace_with_options(key, options_json, patterns_json, replacements_json) { + let options: AhoCorasickOptions = serde_json::from_str(&options_json).ok()?; + let patterns: Vec = serde_json::from_str(&patterns_json).ok()?; + let replacements: Vec = serde_json::from_str(&replacements_json).ok()?; + let ac = options.auto_configure_and_build(&patterns); + CREPLACE_MAP.with(|cell| { + let mut map = cell.borrow_mut(); + map.insert(key.to_owned(), Replacements { automaton: ac, replacements: replacements }); + }); + Some("") +} } + byond_fn! { acreplace(key, text) { CREPLACE_MAP.with(|cell| -> Option { let map = cell.borrow_mut(); - match map.get(&key.to_owned()) { - Some(replacements) => Some(replacements.automaton.replace_all(text, &replacements.replacements)), - None => None - } + let replacements = map.get(key)?; + Some(replacements.automaton.replace_all(text, &replacements.replacements)) }) } } +byond_fn! { acreplace_with_replacements(key, text, replacements_json) { + let call_replacements: Vec = serde_json::from_str(&replacements_json).ok()?; + CREPLACE_MAP.with(|cell| -> Option { + let map = cell.borrow_mut(); + let replacements = map.get(key)?; + Some(replacements.automaton.replace_all(text, &call_replacements)) + }) +}} + diff --git a/src/lib.rs b/src/lib.rs index b6f75146..0a8c6d76 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,6 +6,8 @@ mod error; #[cfg(feature = "jobs")] mod jobs; +#[cfg(feature = "acreplace")] +pub mod acreplace; #[cfg(feature = "cellularnoise")] pub mod cellularnoise; #[cfg(feature = "dmi")] @@ -36,8 +38,7 @@ pub mod unzip; pub mod url; #[cfg(feature = "worleynoise")] pub mod worleynoise; -#[cfg(feature = "acreplace")] -pub mod acreplace; + #[cfg(not(target_pointer_width = "32"))] compile_error!("rust-g must be compiled for a 32-bit target"); From 097313d3993185db2052b64d31a7f4b8d4d8390e Mon Sep 17 00:00:00 2001 From: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Date: Wed, 29 Dec 2021 01:32:37 -0800 Subject: [PATCH 23/82] Fix clippy lints, Rustfmt, put both on CI, and update Cargo.lock (#85) Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com> --- .github/workflows/rust.yml | 13 ++++++++++--- Cargo.lock | 1 + build.rs | 7 ++++++- src/acreplace.rs | 35 +++++++++++++++-------------------- src/byond.rs | 14 ++++++++------ src/cellularnoise.rs | 1 - src/dmi.rs | 4 ++-- src/error.rs | 18 +++++++++--------- src/hash.rs | 12 ++++++------ src/lib.rs | 3 ++- src/log.rs | 2 +- src/sql.rs | 4 ++-- src/time.rs | 1 - src/unzip.rs | 2 +- src/worleynoise.rs | 28 ++++++++++++++-------------- 15 files changed, 77 insertions(+), 68 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 41a85bfe..05bdc613 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -15,12 +15,19 @@ jobs: with: toolchain: stable target: i686-pc-windows-msvc - - name: Check (all features) + components: rustfmt, clippy + - name: Clippy (all features) + uses: actions-rs/clippy-check@v1 + with: + toolchain: stable + token: ${{ secrets.GITHUB_TOKEN }} + args: --target i686-pc-windows-msvc --all-features -- -D warnings + - name: Rustfmt uses: actions-rs/cargo@v1 with: toolchain: stable - command: check - args: --target i686-pc-windows-msvc --all-features + command: fmt + args: -- --check - name: Build (release) (default features) uses: actions-rs/cargo@v1 with: diff --git a/Cargo.lock b/Cargo.lock index 94f44378..3b0be200 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1504,6 +1504,7 @@ dependencies = [ name = "rust-g" version = "0.5.0" dependencies = [ + "aho-corasick", "base64 0.13.0", "chrono", "const-random", diff --git a/build.rs b/build.rs index 99d60ebf..4e2e4c14 100644 --- a/build.rs +++ b/build.rs @@ -30,7 +30,12 @@ fn main() { if let Some(uprfeature) = key.strip_prefix("CARGO_FEATURE_") { let feature = uprfeature.to_lowercase().replace("_", "-"); // actual proper name of the enabled feature if feature_dm_exists!(&feature) { - writeln!(f, "{}", std::fs::read_to_string(feature_dm_file!(&feature)).unwrap()).unwrap(); + writeln!( + f, + "{}", + std::fs::read_to_string(feature_dm_file!(&feature)).unwrap() + ) + .unwrap(); } } } diff --git a/src/acreplace.rs b/src/acreplace.rs index f1e0c247..0fc3615f 100644 --- a/src/acreplace.rs +++ b/src/acreplace.rs @@ -1,9 +1,6 @@ use aho_corasick::{AhoCorasick, AhoCorasickBuilder, MatchKind}; -use std::{ - cell::RefCell, - collections::hash_map::HashMap -}; use serde::Deserialize; +use std::{cell::RefCell, collections::hash_map::HashMap}; struct Replacements { pub automaton: AhoCorasick, @@ -21,13 +18,13 @@ struct AhoCorasickOptions { } impl AhoCorasickOptions { - fn auto_configure_and_build(&self, patterns: &Vec) -> AhoCorasick { + fn auto_configure_and_build(&self, patterns: &[String]) -> AhoCorasick { AhoCorasickBuilder::new() - .anchored(self.anchored) - .ascii_case_insensitive(self.ascii_case_insensitive) - .match_kind(self.match_kind) - .auto_configure(patterns) - .build(patterns) + .anchored(self.anchored) + .ascii_case_insensitive(self.ascii_case_insensitive) + .match_kind(self.match_kind) + .auto_configure(patterns) + .build(patterns) } } @@ -57,29 +54,28 @@ thread_local! { } byond_fn! { setup_acreplace(key, patterns_json, replacements_json) { - let patterns: Vec = serde_json::from_str(&patterns_json).ok()?; - let replacements: Vec = serde_json::from_str(&replacements_json).ok()?; + let patterns: Vec = serde_json::from_str(patterns_json).ok()?; + let replacements: Vec = serde_json::from_str(replacements_json).ok()?; let ac = AhoCorasickBuilder::new().auto_configure(&patterns).build(&patterns); CREPLACE_MAP.with(|cell| { let mut map = cell.borrow_mut(); - map.insert(key.to_owned(), Replacements { automaton: ac, replacements: replacements }); + map.insert(key.to_owned(), Replacements { automaton: ac, replacements }); }); Some("") } } byond_fn! { setup_acreplace_with_options(key, options_json, patterns_json, replacements_json) { - let options: AhoCorasickOptions = serde_json::from_str(&options_json).ok()?; - let patterns: Vec = serde_json::from_str(&patterns_json).ok()?; - let replacements: Vec = serde_json::from_str(&replacements_json).ok()?; + let options: AhoCorasickOptions = serde_json::from_str(options_json).ok()?; + let patterns: Vec = serde_json::from_str(patterns_json).ok()?; + let replacements: Vec = serde_json::from_str(replacements_json).ok()?; let ac = options.auto_configure_and_build(&patterns); CREPLACE_MAP.with(|cell| { let mut map = cell.borrow_mut(); - map.insert(key.to_owned(), Replacements { automaton: ac, replacements: replacements }); + map.insert(key.to_owned(), Replacements { automaton: ac, replacements }); }); Some("") } } - byond_fn! { acreplace(key, text) { CREPLACE_MAP.with(|cell| -> Option { let map = cell.borrow_mut(); @@ -89,11 +85,10 @@ byond_fn! { acreplace(key, text) { } } byond_fn! { acreplace_with_replacements(key, text, replacements_json) { - let call_replacements: Vec = serde_json::from_str(&replacements_json).ok()?; + let call_replacements: Vec = serde_json::from_str(replacements_json).ok()?; CREPLACE_MAP.with(|cell| -> Option { let map = cell.borrow_mut(); let replacements = map.get(key)?; Some(replacements.automaton.replace_all(text, &call_replacements)) }) }} - diff --git a/src/byond.rs b/src/byond.rs index 8be0aba3..01c86608 100644 --- a/src/byond.rs +++ b/src/byond.rs @@ -12,11 +12,13 @@ thread_local! { } pub unsafe fn parse_args<'a>(argc: c_int, argv: *const *const c_char) -> Vec> { - slice::from_raw_parts(argv, argc as usize) - .iter() - .map(|ptr| CStr::from_ptr(*ptr)) - .map(|cstr| cstr.to_string_lossy()) - .collect() + unsafe { + slice::from_raw_parts(argv, argc as usize) + .iter() + .map(|ptr| CStr::from_ptr(*ptr)) + .map(|cstr| cstr.to_string_lossy()) + .collect() + } } pub fn byond_return(value: Option>) -> *const c_char { @@ -56,7 +58,7 @@ macro_rules! byond_fn { ($name:ident($($arg:ident),* $(, ...$rest:ident)?) $body:block) => { #[no_mangle] #[allow(clippy::missing_safety_doc)] - pub extern "C" fn $name( + pub unsafe extern "C" fn $name( _argc: ::std::os::raw::c_int, _argv: *const *const ::std::os::raw::c_char ) -> *const ::std::os::raw::c_char { let __args = unsafe { $crate::byond::parse_args(_argc, _argv) }; diff --git a/src/cellularnoise.rs b/src/cellularnoise.rs index fbab9f1a..5fb891f3 100644 --- a/src/cellularnoise.rs +++ b/src/cellularnoise.rs @@ -79,7 +79,6 @@ fn noise_gen( } else { zplane[i][j] = false; } - } } } diff --git a/src/dmi.rs b/src/dmi.rs index ceefd5ac..263058a8 100644 --- a/src/dmi.rs +++ b/src/dmi.rs @@ -27,7 +27,7 @@ byond_fn! { dmi_resize_png(path, width, height, resizetype) { fn strip_metadata(path: &str) -> Result<()> { let (info, image) = read_png(path)?; - Ok(write_png(path, info, image)?) + write_png(path, info, image) } fn read_png(path: &str) -> Result<(OutputInfo, Vec)> { @@ -53,7 +53,7 @@ fn create_png(path: &str, width: &str, height: &str, data: &str) -> Result<()> { let bytes = data.as_bytes(); if bytes.len() % 7 != 0 { - return Err(Error::InvalidPngDataError); + return Err(Error::InvalidPngData); } let mut result: Vec = Vec::new(); diff --git a/src/error.rs b/src/error.rs index cccd2915..81f11e15 100644 --- a/src/error.rs +++ b/src/error.rs @@ -35,29 +35,29 @@ pub enum Error { #[error(transparent)] ImageEncoding(#[from] EncodingError), #[error(transparent)] - ParseIntError(#[from] ParseIntError), + ParseInt(#[from] ParseIntError), #[error(transparent)] - ParseFloatError(#[from] ParseFloatError), + ParseFloat(#[from] ParseFloatError), #[error(transparent)] - GenericImageError(#[from] ImageError), + GenericImage(#[from] ImageError), #[cfg(feature = "png")] #[error("Invalid png data.")] - InvalidPngDataError, + InvalidPngData, #[cfg(feature = "http")] #[error(transparent)] - RequestError(#[from] reqwest::Error), + Request(#[from] reqwest::Error), #[cfg(feature = "toml")] #[error(transparent)] - TomlDeserializationError(#[from] toml_dep::de::Error), + TomlDeserialization(#[from] toml_dep::de::Error), #[cfg(feature = "http")] #[error(transparent)] - SerializationError(#[from] serde_json::Error), + Serialization(#[from] serde_json::Error), #[cfg(feature = "unzip")] #[error(transparent)] - UnzipError(#[from] ZipError), + Unzip(#[from] ZipError), #[cfg(feature = "hash")] #[error("Unable to decode hex value.")] - HexDecodeError, + HexDecode, } impl From for Error { diff --git a/src/hash.rs b/src/hash.rs index 084589fe..4348c372 100644 --- a/src/hash.rs +++ b/src/hash.rs @@ -72,7 +72,7 @@ fn hash_algorithm>(name: &str, bytes: B) -> Result { } fn string_hash(algorithm: &str, string: &str) -> Result { - Ok(hash_algorithm(algorithm, string)?) + hash_algorithm(algorithm, string) } fn file_hash(algorithm: &str, path: &str) -> Result { @@ -80,7 +80,7 @@ fn file_hash(algorithm: &str, path: &str) -> Result { let mut file = BufReader::new(File::open(path)?); file.read_to_end(&mut bytes)?; - Ok(hash_algorithm(algorithm, &bytes)?) + hash_algorithm(algorithm, &bytes) } /// Generates multiple TOTP codes from 20 character hex_seed, with time step +-tolerance @@ -107,21 +107,21 @@ fn totp_generate(hex_seed: &str, offset: i64, time_override: Option) -> Res match hex::decode_to_slice(hex_seed, &mut seed[..10] as &mut [u8]) { Ok(value) => value, - Err(_) => return Err(Error::HexDecodeError), + Err(_) => return Err(Error::HexDecode), }; let ipad: [u8; 64] = seed.map(|x| x ^ 0x36); // HMAC Step 4 let opad: [u8; 64] = seed.map(|x| x ^ 0x5C); // HMAC Step 7 // Will panic if the date is not between Jan 1 1970 and the year ~200 billion - let curr_time: i64 = time_override.unwrap_or( + let curr_time: i64 = time_override.unwrap_or_else(|| { SystemTime::now() .duration_since(UNIX_EPOCH) .expect("SystemTime is before Unix Epoc") .as_secs() .try_into() - .unwrap(), - ) / 30; + .unwrap() + }) / 30; let time: u64 = (curr_time + offset) as u64; let time_bytes: [u8; 8] = time.to_be_bytes(); diff --git a/src/lib.rs b/src/lib.rs index 0a8c6d76..8c66446e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,5 @@ +#![forbid(unsafe_op_in_unsafe_fn)] + #[macro_use] mod byond; #[allow(dead_code)] @@ -39,6 +41,5 @@ pub mod url; #[cfg(feature = "worleynoise")] pub mod worleynoise; - #[cfg(not(target_pointer_width = "32"))] compile_error!("rust-g must be compiled for a 32-bit target"); diff --git a/src/log.rs b/src/log.rs index 41e86aac..23e2bde5 100644 --- a/src/log.rs +++ b/src/log.rs @@ -18,7 +18,7 @@ byond_fn! { log_write(path, data, ...rest) { FILE_MAP.with(|cell| -> Result<()> { // open file let mut map = cell.borrow_mut(); - let path = Path::new(&path as &str); + let path = Path::new(path as &str); let file = match map.entry(path.into()) { Entry::Occupied(elem) => elem.into_mut(), Entry::Vacant(elem) => elem.insert(open(path)?), diff --git a/src/sql.rs b/src/sql.rs index 9312540c..9e63f2b7 100644 --- a/src/sql.rs +++ b/src/sql.rs @@ -168,7 +168,7 @@ fn do_query(handle: &str, query: &str, params: &str) -> Result match ctype { MYSQL_TYPE_VARCHAR | MYSQL_TYPE_STRING | MYSQL_TYPE_VAR_STRING => { - serde_json::Value::String(String::from_utf8_lossy(&b).into_owned()) + serde_json::Value::String(String::from_utf8_lossy(b).into_owned()) } MYSQL_TYPE_BLOB | MYSQL_TYPE_LONG_BLOB @@ -181,7 +181,7 @@ fn do_query(handle: &str, query: &str, params: &str) -> Result serde_json::Value::Null, diff --git a/src/time.rs b/src/time.rs index 9a9960af..9ffcdce4 100644 --- a/src/time.rs +++ b/src/time.rs @@ -35,4 +35,3 @@ byond_fn! { time_reset(instant_id) { Some("") }) } } - diff --git a/src/unzip.rs b/src/unzip.rs index 8ddc7460..ea6fa15b 100644 --- a/src/unzip.rs +++ b/src/unzip.rs @@ -21,7 +21,7 @@ fn construct_unzip(url: &str, unzip_directory: &str) -> UnzipPrep { } byond_fn! { unzip_download_async(url, unzip_directory) { - let unzip = construct_unzip(&url, &unzip_directory); + let unzip = construct_unzip(url, unzip_directory); Some(jobs::start(move || do_unzip_download(unzip).unwrap_or_else(|e| e.to_string()) )) diff --git a/src/worleynoise.rs b/src/worleynoise.rs index a22d7525..baf70149 100644 --- a/src/worleynoise.rs +++ b/src/worleynoise.rs @@ -54,12 +54,12 @@ struct Map { impl Map { fn new(region_size: i32, cell_map_width: i32, cell_map_height: i32, node_chance: f32) -> Map { let mut map = Map { - region_size: region_size, + region_size, region_map: Vec::new(), cell_map: Vec::new(), - cell_map_width: cell_map_width, - cell_map_height: cell_map_height, - node_chance: node_chance, + cell_map_width, + cell_map_height, + node_chance, }; map.init_regions(); @@ -172,15 +172,15 @@ impl Map { fn distance_from_to(x1: i32, y1: i32, x2: i32, y2: i32) -> f32 { let x_diff = x1 - x2; let y_diff = y1 - y2; - let distance = (((x_diff * x_diff) + (y_diff * y_diff)) as f32).sqrt(); - distance + + (((x_diff * x_diff) + (y_diff * y_diff)) as f32).sqrt() } fn quick_distance_from_to(x1: i32, y1: i32, x2: i32, y2: i32) -> f32 { let x_diff = x1 - x2; let y_diff = y1 - y2; - let distance = (x_diff.abs() + y_diff.abs()) as f32; - distance + + (x_diff.abs() + y_diff.abs()) as f32 } struct Cell { @@ -193,10 +193,10 @@ struct Cell { impl Cell { fn new(x: i32, y: i32, region: Rc) -> Cell { Cell { - x: x, - y: y, + x, + y, value: false, - region: region, + region, } } } @@ -210,8 +210,8 @@ struct Region { impl Region { fn new(reg_x: i32, reg_y: i32) -> Region { Region { - reg_x: reg_x, - reg_y: reg_y, + reg_x, + reg_y, node: None, } } @@ -224,6 +224,6 @@ struct Node { impl Node { fn new(x: i32, y: i32) -> Node { - Node { x: x, y: y } + Node { x, y } } } From 8c7d2980a93cc832af2779bf05e0d3a399989f08 Mon Sep 17 00:00:00 2001 From: MCHSL <56649176+MCHSL@users.noreply.github.com> Date: Wed, 29 Dec 2021 23:24:05 +0100 Subject: [PATCH 24/82] Adds Redis Pub/Sub integration (#80) dds the ability to connect to Redis, subscribe to messages and publish them as well. See here for example usage. The API, prefixed with rustg_redis_: connect(addr) - Connects to a Redis instance using the given address, for example redis://127.0.0.1/. Returns an empty string on success, returns the error otherwise. disconnect() - Closes the connection to Redis and stops the thread managing it. Call this before restarting or attempting to reconnect after an error. subscribe(channel) - Subscribes to a given channel and starts receiving messages from it. get_messages() - Returns all received messages as a JSON string, in the format of {"channel_1": ["msg1", "msg2", "msg3", ...], "channel_2": ["msg1", "msg2", "msg3", ...]}. Also includes errors, which appear on the channel "RUSTG_REDIS_ERROR_CHANNEL". publish(channel, message) - Publishes a message on the given channel. Remember to check the error channel every time you call get_messages(). If any occur, you need to call disconnect(), then connect() again, then resubscribe to desired channels. --- Cargo.toml | 4 +- README.md | 3 +- dmsrc/redis_pubsub.dm | 7 ++ src/lib.rs | 2 + src/redis_pubsub.rs | 174 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 188 insertions(+), 2 deletions(-) create mode 100644 dmsrc/redis_pubsub.dm create mode 100644 src/redis_pubsub.rs diff --git a/Cargo.toml b/Cargo.toml index afbbc3bc..3e6b6ff6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,6 +32,7 @@ png = { version = "0.16", optional = true } image = { version = "0.23.10", optional = true } git2 = { version = "0.13", optional = true, default-features = false } noise = { version = "0.7", optional = true} +redis = { version = "0.21.4", optional = true } reqwest = { version = "0.11", optional = true, default-features = false, features = ["blocking", "rustls-tls"] } serde = { version = "1.0", optional = true, features = ["derive"] } serde_json = { version = "1.0", optional = true } @@ -41,7 +42,7 @@ mysql = { version = "20.0", optional = true } dashmap = { version = "4.0", optional = true } zip = { version = "0.5.8", optional = true } rand = {version = "0.8", optional = true} -dmsort = {version = "1.0.0", optional = true} +dmsort = {version = "1.0.0", optional = true } toml-dep = { version = "0.5.8", package="toml", optional = true } aho-corasick = { version = "0.7.18", optional = true} @@ -64,6 +65,7 @@ url = ["url-dep", "percent-encoding"] # non-default features hash = ["base64", "const-random", "md-5", "hex", "sha-1", "sha2", "twox-hash", "serde", "serde_json"] +redis_pubsub = ["flume", "redis", "serde", "serde_json"] unzip = ["zip", "jobs"] worleynoise = ["rand","dmsort"] diff --git a/README.md b/README.md index c4ed4ea3..5a53e57e 100644 --- a/README.md +++ b/README.md @@ -94,9 +94,10 @@ The default features are: Additional features are: * hash: Faster replacement for `md5`, support for SHA-1, SHA-256, and SHA-512. Requires OpenSSL on Linux. +* redis_pubsub: Library for sending and receiving messages through Redis. * url: Faster replacements for `url_encode` and `url_decode`. * unzip: Function to download a .zip from a URL and unzip it to a directory. -* worleynoise: Function that generates a type of nice looking cellular noise, more expensive than cellularnoise +* worleynoise: Function that generates a type of nice looking cellular noise, more expensive than cellularnoise. ## Installing diff --git a/dmsrc/redis_pubsub.dm b/dmsrc/redis_pubsub.dm new file mode 100644 index 00000000..2524bb56 --- /dev/null +++ b/dmsrc/redis_pubsub.dm @@ -0,0 +1,7 @@ +#define RUSTG_REDIS_ERROR_CHANNEL "RUSTG_REDIS_ERROR_CHANNEL" + +#define rustg_redis_connect(addr) call(RUST_G, "redis_connect")(addr) +/proc/rustg_redis_disconnect() return call(RUST_G, "redis_disconnect")() +#define rustg_redis_subscribe(channel) call(RUST_G, "redis_subscribe")(channel) +/proc/rustg_redis_get_messages() return call(RUST_G, "redis_get_messages")() +#define rustg_redis_publish(channel, message) call(RUST_G, "redis_publish")(channel, message) diff --git a/src/lib.rs b/src/lib.rs index 8c66446e..d1439577 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -28,6 +28,8 @@ pub mod json; pub mod log; #[cfg(feature = "noise")] pub mod noise_gen; +#[cfg(feature = "redis_pubsub")] +pub mod redis_pubsub; #[cfg(feature = "sql")] pub mod sql; #[cfg(feature = "time")] diff --git a/src/redis_pubsub.rs b/src/redis_pubsub.rs new file mode 100644 index 00000000..ae3545b5 --- /dev/null +++ b/src/redis_pubsub.rs @@ -0,0 +1,174 @@ +use redis::{Client, Commands, RedisError}; +use std::cell::RefCell; +use std::collections::HashMap; +use std::thread; +use std::time::Duration; + +static ERROR_CHANNEL: &'static str = "RUSTG_REDIS_ERROR_CHANNEL"; + +thread_local! { + static REQUEST_SENDER: RefCell>> = RefCell::new(None); + static RESPONSE_RECEIVER: RefCell>> = RefCell::new(None); +} + +enum PubSubRequest { + Subscribe(String), + Publish(String, String), +} + +// response might not be a good name, since those are not sent in response to requests +enum PubSubResponse { + Disconnected(String), + Message(String, String), +} + +fn handle_redis_inner( + client: Client, + control: &flume::Receiver, + out: &flume::Sender, +) -> Result<(), RedisError> { + let mut conn = client.get_connection()?; + let mut pub_conn = client.get_connection()?; + let mut pubsub = conn.as_pubsub(); + pubsub.set_read_timeout(Some(Duration::from_secs(1)))?; + + loop { + loop { + match control.try_recv() { + Ok(req) => match req { + PubSubRequest::Subscribe(channel) => { + pubsub.subscribe(&[channel.as_str()])?; + } + PubSubRequest::Publish(channel, message) => { + pub_conn.publish(&channel, &message)?; + } + }, + Err(flume::TryRecvError::Empty) => break, + Err(flume::TryRecvError::Disconnected) => return Ok(()), + } + } + + if let Some(msg) = match pubsub.get_message() { + Ok(msg) => Some(msg), + Err(e) => { + if e.is_timeout() { + None + } else { + return Err(e); + } + } + } { + let chan = msg.get_channel_name().to_owned(); + let data: String = msg.get_payload().unwrap_or_default(); + if let Err(flume::TrySendError::Disconnected(_)) = + out.try_send(PubSubResponse::Message(chan, data)) + { + return Ok(()); // If no one wants to receive any more messages from us, we exit this thread + } + } + } +} + +fn handle_redis( + client: Client, + control: flume::Receiver, + out: flume::Sender, +) { + if let Err(e) = handle_redis_inner(client, &control, &out) { + let _ = out.send(PubSubResponse::Disconnected(e.to_string())); + } +} + +fn connect(addr: &str) -> Result<(), RedisError> { + let client = redis::Client::open(addr)?; + let _ = client.get_connection_with_timeout(Duration::from_secs(1))?; + let (c_sender, c_receiver) = flume::bounded(1000); + let (o_sender, o_receiver) = flume::bounded(1000); + REQUEST_SENDER.with(|cell| cell.replace(Some(c_sender))); + RESPONSE_RECEIVER.with(|cell| cell.replace(Some(o_receiver))); + thread::spawn(|| handle_redis(client, c_receiver, o_sender)); + Ok(()) +} + +fn disconnect() { + // Dropping the sender and receiver will cause the other thread to exit + REQUEST_SENDER.with(|cell| { + cell.replace(None); + }); + RESPONSE_RECEIVER.with(|cell| { + cell.replace(None); + }); +} + +// It's lame as hell to use strings as errors, but I don't feel like +// making a whole new type encompassing possible errors, since we're returning a string +// to BYOND anyway. +fn subscribe(channel: &str) -> Option { + return REQUEST_SENDER.with(|cell| { + if let Some(chan) = cell.borrow_mut().as_ref() { + return chan + .try_send(PubSubRequest::Subscribe(channel.to_owned())) + .err() + .map(|e| e.to_string()); + }; + Some("Not connected".to_owned()) + }); +} + +fn publish(channel: &str, msg: &str) -> Option { + return REQUEST_SENDER.with(|cell| { + if let Some(chan) = cell.borrow_mut().as_ref() { + return chan + .try_send(PubSubRequest::Publish(channel.to_owned(), msg.to_owned())) + .err() + .map(|e| e.to_string()); + }; + Some("Not connected".to_owned()) + }); +} + +fn get_messages() -> String { + let mut result: HashMap> = HashMap::new(); + RESPONSE_RECEIVER.with(|cell| { + let opt = cell.borrow_mut(); + if let Some(recv) = opt.as_ref() { + for resp in recv.try_iter() { + match resp { + PubSubResponse::Message(chan, msg) => { + result.entry(chan).or_default().push(msg); + } + PubSubResponse::Disconnected(error) => { + // Pardon the in-band signaling but it's probably the best way to do this + result + .entry(ERROR_CHANNEL.to_owned()) + .or_default() + .push(error); + } + } + } + } + }); + + serde_json::to_string(&result).unwrap_or("{}".to_owned()) +} + +byond_fn! { redis_connect(addr) { + connect(addr).err().map(|e| e.to_string()) +} } + +byond_fn! { redis_disconnect() { + disconnect(); + Some("") +} } + +byond_fn! { redis_subscribe(channel) { + subscribe(channel) +} } + +byond_fn! { redis_get_messages() { + Some(get_messages()) +} } + +byond_fn! { redis_publish(channel, message) { + publish(channel, message) +} } From 190de10932bae9f60957ba7e1aecbe0338310bb1 Mon Sep 17 00:00:00 2001 From: MCHSL <56649176+MCHSL@users.noreply.github.com> Date: Thu, 30 Dec 2021 02:31:47 +0100 Subject: [PATCH 25/82] fixes warning in redis (#88) --- src/redis_pubsub.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/redis_pubsub.rs b/src/redis_pubsub.rs index ae3545b5..ef4b5854 100644 --- a/src/redis_pubsub.rs +++ b/src/redis_pubsub.rs @@ -4,7 +4,7 @@ use std::collections::HashMap; use std::thread; use std::time::Duration; -static ERROR_CHANNEL: &'static str = "RUSTG_REDIS_ERROR_CHANNEL"; +const ERROR_CHANNEL: &str = "RUSTG_REDIS_ERROR_CHANNEL"; thread_local! { static REQUEST_SENDER: RefCell>> = RefCell::new(None); From f60d7745a87ae0cb2a4d00486dbed13b8b772295 Mon Sep 17 00:00:00 2001 From: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Date: Wed, 29 Dec 2021 17:59:14 -0800 Subject: [PATCH 26/82] Fix clippy CI, format byond_fn (#89) --- .github/workflows/rust.yml | 6 ++-- Cargo.lock | 43 +++++++++++++++++++++++++++ src/acreplace.rs | 16 +++++----- src/byond.rs | 12 ++++---- src/cellularnoise.rs | 4 +-- src/dmi.rs | 12 ++++---- src/file.rs | 16 +++++----- src/git.rs | 8 ++--- src/hash.rs | 16 +++++----- src/http.rs | 12 ++++---- src/json.rs | 4 +-- src/log.rs | 22 +++++++------- src/noise_gen.rs | 4 +-- src/redis_pubsub.rs | 61 +++++++++++++++++++++----------------- src/sql.rs | 24 +++++++-------- src/time.rs | 12 ++++---- src/toml.rs | 4 +-- src/unzip.rs | 8 ++--- src/url.rs | 8 ++--- src/worleynoise.rs | 4 +-- 20 files changed, 174 insertions(+), 122 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 05bdc613..cd6c081f 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -17,11 +17,11 @@ jobs: target: i686-pc-windows-msvc components: rustfmt, clippy - name: Clippy (all features) - uses: actions-rs/clippy-check@v1 + uses: actions-rs/cargo@v1 with: toolchain: stable - token: ${{ secrets.GITHUB_TOKEN }} - args: --target i686-pc-windows-msvc --all-features -- -D warnings + command: clippy + args: --target i686-pc-windows-msvc --all-features --locked -- -D warnings - name: Rustfmt uses: actions-rs/cargo@v1 with: diff --git a/Cargo.lock b/Cargo.lock index 3b0be200..ab58486c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -40,6 +40,17 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +[[package]] +name = "async-trait" +version = "0.1.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "autocfg" version = "1.0.1" @@ -210,6 +221,16 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" +[[package]] +name = "combine" +version = "4.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b2f5d0ee456f3928812dfc8c6d9a1d592b98678f6d56db9b0cd2b7bc6c8db5" +dependencies = [ + "bytes 1.0.1", + "memchr", +] + [[package]] name = "const-random" version = "0.1.13" @@ -383,6 +404,12 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4699f5cb7678f099b747ffdc1e6ce6cdc42579e29d28315aa715b9fd10324fc" +[[package]] +name = "dtoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" + [[package]] name = "either" version = "1.6.1" @@ -1415,6 +1442,21 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "redis" +version = "0.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f23ceed4c0e76b322657c2c3352ea116f9ec60a1a1aefeb3c84ed062c50865b" +dependencies = [ + "async-trait", + "combine", + "dtoa", + "itoa", + "percent-encoding", + "sha1", + "url", +] + [[package]] name = "redox_syscall" version = "0.2.9" @@ -1522,6 +1564,7 @@ dependencies = [ "percent-encoding", "png", "rand 0.8.4", + "redis", "reqwest", "serde", "serde_json", diff --git a/src/acreplace.rs b/src/acreplace.rs index 0fc3615f..681bdf0b 100644 --- a/src/acreplace.rs +++ b/src/acreplace.rs @@ -53,7 +53,7 @@ thread_local! { static CREPLACE_MAP: RefCell> = RefCell::new(HashMap::new()); } -byond_fn! { setup_acreplace(key, patterns_json, replacements_json) { +byond_fn!(fn setup_acreplace(key, patterns_json, replacements_json) { let patterns: Vec = serde_json::from_str(patterns_json).ok()?; let replacements: Vec = serde_json::from_str(replacements_json).ok()?; let ac = AhoCorasickBuilder::new().auto_configure(&patterns).build(&patterns); @@ -62,9 +62,9 @@ byond_fn! { setup_acreplace(key, patterns_json, replacements_json) { map.insert(key.to_owned(), Replacements { automaton: ac, replacements }); }); Some("") -} } +}); -byond_fn! { setup_acreplace_with_options(key, options_json, patterns_json, replacements_json) { +byond_fn!(fn setup_acreplace_with_options(key, options_json, patterns_json, replacements_json) { let options: AhoCorasickOptions = serde_json::from_str(options_json).ok()?; let patterns: Vec = serde_json::from_str(patterns_json).ok()?; let replacements: Vec = serde_json::from_str(replacements_json).ok()?; @@ -74,21 +74,21 @@ byond_fn! { setup_acreplace_with_options(key, options_json, patterns_json, repla map.insert(key.to_owned(), Replacements { automaton: ac, replacements }); }); Some("") -} } +}); -byond_fn! { acreplace(key, text) { +byond_fn!(fn acreplace(key, text) { CREPLACE_MAP.with(|cell| -> Option { let map = cell.borrow_mut(); let replacements = map.get(key)?; Some(replacements.automaton.replace_all(text, &replacements.replacements)) }) -} } +}); -byond_fn! { acreplace_with_replacements(key, text, replacements_json) { +byond_fn!(fn acreplace_with_replacements(key, text, replacements_json) { let call_replacements: Vec = serde_json::from_str(replacements_json).ok()?; CREPLACE_MAP.with(|cell| -> Option { let map = cell.borrow_mut(); let replacements = map.get(key)?; Some(replacements.automaton.replace_all(text, &call_replacements)) }) -}} +}); diff --git a/src/byond.rs b/src/byond.rs index 01c86608..385d5251 100644 --- a/src/byond.rs +++ b/src/byond.rs @@ -44,7 +44,7 @@ pub fn byond_return(value: Option>) -> *const c_char { #[macro_export] macro_rules! byond_fn { - ($name:ident() $body:block) => { + (fn $name:ident() $body:block) => { #[no_mangle] #[allow(clippy::missing_safety_doc)] pub unsafe extern "C" fn $name( @@ -55,7 +55,7 @@ macro_rules! byond_fn { } }; - ($name:ident($($arg:ident),* $(, ...$rest:ident)?) $body:block) => { + (fn $name:ident($($arg:ident),* $(, ...$rest:ident)?) $body:block) => { #[no_mangle] #[allow(clippy::missing_safety_doc)] pub unsafe extern "C" fn $name( @@ -79,6 +79,8 @@ macro_rules! byond_fn { } // Easy version checker. It's in this file so it is always included -byond_fn! { get_version() { - Some(env!("CARGO_PKG_VERSION")) -} } +byond_fn!( + fn get_version() { + Some(env!("CARGO_PKG_VERSION")) + } +); diff --git a/src/cellularnoise.rs b/src/cellularnoise.rs index 5fb891f3..f16bc1b6 100644 --- a/src/cellularnoise.rs +++ b/src/cellularnoise.rs @@ -2,9 +2,9 @@ use crate::error::Result; use rand::*; use std::fmt::Write; -byond_fn! { cnoise_generate(percentage, smoothing_iterations, birth_limit, death_limit, width, height) { +byond_fn!(fn cnoise_generate(percentage, smoothing_iterations, birth_limit, death_limit, width, height) { noise_gen(percentage, smoothing_iterations, birth_limit, death_limit, width, height).ok() -} } +}); fn noise_gen( percentage_as_str: &str, diff --git a/src/dmi.rs b/src/dmi.rs index 263058a8..e36c034a 100644 --- a/src/dmi.rs +++ b/src/dmi.rs @@ -5,15 +5,15 @@ use std::{ path::Path, }; -byond_fn! { dmi_strip_metadata(path) { +byond_fn!(fn dmi_strip_metadata(path) { strip_metadata(path).err() -} } +}); -byond_fn! { dmi_create_png(path, width, height, data) { +byond_fn!(fn dmi_create_png(path, width, height, data) { create_png(path, width, height, data).err() -} } +}); -byond_fn! { dmi_resize_png(path, width, height, resizetype) { +byond_fn!(fn dmi_resize_png(path, width, height, resizetype) { let resizetype = match resizetype { "catmull" => image::imageops::CatmullRom, "gaussian" => image::imageops::Gaussian, @@ -23,7 +23,7 @@ byond_fn! { dmi_resize_png(path, width, height, resizetype) { _ => image::imageops::Nearest, }; resize_png(path, width, height, resizetype).err() -} } +}); fn strip_metadata(path: &str) -> Result<()> { let (info, image) = read_png(path)?; diff --git a/src/file.rs b/src/file.rs index 947c738d..4b6322e3 100644 --- a/src/file.rs +++ b/src/file.rs @@ -4,21 +4,21 @@ use std::{ io::{BufReader, BufWriter, Read, Write}, }; -byond_fn! { file_read(path) { +byond_fn!(fn file_read(path) { read(path).ok() -} } +}); -byond_fn! { file_exists(path) { +byond_fn!(fn file_exists(path) { Some(exists(path)) -} } +}); -byond_fn! { file_write(data, path) { +byond_fn!(fn file_write(data, path) { write(data, path).err() -} } +}); -byond_fn! { file_append(data, path) { +byond_fn!(fn file_append(data, path) { append(data, path).err() -} } +}); fn read(path: &str) -> Result { let file = File::open(path)?; diff --git a/src/git.rs b/src/git.rs index 641aeea3..1ce3d069 100644 --- a/src/git.rs +++ b/src/git.rs @@ -5,15 +5,15 @@ thread_local! { static REPOSITORY: Result = Repository::open("."); } -byond_fn! { rg_git_revparse(rev) { +byond_fn!(fn rg_git_revparse(rev) { REPOSITORY.with(|repo| -> Result { let repo = repo.as_ref().map_err(Error::code)?; let object = repo.revparse_single(rev).map_err(|e| e.code())?; Ok(object.id().to_string()) }).ok() -} } +}); -byond_fn! { rg_git_commit_date(rev) { +byond_fn!(fn rg_git_commit_date(rev) { REPOSITORY.with(|repo| -> Result { let repo = repo.as_ref().map_err(Error::code)?; let object = repo.revparse_single(rev).map_err(|e| e.code())?; @@ -21,4 +21,4 @@ byond_fn! { rg_git_commit_date(rev) { let datetime = Utc.timestamp(commit.time().seconds(), 0); Ok(datetime.format("%F").to_string()) }).ok() -} } +}); diff --git a/src/hash.rs b/src/hash.rs index 4348c372..7d9808e2 100644 --- a/src/hash.rs +++ b/src/hash.rs @@ -13,22 +13,22 @@ use std::{ }; use twox_hash::XxHash64; -byond_fn! { hash_string(algorithm, string) { +byond_fn!(fn hash_string(algorithm, string) { string_hash(algorithm, string).ok() -} } +}); -byond_fn! { hash_file(algorithm, string) { +byond_fn!(fn hash_file(algorithm, string) { file_hash(algorithm, string).ok() -} } +}); -byond_fn! { generate_totp(hex_seed) { +byond_fn!(fn generate_totp(hex_seed) { match totp_generate(hex_seed, 0, None) { Ok(value) => Some(value), Err(error) => return Some(format!("ERROR: {:?}", error)) } -} } +}); -byond_fn! { generate_totp_tolerance(hex_seed, tolerance) { +byond_fn!(fn generate_totp_tolerance(hex_seed, tolerance) { let tolerance_value: i32 = match tolerance.parse() { Ok(value) => value, Err(_) => return Some(String::from("ERROR: Tolerance not a valid integer")) @@ -37,7 +37,7 @@ byond_fn! { generate_totp_tolerance(hex_seed, tolerance) { Ok(value) => Some(value), Err(error) => return Some(format!("ERROR: {:?}", error)) } -} } +}); fn hash_algorithm>(name: &str, bytes: B) -> Result { match name { diff --git a/src/http.rs b/src/http.rs index 28c8345e..291e1d19 100644 --- a/src/http.rs +++ b/src/http.rs @@ -22,7 +22,7 @@ struct Response<'a> { // If the response can be deserialized -> success. // If the response can't be deserialized -> failure. -byond_fn! { http_request_blocking(method, url, body, headers, ...rest) { +byond_fn!(fn http_request_blocking(method, url, body, headers, ...rest) { let req = match construct_request(method, url, body, headers, rest.first().map(|x| &**x)) { Ok(r) => r, Err(e) => return Some(e.to_string()) @@ -32,10 +32,10 @@ byond_fn! { http_request_blocking(method, url, body, headers, ...rest) { Ok(r) => Some(r), Err(e) => Some(e.to_string()) } -} } +}); // Returns new job-id. -byond_fn! { http_request_async(method, url, body, headers, ...rest) { +byond_fn!(fn http_request_async(method, url, body, headers, ...rest) { let req = match construct_request(method, url, body, headers, rest.first().map(|x| &**x)) { Ok(r) => r, Err(e) => return Some(e.to_string()) @@ -47,13 +47,13 @@ byond_fn! { http_request_async(method, url, body, headers, ...rest) { Err(e) => e.to_string() } })) -} } +}); // If the response can be deserialized -> success. // If the response can't be deserialized -> failure or WIP. -byond_fn! { http_check_request(id) { +byond_fn!(fn http_check_request(id) { Some(jobs::check(id)) -} } +}); // ---------------------------------------------------------------------------- // Shared HTTP client state diff --git a/src/json.rs b/src/json.rs index 2185e9d6..db75d967 100644 --- a/src/json.rs +++ b/src/json.rs @@ -3,14 +3,14 @@ use std::cmp; const VALID_JSON_MAX_RECURSION_DEPTH: usize = 8; -byond_fn! { json_is_valid(text) { +byond_fn!(fn json_is_valid(text) { let value = match serde_json::from_str::(text) { Ok(value) => value, Err(_) => return Some("false".to_owned()) }; Some(get_recursion_level(&value).is_ok().to_string()) -} } +}); /// Gets the recursion level of the given value /// If it is above VALID_JSON_MAX_RECURSION_DEPTH, returns Err(()) diff --git a/src/log.rs b/src/log.rs index 23e2bde5..9bd019b2 100644 --- a/src/log.rs +++ b/src/log.rs @@ -14,7 +14,7 @@ thread_local! { static FILE_MAP: RefCell> = RefCell::new(HashMap::new()); } -byond_fn! { log_write(path, data, ...rest) { +byond_fn!(fn log_write(path, data, ...rest) { FILE_MAP.with(|cell| -> Result<()> { // open file let mut map = cell.borrow_mut(); @@ -42,15 +42,17 @@ byond_fn! { log_write(path, data, ...rest) { Ok(()) }).err() -} } - -byond_fn! { log_close_all() { - FILE_MAP.with(|cell| { - let mut map = cell.borrow_mut(); - map.clear(); - }); - Some("") -} } +}); + +byond_fn!( + fn log_close_all() { + FILE_MAP.with(|cell| { + let mut map = cell.borrow_mut(); + map.clear(); + }); + Some("") + } +); fn open(path: &Path) -> Result { if let Some(parent) = path.parent() { diff --git a/src/noise_gen.rs b/src/noise_gen.rs index 0b97eb48..faa68a6e 100644 --- a/src/noise_gen.rs +++ b/src/noise_gen.rs @@ -10,9 +10,9 @@ thread_local! { static GENERATORS: RefCell> = RefCell::new(HashMap::new()); } -byond_fn! { noise_get_at_coordinates(seed, x, y) { +byond_fn!(fn noise_get_at_coordinates(seed, x, y) { get_at_coordinates(seed, x, y).ok() -} } +}); //note that this will be 0 at integer x & y, scaling is left up to the caller fn get_at_coordinates(seed_as_str: &str, x_as_str: &str, y_as_str: &str) -> Result { diff --git a/src/redis_pubsub.rs b/src/redis_pubsub.rs index ef4b5854..97d3d0da 100644 --- a/src/redis_pubsub.rs +++ b/src/redis_pubsub.rs @@ -104,31 +104,32 @@ fn disconnect() { // making a whole new type encompassing possible errors, since we're returning a string // to BYOND anyway. fn subscribe(channel: &str) -> Option { - return REQUEST_SENDER.with(|cell| { + REQUEST_SENDER.with(|cell| { if let Some(chan) = cell.borrow_mut().as_ref() { - return chan - .try_send(PubSubRequest::Subscribe(channel.to_owned())) + chan.try_send(PubSubRequest::Subscribe(channel.to_owned())) .err() - .map(|e| e.to_string()); - }; - Some("Not connected".to_owned()) - }); + .map(|e| e.to_string()) + } else { + Some("Not connected".to_owned()) + } + }) } fn publish(channel: &str, msg: &str) -> Option { - return REQUEST_SENDER.with(|cell| { + REQUEST_SENDER.with(|cell| { if let Some(chan) = cell.borrow_mut().as_ref() { - return chan - .try_send(PubSubRequest::Publish(channel.to_owned(), msg.to_owned())) + chan.try_send(PubSubRequest::Publish(channel.to_owned(), msg.to_owned())) .err() - .map(|e| e.to_string()); - }; - Some("Not connected".to_owned()) - }); + .map(|e| e.to_string()) + } else { + Some("Not connected".to_owned()) + } + }) } fn get_messages() -> String { let mut result: HashMap> = HashMap::new(); + RESPONSE_RECEIVER.with(|cell| { let opt = cell.borrow_mut(); if let Some(recv) = opt.as_ref() { @@ -149,26 +150,30 @@ fn get_messages() -> String { } }); - serde_json::to_string(&result).unwrap_or("{}".to_owned()) + serde_json::to_string(&result).unwrap_or_else(|_| "{}".to_owned()) } -byond_fn! { redis_connect(addr) { +byond_fn!(fn redis_connect(addr) { connect(addr).err().map(|e| e.to_string()) -} } +}); -byond_fn! { redis_disconnect() { - disconnect(); - Some("") -} } +byond_fn!( + fn redis_disconnect() { + disconnect(); + Some("") + } +); -byond_fn! { redis_subscribe(channel) { +byond_fn!(fn redis_subscribe(channel) { subscribe(channel) -} } +}); -byond_fn! { redis_get_messages() { - Some(get_messages()) -} } +byond_fn!( + fn redis_get_messages() { + Some(get_messages()) + } +); -byond_fn! { redis_publish(channel, message) { +byond_fn!(fn redis_publish(channel, message) { publish(channel, message) -} } +}); diff --git a/src/sql.rs b/src/sql.rs index 9e63f2b7..90b9f4ff 100644 --- a/src/sql.rs +++ b/src/sql.rs @@ -32,7 +32,7 @@ struct ConnectOptions { max_threads: Option, } -byond_fn! { sql_connect_pool(options) { +byond_fn!(fn sql_connect_pool(options) { let options = match serde_json::from_str::(options) { Ok(options) => options, Err(e) => return Some(err_to_json(e)), @@ -41,16 +41,16 @@ byond_fn! { sql_connect_pool(options) { Ok(o) => o.to_string(), Err(e) => err_to_json(e) }) -} } +}); -byond_fn! { sql_query_blocking(handle, query, params) { +byond_fn!(fn sql_query_blocking(handle, query, params) { Some(match do_query(handle, query, params) { Ok(o) => o.to_string(), Err(e) => err_to_json(e) }) -} } +}); -byond_fn! { sql_query_async(handle, query, params) { +byond_fn!(fn sql_query_async(handle, query, params) { let handle = handle.to_owned(); let query = query.to_owned(); let params = params.to_owned(); @@ -60,10 +60,10 @@ byond_fn! { sql_query_async(handle, query, params) { Err(e) => err_to_json(e) } })) -} } +}); // hopefully won't panic if queries are running -byond_fn! { sql_disconnect_pool(handle) { +byond_fn!(fn sql_disconnect_pool(handle) { let handle = match handle.parse::() { Ok(o) => o, Err(e) => return Some(err_to_json(e)), @@ -80,9 +80,9 @@ byond_fn! { sql_disconnect_pool(handle) { }).to_string() } ) -} } +}); -byond_fn! { sql_connected(handle) { +byond_fn!(fn sql_connected(handle) { let handle = match handle.parse::() { Ok(o) => o, Err(e) => return Some(err_to_json(e)), @@ -97,11 +97,11 @@ byond_fn! { sql_connected(handle) { }).to_string() } ) -} } +}); -byond_fn! { sql_check_query(id) { +byond_fn!(fn sql_check_query(id) { Some(jobs::check(id)) -} } +}); // ---------------------------------------------------------------------------- // Main connect and query implementation diff --git a/src/time.rs b/src/time.rs index 9ffcdce4..e08f33b5 100644 --- a/src/time.rs +++ b/src/time.rs @@ -6,7 +6,7 @@ use std::{ thread_local!( static INSTANTS: RefCell> = RefCell::new(HashMap::new()) ); -byond_fn! { time_microseconds(instant_id) { +byond_fn!(fn time_microseconds(instant_id) { INSTANTS.with(|instants| { let mut map = instants.borrow_mut(); let instant = match map.entry(instant_id.into()) { @@ -15,9 +15,9 @@ byond_fn! { time_microseconds(instant_id) { }; Some(instant.elapsed().as_micros().to_string()) }) -} } +}); -byond_fn! { time_milliseconds(instant_id) { +byond_fn!(fn time_milliseconds(instant_id) { INSTANTS.with(|instants| { let mut map = instants.borrow_mut(); let instant = match map.entry(instant_id.into()) { @@ -26,12 +26,12 @@ byond_fn! { time_milliseconds(instant_id) { }; Some(instant.elapsed().as_millis().to_string()) }) -} } +}); -byond_fn! { time_reset(instant_id) { +byond_fn!(fn time_reset(instant_id) { INSTANTS.with(|instants| { let mut map = instants.borrow_mut(); map.insert(instant_id.into(), Instant::now()); Some("") }) -} } +}); diff --git a/src/toml.rs b/src/toml.rs index 323043f6..140d8fbb 100644 --- a/src/toml.rs +++ b/src/toml.rs @@ -1,8 +1,8 @@ use crate::error::Result; -byond_fn! { toml_file_to_json(path) { +byond_fn!(fn toml_file_to_json(path) { toml_file_to_json_impl(path).ok() -} } +}); fn toml_file_to_json_impl(path: &str) -> Result { Ok(serde_json::to_string(&toml_dep::from_str::< diff --git a/src/unzip.rs b/src/unzip.rs index ea6fa15b..16b5009a 100644 --- a/src/unzip.rs +++ b/src/unzip.rs @@ -20,12 +20,12 @@ fn construct_unzip(url: &str, unzip_directory: &str) -> UnzipPrep { } } -byond_fn! { unzip_download_async(url, unzip_directory) { +byond_fn!(fn unzip_download_async(url, unzip_directory) { let unzip = construct_unzip(url, unzip_directory); Some(jobs::start(move || do_unzip_download(unzip).unwrap_or_else(|e| e.to_string()) )) -} } +}); fn do_unzip_download(prep: UnzipPrep) -> Result { let unzip_path = Path::new(&prep.unzip_directory); @@ -58,6 +58,6 @@ fn do_unzip_download(prep: UnzipPrep) -> Result { Ok("true".to_string()) } -byond_fn! { unzip_check(id) { +byond_fn!(fn unzip_check(id) { Some(jobs::check(id)) -} } +}); diff --git a/src/url.rs b/src/url.rs index be2179e1..177cbd40 100644 --- a/src/url.rs +++ b/src/url.rs @@ -2,13 +2,13 @@ use crate::error::Result; use std::borrow::Cow; use url_dep::form_urlencoded::byte_serialize; -byond_fn! { url_encode(data) { +byond_fn!(fn url_encode(data) { Some(encode(data)) -} } +}); -byond_fn! { url_decode(data) { +byond_fn!(fn url_decode(data) { decode(data).ok() -} } +}); fn encode(string: &str) -> String { byte_serialize(string.as_bytes()).collect() diff --git a/src/worleynoise.rs b/src/worleynoise.rs index baf70149..9d7a8ec2 100644 --- a/src/worleynoise.rs +++ b/src/worleynoise.rs @@ -3,9 +3,9 @@ use rand::*; use std::fmt::Write; use std::rc::Rc; -byond_fn! { worley_generate(region_size, threshold, node_per_region_chance, width, height) { +byond_fn!(fn worley_generate(region_size, threshold, node_per_region_chance, width, height) { worley_noise(region_size, threshold, node_per_region_chance, width, height).ok() -} } +}); // This is a quite complex algorithm basically what it does is it creates 2 maps, one filled with cells and the other with 'regions' that map onto these cells. // Each region can spawn 1 node, the cell then determines wether it is true or false depending on the distance from it to the nearest node in the region minus the second closest node. From 347e772cd4a9620482875cf26ec0afad41c29042 Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Thu, 30 Dec 2021 23:18:16 +0200 Subject: [PATCH 27/82] Adds alphabetical order tests for README.md, lib.rs and Cargo.toml (#84) Adds alphabetical order tests for README.md, lib.rs and Cargo.toml #84 Also renamed "non-default features" to "additional features" in Cargo.toml for consistency with readme updated the cargo.lock and ran rustfmt --- Cargo.lock | 1 + Cargo.toml | 5 +++- README.md | 4 +-- tests/abc-tests.rs | 67 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 tests/abc-tests.rs diff --git a/Cargo.lock b/Cargo.lock index ab58486c..9dd4ffc6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1565,6 +1565,7 @@ dependencies = [ "png", "rand 0.8.4", "redis", + "regex", "reqwest", "serde", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index 3e6b6ff6..6555ddd1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -63,7 +63,7 @@ time = [] toml = ["serde", "serde_json", "toml-dep"] url = ["url-dep", "percent-encoding"] -# non-default features +# additional features hash = ["base64", "const-random", "md-5", "hex", "sha-1", "sha2", "twox-hash", "serde", "serde_json"] redis_pubsub = ["flume", "redis", "serde", "serde_json"] unzip = ["zip", "jobs"] @@ -71,3 +71,6 @@ worleynoise = ["rand","dmsort"] # internal feature-like things jobs = ["flume"] + +[dev-dependencies] +regex = "1" diff --git a/README.md b/README.md index 5a53e57e..92cf6c81 100644 --- a/README.md +++ b/README.md @@ -95,9 +95,9 @@ The default features are: Additional features are: * hash: Faster replacement for `md5`, support for SHA-1, SHA-256, and SHA-512. Requires OpenSSL on Linux. * redis_pubsub: Library for sending and receiving messages through Redis. -* url: Faster replacements for `url_encode` and `url_decode`. * unzip: Function to download a .zip from a URL and unzip it to a directory. -* worleynoise: Function that generates a type of nice looking cellular noise, more expensive than cellularnoise. +* url: Faster replacements for `url_encode` and `url_decode`. +* worleynoise: Function that generates a type of nice looking cellular noise, more expensive than cellularnoise ## Installing diff --git a/tests/abc-tests.rs b/tests/abc-tests.rs new file mode 100644 index 00000000..0923c669 --- /dev/null +++ b/tests/abc-tests.rs @@ -0,0 +1,67 @@ +extern crate regex; +use regex::{CaptureMatches, RegexBuilder}; +use std::cmp::Ordering; + +fn are_captures_sorted(matches: CaptureMatches, context: &str) -> Result<(), String> { + let mut prev_string = ""; + for cap in matches { + let capstring = cap.get(0).unwrap().as_str(); + match prev_string.cmp(&capstring) { + Ordering::Greater => { + return Err(format!("{} is not sorted in {}", &capstring, &context)) + } + _ => { + prev_string = capstring; + } + }; + } + Ok(()) +} + +#[test] +fn test_readme() -> Result<(), String> { + let readme = std::fs::read_to_string("README.md").unwrap(); + let blocksre = RegexBuilder::new(r"^The default features are:\r?\n((:?^.+?\r?\n)*)\r?\nAdditional features are:\r?\n((:?^.+?\r?\n)*)").multi_line(true).build().unwrap(); + let linesre = RegexBuilder::new(r"^\*(.+?)$") + .multi_line(true) + .build() + .unwrap(); + let blocks = blocksre.captures(&readme).unwrap(); + are_captures_sorted( + linesre.captures_iter(blocks.get(1).unwrap().as_str()), + "README.md default features", + )?; + are_captures_sorted( + linesre.captures_iter(blocks.get(3).unwrap().as_str()), + "README.md additional features", + ) +} + +#[test] +fn test_librs() -> Result<(), String> { + let librs = std::fs::read_to_string("src/lib.rs").unwrap(); + let modsre = RegexBuilder::new(r"(^pub mod .+?$)") + .multi_line(true) + .build() + .unwrap(); + are_captures_sorted(modsre.captures_iter(&librs), "lib.rs") +} + +#[test] +fn test_cargotoml() -> Result<(), String> { + let cargotoml = std::fs::read_to_string("Cargo.toml").unwrap(); + let blocksre = RegexBuilder::new(r"^# default features\r?\n((:?^.+?\r?\n)*)\r?\n# additional features\r?\n((:?^.+?\r?\n)*)\r?\n#").multi_line(true).build().unwrap(); + let linesre = RegexBuilder::new(r"^(\w.+?)$") + .multi_line(true) + .build() + .unwrap(); + let blocks = blocksre.captures(&cargotoml).unwrap(); + are_captures_sorted( + linesre.captures_iter(blocks.get(1).unwrap().as_str()), + "Cargo.toml default features", + )?; + are_captures_sorted( + linesre.captures_iter(blocks.get(3).unwrap().as_str()), + "Cargo.toml additional features", + ) +} From cba59827c6b2ec4a2503b551744f487b3c991803 Mon Sep 17 00:00:00 2001 From: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Date: Sun, 2 Jan 2022 21:49:06 +0000 Subject: [PATCH 28/82] Bump to 0.6.0 (#90) --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9dd4ffc6..cd4001ff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1544,7 +1544,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "0.5.0" +version = "0.6.0" dependencies = [ "aho-corasick", "base64 0.13.0", diff --git a/Cargo.toml b/Cargo.toml index 6555ddd1..1cbe8f5f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rust-g" edition = "2018" -version = "0.5.0" +version = "0.6.0" authors = ["Bjorn Neergaard "] repository = "https://github.com/tgstation/rust-g" license-file = "LICENSE" From 107123a03316a44c97da09175e3e602796876c51 Mon Sep 17 00:00:00 2001 From: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Date: Mon, 3 Jan 2022 00:10:05 +0000 Subject: [PATCH 29/82] Fixes redis dmsrc (#91) --- dmsrc/{redis_pubsub.dm => redis-pubsub.dm} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename dmsrc/{redis_pubsub.dm => redis-pubsub.dm} (100%) diff --git a/dmsrc/redis_pubsub.dm b/dmsrc/redis-pubsub.dm similarity index 100% rename from dmsrc/redis_pubsub.dm rename to dmsrc/redis-pubsub.dm From b8ee3af967dd00b4508c1b2f4e33c8a2d557a467 Mon Sep 17 00:00:00 2001 From: AnturK Date: Wed, 5 Jan 2022 22:41:41 +0100 Subject: [PATCH 30/82] Cleaner and saner http request parsing. (#93) --- src/http.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/http.rs b/src/http.rs index 291e1d19..5da2ff1a 100644 --- a/src/http.rs +++ b/src/http.rs @@ -9,7 +9,9 @@ use std::io::Write; #[derive(Deserialize)] struct RequestOptions { + #[serde(default)] output_filename: Option, + #[serde(default)] body_filename: Option, } @@ -22,8 +24,8 @@ struct Response<'a> { // If the response can be deserialized -> success. // If the response can't be deserialized -> failure. -byond_fn!(fn http_request_blocking(method, url, body, headers, ...rest) { - let req = match construct_request(method, url, body, headers, rest.first().map(|x| &**x)) { +byond_fn!(fn http_request_blocking(method, url, body, headers, options) { + let req = match construct_request(method, url, body, headers, options) { Ok(r) => r, Err(e) => return Some(e.to_string()) }; @@ -35,8 +37,8 @@ byond_fn!(fn http_request_blocking(method, url, body, headers, ...rest) { }); // Returns new job-id. -byond_fn!(fn http_request_async(method, url, body, headers, ...rest) { - let req = match construct_request(method, url, body, headers, rest.first().map(|x| &**x)) { +byond_fn!(fn http_request_async(method, url, body, headers, options) { + let req = match construct_request(method, url, body, headers, options) { Ok(r) => r, Err(e) => return Some(e.to_string()) }; @@ -91,7 +93,7 @@ fn construct_request( url: &str, body: &str, headers: &str, - options: Option<&str>, + options: &str, ) -> Result { let mut req = match method { "post" => HTTP_CLIENT.post(url), @@ -114,7 +116,7 @@ fn construct_request( } let mut output_filename = None; - if let Some(options) = options { + if !options.is_empty() { let options: RequestOptions = serde_json::from_str(options)?; output_filename = options.output_filename; if let Some(fname) = options.body_filename { From 28b3864107175b7dfbc33d206ef7ab5a04a36697 Mon Sep 17 00:00:00 2001 From: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Date: Tue, 26 Apr 2022 15:29:24 -0700 Subject: [PATCH 31/82] Add functions for seeking lines and getting line counts in functions (#95) dds rustg_file_get_line_count for getting the line count of a given filename, and rustg_file_seek_line for getting a specific line. These are useful as to not load the entire file into memory in DM, which is useful for very large files like dictionaries. --- build.rs | 2 +- dmsrc/file.dm | 2 ++ src/file.rs | 25 +++++++++++++++++++++++-- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/build.rs b/build.rs index 4e2e4c14..3039dbf0 100644 --- a/build.rs +++ b/build.rs @@ -28,7 +28,7 @@ fn main() { for (key, _value) in std::env::vars() { // CARGO_FEATURE_ — For each activated feature of the package being built, this environment variable will be present where is the name of the feature uppercased and having - translated to _. if let Some(uprfeature) = key.strip_prefix("CARGO_FEATURE_") { - let feature = uprfeature.to_lowercase().replace("_", "-"); // actual proper name of the enabled feature + let feature = uprfeature.to_lowercase().replace('_', "-"); // actual proper name of the enabled feature if feature_dm_exists!(&feature) { writeln!( f, diff --git a/dmsrc/file.dm b/dmsrc/file.dm index e0c30336..cfc32585 100644 --- a/dmsrc/file.dm +++ b/dmsrc/file.dm @@ -2,6 +2,8 @@ #define rustg_file_exists(fname) call(RUST_G, "file_exists")(fname) #define rustg_file_write(text, fname) call(RUST_G, "file_write")(text, fname) #define rustg_file_append(text, fname) call(RUST_G, "file_append")(text, fname) +#define rustg_file_get_line_count(fname) text2num(call(RUST_G, "file_get_line_count")(fname)) +#define rustg_file_seek_line(fname, line) call(RUST_G, "file_seek_line")(fname, "[line]") #ifdef RUSTG_OVERRIDE_BUILTINS #define file2text(fname) rustg_file_read("[fname]") diff --git a/src/file.rs b/src/file.rs index 4b6322e3..d766e96f 100644 --- a/src/file.rs +++ b/src/file.rs @@ -1,7 +1,7 @@ use crate::error::Result; use std::{ fs::{File, OpenOptions}, - io::{BufReader, BufWriter, Read, Write}, + io::{BufRead, BufReader, BufWriter, Read, Write}, }; byond_fn!(fn file_read(path) { @@ -20,6 +20,17 @@ byond_fn!(fn file_append(data, path) { append(data, path).err() }); +byond_fn!(fn file_get_line_count(path) { + Some(get_line_count(path).ok()?.to_string()) +}); + +byond_fn!(fn file_seek_line(path, line) { + seek_line(path, match line.parse::() { + Ok(line) => line, + Err(_) => return None, + }) +}); + fn read(path: &str) -> Result { let file = File::open(path)?; let metadata = file.metadata()?; @@ -27,7 +38,7 @@ fn read(path: &str) -> Result { let mut content = String::with_capacity(metadata.len() as usize); file.read_to_string(&mut content)?; - let content = content.replace("\r", ""); + let content = content.replace('\r', ""); Ok(content) } @@ -70,3 +81,13 @@ fn append(data: &str, path: &str) -> Result { Ok(written) } + +fn get_line_count(path: &str) -> Result { + let file = BufReader::new(File::open(path)?); + Ok(file.lines().count() as u32) +} + +fn seek_line(path: &str, line: usize) -> Option { + let file = BufReader::new(File::open(path).ok()?); + file.lines().nth(line).and_then(|line| line.ok()) +} From 974bc7478eb02d0eb9ae053e039ceba15a78b00b Mon Sep 17 00:00:00 2001 From: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Date: Mon, 2 May 2022 02:32:30 -0700 Subject: [PATCH 32/82] 0.7.0 (#96) --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cd4001ff..6cd38590 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1544,7 +1544,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "0.6.0" +version = "0.7.0" dependencies = [ "aho-corasick", "base64 0.13.0", diff --git a/Cargo.toml b/Cargo.toml index 1cbe8f5f..04311ad6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rust-g" edition = "2018" -version = "0.6.0" +version = "0.7.0" authors = ["Bjorn Neergaard "] repository = "https://github.com/tgstation/rust-g" license-file = "LICENSE" From bb2b515b2a6a3fa1f34b8e9486fd72b6abcb9944 Mon Sep 17 00:00:00 2001 From: Edge <42111655+EdgeLordExe@users.noreply.github.com> Date: Tue, 14 Jun 2022 11:39:59 +0200 Subject: [PATCH 33/82] Adds a new type of noise: Discrete Batched Perlin-like Noise (DBP) (#99) --- Cargo.lock | 58 +++++++++++++++++++++++++++++++++++------------ Cargo.toml | 2 ++ dmsrc/dbpnoise.dm | 16 +++++++++++++ src/dbpnoise.rs | 36 +++++++++++++++++++++++++++++ src/lib.rs | 2 ++ 5 files changed, 100 insertions(+), 14 deletions(-) create mode 100644 dmsrc/dbpnoise.dm create mode 100644 src/dbpnoise.rs diff --git a/Cargo.lock b/Cargo.lock index 6cd38590..0b6e8b0a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -353,6 +353,19 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "dbpnoise" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a92e2d3660e5513454071018433d22bbdfc8a79b9bcf1b6399aa72e96b8586" +dependencies = [ + "lerp", + "rand 0.8.5", + "rand_pcg", + "rand_seeder", + "rayon", +] + [[package]] name = "deflate" version = "0.8.6" @@ -832,6 +845,15 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +[[package]] +name = "lerp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b19ac50d419bff1a024a8eb8034bfbee6c1cf8fa3472502f6bd3def327b09e4c" +dependencies = [ + "num-traits", +] + [[package]] name = "lexical" version = "5.2.2" @@ -1337,19 +1359,18 @@ dependencies = [ "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", - "rand_hc 0.2.0", + "rand_hc", ] [[package]] name = "rand" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha 0.3.1", "rand_core 0.6.3", - "rand_hc 0.3.1", ] [[package]] @@ -1400,10 +1421,19 @@ dependencies = [ ] [[package]] -name = "rand_hc" +name = "rand_pcg" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" +checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" +dependencies = [ + "rand_core 0.6.3", +] + +[[package]] +name = "rand_seeder" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf2890aaef0aa82719a50e808de264f9484b74b442e1a3a0e5ee38243ac40bdb" dependencies = [ "rand_core 0.6.3", ] @@ -1419,9 +1449,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" +checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" dependencies = [ "autocfg", "crossbeam-deque", @@ -1431,14 +1461,13 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.1" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" +checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" dependencies = [ "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "lazy_static", "num_cpus", ] @@ -1551,6 +1580,7 @@ dependencies = [ "chrono", "const-random", "dashmap", + "dbpnoise", "dmsort", "flume", "git2", @@ -1563,7 +1593,7 @@ dependencies = [ "once_cell", "percent-encoding", "png", - "rand 0.8.4", + "rand 0.8.5", "redis", "regex", "reqwest", @@ -1899,7 +1929,7 @@ checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" dependencies = [ "cfg-if", "libc", - "rand 0.8.4", + "rand 0.8.5", "redox_syscall", "remove_dir_all", "winapi", @@ -2097,7 +2127,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f559b464de2e2bdabcac6a210d12e9b5a5973c251e102c44c585c71d51bd78e" dependencies = [ "cfg-if", - "rand 0.8.4", + "rand 0.8.5", "static_assertions", ] diff --git a/Cargo.toml b/Cargo.toml index 04311ad6..8d14368d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,6 +45,7 @@ rand = {version = "0.8", optional = true} dmsort = {version = "1.0.0", optional = true } toml-dep = { version = "0.5.8", package="toml", optional = true } aho-corasick = { version = "0.7.18", optional = true} +dbpnoise = { version = "0.1.2", optional = true} [features] default = ["acreplace", "cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "sql", "time", "toml", "url"] @@ -64,6 +65,7 @@ toml = ["serde", "serde_json", "toml-dep"] url = ["url-dep", "percent-encoding"] # additional features +batchnoise = ["dbpnoise"] hash = ["base64", "const-random", "md-5", "hex", "sha-1", "sha2", "twox-hash", "serde", "serde_json"] redis_pubsub = ["flume", "redis", "serde", "serde_json"] unzip = ["zip", "jobs"] diff --git a/dmsrc/dbpnoise.dm b/dmsrc/dbpnoise.dm new file mode 100644 index 00000000..6cee0da5 --- /dev/null +++ b/dmsrc/dbpnoise.dm @@ -0,0 +1,16 @@ +/** + * This proc generates a grid of perlin-like noise + * + * Returns a single string that goes row by row, with values of 1 representing an turned on cell, and a value of 0 representing a turned off cell. + * + * Arguments: + * * seed: seed for the function + * * accuracy: how close this is to the original perlin noise, as accuracy approaches infinity, the noise becomes more and more perlin-like + * * stamp_size: Size of a singular stamp used by the algorithm, think of this as the same stuff as frequency in perlin noise + * * world_size: size of the returned grid. + * * lower_range: lower bound of values selected for. (inclusive) + * * upper_range: upper bound of values selected for. (exclusive) + */ +#define rustg_dbp_generate(seed, accuracy, stamp_size, world_size, lower_range, upper_range) \ + call(RUST_G, "dbp_generate")(seed, accuracy, stamp_size, world_size, lower_range, upper_range) + diff --git a/src/dbpnoise.rs b/src/dbpnoise.rs new file mode 100644 index 00000000..db67e5bb --- /dev/null +++ b/src/dbpnoise.rs @@ -0,0 +1,36 @@ +use crate::error::Result; +use dbpnoise::gen_noise; + +byond_fn!(fn dbp_generate(seed, accuracy, stamp_size, world_size, lower_range, upper_range) { + gen_dbp_noise(seed, accuracy, stamp_size, world_size, lower_range, upper_range).ok() +}); + +fn gen_dbp_noise( + seed: &str, + accuracy_as_str: &str, + stamp_size_as_str: &str, + world_size_as_str: &str, + lower_range_as_str: &str, + upper_range_as_str: &str, +) -> Result { + let accuracy = accuracy_as_str.parse::()?; + let stamp_size = stamp_size_as_str.parse::()?; + let world_size = world_size_as_str.parse::()?; + let lower_range = lower_range_as_str.parse::()?; + let upper_range = upper_range_as_str.parse::()?; + let map: Vec> = gen_noise( + seed, + accuracy, + stamp_size, + world_size, + lower_range, + upper_range, + ); + let mut result = String::new(); + for row in map { + for cell in row { + result.push(if cell { '1' } else { '0' }); + } + } + Ok(result) +} diff --git a/src/lib.rs b/src/lib.rs index d1439577..de5e531f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,6 +12,8 @@ mod jobs; pub mod acreplace; #[cfg(feature = "cellularnoise")] pub mod cellularnoise; +#[cfg(feature = "dbpnoise")] +pub mod dbpnoise; #[cfg(feature = "dmi")] pub mod dmi; #[cfg(feature = "file")] From 6c70a09164d9faf27aee2f5876c2f36c349bda44 Mon Sep 17 00:00:00 2001 From: Edge <42111655+EdgeLordExe@users.noreply.github.com> Date: Sun, 10 Jul 2022 22:54:40 +0200 Subject: [PATCH 34/82] Updates WorleyNoise to be multi-threaded and faster (#102) Another noise algorithm updated in my streak, this time it's worleynoise, since i didn't know jack shit and i heavily abused Rc<> to acomplish my goals it was really shit. Now it is multi-threaded, blazing fast and really sexy lookin. NOTE: this update changes ABI of worley noise slightly. --- Cargo.lock | 8 +- Cargo.toml | 4 +- dmsrc/worleynoise.dm | 16 ++ src/worleynoise.rs | 346 +++++++++++++++++++++++-------------------- 4 files changed, 205 insertions(+), 169 deletions(-) create mode 100644 dmsrc/worleynoise.dm diff --git a/Cargo.lock b/Cargo.lock index 0b6e8b0a..ac37118e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -411,12 +411,6 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" -[[package]] -name = "dmsort" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4699f5cb7678f099b747ffdc1e6ce6cdc42579e29d28315aa715b9fd10324fc" - [[package]] name = "dtoa" version = "0.4.8" @@ -1581,7 +1575,6 @@ dependencies = [ "const-random", "dashmap", "dbpnoise", - "dmsort", "flume", "git2", "hex", @@ -1594,6 +1587,7 @@ dependencies = [ "percent-encoding", "png", "rand 0.8.5", + "rayon", "redis", "regex", "reqwest", diff --git a/Cargo.toml b/Cargo.toml index 8d14368d..8cb2965f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,9 +42,9 @@ mysql = { version = "20.0", optional = true } dashmap = { version = "4.0", optional = true } zip = { version = "0.5.8", optional = true } rand = {version = "0.8", optional = true} -dmsort = {version = "1.0.0", optional = true } toml-dep = { version = "0.5.8", package="toml", optional = true } aho-corasick = { version = "0.7.18", optional = true} +rayon = {version = "1.5.3", optional = true} dbpnoise = { version = "0.1.2", optional = true} [features] @@ -69,7 +69,7 @@ batchnoise = ["dbpnoise"] hash = ["base64", "const-random", "md-5", "hex", "sha-1", "sha2", "twox-hash", "serde", "serde_json"] redis_pubsub = ["flume", "redis", "serde", "serde_json"] unzip = ["zip", "jobs"] -worleynoise = ["rand","dmsort"] +worleynoise = ["rand","rayon"] # internal feature-like things jobs = ["flume"] diff --git a/dmsrc/worleynoise.dm b/dmsrc/worleynoise.dm new file mode 100644 index 00000000..1ff347cf --- /dev/null +++ b/dmsrc/worleynoise.dm @@ -0,0 +1,16 @@ +/** + * This proc generates a noise grid using worley noise algorithm + * + * Returns a single string that goes row by row, with values of 1 representing an alive cell, and a value of 0 representing a dead cell. + * + * Arguments: + * * region_size: The size of regions + * * threshold: the value that determines wether a cell is dead or alive + * * node_per_region_chance: chance of a node existiing in a region + * * size: size of the returned grid + * * node_min: minimum amount of nodes in a region (after the node_per_region_chance is applied) + * * node_max: maximum amount of nodes in a region + */ +#define rustg_worley_generate(region_size, threshold, node_per_region_chance, size, node_min, node_max) \ + call(RUST_G, "worley_generate")(region_size, threshold, node_per_region_chance, size, node_min, node_max) + diff --git a/src/worleynoise.rs b/src/worleynoise.rs index 9d7a8ec2..0995ae61 100644 --- a/src/worleynoise.rs +++ b/src/worleynoise.rs @@ -1,12 +1,19 @@ use crate::error::Result; -use rand::*; +use core::panic; +use rand::prelude::*; +use rayon::iter::{IntoParallelRefIterator, IntoParallelRefMutIterator, ParallelIterator}; use std::fmt::Write; -use std::rc::Rc; +use std::{ + collections::HashSet, + sync::{Arc, RwLock}, +}; -byond_fn!(fn worley_generate(region_size, threshold, node_per_region_chance, width, height) { - worley_noise(region_size, threshold, node_per_region_chance, width, height).ok() +byond_fn!(fn worley_generate(region_size, threshold, node_per_region_chance, size, node_min, node_max) { + worley_noise(region_size, threshold, node_per_region_chance, size, node_min, node_max).ok() }); +const RANGE: usize = 4; + // This is a quite complex algorithm basically what it does is it creates 2 maps, one filled with cells and the other with 'regions' that map onto these cells. // Each region can spawn 1 node, the cell then determines wether it is true or false depending on the distance from it to the nearest node in the region minus the second closest node. // If this distance is greater than the threshold then the cell is true, otherwise it is false. @@ -14,25 +21,33 @@ fn worley_noise( str_reg_size: &str, str_positive_threshold: &str, str_node_per_region_chance: &str, - str_width: &str, - str_height: &str, + str_size: &str, + str_node_min: &str, + str_node_max: &str, ) -> Result { let region_size = str_reg_size.parse::()?; let positive_threshold = str_positive_threshold.parse::()?; - let width = str_width.parse::()?; - let height = str_height.parse::()?; - let node_per_region_chance = str_node_per_region_chance.parse::()?; + let size = str_size.parse::()?; + let node_per_region_chance = str_node_per_region_chance.parse::()?; + let node_min = str_node_min.parse::()?; + let node_max = str_node_max.parse::()?; + + let world_size = (size as f32 / region_size as f32).ceil() as i32; - //i fucking mixed up width and height again. it really doesnt matter but here is a comment just warning you. - let mut map = Map::new(region_size, height, width, node_per_region_chance); + let mut map = NoiseCellMap::new(region_size, world_size) + .node_fill(node_min, node_max, node_per_region_chance) + .worley_fill(positive_threshold)?; - map.generate_noise(positive_threshold as f32); + map.truncate(size); + map.par_iter_mut().for_each(|row| { + row.truncate(size); + }); let mut output = String::new(); - for row in map.cell_map { + for row in map { for cell in row { - if cell.value { + if cell { let _ = write!(output, "1"); } else { let _ = write!(output, "0"); @@ -41,189 +56,200 @@ fn worley_noise( } Ok(output) } - -struct Map { - region_size: i32, - region_map: Vec>>, - cell_map: Vec>, - cell_map_width: i32, - cell_map_height: i32, - node_chance: f32, +struct NoiseCellMap { + reg_vec: Vec>, + reg_size: i32, + reg_amt: i32, } -impl Map { - fn new(region_size: i32, cell_map_width: i32, cell_map_height: i32, node_chance: f32) -> Map { - let mut map = Map { - region_size, - region_map: Vec::new(), - cell_map: Vec::new(), - cell_map_width, - cell_map_height, - node_chance, +impl NoiseCellMap { + fn new(reg_size: i32, reg_amt: i32) -> Self { + let mut noise_cell_map = NoiseCellMap { + reg_vec: Vec::new(), + reg_size, + reg_amt, }; - - map.init_regions(); - - for x in 0..cell_map_width { - map.cell_map.push(Vec::new()); - for y in 0..cell_map_height { - let cell = Cell::new( - x, - y, - map.region_map[(x / region_size) as usize][(y / region_size) as usize].clone(), - ); - map.cell_map[(x) as usize].push(cell); + for x in 0..reg_amt { + noise_cell_map.reg_vec.push(Vec::new()); + for y in 0..reg_amt { + noise_cell_map.reg_vec[x as usize].push(NoiseCellRegion::new((x, y), reg_size)); } } - map + noise_cell_map } - fn init_regions(&mut self) { - let mut rng = rand::thread_rng(); - - let regions_x = self.cell_map_width / self.region_size; - let regions_y = self.cell_map_height / self.region_size; - //those two variables ensure that we dont EVER panic due to not having enough nodes spawned for the distance algorithm to function. - let mut node_count = 0; - let mut distance_in_regions_since_last_node = 0; - - for i in 0..regions_x { - distance_in_regions_since_last_node += 1; - self.region_map.push(Vec::new()); - for j in 0..regions_y { - distance_in_regions_since_last_node += 1; - let mut region = Region::new(i, j); - if rng.gen_range(0..100) as f32 <= self.node_chance || node_count < 2 { - let xcord = rng.gen_range(0..self.region_size); - let ycord = rng.gen_range(0..self.region_size); - let node = - Node::new(xcord + i * self.region_size, ycord + j * self.region_size); - region.node = Some(node); - node_count += 1; - distance_in_regions_since_last_node = 0; - } - if distance_in_regions_since_last_node > 3 { - node_count = 0; + fn node_fill(&mut self, mut node_min: u32, mut node_max: u32, node_chance: usize) -> &mut Self { + node_min = node_min.max(1); + node_max = node_min.max(node_max); + let node_counter: Arc> = Arc::new(RwLock::new(0)); + let reg_size = self.reg_size; + self.reg_vec.par_iter_mut().flatten().for_each(|region| { + let mut rng = ThreadRng::default(); + // basically, to make sure the algorithm works optimally or rather works at all without panicing we have to ensure we spawn at least some nodes + // this amount of nodes scales inversely to range. + { + let mut write_guard = node_counter.write().unwrap(); + if (*write_guard < RANGE) && rng.gen_range(0..100) > node_chance { + *write_guard += 1; + return; } + *write_guard = 0; + } - let rcregion = Rc::new(region); - - self.region_map[i as usize].push(rcregion); + let amt = rng.gen_range(node_min..node_max); + for _ in 0..amt { + let coord = (rng.gen_range(0..reg_size), rng.gen_range(0..reg_size)); + region.insert_node(coord); } - } + }); + self } - fn get_regions_in_bound(&self, x: i32, y: i32, radius: i32) -> Vec<&Region> { - let mut regions = Vec::new(); - let x_min = x - radius; - let x_max = x + radius; - let y_min = y - radius; - let y_max = y + radius; - for i in x_min..x_max { - for j in y_min..y_max { - let region_x = i; - let region_y = j; - if region_x >= 0 - && region_x < self.region_map.len() as i32 - && region_y >= 0 - && region_y < self.region_map[region_x as usize].len() as i32 - { - let region = &self.region_map[region_x as usize][region_y as usize]; - regions.push(region.as_ref()); + fn get_nodes_in_range(&self, centre: (i32, i32), range: i32) -> HashSet<(i32, i32)> { + let mut v = HashSet::new(); + for x in centre.0 - range..centre.0 + range { + if x < 0 || x >= self.reg_amt { + continue; + } + for y in centre.1 - range..centre.1 + range { + if y < 0 || y >= self.reg_amt { + continue; } + v.extend( + self.reg_vec[x as usize][y as usize] + .get_nodes() + .iter() + .cloned(), + ) } } - regions + v } - fn generate_noise(&mut self, threshold: f32) { - for i in 0..self.cell_map.len() { - for j in 0..self.cell_map[i as usize].len() { - let cell = &self.cell_map[i as usize][j as usize]; - let region = &self.region_map[cell.region.as_ref().reg_x as usize] - [cell.region.as_ref().reg_y as usize]; - let neighbours = self.get_regions_in_bound(region.reg_x, region.reg_y, 3); - - let mut node_vec = Vec::new(); - for neighbour in neighbours { - if neighbour.node.is_some() { - let node = neighbour.node.as_ref().unwrap(); - node_vec.push(node); + fn worley_fill(&mut self, threshold: f32) -> Result>> { + let new_data = self + .reg_vec + .par_iter() + .flatten() + .map(|region| { + let mut edit_region = region.clone(); + let mut nodes_in_range = + self.get_nodes_in_range(region.reg_coordinates, RANGE as i32); + { + let mut i = 1; + while nodes_in_range.len() < 2 { + i += 1; + nodes_in_range = + self.get_nodes_in_range(region.reg_coordinates, (i + RANGE) as i32); + if i > 32 { + panic!("Not enough nodes in range!"); + } } } - - dmsort::sort_by(&mut node_vec, |a, b| { - quick_distance_from_to(cell.x, cell.y, a.x, a.y) - .partial_cmp(&quick_distance_from_to(cell.x, cell.y, b.x, b.y)) - .unwrap() - }); - let dist = distance_from_to(cell.x, cell.y, node_vec[0].x, node_vec[0].y) - - distance_from_to(cell.x, cell.y, node_vec[1].x, node_vec[1].y); - // - let mutable_cell = &mut self.cell_map[i as usize][j as usize]; - if dist.abs() > threshold { - mutable_cell.value = true; + for x in 0..region.reg_size { + for y in 0..region.reg_size { + edit_region.cell_vec[x as usize][y as usize] = (get_nth_smallest_dist( + region.to_global_coordinates((x, y)), + 1, + &nodes_in_range, + ) - get_nth_smallest_dist( + region.to_global_coordinates((x, y)), + 0, + &nodes_in_range, + )) > threshold; + } } + edit_region + }) + .collect::>(); + let mut final_vec: Vec> = Vec::new(); + for x in 0..self.reg_amt * self.reg_size { + final_vec.push(Vec::new()); + for _ in 0..self.reg_amt * self.reg_size { + final_vec[x as usize].push(false); } } + new_data.into_iter().for_each(|reg| { + for x in 0..reg.reg_size { + for y in 0..reg.reg_size { + let g_coords = reg.to_global_coordinates((x, y)); + final_vec[g_coords.0 as usize][g_coords.1 as usize] = + reg.cell_vec[x as usize][y as usize]; + } + } + }); + Ok(final_vec) } } - -fn distance_from_to(x1: i32, y1: i32, x2: i32, y2: i32) -> f32 { - let x_diff = x1 - x2; - let y_diff = y1 - y2; - - (((x_diff * x_diff) + (y_diff * y_diff)) as f32).sqrt() +#[derive(Debug, Clone)] +struct NoiseCellRegion { + cell_vec: Vec>, + node_set: HashSet<(i32, i32)>, + reg_coordinates: (i32, i32), + reg_size: i32, } -fn quick_distance_from_to(x1: i32, y1: i32, x2: i32, y2: i32) -> f32 { - let x_diff = x1 - x2; - let y_diff = y1 - y2; +impl NoiseCellRegion { + fn new(reg_coordinates: (i32, i32), reg_size: i32) -> Self { + let mut noise_cell_region = NoiseCellRegion { + cell_vec: Vec::new(), + node_set: HashSet::new(), + reg_coordinates, + reg_size, + }; + for x in 0..reg_size { + noise_cell_region.cell_vec.push(Vec::new()); + for _ in 0..reg_size { + noise_cell_region.cell_vec[x as usize].push(false); + } + } + noise_cell_region + } - (x_diff.abs() + y_diff.abs()) as f32 -} + fn insert_node(&mut self, node: (i32, i32)) { + self.node_set.insert(node); + } -struct Cell { - x: i32, - y: i32, - value: bool, - region: Rc, -} + fn to_global_coordinates(&self, coord: (i32, i32)) -> (i32, i32) { + let mut c = (0, 0); + c.0 = coord.0 + self.reg_coordinates.0 * self.reg_size; + c.1 = coord.1 + self.reg_coordinates.1 * self.reg_size; + c + } -impl Cell { - fn new(x: i32, y: i32, region: Rc) -> Cell { - Cell { - x, - y, - value: false, - region, - } + fn get_nodes(&self) -> Vec<(i32, i32)> { + self.node_set + .clone() + .into_iter() + .map(|x| self.to_global_coordinates(x)) + .collect() } } -struct Region { - reg_x: i32, - reg_y: i32, - node: Option, +fn sqr_distance(p1: (i32, i32), p2: (i32, i32)) -> f32 { + (((p1.0 - p2.0).pow(2) + (p1.1 - p2.1).pow(2)) as f32).sqrt() } -impl Region { - fn new(reg_x: i32, reg_y: i32) -> Region { - Region { - reg_x, - reg_y, - node: None, - } - } +fn mht_distance(p1: (i32, i32), p2: (i32, i32)) -> f32 { + ((p1.0 - p2.0).abs() + (p1.1 - p2.1).abs()) as f32 } -struct Node { - x: i32, - y: i32, +fn get_smallest_dist(centre: (i32, i32), set: &HashSet<(i32, i32)>) -> (i32, i32) { + set.iter() + .min_by(|a, b| { + mht_distance(**a, centre) + .partial_cmp(&mht_distance(**b, centre)) + .expect("Found NAN somehow") + }) + .cloned() + .expect("No minimum found") } -impl Node { - fn new(x: i32, y: i32) -> Node { - Node { x, y } +fn get_nth_smallest_dist(centre: (i32, i32), mut nth: u32, set: &HashSet<(i32, i32)>) -> f32 { + let mut our_set = set.clone(); + while nth > 0 && set.len() > 1 { + our_set.remove(&get_smallest_dist(centre, &our_set)); + nth -= 1; } + sqr_distance(centre, get_smallest_dist(centre, &our_set)) } From 76fd17a7b3983928e1ef81e0549a817951729ad9 Mon Sep 17 00:00:00 2001 From: Edge <42111655+EdgeLordExe@users.noreply.github.com> Date: Mon, 11 Jul 2022 23:15:46 +0200 Subject: [PATCH 35/82] Updates CellularNoise to be faster and multi-threaded (#101) Hello, I guess i'm on a streak. I reimplemented CAnoise to be multi-threaded and much faster as i removed a considerable amount of branches. No change to behaviour or ABI noted, it's just faster now. --- Cargo.toml | 4 +- src/cellularnoise.rs | 126 +++++++++++++++++++++---------------------- 2 files changed, 65 insertions(+), 65 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 8cb2965f..4d0a2c49 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,7 +44,7 @@ zip = { version = "0.5.8", optional = true } rand = {version = "0.8", optional = true} toml-dep = { version = "0.5.8", package="toml", optional = true } aho-corasick = { version = "0.7.18", optional = true} -rayon = {version = "1.5.3", optional = true} +rayon = { version = "1.5.3", optional = true} dbpnoise = { version = "0.1.2", optional = true} [features] @@ -52,7 +52,7 @@ default = ["acreplace", "cellularnoise", "dmi", "file", "git", "http", "json", " # default features acreplace = ["aho-corasick"] -cellularnoise = ["rand"] +cellularnoise = ["rand","rayon"] dmi = ["png", "image"] file = [] git = ["git2", "chrono"] diff --git a/src/cellularnoise.rs b/src/cellularnoise.rs index f16bc1b6..de9bae65 100644 --- a/src/cellularnoise.rs +++ b/src/cellularnoise.rs @@ -1,5 +1,6 @@ use crate::error::Result; use rand::*; +use rayon::iter::{IntoParallelIterator, ParallelIterator}; use std::fmt::Write; byond_fn!(fn cnoise_generate(percentage, smoothing_iterations, birth_limit, death_limit, width, height) { @@ -14,77 +15,76 @@ fn noise_gen( width_as_str: &str, height_as_str: &str, ) -> Result { - let percentage = percentage_as_str.parse::()?; - let smoothing_level = smoothing_level_as_str.parse::()?; - let birth_limit = birth_limit_as_str.parse::()?; - let death_limit = death_limit_as_str.parse::()?; + let percentage = percentage_as_str.parse::()?; + let smoothing_level = smoothing_level_as_str.parse::()?; + let birth_limit = birth_limit_as_str.parse::()?; + let death_limit = death_limit_as_str.parse::()?; let width = width_as_str.parse::()?; let height = height_as_str.parse::()?; - - // Noise generation - let mut zplane = vec![vec![false; width]; height]; - for row in zplane.iter_mut() { - for cell in row.iter_mut() { - *cell = rand::thread_rng().gen_range(0..100) < percentage; - } - } - - // Smoothing part - for _timer in 0..smoothing_level { - let zplane_old = zplane.clone(); - for i in 0..height { - for j in 0..width { - let mut sum = 0; - - if i > 0 { - if j > 0 { - sum += if zplane_old[i - 1][j - 1] { 1 } else { 0 }; + //we populate it, from 0 to height+3, 0 to height+1 is exactly height long, but we also need border guards, so we add another +2, so it is 0..height+3 + let mut filled_vec = (0..height + 3) + .into_par_iter() + .map(|x| { + let mut rng = rand::thread_rng(); + (0..width + 3) + .into_iter() + .map(|y| { + if x == 0 || y == 0 || x == width + 2 || y == height + 2 { + return false; } + rng.gen_range(0..100) < percentage + }) + .collect::>() + }) + .collect::>>(); - sum += if zplane_old[i - 1][j] { 1 } else { 0 }; + //then we smoothe it + (0..smoothing_level).into_iter().for_each(|_| { + let replace_vec = (0..width + 3) + .into_par_iter() + .map(|x| { + (0..height + 3) + .into_iter() + .map(|y| { + if x == 0 || y == 0 || x == width + 2 || y == height + 2 { + return false; + } + let sum: usize = filled_vec[x - 1][y - 1] as usize + + filled_vec[x - 1][y] as usize + + filled_vec[x - 1][y + 1] as usize + + filled_vec[x][y - 1] as usize + + filled_vec[x][y + 1] as usize + + filled_vec[x + 1][y - 1] as usize + + filled_vec[x + 1][y] as usize + + filled_vec[x + 1][y + 1] as usize; - if j + 1 < width { - sum += if zplane_old[i - 1][j + 1] { 1 } else { 0 }; - } - } - - if j > 0 { - sum += if zplane_old[i][j - 1] { 1 } else { 0 }; - } + if sum < death_limit && filled_vec[x][y] { + return false; + } + if sum > birth_limit && !filled_vec[x][y] { + return true; + } + filled_vec[x][y] + }) + .collect::>() + }) + .collect::>>(); + filled_vec = replace_vec; + }); - if j + 1 < width { - sum += if zplane_old[i][j + 1] { 1 } else { 0 }; - } - - if i + 1 < height { - if j > 0 { - sum += if zplane_old[i + 1][j - 1] { 1 } else { 0 }; - } - - sum += if zplane_old[i + 1][j] { 1 } else { 0 }; - - if j + 1 < width { - sum += if zplane_old[i + 1][j + 1] { 1 } else { 0 }; - } - } - - if zplane_old[i][j] { - if sum < death_limit { - zplane[i][j] = false; - } else { - zplane[i][j] = true; - } - } else if sum > birth_limit { - zplane[i][j] = true; - } else { - zplane[i][j] = false; - } - } - } - } + //then we cut it + let map = (1..width + 1) + .into_par_iter() + .map(|x| { + (1..height + 1) + .into_iter() + .map(|y| filled_vec[x][y]) + .collect::>() + }) + .collect::>>(); let mut string = String::new(); - for row in zplane.iter() { + for row in map.iter() { for cell in row.iter() { if *cell { let _ = write!(string, "1"); From 66260ff34c6682291c7ffc126831964ebb500b19 Mon Sep 17 00:00:00 2001 From: tralezab <40974010+tralezab@users.noreply.github.com> Date: Thu, 21 Jul 2022 16:34:19 -0700 Subject: [PATCH 36/82] toml2json now returns errors to byond (#98) Co-authored-by: ZeWaka --- .vscode/settings.json | 2 +- README.md | 5 +++++ dmsrc/toml.dm | 9 ++++++++- src/toml.rs | 11 ++++++++++- tests/abc-tests.rs | 2 +- tests/dm/toml.dme | 8 +++----- 6 files changed, 28 insertions(+), 9 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 36268ab1..111ee693 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,3 @@ { - "rust-analyzer.cargo.target": "i686-pc-windows-gnu" + "rust-analyzer.cargo.target": "i686-pc-windows-msvc" } diff --git a/README.md b/README.md index 92cf6c81..13b8ceb2 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,11 @@ System libraries: * Other Linux distributions install the appropriate **32-bit development** and **32-bit runtime** packages. +If you want to use the `pc-windows-gnu` or similar other target ABI, do the following: +1. Change the `"rust-analyzer.cargo.target"` setting in `.cargo/config` to `i686-pc-windows-gnu`. +2. Run `git update-index --assume-unchanged .cargo/config`, which will tell git to 'ignore' the changes you made. +3. If you find yourself ever wanting to change back, run `git update-index --no-assume-unchanged .cargo/config`. + ## Compiling The [Cargo] tool handles compilation, as well as automatically downloading and diff --git a/dmsrc/toml.dm b/dmsrc/toml.dm index e4033018..d30d2bb8 100644 --- a/dmsrc/toml.dm +++ b/dmsrc/toml.dm @@ -1 +1,8 @@ -#define rustg_read_toml_file(path) json_decode(call(RUST_G, "toml_file_to_json")(path) || "null") +#define rustg_raw_read_toml_file(path) json_decode(call(RUST_G, "toml_file_to_json")(path) || "null") + +/proc/rustg_read_toml_file(path) + var/list/output = rustg_raw_read_toml_file(path) + if (output["success"]) + return output["content"] + else + CRASH(output["content"]) diff --git a/src/toml.rs b/src/toml.rs index 140d8fbb..a28916af 100644 --- a/src/toml.rs +++ b/src/toml.rs @@ -1,7 +1,16 @@ use crate::error::Result; byond_fn!(fn toml_file_to_json(path) { - toml_file_to_json_impl(path).ok() + serde_json::to_string( + &match toml_file_to_json_impl(path) { + Ok(value) => serde_json::json!({ + "success": true, "content": value + }), + Err(error) => serde_json::json!({ + "success": false, "content": error.to_string() + }), + } + ).ok() }); fn toml_file_to_json_impl(path: &str) -> Result { diff --git a/tests/abc-tests.rs b/tests/abc-tests.rs index 0923c669..763e8f5d 100644 --- a/tests/abc-tests.rs +++ b/tests/abc-tests.rs @@ -6,7 +6,7 @@ fn are_captures_sorted(matches: CaptureMatches, context: &str) -> Result<(), Str let mut prev_string = ""; for cap in matches { let capstring = cap.get(0).unwrap().as_str(); - match prev_string.cmp(&capstring) { + match prev_string.cmp(capstring) { Ordering::Greater => { return Err(format!("{} is not sorted in {}", &capstring, &context)) } diff --git a/tests/dm/toml.dme b/tests/dm/toml.dme index f07eb45d..a570f4fa 100644 --- a/tests/dm/toml.dme +++ b/tests/dm/toml.dme @@ -15,9 +15,7 @@ var/test_json = @{" /test/proc/check_toml_file2json() rustg_file_write(test_toml, "test.toml") - var/toml_output = json_encode(rustg_read_toml_file("test.toml")) - var/test_output = json_encode(json_decode(test_json)) // Double-encode so true becomes 1 + var/toml_output = rustg_read_toml_file("test.toml") - // ~= checks for structural equality - if (toml_output != test_output) - CRASH("test:\n[test_toml]\n \nexpected:\n[test_output]\n \nrustg:\n[toml_output]") + if (toml_output != test_json) + CRASH("test:\n[test_toml]\n \nexpected:\n[test_json]\n \nrustg:\n[toml_output]") From 0245254aeef726352f775b4e060722ec0afe12de Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Thu, 21 Jul 2022 23:22:23 -0700 Subject: [PATCH 37/82] Updates cargo packages (#104) --- Cargo.lock | 1632 +++++++++++++++++++++++++++++++++------------------- Cargo.toml | 24 +- README.md | 2 + src/dmi.rs | 10 +- 4 files changed, 1049 insertions(+), 619 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ac37118e..eda5a506 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,13 +14,25 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" +[[package]] +name = "aes" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", + "opaque-debug", +] + [[package]] name = "ahash" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43bb833f0bf979d8475d38fbf09ed3b8a55e1885fe93ad3f93239fc6a4f17b98" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.7", "once_cell", "version_check", ] @@ -36,15 +48,15 @@ dependencies = [ [[package]] name = "arrayvec" -version = "0.5.2" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] name = "async-trait" -version = "0.1.52" +version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" +checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716" dependencies = [ "proc-macro2", "quote", @@ -53,74 +65,83 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" - -[[package]] -name = "base-x" -version = "0.2.8" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "base64" -version = "0.12.3" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] -name = "base64" -version = "0.13.0" +name = "base64ct" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" [[package]] name = "bigdecimal" -version = "0.1.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1374191e2dd25f9ae02e3aa95041ed5d747fc77b3c102b49fe2dd9a8117a6244" +checksum = "6aaf33151a6429fe9211d1b276eafdf70cdff28b071e76c0b0e1503221ea3744" dependencies = [ "num-bigint", "num-integer", "num-traits", - "serde", ] [[package]] -name = "bitflags" -version = "1.2.1" +name = "bindgen" +version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "peeking_take_while", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", +] [[package]] -name = "block-buffer" -version = "0.7.3" +name = "bit_field" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding", - "byte-tools", - "byteorder", - "generic-array 0.12.4", -] +checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4" [[package]] -name = "block-buffer" -version = "0.9.0" +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitvec" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +checksum = "5237f00a8c86130a0cc317830e558b966dd7850d48a953d998c813f01a41b527" dependencies = [ - "generic-array 0.14.4", + "funty", + "radium", + "tap", + "wyz", ] [[package]] -name = "block-padding" -version = "0.1.5" +name = "block-buffer" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" dependencies = [ - "byte-tools", + "generic-array", ] [[package]] @@ -131,21 +152,15 @@ checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" [[package]] name = "bumpalo" -version = "3.7.0" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631" - -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" +checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" [[package]] name = "bytemuck" -version = "1.7.2" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72957246c41db82b8ef88a5486143830adeb8227ef9837740bdec67724cf2c5b" +checksum = "c53dfa917ec274df8ed3c572698f381a24eef2efba9492d797301b72b6db408a" [[package]] name = "byteorder" @@ -155,15 +170,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" - -[[package]] -name = "bytes" -version = "1.0.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" +checksum = "f0b3de4a0c5e67e16066a0715723abd91edc2f9001d09c46e1dca929351e130e" [[package]] name = "bzip2" @@ -188,13 +197,22 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.69" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70cc2f62c6ce1868963827bd677764c62d07c3d9a3e1fb1177ee1a9ab199eb2" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" dependencies = [ "jobserver", ] +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -210,11 +228,39 @@ dependencies = [ "libc", "num-integer", "num-traits", - "serde", - "time 0.1.43", + "time 0.1.44", "winapi", ] +[[package]] +name = "cipher" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +dependencies = [ + "generic-array", +] + +[[package]] +name = "clang-sys" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a050e2153c5be08febd6734e29298e844fdb0fa21aeddd63b4eb7baa106c69b" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "cmake" +version = "0.1.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443a" +dependencies = [ + "cc", +] + [[package]] name = "color_quant" version = "1.1.0" @@ -223,11 +269,11 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "combine" -version = "4.6.2" +version = "4.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b2f5d0ee456f3928812dfc8c6d9a1d592b98678f6d56db9b0cd2b7bc6c8db5" +checksum = "2a604e93b79d1808327a6fca85a6f2d69de66461e7620f5a4cbf5fb4d1d7c948" dependencies = [ - "bytes 1.0.1", + "bytes", "memchr", ] @@ -247,23 +293,23 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "615f6e27d000a2bffbc7f2f6a8669179378fa27ee4d0a509e985dfc0a7defb40" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.7", "lazy_static", "proc-macro-hack", "tiny-keccak", ] [[package]] -name = "const_fn" -version = "0.4.8" +name = "constant_time_eq" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92cfa0fd5690b3cf8c1ef2cabbd9b7ef22fa53cf5e1f92b05103f6d5d1cf6e7" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "core-foundation" -version = "0.9.1" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" dependencies = [ "core-foundation-sys", "libc", @@ -271,33 +317,47 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "cpufeatures" -version = "0.1.5" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66c99696f6c9dd7f35d486b9d04d7e6e202aa3e8c40d553f2fdf5e7e0c6a71ef" +checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.2.1" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +checksum = "4ae5588f6b3c3cb05239e90bd110f257254aecd01e4635400391aeae07497845" dependencies = [ "cfg-if", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", ] [[package]] name = "crossbeam-channel" -version = "0.5.1" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" +checksum = "4c02a4d71819009c192cf4872265391563fd6a84c81ff2c0f2a7026ca4c1d85c" dependencies = [ "cfg-if", "crossbeam-utils", @@ -316,25 +376,36 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.5" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" +checksum = "07db9d94cbd326813772c968ccd25999e5f8ae22f4f8d1b11effa37ef6ce281d" dependencies = [ + "autocfg", "cfg-if", "crossbeam-utils", - "lazy_static", "memoffset", + "once_cell", "scopeguard", ] +[[package]] +name = "crossbeam-queue" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f25d8400f4a7a5778f0e4e52384a48cbd9b5c495d110786187fc750075277a2" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" -version = "0.8.5" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" +checksum = "7d82ee10ce34d7bc12c2122495e7593a9c41347ecdd64185af4ecf72cb1a7f83" dependencies = [ "cfg-if", - "lazy_static", + "once_cell", ] [[package]] @@ -343,14 +414,26 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + [[package]] name = "dashmap" -version = "4.0.2" +version = "5.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" +checksum = "3495912c9c1ccf2e18976439f4443f3fee0fd61f424ff99fde6a66b15ecb448f" dependencies = [ "cfg-if", - "num_cpus", + "hashbrown", + "lock_api", + "parking_lot_core", ] [[package]] @@ -376,6 +459,15 @@ dependencies = [ "byteorder", ] +[[package]] +name = "deflate" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c86f7e25f518f4b81808a2cf1c50996a61f5c2eb394b2393bd87f2a4780a432f" +dependencies = [ + "adler32", +] + [[package]] name = "derive_utils" version = "0.11.2" @@ -389,28 +481,15 @@ dependencies = [ [[package]] name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array 0.12.4", -] - -[[package]] -name = "digest" -version = "0.9.0" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" dependencies = [ - "generic-array 0.14.4", + "block-buffer", + "crypto-common", + "subtle", ] -[[package]] -name = "discard" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" - [[package]] name = "dtoa" version = "0.4.8" @@ -419,49 +498,66 @@ checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" [[package]] name = "either" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be" [[package]] name = "encoding_rs" -version = "0.8.28" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" dependencies = [ "cfg-if", ] [[package]] -name = "fake-simd" -version = "0.1.2" +name = "exr" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14cc0e06fb5f67e5d6beadf3a382fec9baca1aa751c6d5368fdeee7e5932c215" +dependencies = [ + "bit_field", + "deflate 1.0.0", + "flume", + "half", + "inflate", + "lebe", + "smallvec", + "threadpool", +] + +[[package]] +name = "fastrand" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" +checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" +dependencies = [ + "instant", +] [[package]] name = "flate2" -version = "1.0.20" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0" +checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" dependencies = [ - "cfg-if", "crc32fast", - "libc", "libz-sys", - "miniz_oxide 0.4.4", + "miniz_oxide 0.5.3", ] [[package]] name = "flume" -version = "0.10.7" +version = "0.10.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddad16e8529759736a9ce4cdf078ed702e45d3c5b0474a1c65f5149e9fa7f1eb" +checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" dependencies = [ "futures-core", "futures-sink", "nanorand", "pin-project", - "spinning_top", + "spin 0.9.4", ] [[package]] @@ -496,84 +592,128 @@ dependencies = [ ] [[package]] -name = "futures-channel" -version = "0.3.16" +name = "frunk" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74ed2411805f6e4e3d9bc904c95d5d423b89b3b25dc0250aa74729de20629ff9" +checksum = "0cd67cf7d54b7e72d0ea76f3985c3747d74aee43e0218ad993b7903ba7a5395e" dependencies = [ - "futures-core", + "frunk_core", + "frunk_derives", + "frunk_proc_macros", ] [[package]] -name = "futures-core" -version = "0.3.16" +name = "frunk_core" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af51b1b4a7fdff033703db39de8802c673eb91855f2e0d47dcf3bf2c0ef01f99" +checksum = "1246cf43ec80bf8b2505b5c360b8fb999c97dabd17dbb604d85558d5cbc25482" [[package]] -name = "futures-io" -version = "0.3.16" +name = "frunk_derives" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dbc4f084ec5a3f031d24ccedeb87ab2c3189a2f33b8d070889073837d5ea09e" +dependencies = [ + "frunk_proc_macro_helpers", + "quote", + "syn", +] + +[[package]] +name = "frunk_proc_macro_helpers" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b0e06c393068f3a6ef246c75cdca793d6a46347e75286933e5e75fd2fd11582" +checksum = "99f11257f106c6753f5ffcb8e601fb39c390a088017aaa55b70c526bff15f63e" +dependencies = [ + "frunk_core", + "proc-macro2", + "quote", + "syn", +] [[package]] -name = "futures-macro" -version = "0.3.16" +name = "frunk_proc_macros" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54913bae956fb8df7f4dc6fc90362aa72e69148e3f39041fbe8742d21e0ac57" +checksum = "a078bd8459eccbb85e0b007b8f756585762a72a9efc53f359b371c3b6351dbcc" dependencies = [ - "autocfg", + "frunk_core", + "frunk_proc_macros_impl", + "proc-macro-hack", +] + +[[package]] +name = "frunk_proc_macros_impl" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ffba99f0fa4f57e42f57388fbb9a0ca863bc2b4261f3c5570fed579d5df6c32" +dependencies = [ + "frunk_core", + "frunk_proc_macro_helpers", "proc-macro-hack", - "proc-macro2", "quote", "syn", ] +[[package]] +name = "funty" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1847abb9cb65d566acd5942e94aea9c8f547ad02c98e1649326fc0e8910b8b1e" + +[[package]] +name = "futures-channel" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" + +[[package]] +name = "futures-io" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" + [[package]] name = "futures-sink" -version = "0.3.16" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0f30aaa67363d119812743aa5f33c201a7a66329f97d1a887022971feea4b53" +checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" [[package]] name = "futures-task" -version = "0.3.16" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe54a98670017f3be909561f6ad13e810d9a51f3f061b902062ca3da80799f2" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" [[package]] name = "futures-util" -version = "0.3.16" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eb846bfd58e44a8481a00049e82c43e0ccb5d61f8dc071057cb19249dd4d78" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" dependencies = [ - "autocfg", "futures-core", "futures-io", - "futures-macro", "futures-task", "memchr", "pin-project-lite", "pin-utils", - "proc-macro-hack", - "proc-macro-nested", "slab", ] [[package]] name = "generic-array" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" -dependencies = [ - "typenum", -] - -[[package]] -name = "generic-array" -version = "0.14.4" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" dependencies = [ "typenum", "version_check", @@ -592,22 +732,22 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.3" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.10.2+wasi-snapshot-preview1", + "wasi 0.11.0+wasi-snapshot-preview1", "wasm-bindgen", ] [[package]] name = "gif" -version = "0.11.2" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a668f699973d0f573d15749b7002a9ac9e1f9c6b220e7b165601334c173d8de" +checksum = "3edd93c6756b4dfaf2709eafcc345ba2636565295c198a9cfbf75fa5e3e00b06" dependencies = [ "color_quant", "weezl", @@ -615,9 +755,9 @@ dependencies = [ [[package]] name = "git2" -version = "0.13.20" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9831e983241f8c5591ed53f17d874833e2fa82cac2625f3888c50cbfe136cba" +checksum = "d0155506aab710a86160ddb504a480d2964d7ab5b9e62419be69e0032bc5931c" dependencies = [ "bitflags", "libc", @@ -626,13 +766,19 @@ dependencies = [ "url", ] +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + [[package]] name = "h2" -version = "0.3.3" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "825343c4eef0b63f541f8903f395dc5beb362a979b5799a84062527ef1e37726" +checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57" dependencies = [ - "bytes 1.0.1", + "bytes", "fnv", "futures-core", "futures-sink", @@ -645,11 +791,17 @@ dependencies = [ "tracing", ] +[[package]] +name = "half" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" + [[package]] name = "hashbrown" -version = "0.11.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ "ahash", ] @@ -669,47 +821,56 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + [[package]] name = "http" -version = "0.2.4" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" dependencies = [ - "bytes 1.0.1", + "bytes", "fnv", - "itoa", + "itoa 1.0.2", ] [[package]] name = "http-body" -version = "0.4.2" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60daa14be0e0786db0f03a9e57cb404c9d756eed2b6c62b9ea98ec5743ec75a9" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ - "bytes 1.0.1", + "bytes", "http", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.4.1" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68" +checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" [[package]] name = "httpdate" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "hyper" -version = "0.14.11" +version = "0.14.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b61cf2d1aebcf6e6352c97b81dc2244ca29194be1b276f5d8ad5c6330fffb11" +checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac" dependencies = [ - "bytes 1.0.1", + "bytes", "futures-channel", "futures-core", "futures-util", @@ -718,9 +879,9 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa", + "itoa 1.0.2", "pin-project-lite", - "socket2 0.4.1", + "socket2", "tokio", "tower-service", "tracing", @@ -729,17 +890,15 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.22.1" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" +checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac" dependencies = [ - "futures-util", + "http", "hyper", - "log", "rustls", "tokio", "tokio-rustls", - "webpki", ] [[package]] @@ -763,30 +922,67 @@ dependencies = [ "byteorder", "color_quant", "gif", - "jpeg-decoder", + "jpeg-decoder 0.1.22", "num-iter", - "num-rational", + "num-rational 0.3.2", + "num-traits", + "png 0.16.8", + "scoped_threadpool", + "tiff 0.6.1", +] + +[[package]] +name = "image" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e30ca2ecf7666107ff827a8e481de6a132a9b687ed3bb20bb1c144a36c00964" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "exr", + "gif", + "jpeg-decoder 0.2.6", + "num-rational 0.4.1", "num-traits", - "png", + "png 0.17.5", "scoped_threadpool", - "tiff", + "tiff 0.7.2", ] [[package]] name = "indexmap" -version = "1.7.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" dependencies = [ "autocfg", "hashbrown", ] +[[package]] +name = "inflate" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff" +dependencies = [ + "adler32", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + [[package]] name = "io-enum" -version = "0.2.6" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94534fd32a986dd34d97ddefe5198630d5ed99efd4e9b9b9ed4359e6b23a9cf7" +checksum = "03e3306b0f260aad2872563eb0d5d1a59f2420fad270a661dce59a01e92d806b" dependencies = [ "autocfg", "derive_utils", @@ -796,21 +992,27 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" +checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" [[package]] name = "itoa" -version = "0.4.7" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" +checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" [[package]] name = "jobserver" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5ca711fd837261e14ec9e674f092cbb931d3fa1482b017ae59328ddc6f3212b" +checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" dependencies = [ "libc", ] @@ -824,11 +1026,20 @@ dependencies = [ "rayon", ] +[[package]] +name = "jpeg-decoder" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9478aa10f73e7528198d75109c8be5cd7d15fb530238040148d5f9a22d4c5b3b" +dependencies = [ + "rayon", +] + [[package]] name = "js-sys" -version = "0.3.52" +version = "0.3.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce791b7ca6638aae45be056e068fc756d871eb3b3b10b8efa62d1c9cec616752" +checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27" dependencies = [ "wasm-bindgen", ] @@ -839,6 +1050,18 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "lebe" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7efd1d698db0759e6ef11a7cd44407407399a910c774dd804c64c032da7826ff" + [[package]] name = "lerp" version = "0.4.0" @@ -850,38 +1073,88 @@ dependencies = [ [[package]] name = "lexical" -version = "5.2.2" +version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f404a90a744e32e8be729034fc33b90cf2a56418fbf594d69aa3c0214ad414e5" +checksum = "c7aefb36fd43fef7003334742cbf77b243fcd36418a1d1bdd480d613a67968f6" dependencies = [ - "cfg-if", "lexical-core", ] [[package]] name = "lexical-core" -version = "0.7.6" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" +checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" dependencies = [ - "arrayvec", - "bitflags", - "cfg-if", - "ryu", + "lexical-parse-float", + "lexical-parse-integer", + "lexical-util", + "lexical-write-float", + "lexical-write-integer", +] + +[[package]] +name = "lexical-parse-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +dependencies = [ + "lexical-parse-integer", + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-parse-integer" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-util" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "lexical-write-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" +dependencies = [ + "lexical-util", + "lexical-write-integer", + "static_assertions", +] + +[[package]] +name = "lexical-write-integer" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" +dependencies = [ + "lexical-util", "static_assertions", ] [[package]] name = "libc" -version = "0.2.98" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790" +checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" [[package]] name = "libgit2-sys" -version = "0.12.21+1.1.0" +version = "0.13.4+1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86271bacd72b2b9e854c3dcfb82efd538f15f870e4c11af66900effb462f6825" +checksum = "d0fa6563431ede25f5cc7f6d803c6afbc1c5d3ad3d4925d12c882bf2b526f5d1" dependencies = [ "cc", "libc", @@ -889,11 +1162,21 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "libloading" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" +dependencies = [ + "cfg-if", + "winapi", +] + [[package]] name = "libz-sys" -version = "1.1.3" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66" +checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" dependencies = [ "cc", "libc", @@ -903,59 +1186,58 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.4" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" dependencies = [ + "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.14" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ "cfg-if", ] [[package]] name = "lru" -version = "0.6.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ea2d928b485416e8908cff2d97d621db22b27f7b3b6729e438bcf42c671ba91" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" dependencies = [ "hashbrown", ] [[package]] name = "matches" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "md-5" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15" +checksum = "658646b21e0b72f7866c7038ab086d3d5e1cd6271f060fd37defb241949d0582" dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "opaque-debug 0.3.0", + "digest", ] [[package]] name = "memchr" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ "autocfg", ] @@ -966,6 +1248,12 @@ version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.3.7" @@ -986,76 +1274,86 @@ dependencies = [ ] [[package]] -name = "mio" -version = "0.7.13" +name = "miniz_oxide" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c2bdb6314ec10835cd3293dd268473a835c02b7b352e788be788b3c6ca6bb16" +checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" dependencies = [ - "libc", - "log", - "miow", - "ntapi", - "winapi", + "adler", ] [[package]] -name = "miow" -version = "0.3.7" +name = "mio" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" dependencies = [ - "winapi", + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", ] [[package]] name = "mysql" -version = "20.1.0" +version = "22.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a8660184af84975ac1639aa692a539c37739cec8a22a414de3db9cb573c1aa" +checksum = "b9d8136c78f78cda5c1a4eee4ce555281b71e3e6db715817bc50e186e623b36f" dependencies = [ "bufstream", + "bytes", + "crossbeam", + "flate2", "io-enum", "libc", "lru", "mysql_common", "named_pipe", "native-tls", - "nix", + "once_cell", "pem", "percent-encoding", "serde", "serde_json", - "socket2 0.3.19", + "socket2", "twox-hash", "url", ] [[package]] name = "mysql_common" -version = "0.24.1" +version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de63b87a5f24c5db252418a6f04abb2f62823bd838dc9b1d7fdb8ae972ef76cf" +checksum = "4140827f2d12750de1e8755442577e4292a835f26ff2f659f0a380d1d71020b0" dependencies = [ - "base64 0.12.3", + "base64", "bigdecimal", + "bindgen", "bitflags", + "bitvec", "byteorder", - "bytes 0.5.6", - "chrono", + "bytes", + "cc", + "cmake", + "crc32fast", "flate2", + "frunk", "lazy_static", "lexical", "num-bigint", "num-traits", - "rand 0.7.3", + "rand 0.8.5", "regex", "rust_decimal", + "saturating", "serde", "serde_json", - "sha1", - "sha2 0.8.2", - "time 0.2.27", - "twox-hash", + "sha-1", + "sha2", + "smallvec", + "subprocess", + "thiserror", + "time 0.3.11", "uuid", ] @@ -1070,18 +1368,18 @@ dependencies = [ [[package]] name = "nanorand" -version = "0.5.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1378b66f7c93a1c0f8464a19bf47df8795083842e5090f4b7305973d5a22d0" +checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.7", ] [[package]] name = "native-tls" -version = "0.2.7" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4" +checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" dependencies = [ "lazy_static", "libc", @@ -1095,43 +1393,32 @@ dependencies = [ "tempfile", ] -[[package]] -name = "nix" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ccba0cfe4fdf15982d1674c69b1fd80bad427d293849982668dfe454bd61f2" -dependencies = [ - "bitflags", - "cc", - "cfg-if", - "libc", -] - [[package]] name = "noise" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82051dd6745d5184c6efb7bc8be14892a7f6d4f3ad6dbf754d1c7d7d5fe24b43" dependencies = [ - "image", + "image 0.23.14", "rand 0.7.3", "rand_xorshift", ] [[package]] -name = "ntapi" -version = "0.3.6" +name = "nom" +version = "7.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" dependencies = [ - "winapi", + "memchr", + "minimal-lexical", ] [[package]] name = "num-bigint" -version = "0.2.6" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" dependencies = [ "autocfg", "num-integer", @@ -1140,9 +1427,9 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ "autocfg", "num-traits", @@ -1150,9 +1437,9 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.42" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" dependencies = [ "autocfg", "num-integer", @@ -1170,36 +1457,50 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" dependencies = [ "hermit-abi", "libc", ] [[package]] -name = "once_cell" -version = "1.8.0" +name = "num_threads" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] [[package]] -name = "opaque-debug" -version = "0.2.3" +name = "once_cell" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" +checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" [[package]] name = "opaque-debug" @@ -1209,46 +1510,98 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.35" +version = "0.10.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "549430950c79ae24e6d02e0b7404534ecf311d94cc9f861e9e4020187d13d885" +checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0" dependencies = [ "bitflags", "cfg-if", "foreign-types", "libc", - "once_cell", - "openssl-sys", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", ] [[package]] -name = "openssl-probe" -version = "0.1.4" +name = "password-hash" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" +checksum = "1d791538a6dcc1e7cb7fe6f6b58aca40e7f79403c45b2bc274008b5e647af1d8" +dependencies = [ + "base64ct", + "rand_core 0.6.3", + "subtle", +] [[package]] -name = "openssl-sys" -version = "0.9.65" +name = "pbkdf2" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a7907e3bfa08bb85105209cdfcb6c63d109f8f6c1ed6ca318fff5c1853fbc1d" +checksum = "271779f35b581956db91a3e55737327a03aa051e90b1c47aeb189508533adfd7" dependencies = [ - "autocfg", - "cc", - "libc", - "pkg-config", - "vcpkg", + "digest", + "hmac", + "password-hash", + "sha2", ] +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + [[package]] name = "pem" -version = "0.8.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd56cbd21fea48d0c440b41cd69c589faacade08c992d9a54e471b79d0fd13eb" +checksum = "03c64931a1a212348ec4f3b4362585eca7159d0d09cbdf4a7f74f02173596fd4" dependencies = [ - "base64 0.13.0", - "once_cell", - "regex", + "base64", ] [[package]] @@ -1259,18 +1612,18 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "pin-project" -version = "1.0.8" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08" +checksum = "78203e83c48cffbe01e4a2d35d566ca4de445d79a85372fc64e378bfc812a260" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.8" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389" +checksum = "710faf75e1b33345361201d36d04e98ac1ed8909151a017ed384700836104c74" dependencies = [ "proc-macro2", "quote", @@ -1279,9 +1632,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.7" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" [[package]] name = "pin-utils" @@ -1291,9 +1644,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.19" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] name = "png" @@ -1303,15 +1656,27 @@ checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" dependencies = [ "bitflags", "crc32fast", - "deflate", + "deflate 0.8.6", "miniz_oxide 0.3.7", ] +[[package]] +name = "png" +version = "0.17.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc38c0ad57efb786dd57b9864e5b18bae478c00c824dc55a38bbc9da95dde3ba" +dependencies = [ + "bitflags", + "crc32fast", + "deflate 1.0.0", + "miniz_oxide 0.5.3", +] + [[package]] name = "ppv-lite86" -version = "0.2.10" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "proc-macro-hack" @@ -1319,30 +1684,30 @@ version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" -[[package]] -name = "proc-macro-nested" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" - [[package]] name = "proc-macro2" -version = "1.0.28" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" +checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] name = "quote" -version = "1.0.9" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" dependencies = [ "proc-macro2", ] +[[package]] +name = "radium" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" + [[package]] name = "rand" version = "0.7.3" @@ -1402,7 +1767,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.7", ] [[package]] @@ -1467,33 +1832,33 @@ dependencies = [ [[package]] name = "redis" -version = "0.21.4" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f23ceed4c0e76b322657c2c3352ea116f9ec60a1a1aefeb3c84ed062c50865b" +checksum = "1a80b5f38d7f5a020856a0e16e40a9cfabf88ae8f0e4c2dcd8a3114c1e470852" dependencies = [ "async-trait", "combine", "dtoa", - "itoa", + "itoa 0.4.8", "percent-encoding", - "sha1", + "sha1 0.6.1", "url", ] [[package]] name = "redox_syscall" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab49abadf3f9e1c4bc499e8845e152ad87d2ad2d30371841171169e9d75feee" +checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" dependencies = [ "bitflags", ] [[package]] name = "regex" -version = "1.5.4" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" dependencies = [ "aho-corasick", "memchr", @@ -1502,9 +1867,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.25" +version = "0.6.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" [[package]] name = "remove_dir_all" @@ -1517,15 +1882,16 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.4" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246e9f61b9bb77df069a947682be06e31ac43ea37862e244a69f177694ea6d22" +checksum = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92" dependencies = [ - "base64 0.13.0", - "bytes 1.0.1", + "base64", + "bytes", "encoding_rs", "futures-core", "futures-util", + "h2", "http", "http-body", "hyper", @@ -1538,10 +1904,13 @@ dependencies = [ "percent-encoding", "pin-project-lite", "rustls", + "rustls-pemfile", "serde", + "serde_json", "serde_urlencoded", "tokio", "tokio-rustls", + "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", @@ -1559,7 +1928,7 @@ dependencies = [ "cc", "libc", "once_cell", - "spin", + "spin 0.5.2", "untrusted", "web-sys", "winapi", @@ -1570,7 +1939,7 @@ name = "rust-g" version = "0.7.0" dependencies = [ "aho-corasick", - "base64 0.13.0", + "base64", "chrono", "const-random", "dashmap", @@ -1578,14 +1947,14 @@ dependencies = [ "flume", "git2", "hex", - "image", + "image 0.24.3", "lazy_static", "md-5", "mysql", "noise", "once_cell", "percent-encoding", - "png", + "png 0.17.5", "rand 0.8.5", "rayon", "redis", @@ -1594,7 +1963,7 @@ dependencies = [ "serde", "serde_json", "sha-1", - "sha2 0.9.5", + "sha2", "thiserror", "toml", "twox-hash", @@ -1604,9 +1973,9 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.15.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5446d1cf2dfe2d6367c8b27f2082bdf011e60e76fa1fcd140047f535156d6e7" +checksum = "34a3bb58e85333f1ab191bf979104b586ebd77475bc6681882825f4532dfe87c" dependencies = [ "arrayvec", "num-traits", @@ -1614,41 +1983,52 @@ dependencies = [ ] [[package]] -name = "rustc_version" -version = "0.2.3" +name = "rustc-hash" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver", -] +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustls" -version = "0.19.1" +version = "0.20.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" +checksum = "5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033" dependencies = [ - "base64 0.13.0", "log", "ring", "sct", "webpki", ] +[[package]] +name = "rustls-pemfile" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7522c9de787ff061458fe9a829dc790a3f5b22dc571694fc5883f448b94d9a9" +dependencies = [ + "base64", +] + [[package]] name = "ryu" -version = "1.0.5" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" + +[[package]] +name = "saturating" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +checksum = "ece8e78b2f38ec51c51f5d475df0a7187ba5111b2a28bdc761ee05b075d40a71" [[package]] name = "schannel" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" dependencies = [ "lazy_static", - "winapi", + "windows-sys", ] [[package]] @@ -1665,9 +2045,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "sct" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" dependencies = [ "ring", "untrusted", @@ -1675,9 +2055,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.3.1" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23a2ac85147a3a11d77ecf1bc7166ec0b92febfa4461c37944e180f319ece467" +checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" dependencies = [ "bitflags", "core-foundation", @@ -1688,43 +2068,28 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.3.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4effb91b4b8b6fb7732e670b6cee160278ff8e6bf485c7805d9e319d76e284" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" dependencies = [ "core-foundation-sys", "libc", ] -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - [[package]] name = "serde" -version = "1.0.127" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f03b9878abf6d14e6779d3f24f07b2cfa90352cfec4acc5aab8f1ac7f146fae8" +checksum = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.127" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a024926d3432516606328597e0f224a51355a493b49fdd67e9209187cbe55ecc" +checksum = "6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da" dependencies = [ "proc-macro2", "quote", @@ -1733,93 +2098,101 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.66" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336b10da19a12ad094b59d870ebde26a45402e5b470add4b5fd03c5048a32127" +checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7" dependencies = [ - "itoa", + "itoa 1.0.2", "ryu", "serde", ] [[package]] name = "serde_urlencoded" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa", + "itoa 1.0.2", "ryu", "serde", ] [[package]] name = "sha-1" -version = "0.9.7" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a0c8611594e2ab4ebbf06ec7cbbf0a99450b8570e96cbf5188b5d5f6ef18d81" +checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" dependencies = [ - "block-buffer 0.9.0", "cfg-if", "cpufeatures", - "digest 0.9.0", - "opaque-debug 0.3.0", + "digest", ] [[package]] name = "sha1" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] [[package]] -name = "sha2" -version = "0.8.2" +name = "sha1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" +checksum = "c77f4e7f65455545c2153c1253d25056825e77ee2533f0e41deb65a93a34852f" dependencies = [ - "block-buffer 0.7.3", - "digest 0.8.1", - "fake-simd", - "opaque-debug 0.2.3", + "cfg-if", + "cpufeatures", + "digest", ] +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + [[package]] name = "sha2" -version = "0.9.5" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362ae5752fd2137731f9fa25fd4d9058af34666ca1966fb969119cc35719f12" +checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" dependencies = [ - "block-buffer 0.9.0", "cfg-if", "cpufeatures", - "digest 0.9.0", - "opaque-debug 0.3.0", + "digest", ] [[package]] -name = "slab" -version = "0.4.3" +name = "shlex" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" +checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" [[package]] -name = "socket2" -version = "0.3.19" +name = "slab" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" dependencies = [ - "cfg-if", - "libc", - "winapi", + "autocfg", ] +[[package]] +name = "smallvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" + [[package]] name = "socket2" -version = "0.4.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "765f090f0e423d2b55843402a07915add955e7d60657db13707a159727326cad" +checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" dependencies = [ "libc", "winapi", @@ -1832,23 +2205,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] -name = "spinning_top" -version = "0.2.4" +name = "spin" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75adad84ee84b521fb2cca2d4fd0f1dab1d8d026bda3c5bea4ca63b5f9f9293c" +checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09" dependencies = [ "lock_api", ] -[[package]] -name = "standback" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" -dependencies = [ - "version_check", -] - [[package]] name = "static_assertions" version = "1.1.0" @@ -1856,74 +2220,47 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] -name = "stdweb" -version = "0.4.20" +name = "subprocess" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +checksum = "0c2e86926081dda636c546d8c5e641661049d7562a68f5488be4a1f7f66f6086" dependencies = [ - "discard", - "rustc_version", - "stdweb-derive", - "stdweb-internal-macros", - "stdweb-internal-runtime", - "wasm-bindgen", + "libc", + "winapi", ] [[package]] -name = "stdweb-derive" -version = "0.5.3" +name = "subtle" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "serde_derive", - "syn", -] +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] -name = "stdweb-internal-macros" -version = "0.2.9" +name = "syn" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" dependencies = [ - "base-x", "proc-macro2", "quote", - "serde", - "serde_derive", - "serde_json", - "sha1", - "syn", + "unicode-ident", ] [[package]] -name = "stdweb-internal-runtime" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" - -[[package]] -name = "syn" -version = "1.0.74" +name = "tap" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ "cfg-if", + "fastrand", "libc", - "rand 0.8.5", "redox_syscall", "remove_dir_all", "winapi", @@ -1931,82 +2268,83 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.26" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93119e4feac1cbe6c798c34d3a53ea0026b0b1de6a120deef895137c0529bfe2" +checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.26" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "060d69a0afe7796bf42e9e2ff91f5ee691fb15c53d38b4b62a9a53eb23164745" +checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" dependencies = [ "proc-macro2", "quote", "syn", ] +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + [[package]] name = "tiff" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437" dependencies = [ - "jpeg-decoder", + "jpeg-decoder 0.1.22", "miniz_oxide 0.4.4", "weezl", ] [[package]] -name = "time" -version = "0.1.43" +name = "tiff" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +checksum = "7cfada0986f446a770eca461e8c6566cb879682f7d687c8348aa0c857bd52286" dependencies = [ - "libc", - "winapi", + "flate2", + "jpeg-decoder 0.2.6", + "weezl", ] [[package]] name = "time" -version = "0.2.27" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" dependencies = [ - "const_fn", "libc", - "standback", - "stdweb", - "time-macros", - "version_check", + "wasi 0.10.0+wasi-snapshot-preview1", "winapi", ] [[package]] -name = "time-macros" -version = "0.1.1" +name = "time" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" +checksum = "72c91f41dcb2f096c05f0873d667dceec1087ce5bcf984ec8ffb19acddbb3217" dependencies = [ - "proc-macro-hack", - "time-macros-impl", + "itoa 1.0.2", + "libc", + "num_threads", + "time-macros", ] [[package]] -name = "time-macros-impl" -version = "0.1.2" +name = "time-macros" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" -dependencies = [ - "proc-macro-hack", - "proc-macro2", - "quote", - "standback", - "syn", -] +checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" [[package]] name = "tiny-keccak" @@ -2019,9 +2357,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.3.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "848a1e1181b9f6753b5e96a092749e29b11d19ede67dfbbd6c7dc7e0f49b5338" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] @@ -2034,25 +2372,27 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.9.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b7b349f11a7047e6d1276853e612d152f5e8a352c61917887cc2169e2366b4c" +checksum = "57aec3cfa4c296db7255446efb4928a6be304b431a806216105542a67b6ca82e" dependencies = [ "autocfg", - "bytes 1.0.1", + "bytes", "libc", "memchr", "mio", "num_cpus", + "once_cell", "pin-project-lite", + "socket2", "winapi", ] [[package]] name = "tokio-rustls" -version = "0.22.0" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" dependencies = [ "rustls", "tokio", @@ -2061,38 +2401,38 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.6.7" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1caa0b0c8d94a049db56b5acf8cba99dc0623aab1b26d5b5f5e2d945846b3592" +checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45" dependencies = [ - "bytes 1.0.1", + "bytes", "futures-core", "futures-sink", - "log", "pin-project-lite", "tokio", + "tracing", ] [[package]] name = "toml" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" dependencies = [ "serde", ] [[package]] name = "tower-service" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.26" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" +checksum = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160" dependencies = [ "cfg-if", "pin-project-lite", @@ -2101,11 +2441,11 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.18" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052" +checksum = "7b7358be39f2f274f322d2aaed611acc57f382e8eb1e5b48cb9ae30933495ce7" dependencies = [ - "lazy_static", + "once_cell", ] [[package]] @@ -2116,9 +2456,9 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "twox-hash" -version = "1.6.1" +version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f559b464de2e2bdabcac6a210d12e9b5a5973c251e102c44c585c71d51bd78e" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ "cfg-if", "rand 0.8.5", @@ -2127,34 +2467,31 @@ dependencies = [ [[package]] name = "typenum" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" [[package]] name = "unicode-bidi" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0" -dependencies = [ - "matches", -] +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" dependencies = [ "tinyvec", ] -[[package]] -name = "unicode-xid" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" - [[package]] name = "untrusted" version = "0.7.1" @@ -2187,9 +2524,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "want" @@ -2209,27 +2546,31 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" +version = "0.10.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.75" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b608ecc8f4198fe8680e2ed18eccab5f0cd4caaf3d83516fa5fb2e927fda2586" +checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994" dependencies = [ "cfg-if", - "serde", - "serde_json", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.75" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "580aa3a91a63d23aac5b6b267e2d13cb4f363e31dce6c352fca4752ae12e479f" +checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a" dependencies = [ "bumpalo", "lazy_static", @@ -2242,9 +2583,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.25" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16646b21c3add8e13fdb8f20172f8a28c3dbf62f45406bcff0233188226cfe0c" +checksum = "de9a9cec1733468a8c657e57fa2413d2ae2c0129b95e87c5b72b8ace4d13f31f" dependencies = [ "cfg-if", "js-sys", @@ -2254,9 +2595,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.75" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "171ebf0ed9e1458810dfcb31f2e766ad6b3a89dbda42d8901f2b268277e5f09c" +checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2264,9 +2605,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.75" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c2657dd393f03aa2a659c25c6ae18a13a4048cebd220e147933ea837efc589f" +checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" dependencies = [ "proc-macro2", "quote", @@ -2277,15 +2618,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.75" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e0c4a743a309662d45f4ede961d7afa4ba4131a59a639f29b0069c3798bbcc2" +checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be" [[package]] name = "web-sys" -version = "0.3.52" +version = "0.3.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01c70a82d842c9979078c772d4a1344685045f1a5628f677c2b2eab4dd7d2696" +checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90" dependencies = [ "js-sys", "wasm-bindgen", @@ -2293,9 +2634,9 @@ dependencies = [ [[package]] name = "webpki" -version = "0.21.4" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" dependencies = [ "ring", "untrusted", @@ -2303,18 +2644,18 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.21.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" +checksum = "f1c760f0d366a6c24a02ed7816e23e691f5d92291f94d15e836006fd11b04daf" dependencies = [ "webpki", ] [[package]] name = "weezl" -version = "0.1.5" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b77fdfd5a253be4ab714e4ffa3c49caf146b4de743e97510c0656cf90f1e8e" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" [[package]] name = "winapi" @@ -2338,25 +2679,112 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + [[package]] name = "winreg" -version = "0.7.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" dependencies = [ "winapi", ] +[[package]] +name = "wyz" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "129e027ad65ce1453680623c3fb5163cbf7107bfe1aa32257e7d0e63f9ced188" +dependencies = [ + "tap", +] + [[package]] name = "zip" -version = "0.5.13" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" +checksum = "bf225bcf73bb52cbb496e70475c7bd7a3f769df699c0020f6c7bd9a96dcf0b8d" dependencies = [ + "aes", "byteorder", "bzip2", + "constant_time_eq", "crc32fast", + "crossbeam-utils", "flate2", - "thiserror", - "time 0.1.43", + "hmac", + "pbkdf2", + "sha1 0.10.1", + "time 0.3.11", + "zstd", +] + +[[package]] +name = "zstd" +version = "0.10.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4a6bd64f22b5e3e94b4e238669ff9f10815c27a5180108b849d24174a83847" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "4.1.6+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94b61c51bb270702d6167b8ce67340d2754b088d0c091b06e593aa772c3ee9bb" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "1.6.3+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc49afa5c8d634e75761feda8c592051e7eeb4683ba827211eb0d731d3402ea8" +dependencies = [ + "cc", + "libc", ] diff --git a/Cargo.toml b/Cargo.toml index 4d0a2c49..578eaa14 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,31 +20,31 @@ thiserror = "1.0" flume = { version = "0.10", optional = true } chrono = { version = "0.4", optional = true } base64 = { version = "0.13", optional = true} -md-5 = { version = "0.9", optional = true } -twox-hash = { version = "1.6.0", optional = true } +md-5 = { version = "0.10", optional = true } +twox-hash = { version = "1.6", optional = true } const-random = { version = "0.1.13", optional = true } -sha-1 = { version = "0.9", optional = true } -sha2 = { version = "0.9", optional = true } +sha-1 = { version = "0.10", optional = true } +sha2 = { version = "0.10", optional = true } hex = { version = "0.4", optional = true } percent-encoding = { version = "2.1", optional = true } url-dep = { version = "2.1", package = "url", optional = true } -png = { version = "0.16", optional = true } -image = { version = "0.23.10", optional = true } -git2 = { version = "0.13", optional = true, default-features = false } +png = { version = "0.17", optional = true } +image = { version = "0.24", optional = true } +git2 = { version = "0.14", optional = true, default-features = false } noise = { version = "0.7", optional = true} -redis = { version = "0.21.4", optional = true } +redis = { version = "0.21", optional = true } reqwest = { version = "0.11", optional = true, default-features = false, features = ["blocking", "rustls-tls"] } serde = { version = "1.0", optional = true, features = ["derive"] } serde_json = { version = "1.0", optional = true } lazy_static = { version = "1.4", optional = true } once_cell = { version = "1.4", optional = true } -mysql = { version = "20.0", optional = true } -dashmap = { version = "4.0", optional = true } -zip = { version = "0.5.8", optional = true } +mysql = { version = "22.2", optional = true } +dashmap = { version = "5.3", optional = true } +zip = { version = "0.6", optional = true } rand = {version = "0.8", optional = true} toml-dep = { version = "0.5.8", package="toml", optional = true } aho-corasick = { version = "0.7.18", optional = true} -rayon = { version = "1.5.3", optional = true} +rayon = { version = "1.5", optional = true} dbpnoise = { version = "0.1.2", optional = true} [features] diff --git a/README.md b/README.md index 13b8ceb2..8a0172a6 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,8 @@ cargo build --release --target i686-pc-windows-msvc # output: target/i686-pc-windows-msvc/release/rust_g.dll ``` +If you aren't sharing the binary with other people, consider compiling [targeting your native cpu](https://rust-lang.github.io/packed_simd/perf-guide/target-feature/rustflags.html#target-cpu) for potential performance improvements. You can do this by setting the `RUSTFLAGS` environment variable to `-C target-cpu=native`. For example, in Powershell you would use `$Env:RUSTFLAGS="-C target-cpu=native"`. + To get additional features, pass a list to `--features`, for example `--features hash,url`. To get all features, pass `--all-features`. To disable the default features, pass `--no-default-features`. The default features are: diff --git a/src/dmi.rs b/src/dmi.rs index e36c034a..3a0b1c5e 100644 --- a/src/dmi.rs +++ b/src/dmi.rs @@ -31,11 +31,11 @@ fn strip_metadata(path: &str) -> Result<()> { } fn read_png(path: &str) -> Result<(OutputInfo, Vec)> { - let (info, mut reader) = Decoder::new(File::open(path)?).read_info()?; - let mut buf = vec![0; info.buffer_size()]; + let mut reader = Decoder::new(File::open(path)?).read_info()?; + let mut buf = vec![0; reader.output_buffer_size()]; - reader.next_frame(&mut buf)?; - Ok((info, buf)) + let out_info = reader.next_frame(&mut buf)?; + Ok((out_info, buf)) } fn write_png(path: &str, info: OutputInfo, image: Vec) -> Result<()> { @@ -70,7 +70,7 @@ fn create_png(path: &str, width: &str, height: &str, data: &str) -> Result<()> { } let mut encoder = Encoder::new(File::create(path)?, width, height); - encoder.set_color(png::ColorType::RGB); + encoder.set_color(png::ColorType::Rgb); encoder.set_depth(png::BitDepth::Eight); let mut writer = encoder.write_header()?; Ok(writer.write_image_data(&result)?) From 3a4a99da77360dc2c24d4bd69e02cbcd4a2d07e0 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Thu, 21 Jul 2022 23:26:59 -0700 Subject: [PATCH 38/82] 0.8.0 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eda5a506..8caef1e9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1936,7 +1936,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "0.7.0" +version = "0.8.0" dependencies = [ "aho-corasick", "base64", diff --git a/Cargo.toml b/Cargo.toml index 578eaa14..db7bfb87 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rust-g" edition = "2018" -version = "0.7.0" +version = "0.8.0" authors = ["Bjorn Neergaard "] repository = "https://github.com/tgstation/rust-g" license-file = "LICENSE" From 5b3bfd02b07a06fac528d69dbc0594c00c49869a Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Thu, 21 Jul 2022 23:52:48 -0700 Subject: [PATCH 39/82] Tiny README update --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8a0172a6..2365310e 100644 --- a/README.md +++ b/README.md @@ -98,12 +98,13 @@ The default features are: * sql: Asynchronous MySQL/MariaDB client library. * time: High-accuracy time measuring. * toml: TOML parser. +* url: Faster replacements for `url_encode` and `url_decode`. Additional features are: +* batchnoise: Discrete Batched Perlin-like Noise, fast and multi-threaded - sent over once instead of having to query for every tile. * hash: Faster replacement for `md5`, support for SHA-1, SHA-256, and SHA-512. Requires OpenSSL on Linux. * redis_pubsub: Library for sending and receiving messages through Redis. * unzip: Function to download a .zip from a URL and unzip it to a directory. -* url: Faster replacements for `url_encode` and `url_decode`. * worleynoise: Function that generates a type of nice looking cellular noise, more expensive than cellularnoise ## Installing From 53699fe6070038b44dd573b0652a2e61f3794a23 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Fri, 22 Jul 2022 17:32:28 -0700 Subject: [PATCH 40/82] Small improvements for before 1.0 (#105) --- .github/workflows/rust.yml | 22 ++++++++++++++++++++-- Cargo.lock | 4 ++-- LICENSE | 2 +- README.md | 5 +---- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index cd6c081f..8996b975 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -11,62 +11,78 @@ jobs: runs-on: windows-latest steps: - uses: actions/checkout@v1 + - uses: actions-rs/toolchain@v1 with: toolchain: stable target: i686-pc-windows-msvc components: rustfmt, clippy + + - uses: Swatinem/rust-cache@v2 + - name: Clippy (all features) uses: actions-rs/cargo@v1 with: toolchain: stable command: clippy args: --target i686-pc-windows-msvc --all-features --locked -- -D warnings + - name: Rustfmt uses: actions-rs/cargo@v1 with: toolchain: stable command: fmt args: -- --check + - name: Build (release) (default features) uses: actions-rs/cargo@v1 with: toolchain: stable command: build args: --target i686-pc-windows-msvc --release + - uses: actions/upload-artifact@v1 with: name: rust_g.dll path: target/i686-pc-windows-msvc/release/rust_g.dll + build-linux: runs-on: ubuntu-latest env: - BYOND_MAJOR: 513 - BYOND_MINOR: 1536 + BYOND_MAJOR: 514 + BYOND_MINOR: 1585 PKG_CONFIG_ALLOW_CROSS: 1 + steps: - uses: actions/checkout@v1 + - run: | sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install g++-multilib zlib1g-dev:i386 libssl-dev:i386 ./scripts/install_byond.sh + - uses: actions-rs/toolchain@v1 with: toolchain: stable target: i686-unknown-linux-gnu + + - uses: Swatinem/rust-cache@v2 + - name: Check (all features) uses: actions-rs/cargo@v1 with: toolchain: stable command: check args: --target i686-unknown-linux-gnu --all-features + - name: Build (Debug) (all features) uses: actions-rs/cargo@v1 with: toolchain: stable command: build args: --target i686-unknown-linux-gnu --all-features + - name: Run tests (all features) uses: actions-rs/cargo@v1 with: @@ -75,12 +91,14 @@ jobs: args: --target i686-unknown-linux-gnu --all-features env: BYOND_BIN: /home/runner/BYOND/byond/bin + - name: Build (release) (default features) uses: actions-rs/cargo@v1 with: toolchain: stable command: build args: --target i686-unknown-linux-gnu --release + - uses: actions/upload-artifact@v1 with: name: rust_g diff --git a/Cargo.lock b/Cargo.lock index 8caef1e9..3743127e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1847,9 +1847,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.13" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" +checksum = "534cfe58d6a18cc17120fbf4635d53d14691c1fe4d951064df9bd326178d7d5a" dependencies = [ "bitflags", ] diff --git a/LICENSE b/LICENSE index ad58f722..28a1a6d0 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2018 Bjorn Neergaard, /tg/station contributors +Copyright (c) 2022 Bjorn Neergaard, rust-g contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 2365310e..9da0c3e1 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ rust-g (pronounced rusty-g) is a library which offloads certain expensive or difficult tasks from BYOND. -This library is currently used in the [tgstation] codebase, and is required for +This library is currently used in the [/tg/station] codebase, and is required for it to run. A pre-compiled DLL version can be found in the repo root, but you can build your own from this repo at your preference. Builds can also be found on the [releases page]. @@ -178,9 +178,6 @@ open("rust_g", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = -1 ENOTD If you're still having problems, ask in the [Coderbus Discord]'s `#tooling-questions` channel. -You can also try [tgstation]'s IRC, `#coderbus` on Rizon, but it is usually -quiet. - [/tg/station]: https://github.com/tgstation/tgstation [Rust]: https://rust-lang.org [Cargo]: https://doc.rust-lang.org/cargo/ From f82e57b431a6f5106eb9eebf2e8a8a14eef07fc3 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Sat, 23 Jul 2022 11:17:21 -0700 Subject: [PATCH 41/82] 1.0.0 (#106) --- Cargo.lock | 2 +- Cargo.toml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3743127e..9fcdfbc8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1936,7 +1936,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "0.8.0" +version = "1.0.0" dependencies = [ "aho-corasick", "base64", diff --git a/Cargo.toml b/Cargo.toml index db7bfb87..da0c63ed 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "rust-g" -edition = "2018" -version = "0.8.0" -authors = ["Bjorn Neergaard "] +edition = "2021" +version = "1.0.0" +authors = ["Bjorn Neergaard , Tad Hardesty , rust-g maintainer team"] repository = "https://github.com/tgstation/rust-g" -license-file = "LICENSE" +license = "MIT" description = "Offloaded task library for the /tg/ Space Station 13 codebase" [lib] From c19cdfba9f864f1c55808fd9c0ffa3b46bacefa6 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Mon, 25 Jul 2022 01:22:14 -0700 Subject: [PATCH 42/82] Pallette Encoding Image Fix (#107) --- Cargo.toml | 2 +- src/dmi.rs | 31 ++++++++++++++++++++++++------- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index da0c63ed..d0d9bd0c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ name = "rust-g" edition = "2021" version = "1.0.0" -authors = ["Bjorn Neergaard , Tad Hardesty , rust-g maintainer team"] +authors = ["Bjorn Neergaard ", "Tad Hardesty ", "rust-g maintainer team"] repository = "https://github.com/tgstation/rust-g" license = "MIT" description = "Offloaded task library for the /tg/ Space Station 13 codebase" diff --git a/src/dmi.rs b/src/dmi.rs index 3a0b1c5e..1737341d 100644 --- a/src/dmi.rs +++ b/src/dmi.rs @@ -1,5 +1,5 @@ use crate::error::{Error, Result}; -use png::{Decoder, Encoder, OutputInfo}; +use png::{Decoder, Encoder, OutputInfo, Reader}; use std::{ fs::{create_dir_all, File}, path::Path, @@ -26,24 +26,41 @@ byond_fn!(fn dmi_resize_png(path, width, height, resizetype) { }); fn strip_metadata(path: &str) -> Result<()> { - let (info, image) = read_png(path)?; - write_png(path, info, image) + let (reader, frame_info, image) = read_png(path)?; + write_png(path, reader, frame_info, image, true) } -fn read_png(path: &str) -> Result<(OutputInfo, Vec)> { +fn read_png(path: &str) -> Result<(Reader, OutputInfo, Vec)> { let mut reader = Decoder::new(File::open(path)?).read_info()?; let mut buf = vec![0; reader.output_buffer_size()]; + let frame_info = reader.next_frame(&mut buf)?; - let out_info = reader.next_frame(&mut buf)?; - Ok((out_info, buf)) + Ok((reader, frame_info, buf)) } -fn write_png(path: &str, info: OutputInfo, image: Vec) -> Result<()> { +fn write_png( + path: &str, + reader: Reader, + info: OutputInfo, + image: Vec, + strip: bool, +) -> Result<()> { let mut encoder = Encoder::new(File::create(path)?, info.width, info.height); encoder.set_color(info.color_type); encoder.set_depth(info.bit_depth); + let reader_info = reader.info(); + if let Some(palette) = reader_info.palette.to_owned() { + encoder.set_palette(palette); + } + let mut writer = encoder.write_header()?; + // Handles zTxt chunk copying from the original image if we /don't/ want to strip it + if !strip { + for chunk in &reader_info.compressed_latin1_text { + writer.write_text_chunk(chunk)?; + } + } Ok(writer.write_image_data(&image)?) } From 80f948721277591aeaab17cb99e02bfc85373670 Mon Sep 17 00:00:00 2001 From: san7890 Date: Mon, 25 Jul 2022 17:08:54 -0600 Subject: [PATCH 43/82] Uploads rust_g.dm as an Actions Artifact (#108) --- .github/workflows/rust.yml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 8996b975..5567d1b4 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -41,10 +41,13 @@ jobs: command: build args: --target i686-pc-windows-msvc --release - - uses: actions/upload-artifact@v1 + - uses: actions/upload-artifact@v3 with: - name: rust_g.dll - path: target/i686-pc-windows-msvc/release/rust_g.dll + name: Windows Build + path: | + target/i686-pc-windows-msvc/release/rust_g.dll + target/rust_g.dm + build-linux: runs-on: ubuntu-latest @@ -99,7 +102,9 @@ jobs: command: build args: --target i686-unknown-linux-gnu --release - - uses: actions/upload-artifact@v1 + - uses: actions/upload-artifact@v3 with: - name: rust_g - path: target/i686-unknown-linux-gnu/release/librust_g.so + name: Linux Build + path: | + target/i686-unknown-linux-gnu/release/librust_g.so + target/rust_g.dm From 85eb38af1c8e2fd0d02cb7d1aa3bdd7821d5e83f Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Mon, 25 Jul 2022 18:53:26 -0700 Subject: [PATCH 44/82] 1.0.1 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9fcdfbc8..f987f9a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1936,7 +1936,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "1.0.0" +version = "1.0.1" dependencies = [ "aho-corasick", "base64", diff --git a/Cargo.toml b/Cargo.toml index d0d9bd0c..9d22b553 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rust-g" edition = "2021" -version = "1.0.0" +version = "1.0.1" authors = ["Bjorn Neergaard ", "Tad Hardesty ", "rust-g maintainer team"] repository = "https://github.com/tgstation/rust-g" license = "MIT" From 141b460f439bf9b7a2a01462647bd49a18ced3d7 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Wed, 27 Jul 2022 08:43:33 -0700 Subject: [PATCH 45/82] add note to README about not using the .so --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9da0c3e1..4ec05ac4 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,11 @@ rust-g (pronounced rusty-g) is a library which offloads certain expensive or difficult tasks from BYOND. This library is currently used in the [/tg/station] codebase, and is required for -it to run. A pre-compiled DLL version can be found in the repo root, but you -can build your own from this repo at your preference. Builds can also be found -on the [releases page]. +it to run. A pre-compiled DLL version can be found in the repo root of codebases that use it, +but you can build your own from this repo (and you should if you're running a server). + +Builds can also be found on the [releases page] but should only be used for Windows, +as Linux has compatibility issues across distributions. [releases page]: https://github.com/tgstation/rust-g/releases From b6afd895ff0f77d0ae6cdda5bda9689fadd8e002 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Sun, 31 Jul 2022 12:20:14 -0700 Subject: [PATCH 46/82] Returns the TOML library to previous functionality (#112) --- dmsrc/toml.dm | 2 +- tests/dm/toml.dme | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dmsrc/toml.dm b/dmsrc/toml.dm index d30d2bb8..8ef7c277 100644 --- a/dmsrc/toml.dm +++ b/dmsrc/toml.dm @@ -3,6 +3,6 @@ /proc/rustg_read_toml_file(path) var/list/output = rustg_raw_read_toml_file(path) if (output["success"]) - return output["content"] + return json_decode(output["content"]) else CRASH(output["content"]) diff --git a/tests/dm/toml.dme b/tests/dm/toml.dme index a570f4fa..0125be98 100644 --- a/tests/dm/toml.dme +++ b/tests/dm/toml.dme @@ -17,5 +17,5 @@ var/test_json = @{" var/toml_output = rustg_read_toml_file("test.toml") - if (toml_output != test_json) - CRASH("test:\n[test_toml]\n \nexpected:\n[test_json]\n \nrustg:\n[toml_output]") + if (toml_output ~! json_decode(test_json)) + CRASH("test:\n[test_toml]\n \nexpected:\n[test_json]\n \nrustg:\n[json_encode(toml_output)]") From 93ae8899082afb91207c2f981f8abf8b3c1a6ab4 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Sun, 31 Jul 2022 12:21:29 -0700 Subject: [PATCH 47/82] 1.0.2 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f987f9a5..533ee826 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1936,7 +1936,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "1.0.1" +version = "1.0.2" dependencies = [ "aho-corasick", "base64", diff --git a/Cargo.toml b/Cargo.toml index 9d22b553..e5e3ff54 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rust-g" edition = "2021" -version = "1.0.1" +version = "1.0.2" authors = ["Bjorn Neergaard ", "Tad Hardesty ", "rust-g maintainer team"] repository = "https://github.com/tgstation/rust-g" license = "MIT" From 4af771a9226329aca41ed2391791ad9044b5629a Mon Sep 17 00:00:00 2001 From: BraveMole Date: Sun, 21 Aug 2022 20:36:42 +0200 Subject: [PATCH 48/82] Clippy - unneeded returns (#114) --- src/hash.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hash.rs b/src/hash.rs index 7d9808e2..01c4af26 100644 --- a/src/hash.rs +++ b/src/hash.rs @@ -24,7 +24,7 @@ byond_fn!(fn hash_file(algorithm, string) { byond_fn!(fn generate_totp(hex_seed) { match totp_generate(hex_seed, 0, None) { Ok(value) => Some(value), - Err(error) => return Some(format!("ERROR: {:?}", error)) + Err(error) => Some(format!("ERROR: {:?}", error)) } }); @@ -35,7 +35,7 @@ byond_fn!(fn generate_totp_tolerance(hex_seed, tolerance) { }; match totp_generate_tolerance(hex_seed, tolerance_value, None) { Ok(value) => Some(value), - Err(error) => return Some(format!("ERROR: {:?}", error)) + Err(error) => Some(format!("ERROR: {:?}", error)) } }); From 578a52de78fdafa6053e47a1a154ef63445b35e0 Mon Sep 17 00:00:00 2001 From: BraveMole Date: Sun, 11 Sep 2022 12:17:43 +0200 Subject: [PATCH 49/82] Add an a* pathfinder (#113) Returns the shortest path in a static node map. That is made for TGMC wich uses manually placed nodes for pathfinding. Benchmark : image That's the average number of path computed in one second, out of 30 runs with random nodes. Size of the node map is roughly 800 On average 32 times faster than tgmc a* implementation. Another possible comparison is with TG's JPS system, and according to the benchmark done here it's 7000 times faster (tgstation/tgstation#56780). Not exactly the same use cases though --- Cargo.lock | 65 ++++++++ Cargo.toml | 3 + dmsrc/pathfinder.dm | 32 ++++ src/lib.rs | 2 + src/pathfinder.rs | 281 +++++++++++++++++++++++++++++++++++ tests/rsc/ai_nodes_info.json | 1 + 6 files changed, 384 insertions(+) create mode 100644 dmsrc/pathfinder.dm create mode 100644 src/pathfinder.rs create mode 100644 tests/rsc/ai_nodes_info.json diff --git a/Cargo.lock b/Cargo.lock index 533ee826..c79b9e7e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -536,6 +536,12 @@ dependencies = [ "instant", ] +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "flate2" version = "1.0.24" @@ -978,6 +984,15 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "integer-sqrt" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770" +dependencies = [ + "num-traits", +] + [[package]] name = "io-enum" version = "1.0.1" @@ -996,6 +1011,15 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" +[[package]] +name = "itertools" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "0.4.8" @@ -1414,6 +1438,20 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "num" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational 0.4.1", + "num-traits", +] + [[package]] name = "num-bigint" version = "0.4.3" @@ -1425,6 +1463,15 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-complex" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19" +dependencies = [ + "num-traits", +] + [[package]] name = "num-integer" version = "0.1.45" @@ -1464,6 +1511,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ "autocfg", + "num-bigint", "num-integer", "num-traits", ] @@ -1577,6 +1625,21 @@ dependencies = [ "subtle", ] +[[package]] +name = "pathfinding" +version = "3.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84da3eab6c7638931f4876ebb03455be74db8eab1e344cd5a90daba8b3ad2f22" +dependencies = [ + "fixedbitset", + "indexmap", + "integer-sqrt", + "itertools", + "num-traits", + "rustc-hash", + "thiserror", +] + [[package]] name = "pbkdf2" version = "0.10.1" @@ -1952,7 +2015,9 @@ dependencies = [ "md-5", "mysql", "noise", + "num", "once_cell", + "pathfinding", "percent-encoding", "png 0.17.5", "rand 0.8.5", diff --git a/Cargo.toml b/Cargo.toml index e5e3ff54..95d6d1af 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,6 +46,8 @@ toml-dep = { version = "0.5.8", package="toml", optional = true } aho-corasick = { version = "0.7.18", optional = true} rayon = { version = "1.5", optional = true} dbpnoise = { version = "0.1.2", optional = true} +pathfinding = { version = "3.0.13", optional = true } +num = { version = "0.4.0", optional = true } [features] default = ["acreplace", "cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "sql", "time", "toml", "url"] @@ -67,6 +69,7 @@ url = ["url-dep", "percent-encoding"] # additional features batchnoise = ["dbpnoise"] hash = ["base64", "const-random", "md-5", "hex", "sha-1", "sha2", "twox-hash", "serde", "serde_json"] +pathfinder = [ "num", "pathfinding", "serde", "serde_json"] redis_pubsub = ["flume", "redis", "serde", "serde_json"] unzip = ["zip", "jobs"] worleynoise = ["rand","rayon"] diff --git a/dmsrc/pathfinder.dm b/dmsrc/pathfinder.dm new file mode 100644 index 00000000..be5ac802 --- /dev/null +++ b/dmsrc/pathfinder.dm @@ -0,0 +1,32 @@ +/** + * Register a list of nodes into a rust library. This list of nodes must have been serialized in a json. + * Node {// Index of this node in the list of nodes + * unique_id: usize, + * // Position of the node in byond + * x: usize, + * y: usize, + * z: usize, + * // Indexes of nodes connected to this one + * connected_nodes_id: Vec} + * It is important that the node with the unique_id 0 is the first in the json, unique_id 1 right after that, etc. + * It is also important that all unique ids follow. {0, 1, 2, 4} is not a correct list and the registering will fail + * Nodes should not link across z levels. + * A node cannot link twice to the same node and shouldn't link itself either + */ +#define rustg_register_nodes_astar(json) call(RUST_G, "register_nodes_astar")(json) + +/** + * Add a new node to the static list of nodes. Same rule as registering_nodes applies. + * This node unique_id must be equal to the current length of the static list of nodes + */ +#define rustg_add_node_astar(json) call(RUST_G, "add_node_astar")(json) + +/**² + * Remove every link to the node with unique_id. Replace that node by null + */ +#define rustg_remove_node_astart(unique_id) call(RUST_G, "remove_node_astar")(unique_id) + +/** + * Compute the shortest path between start_node and goal_node using A*. Heuristic used is simple geometric distance + */ +#define rustg_generate_path_astar(start_node_id, goal_node_id) call(RUST_G, "generate_path_astar")(start_node_id, goal_node_id) diff --git a/src/lib.rs b/src/lib.rs index de5e531f..bbe40556 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -30,6 +30,8 @@ pub mod json; pub mod log; #[cfg(feature = "noise")] pub mod noise_gen; +#[cfg(feature = "pathfinder")] +pub mod pathfinder; #[cfg(feature = "redis_pubsub")] pub mod redis_pubsub; #[cfg(feature = "sql")] diff --git a/src/pathfinder.rs b/src/pathfinder.rs new file mode 100644 index 00000000..395c40d3 --- /dev/null +++ b/src/pathfinder.rs @@ -0,0 +1,281 @@ +use num::integer::sqrt; +use pathfinding::prelude::astar; +use serde::{Deserialize, Serialize}; +use std::cell::RefCell; +use std::hash::Hash; +use std::num::ParseIntError; +use std::rc::Rc; +use thiserror::Error; + +thread_local! { +static NODES: RefCell>>> = RefCell::new(Vec::new()); +} + +fn get_nodes_len() -> usize { + NODES.with(|nodes_ref| nodes_ref.borrow().len()) +} + +fn get_node(id: usize) -> Option>> { + NODES.with(|nodes_ref| nodes_ref.borrow().get(id).cloned()) +} + +fn push_node(node: Node) { + NODES.with(|nodes_ref| nodes_ref.borrow_mut().push(Some(Rc::new(node)))); +} + +fn null_out_node(id: usize) { + NODES.with(|nodes_ref| nodes_ref.borrow_mut()[id] = None); +} + +// Container for a node. Exist mainly to be able to implement Hash, which is not implemented for RefCell +#[derive(Serialize, Deserialize, Default, Clone, Eq, Hash, Ord, PartialEq, PartialOrd)] +struct Node { + // A unique id that acts as its index in NODES + unique_id: usize, + // Position of the node in byond + x: usize, + y: usize, + z: usize, + // Indexes of nodes connected to this one + connected_nodes_id: Vec, +} + +impl Node { + // Return a vector of all connected nodes, encapsulated in a NodeContainer. + fn successors(&self) -> Vec<(Rc, usize)> { + self.connected_nodes_id + .iter() + .filter_map(|index| get_node(*index)) + .flatten() + .map(|node| (node.clone(), self.distance(node.as_ref()))) + .collect() + } + + // Return the geometric distance between this node and another one. + fn distance(&self, other: &Self) -> usize { + sqrt( + ((self.x as isize - other.x as isize).pow(2) + + (self.y as isize - other.y as isize).pow(2)) as usize, + ) + } +} + +#[derive(Error, Debug)] +enum RegisteringNodesError { + #[error(transparent)] + Serialization(#[from] serde_json::Error), + #[error("Nodes were not correctly indexed")] + NodesNotCorrectlyIndexed, +} + +byond_fn!(fn register_nodes_astar(json) { + match register_nodes(json) { Ok(s) => Some(s), + Err(e) => Some(format!("{e}")) + } +}); + +// Builds a list of nodes from a json file. +// Errors if the input list of nodes is not correctly indexed. Each node should have for unique id its position in the list, with the first unique-id being 0. +fn register_nodes(json: &str) -> Result { + let deserialized_nodes: Vec = serde_json::from_str(json)?; + if deserialized_nodes + .iter() + .enumerate() + .filter(|(i, node)| i != &node.unique_id) + .count() + != 0 + { + return Err(RegisteringNodesError::NodesNotCorrectlyIndexed); + } + + deserialized_nodes.into_iter().for_each(push_node); + + Ok("1".to_string()) +} + +byond_fn!(fn add_node_astar(json) { + match add_node(json) { + Ok(s) => Some(s), + Err(e) => Some(format!("{e}")) + } +}); + +// Add a node to the static list of node. +// If it is connected to other existing nodes, it will update their connected_nodes_id list. +fn add_node(json: &str) -> Result { + let new_node: Node = serde_json::from_str(json)?; + + // As always, a node unique id should correspond to its index in NODES + if new_node.unique_id != get_nodes_len() { + return Err(RegisteringNodesError::NodesNotCorrectlyIndexed); + } + + // Make sure every connection we have we other nodes is 2 ways + for index in new_node.connected_nodes_id.iter() { + NODES.with(|nodes_ref| { + if let Some(Some(node)) = nodes_ref.borrow_mut().get_mut(*index) { + Rc::get_mut(node) + .unwrap() + .connected_nodes_id + .push(new_node.unique_id) + } + }) + } + + push_node(new_node); + + Ok("1".to_string()) +} + +#[derive(Error, Debug)] +enum DeleteNodeError { + #[error(transparent)] + ParsingError(ParseIntError), + #[error("Node was not found")] + NodeNotFound, +} + +byond_fn!(fn remove_node_astar(unique_id) { + match remove_node(unique_id) { + Ok(s) => Some(s), + Err(e) => Some(format!("{e}")) + } +}); + +// Replace the node with unique_id by None +// Update connected nodes as well so nothing target the removed node anymore +// Errors if no node can be found with unique_id +fn remove_node(unique_id: &str) -> Result { + let unique_id = match unique_id.parse::() { + Ok(id) => id, + Err(e) => return Err(DeleteNodeError::ParsingError(e)), + }; + + let node_to_delete = match get_node(unique_id) { + Some(Some(node)) => node, + _ => return Err(DeleteNodeError::NodeNotFound), + }; + + for index in node_to_delete.connected_nodes_id.iter() { + NODES.with(|nodes_ref| { + if let Some(Some(node)) = nodes_ref.borrow_mut().get_mut(*index) { + Rc::get_mut(node) + .unwrap() + .connected_nodes_id + .retain(|index| index != &node_to_delete.unique_id); + } + }) + } + + null_out_node(unique_id); + + Ok("1".to_string()) +} + +#[derive(Error, Debug)] +enum AstarError { + #[error("Starting node not found")] + StartNodeNotFound, + #[error("Goal node not found")] + GoalNodeNotFound, + #[error("No path found")] + NoPath, +} + +byond_fn!(fn generate_path_astar(start_node_id, goal_node_id) { + if let (Ok(start_node_id), Ok(goal_node_id)) = (start_node_id.parse::(), goal_node_id.parse::()) { + match generate_path(start_node_id, goal_node_id) { + Ok(vector) => Some(match serde_json::to_string(&vector) { + Ok(s) => s, + Err(_) => "Cannot serialize path".to_string(), + }), + Err(e) => Some(format!("{e}")) + } + } + else { + Some("Invalid arguments".to_string()) + } +}); + +// Compute the shortest path between start node and goal node using A* +fn generate_path(start_node_id: usize, goal_node_id: usize) -> Result, AstarError> { + let start_node = match get_node(start_node_id) { + Some(Some(node)) => node, + _ => return Err(AstarError::StartNodeNotFound), + }; + + let goal_node = match get_node(goal_node_id) { + Some(Some(node)) => node, + _ => return Err(AstarError::GoalNodeNotFound), + }; + + if goal_node.z != start_node.z { + return Err(AstarError::NoPath); + } + + // Compute the shortest path between start node and goal node using A* + let path = astar( + &start_node, + |node| node.successors(), + |node| node.distance(&goal_node), + |node| node.distance(&goal_node) == 0, + ); + + // Extract a vector of node container from the path variable. Errors if no path was found + let path = match path { + None => return Err(AstarError::NoPath), + Some(path) => path.0, + }; + + // Map every nodecontainer to the unique id of its node, so it can be sent to byond + Ok(path + .into_iter() + .map(|node| node.unique_id) + .rev() // Reverse iterator so it is easy to pop the list in byond + .collect()) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_register() { + let json = std::fs::read_to_string("tests/rsc/ai_nodes_info.json").unwrap(); + assert!(register_nodes(&json).is_ok()); + assert!(NODES.with(|nodes_ref| nodes_ref.borrow().len() != 0)) + } + + #[test] + fn test_add_node() { + let json = std::fs::read_to_string("tests/rsc/ai_nodes_info.json").unwrap(); + assert!(register_nodes(&json).is_ok()); + let mut node_to_add = NODES + .with(|nodes_ref| nodes_ref.borrow().get(18).cloned()) + .unwrap() + .unwrap() + .as_ref() + .clone(); + let initial_len = NODES.with(|nodes_ref| nodes_ref.borrow().len()); + + node_to_add.unique_id = initial_len; + assert!(add_node(&serde_json::to_string(&node_to_add).unwrap()).is_ok()); + assert!(initial_len == NODES.with(|nodes_ref| nodes_ref.borrow().len() - 1)); + } + + #[test] + fn test_remove_node() { + let json = std::fs::read_to_string("tests/rsc/ai_nodes_info.json").unwrap(); + assert!(register_nodes(&json).is_ok()); + + assert!(remove_node("11").is_ok()); + assert!(NODES.with(|nodes_ref| nodes_ref.borrow().get(11).unwrap().is_none())) + } + + #[test] + fn test_pathfinding() { + let json = std::fs::read_to_string("tests/rsc/ai_nodes_info.json").unwrap(); + assert!(register_nodes(&json).is_ok()); + assert!(generate_path(10, 25).is_ok()); + } +} diff --git a/tests/rsc/ai_nodes_info.json b/tests/rsc/ai_nodes_info.json new file mode 100644 index 00000000..533f1d5d --- /dev/null +++ b/tests/rsc/ai_nodes_info.json @@ -0,0 +1 @@ +[{"unique_id":0,"x":64,"y":12,"z":1,"connected_nodes_id":[3]},{"unique_id":1,"x":57,"y":13,"z":1,"connected_nodes_id":[2,9]},{"unique_id":2,"x":62,"y":13,"z":1,"connected_nodes_id":[1,3,10]},{"unique_id":3,"x":65,"y":13,"z":1,"connected_nodes_id":[0,2,7]},{"unique_id":4,"x":73,"y":14,"z":1,"connected_nodes_id":[5,8,18]},{"unique_id":5,"x":78,"y":14,"z":1,"connected_nodes_id":[4,6,12]},{"unique_id":6,"x":85,"y":14,"z":1,"connected_nodes_id":[5,14]},{"unique_id":7,"x":65,"y":15,"z":1,"connected_nodes_id":[3,8,16]},{"unique_id":8,"x":72,"y":15,"z":1,"connected_nodes_id":[4,7]},{"unique_id":9,"x":57,"y":17,"z":1,"connected_nodes_id":[1]},{"unique_id":10,"x":62,"y":18,"z":1,"connected_nodes_id":[2,15]},{"unique_id":11,"x":74,"y":18,"z":1,"connected_nodes_id":[12,18]},{"unique_id":12,"x":78,"y":18,"z":1,"connected_nodes_id":[5,11,13,29]},{"unique_id":13,"x":81,"y":18,"z":1,"connected_nodes_id":[12,14,30]},{"unique_id":14,"x":85,"y":18,"z":1,"connected_nodes_id":[6,13,41]},{"unique_id":15,"x":61,"y":19,"z":1,"connected_nodes_id":[10,16,35]},{"unique_id":16,"x":65,"y":19,"z":1,"connected_nodes_id":[7,15,17]},{"unique_id":17,"x":70,"y":19,"z":1,"connected_nodes_id":[16,18,25]},{"unique_id":18,"x":73,"y":19,"z":1,"connected_nodes_id":[4,11,17]},{"unique_id":19,"x":99,"y":19,"z":1,"connected_nodes_id":[42]},{"unique_id":20,"x":47,"y":21,"z":1,"connected_nodes_id":[21,32]},{"unique_id":21,"x":49,"y":21,"z":1,"connected_nodes_id":[20,33]},{"unique_id":22,"x":54,"y":21,"z":1,"connected_nodes_id":[23,28]},{"unique_id":23,"x":58,"y":21,"z":1,"connected_nodes_id":[22,45]},{"unique_id":24,"x":65,"y":21,"z":1,"connected_nodes_id":[25]},{"unique_id":25,"x":70,"y":21,"z":1,"connected_nodes_id":[17,24,26,38]},{"unique_id":26,"x":74,"y":21,"z":1,"connected_nodes_id":[25,39]},{"unique_id":27,"x":50,"y":24,"z":1,"connected_nodes_id":[28,33]},{"unique_id":28,"x":54,"y":24,"z":1,"connected_nodes_id":[22,27,34]},{"unique_id":29,"x":78,"y":24,"z":1,"connected_nodes_id":[12,30,40]},{"unique_id":30,"x":81,"y":24,"z":1,"connected_nodes_id":[13,29]},{"unique_id":31,"x":45,"y":25,"z":1,"connected_nodes_id":[32]},{"unique_id":32,"x":47,"y":25,"z":1,"connected_nodes_id":[20,31,33]},{"unique_id":33,"x":49,"y":25,"z":1,"connected_nodes_id":[21,27,32,48]},{"unique_id":34,"x":55,"y":25,"z":1,"connected_nodes_id":[28,44]},{"unique_id":35,"x":61,"y":26,"z":1,"connected_nodes_id":[15,46]},{"unique_id":36,"x":65,"y":26,"z":1,"connected_nodes_id":[37]},{"unique_id":37,"x":68,"y":26,"z":1,"connected_nodes_id":[36,38,61]},{"unique_id":38,"x":70,"y":26,"z":1,"connected_nodes_id":[25,37,39]},{"unique_id":39,"x":74,"y":26,"z":1,"connected_nodes_id":[26,38,40,62]},{"unique_id":40,"x":78,"y":26,"z":1,"connected_nodes_id":[29,39,57]},{"unique_id":41,"x":85,"y":26,"z":1,"connected_nodes_id":[14,42,59]},{"unique_id":42,"x":99,"y":26,"z":1,"connected_nodes_id":[19,41,66]},{"unique_id":43,"x":52,"y":27,"z":1,"connected_nodes_id":[53]},{"unique_id":44,"x":55,"y":27,"z":1,"connected_nodes_id":[34,45]},{"unique_id":45,"x":58,"y":27,"z":1,"connected_nodes_id":[23,44,46]},{"unique_id":46,"x":60,"y":27,"z":1,"connected_nodes_id":[35,45,51]},{"unique_id":47,"x":42,"y":28,"z":1,"connected_nodes_id":[48,49]},{"unique_id":48,"x":49,"y":28,"z":1,"connected_nodes_id":[33,47,52]},{"unique_id":49,"x":42,"y":31,"z":1,"connected_nodes_id":[47,50,60]},{"unique_id":50,"x":45,"y":31,"z":1,"connected_nodes_id":[49,63]},{"unique_id":51,"x":60,"y":31,"z":1,"connected_nodes_id":[46,54]},{"unique_id":52,"x":49,"y":32,"z":1,"connected_nodes_id":[48,69]},{"unique_id":53,"x":52,"y":32,"z":1,"connected_nodes_id":[43,54]},{"unique_id":54,"x":59,"y":32,"z":1,"connected_nodes_id":[51,53,70]},{"unique_id":55,"x":64,"y":32,"z":1,"connected_nodes_id":[56,72]},{"unique_id":56,"x":67,"y":32,"z":1,"connected_nodes_id":[55,61]},{"unique_id":57,"x":78,"y":32,"z":1,"connected_nodes_id":[40,58,75]},{"unique_id":58,"x":81,"y":32,"z":1,"connected_nodes_id":[57,59,76]},{"unique_id":59,"x":85,"y":32,"z":1,"connected_nodes_id":[41,58,77]},{"unique_id":60,"x":42,"y":33,"z":1,"connected_nodes_id":[49]},{"unique_id":61,"x":68,"y":33,"z":1,"connected_nodes_id":[37,56,62]},{"unique_id":62,"x":74,"y":33,"z":1,"connected_nodes_id":[39,61,68]},{"unique_id":63,"x":45,"y":34,"z":1,"connected_nodes_id":[50]},{"unique_id":64,"x":91,"y":34,"z":1,"connected_nodes_id":[65,78]},{"unique_id":65,"x":96,"y":34,"z":1,"connected_nodes_id":[64,66,79]},{"unique_id":66,"x":99,"y":34,"z":1,"connected_nodes_id":[42,65,67]},{"unique_id":67,"x":109,"y":34,"z":1,"connected_nodes_id":[66,94]},{"unique_id":68,"x":74,"y":37,"z":1,"connected_nodes_id":[62,74]},{"unique_id":69,"x":49,"y":38,"z":1,"connected_nodes_id":[52,70]},{"unique_id":70,"x":59,"y":38,"z":1,"connected_nodes_id":[54,69,71,80]},{"unique_id":71,"x":61,"y":38,"z":1,"connected_nodes_id":[70,72,82]},{"unique_id":72,"x":64,"y":38,"z":1,"connected_nodes_id":[55,71,73]},{"unique_id":73,"x":66,"y":38,"z":1,"connected_nodes_id":[72,74,96]},{"unique_id":74,"x":73,"y":38,"z":1,"connected_nodes_id":[68,73,75,97]},{"unique_id":75,"x":78,"y":38,"z":1,"connected_nodes_id":[57,74,76]},{"unique_id":76,"x":81,"y":38,"z":1,"connected_nodes_id":[58,75,77,88]},{"unique_id":77,"x":85,"y":38,"z":1,"connected_nodes_id":[59,76,78]},{"unique_id":78,"x":91,"y":38,"z":1,"connected_nodes_id":[64,77,79,81]},{"unique_id":79,"x":96,"y":38,"z":1,"connected_nodes_id":[65,78,92]},{"unique_id":80,"x":58,"y":39,"z":1,"connected_nodes_id":[70,99]},{"unique_id":81,"x":92,"y":39,"z":1,"connected_nodes_id":[78,84]},{"unique_id":82,"x":61,"y":40,"z":1,"connected_nodes_id":[71,87]},{"unique_id":83,"x":87,"y":40,"z":1,"connected_nodes_id":[84,89]},{"unique_id":84,"x":93,"y":40,"z":1,"connected_nodes_id":[81,83,113]},{"unique_id":85,"x":51,"y":41,"z":1,"connected_nodes_id":[86,90]},{"unique_id":86,"x":54,"y":41,"z":1,"connected_nodes_id":[85,143]},{"unique_id":87,"x":62,"y":41,"z":1,"connected_nodes_id":[82,100]},{"unique_id":88,"x":81,"y":41,"z":1,"connected_nodes_id":[76,89,91]},{"unique_id":89,"x":86,"y":41,"z":1,"connected_nodes_id":[83,88]},{"unique_id":90,"x":50,"y":42,"z":1,"connected_nodes_id":[85,106]},{"unique_id":91,"x":80,"y":42,"z":1,"connected_nodes_id":[88,98,105]},{"unique_id":92,"x":96,"y":42,"z":1,"connected_nodes_id":[79,93,108]},{"unique_id":93,"x":103,"y":42,"z":1,"connected_nodes_id":[92,94]},{"unique_id":94,"x":109,"y":42,"z":1,"connected_nodes_id":[67,93,95,110]},{"unique_id":95,"x":114,"y":42,"z":1,"connected_nodes_id":[94,111]},{"unique_id":96,"x":66,"y":43,"z":1,"connected_nodes_id":[73,97]},{"unique_id":97,"x":73,"y":43,"z":1,"connected_nodes_id":[74,96,98,104]},{"unique_id":98,"x":79,"y":43,"z":1,"connected_nodes_id":[91,97]},{"unique_id":99,"x":58,"y":45,"z":1,"connected_nodes_id":[80,100,101,126]},{"unique_id":100,"x":62,"y":45,"z":1,"connected_nodes_id":[87,99,102]},{"unique_id":101,"x":57,"y":46,"z":1,"connected_nodes_id":[99,107]},{"unique_id":102,"x":63,"y":46,"z":1,"connected_nodes_id":[100,103]},{"unique_id":103,"x":71,"y":46,"z":1,"connected_nodes_id":[102,104,155]},{"unique_id":104,"x":73,"y":46,"z":1,"connected_nodes_id":[97,103,105]},{"unique_id":105,"x":80,"y":46,"z":1,"connected_nodes_id":[91,104,117]},{"unique_id":106,"x":50,"y":47,"z":1,"connected_nodes_id":[90,107,142]},{"unique_id":107,"x":56,"y":47,"z":1,"connected_nodes_id":[101,106]},{"unique_id":108,"x":96,"y":47,"z":1,"connected_nodes_id":[92,109,145]},{"unique_id":109,"x":102,"y":47,"z":1,"connected_nodes_id":[108,110]},{"unique_id":110,"x":109,"y":47,"z":1,"connected_nodes_id":[94,109,111,125]},{"unique_id":111,"x":114,"y":47,"z":1,"connected_nodes_id":[95,110,148]},{"unique_id":112,"x":88,"y":48,"z":1,"connected_nodes_id":[113,119]},{"unique_id":113,"x":93,"y":48,"z":1,"connected_nodes_id":[84,112,137]},{"unique_id":114,"x":65,"y":49,"z":1,"connected_nodes_id":[129]},{"unique_id":115,"x":68,"y":49,"z":1,"connected_nodes_id":[130]},{"unique_id":116,"x":75,"y":49,"z":1,"connected_nodes_id":[117,157]},{"unique_id":117,"x":80,"y":49,"z":1,"connected_nodes_id":[105,116,118,158]},{"unique_id":118,"x":84,"y":49,"z":1,"connected_nodes_id":[117,119,135]},{"unique_id":119,"x":87,"y":49,"z":1,"connected_nodes_id":[112,118,136]},{"unique_id":120,"x":99,"y":49,"z":1,"connected_nodes_id":[121,153]},{"unique_id":121,"x":102,"y":49,"z":1,"connected_nodes_id":[120,122,123]},{"unique_id":122,"x":106,"y":49,"z":1,"connected_nodes_id":[121,124]},{"unique_id":123,"x":103,"y":50,"z":1,"connected_nodes_id":[121,131]},{"unique_id":124,"x":107,"y":50,"z":1,"connected_nodes_id":[122,125]},{"unique_id":125,"x":109,"y":50,"z":1,"connected_nodes_id":[110,124]},{"unique_id":126,"x":58,"y":51,"z":1,"connected_nodes_id":[99,127,165]},{"unique_id":127,"x":60,"y":51,"z":1,"connected_nodes_id":[126,128,149]},{"unique_id":128,"x":63,"y":51,"z":1,"connected_nodes_id":[127,129,150]},{"unique_id":129,"x":65,"y":51,"z":1,"connected_nodes_id":[114,128,130,151]},{"unique_id":130,"x":68,"y":51,"z":1,"connected_nodes_id":[115,129,152]},{"unique_id":131,"x":102,"y":51,"z":1,"connected_nodes_id":[123,147]},{"unique_id":132,"x":29,"y":52,"z":1,"connected_nodes_id":[167]},{"unique_id":133,"x":45,"y":52,"z":1,"connected_nodes_id":[134,140]},{"unique_id":134,"x":47,"y":52,"z":1,"connected_nodes_id":[133,141,156]},{"unique_id":135,"x":84,"y":52,"z":1,"connected_nodes_id":[118,136,161]},{"unique_id":136,"x":87,"y":52,"z":1,"connected_nodes_id":[119,135,137,162]},{"unique_id":137,"x":93,"y":52,"z":1,"connected_nodes_id":[113,136,144,163]},{"unique_id":138,"x":34,"y":53,"z":1,"connected_nodes_id":[139,168]},{"unique_id":139,"x":39,"y":53,"z":1,"connected_nodes_id":[138,140,176]},{"unique_id":140,"x":44,"y":53,"z":1,"connected_nodes_id":[133,139,141,169]},{"unique_id":141,"x":48,"y":53,"z":1,"connected_nodes_id":[134,140,142]},{"unique_id":142,"x":50,"y":53,"z":1,"connected_nodes_id":[106,141,143]},{"unique_id":143,"x":54,"y":53,"z":1,"connected_nodes_id":[86,142]},{"unique_id":144,"x":92,"y":53,"z":1,"connected_nodes_id":[137,145]},{"unique_id":145,"x":96,"y":53,"z":1,"connected_nodes_id":[108,144,146,172]},{"unique_id":146,"x":98,"y":53,"z":1,"connected_nodes_id":[145,153]},{"unique_id":147,"x":102,"y":53,"z":1,"connected_nodes_id":[131,154]},{"unique_id":148,"x":114,"y":53,"z":1,"connected_nodes_id":[111]},{"unique_id":149,"x":60,"y":54,"z":1,"connected_nodes_id":[127,150]},{"unique_id":150,"x":63,"y":54,"z":1,"connected_nodes_id":[128,149]},{"unique_id":151,"x":65,"y":54,"z":1,"connected_nodes_id":[129]},{"unique_id":152,"x":68,"y":54,"z":1,"connected_nodes_id":[130]},{"unique_id":153,"x":99,"y":54,"z":1,"connected_nodes_id":[120,146,154]},{"unique_id":154,"x":101,"y":54,"z":1,"connected_nodes_id":[147,153,173]},{"unique_id":155,"x":71,"y":55,"z":1,"connected_nodes_id":[103,179]},{"unique_id":156,"x":47,"y":56,"z":1,"connected_nodes_id":[134,160]},{"unique_id":157,"x":75,"y":56,"z":1,"connected_nodes_id":[116,158,180]},{"unique_id":158,"x":80,"y":56,"z":1,"connected_nodes_id":[117,157,159,186]},{"unique_id":159,"x":83,"y":56,"z":1,"connected_nodes_id":[158,161]},{"unique_id":160,"x":48,"y":57,"z":1,"connected_nodes_id":[156,164]},{"unique_id":161,"x":84,"y":57,"z":1,"connected_nodes_id":[135,159,162]},{"unique_id":162,"x":87,"y":57,"z":1,"connected_nodes_id":[136,161,163]},{"unique_id":163,"x":93,"y":57,"z":1,"connected_nodes_id":[137,162,182]},{"unique_id":164,"x":49,"y":58,"z":1,"connected_nodes_id":[160,165]},{"unique_id":165,"x":58,"y":58,"z":1,"connected_nodes_id":[126,164,166]},{"unique_id":166,"x":61,"y":58,"z":1,"connected_nodes_id":[165,170]},{"unique_id":167,"x":29,"y":59,"z":1,"connected_nodes_id":[132,168]},{"unique_id":168,"x":34,"y":59,"z":1,"connected_nodes_id":[138,167,175]},{"unique_id":169,"x":44,"y":59,"z":1,"connected_nodes_id":[140,177]},{"unique_id":170,"x":61,"y":60,"z":1,"connected_nodes_id":[166,171,189]},{"unique_id":171,"x":68,"y":60,"z":1,"connected_nodes_id":[170,178]},{"unique_id":172,"x":96,"y":60,"z":1,"connected_nodes_id":[145,173,192]},{"unique_id":173,"x":101,"y":60,"z":1,"connected_nodes_id":[154,172,174]},{"unique_id":174,"x":104,"y":60,"z":1,"connected_nodes_id":[173]},{"unique_id":175,"x":34,"y":61,"z":1,"connected_nodes_id":[168,176]},{"unique_id":176,"x":39,"y":61,"z":1,"connected_nodes_id":[139,175,177,183]},{"unique_id":177,"x":44,"y":61,"z":1,"connected_nodes_id":[169,176]},{"unique_id":178,"x":69,"y":61,"z":1,"connected_nodes_id":[171,179]},{"unique_id":179,"x":71,"y":61,"z":1,"connected_nodes_id":[155,178,180]},{"unique_id":180,"x":75,"y":61,"z":1,"connected_nodes_id":[157,179,185]},{"unique_id":181,"x":86,"y":61,"z":1,"connected_nodes_id":[182,191]},{"unique_id":182,"x":93,"y":61,"z":1,"connected_nodes_id":[163,181]},{"unique_id":183,"x":39,"y":63,"z":1,"connected_nodes_id":[176]},{"unique_id":184,"x":72,"y":63,"z":1,"connected_nodes_id":[203]},{"unique_id":185,"x":75,"y":63,"z":1,"connected_nodes_id":[180,186]},{"unique_id":186,"x":80,"y":63,"z":1,"connected_nodes_id":[158,185,190,205]},{"unique_id":187,"x":90,"y":63,"z":1,"connected_nodes_id":[188,207]},{"unique_id":188,"x":92,"y":63,"z":1,"connected_nodes_id":[187]},{"unique_id":189,"x":61,"y":64,"z":1,"connected_nodes_id":[170,200]},{"unique_id":190,"x":81,"y":64,"z":1,"connected_nodes_id":[186,191,227]},{"unique_id":191,"x":86,"y":64,"z":1,"connected_nodes_id":[181,190]},{"unique_id":192,"x":96,"y":64,"z":1,"connected_nodes_id":[172,193,209]},{"unique_id":193,"x":103,"y":64,"z":1,"connected_nodes_id":[192,194,199]},{"unique_id":194,"x":108,"y":64,"z":1,"connected_nodes_id":[193,195]},{"unique_id":195,"x":111,"y":64,"z":1,"connected_nodes_id":[194]},{"unique_id":196,"x":64,"y":66,"z":1,"connected_nodes_id":[197,201]},{"unique_id":197,"x":67,"y":66,"z":1,"connected_nodes_id":[196]},{"unique_id":198,"x":99,"y":68,"z":1,"connected_nodes_id":[199,219]},{"unique_id":199,"x":103,"y":68,"z":1,"connected_nodes_id":[193,198]},{"unique_id":200,"x":61,"y":69,"z":1,"connected_nodes_id":[189,201,215]},{"unique_id":201,"x":64,"y":69,"z":1,"connected_nodes_id":[196,200,202]},{"unique_id":202,"x":66,"y":69,"z":1,"connected_nodes_id":[201,203,216]},{"unique_id":203,"x":72,"y":69,"z":1,"connected_nodes_id":[184,202,204]},{"unique_id":204,"x":76,"y":69,"z":1,"connected_nodes_id":[203,205,211]},{"unique_id":205,"x":80,"y":69,"z":1,"connected_nodes_id":[186,204,206]},{"unique_id":206,"x":87,"y":69,"z":1,"connected_nodes_id":[205,207,221]},{"unique_id":207,"x":90,"y":69,"z":1,"connected_nodes_id":[187,206,208,217]},{"unique_id":208,"x":95,"y":69,"z":1,"connected_nodes_id":[207,209]},{"unique_id":209,"x":96,"y":70,"z":1,"connected_nodes_id":[192,208,214]},{"unique_id":210,"x":73,"y":73,"z":1,"connected_nodes_id":[211,213]},{"unique_id":211,"x":76,"y":73,"z":1,"connected_nodes_id":[204,210,226]},{"unique_id":212,"x":67,"y":74,"z":1,"connected_nodes_id":[213,216]},{"unique_id":213,"x":72,"y":74,"z":1,"connected_nodes_id":[210,212,225]},{"unique_id":214,"x":96,"y":74,"z":1,"connected_nodes_id":[209,230]},{"unique_id":215,"x":61,"y":75,"z":1,"connected_nodes_id":[200,216,222]},{"unique_id":216,"x":66,"y":75,"z":1,"connected_nodes_id":[202,212,215]},{"unique_id":217,"x":90,"y":75,"z":1,"connected_nodes_id":[207,218,228]},{"unique_id":218,"x":94,"y":75,"z":1,"connected_nodes_id":[217]},{"unique_id":219,"x":99,"y":75,"z":1,"connected_nodes_id":[198,220]},{"unique_id":220,"x":102,"y":75,"z":1,"connected_nodes_id":[219]},{"unique_id":221,"x":87,"y":76,"z":1,"connected_nodes_id":[206,234]},{"unique_id":222,"x":61,"y":77,"z":1,"connected_nodes_id":[215,223]},{"unique_id":223,"x":64,"y":77,"z":1,"connected_nodes_id":[222]},{"unique_id":224,"x":68,"y":78,"z":1,"connected_nodes_id":[225]},{"unique_id":225,"x":72,"y":78,"z":1,"connected_nodes_id":[213,224]},{"unique_id":226,"x":76,"y":78,"z":1,"connected_nodes_id":[211,227,232]},{"unique_id":227,"x":81,"y":78,"z":1,"connected_nodes_id":[190,226,233]},{"unique_id":228,"x":90,"y":78,"z":1,"connected_nodes_id":[217,229]},{"unique_id":229,"x":94,"y":78,"z":1,"connected_nodes_id":[228]},{"unique_id":230,"x":96,"y":79,"z":1,"connected_nodes_id":[214,231]},{"unique_id":231,"x":99,"y":79,"z":1,"connected_nodes_id":[230]},{"unique_id":232,"x":76,"y":82,"z":1,"connected_nodes_id":[226,233]},{"unique_id":233,"x":81,"y":82,"z":1,"connected_nodes_id":[227,232,234]},{"unique_id":234,"x":87,"y":82,"z":1,"connected_nodes_id":[221,233,235]},{"unique_id":235,"x":86,"y":83,"z":1,"connected_nodes_id":[234]},{"unique_id":236,"x":7,"y":132,"z":2,"connected_nodes_id":[237,240]},{"unique_id":237,"x":7,"y":125,"z":2,"connected_nodes_id":[236,238]},{"unique_id":238,"x":7,"y":119,"z":2,"connected_nodes_id":[237,239]},{"unique_id":239,"x":8,"y":118,"z":2,"connected_nodes_id":[238,832]},{"unique_id":240,"x":9,"y":132,"z":2,"connected_nodes_id":[236,241,741]},{"unique_id":241,"x":12,"y":132,"z":2,"connected_nodes_id":[240,242]},{"unique_id":242,"x":12,"y":125,"z":2,"connected_nodes_id":[241,243]},{"unique_id":243,"x":12,"y":120,"z":2,"connected_nodes_id":[242,244,247]},{"unique_id":244,"x":12,"y":116,"z":2,"connected_nodes_id":[243,833]},{"unique_id":245,"x":13,"y":165,"z":2,"connected_nodes_id":[250,791]},{"unique_id":246,"x":20,"y":124,"z":2,"connected_nodes_id":[254]},{"unique_id":247,"x":20,"y":120,"z":2,"connected_nodes_id":[243,256]},{"unique_id":248,"x":21,"y":137,"z":2,"connected_nodes_id":[249]},{"unique_id":249,"x":21,"y":130,"z":2,"connected_nodes_id":[248,252]},{"unique_id":250,"x":23,"y":165,"z":2,"connected_nodes_id":[245,258]},{"unique_id":251,"x":23,"y":117,"z":2,"connected_nodes_id":[257]},{"unique_id":252,"x":26,"y":130,"z":2,"connected_nodes_id":[249,253]},{"unique_id":253,"x":26,"y":127,"z":2,"connected_nodes_id":[252,254,260]},{"unique_id":254,"x":26,"y":124,"z":2,"connected_nodes_id":[246,253,255]},{"unique_id":255,"x":27,"y":123,"z":2,"connected_nodes_id":[254,256,261]},{"unique_id":256,"x":27,"y":120,"z":2,"connected_nodes_id":[247,255,257,262]},{"unique_id":257,"x":27,"y":117,"z":2,"connected_nodes_id":[251,256,263]},{"unique_id":258,"x":29,"y":165,"z":2,"connected_nodes_id":[250]},{"unique_id":259,"x":31,"y":133,"z":2,"connected_nodes_id":[260]},{"unique_id":260,"x":31,"y":127,"z":2,"connected_nodes_id":[253,259]},{"unique_id":261,"x":32,"y":123,"z":2,"connected_nodes_id":[255,262]},{"unique_id":262,"x":32,"y":120,"z":2,"connected_nodes_id":[256,261,263]},{"unique_id":263,"x":32,"y":117,"z":2,"connected_nodes_id":[257,262]},{"unique_id":264,"x":37,"y":140,"z":2,"connected_nodes_id":[265]},{"unique_id":265,"x":37,"y":137,"z":2,"connected_nodes_id":[264,266,276]},{"unique_id":266,"x":37,"y":133,"z":2,"connected_nodes_id":[265,267]},{"unique_id":267,"x":37,"y":126,"z":2,"connected_nodes_id":[266,268]},{"unique_id":268,"x":38,"y":125,"z":2,"connected_nodes_id":[267,269,930]},{"unique_id":269,"x":38,"y":117,"z":2,"connected_nodes_id":[268,278]},{"unique_id":270,"x":42,"y":172,"z":2,"connected_nodes_id":[271,284,862]},{"unique_id":271,"x":42,"y":163,"z":2,"connected_nodes_id":[270,793]},{"unique_id":272,"x":45,"y":85,"z":2,"connected_nodes_id":[273,803]},{"unique_id":273,"x":45,"y":79,"z":2,"connected_nodes_id":[272,274,282,798]},{"unique_id":274,"x":45,"y":73,"z":2,"connected_nodes_id":[273,286,861]},{"unique_id":275,"x":45,"y":47,"z":2,"connected_nodes_id":[834,967]},{"unique_id":276,"x":46,"y":137,"z":2,"connected_nodes_id":[265,293]},{"unique_id":277,"x":46,"y":121,"z":2,"connected_nodes_id":[288,931]},{"unique_id":278,"x":46,"y":117,"z":2,"connected_nodes_id":[269,279,289]},{"unique_id":279,"x":46,"y":113,"z":2,"connected_nodes_id":[278,1000]},{"unique_id":280,"x":46,"y":103,"z":2,"connected_nodes_id":[281,821,995]},{"unique_id":281,"x":46,"y":97,"z":2,"connected_nodes_id":[280,989]},{"unique_id":282,"x":46,"y":78,"z":2,"connected_nodes_id":[273,296]},{"unique_id":283,"x":47,"y":167,"z":2,"connected_nodes_id":[285,787]},{"unique_id":284,"x":48,"y":172,"z":2,"connected_nodes_id":[270,285,299]},{"unique_id":285,"x":48,"y":168,"z":2,"connected_nodes_id":[283,284,784]},{"unique_id":286,"x":49,"y":73,"z":2,"connected_nodes_id":[274,287,297]},{"unique_id":287,"x":49,"y":66,"z":2,"connected_nodes_id":[286]},{"unique_id":288,"x":50,"y":121,"z":2,"connected_nodes_id":[277,289,927]},{"unique_id":289,"x":50,"y":117,"z":2,"connected_nodes_id":[278,288,295,1000]},{"unique_id":290,"x":52,"y":89,"z":2,"connected_nodes_id":[291,805,989]},{"unique_id":291,"x":52,"y":84,"z":2,"connected_nodes_id":[290,292,306]},{"unique_id":292,"x":52,"y":82,"z":2,"connected_nodes_id":[291,307]},{"unique_id":293,"x":54,"y":137,"z":2,"connected_nodes_id":[276,294,939]},{"unique_id":294,"x":55,"y":138,"z":2,"connected_nodes_id":[293,304,310,751]},{"unique_id":295,"x":55,"y":117,"z":2,"connected_nodes_id":[289,305,312]},{"unique_id":296,"x":55,"y":78,"z":2,"connected_nodes_id":[282,1051]},{"unique_id":297,"x":55,"y":73,"z":2,"connected_nodes_id":[286,298,1046]},{"unique_id":298,"x":55,"y":66,"z":2,"connected_nodes_id":[297,983,1041]},{"unique_id":299,"x":56,"y":172,"z":2,"connected_nodes_id":[284,300,313]},{"unique_id":300,"x":56,"y":166,"z":2,"connected_nodes_id":[299,301]},{"unique_id":301,"x":56,"y":158,"z":2,"connected_nodes_id":[300,302,779]},{"unique_id":302,"x":56,"y":152,"z":2,"connected_nodes_id":[301,303,771,1020]},{"unique_id":303,"x":56,"y":145,"z":2,"connected_nodes_id":[302,304,760]},{"unique_id":304,"x":56,"y":139,"z":2,"connected_nodes_id":[294,303]},{"unique_id":305,"x":56,"y":116,"z":2,"connected_nodes_id":[295,998]},{"unique_id":306,"x":58,"y":84,"z":2,"connected_nodes_id":[291,307,309]},{"unique_id":307,"x":58,"y":82,"z":2,"connected_nodes_id":[292,306,1052]},{"unique_id":308,"x":59,"y":94,"z":2,"connected_nodes_id":[309,311,990]},{"unique_id":309,"x":59,"y":85,"z":2,"connected_nodes_id":[306,308,1056]},{"unique_id":310,"x":61,"y":138,"z":2,"connected_nodes_id":[294,332]},{"unique_id":311,"x":61,"y":94,"z":2,"connected_nodes_id":[308,1056]},{"unique_id":312,"x":63,"y":117,"z":2,"connected_nodes_id":[295,314,1001]},{"unique_id":313,"x":64,"y":172,"z":2,"connected_nodes_id":[299,316]},{"unique_id":314,"x":64,"y":118,"z":2,"connected_nodes_id":[312,323]},{"unique_id":315,"x":64,"y":91,"z":2,"connected_nodes_id":[320,1063]},{"unique_id":316,"x":65,"y":171,"z":2,"connected_nodes_id":[313,317]},{"unique_id":317,"x":66,"y":170,"z":2,"connected_nodes_id":[316,321,1025]},{"unique_id":318,"x":66,"y":114,"z":2,"connected_nodes_id":[1002]},{"unique_id":319,"x":66,"y":94,"z":2,"connected_nodes_id":[320,328]},{"unique_id":320,"x":66,"y":91,"z":2,"connected_nodes_id":[315,319]},{"unique_id":321,"x":67,"y":169,"z":2,"connected_nodes_id":[317,322,330,1032]},{"unique_id":322,"x":68,"y":168,"z":2,"connected_nodes_id":[321,1034]},{"unique_id":323,"x":69,"y":118,"z":2,"connected_nodes_id":[314,324]},{"unique_id":324,"x":69,"y":115,"z":2,"connected_nodes_id":[323,325,336]},{"unique_id":325,"x":69,"y":108,"z":2,"connected_nodes_id":[324,999]},{"unique_id":326,"x":69,"y":100,"z":2,"connected_nodes_id":[327,991]},{"unique_id":327,"x":69,"y":96,"z":2,"connected_nodes_id":[326]},{"unique_id":328,"x":70,"y":94,"z":2,"connected_nodes_id":[319,331]},{"unique_id":329,"x":71,"y":172,"z":2,"connected_nodes_id":[330]},{"unique_id":330,"x":71,"y":169,"z":2,"connected_nodes_id":[321,329,340]},{"unique_id":331,"x":71,"y":93,"z":2,"connected_nodes_id":[328,341,1064]},{"unique_id":332,"x":72,"y":138,"z":2,"connected_nodes_id":[310,333]},{"unique_id":333,"x":73,"y":137,"z":2,"connected_nodes_id":[332,334,1085]},{"unique_id":334,"x":73,"y":132,"z":2,"connected_nodes_id":[333,335]},{"unique_id":335,"x":73,"y":123,"z":2,"connected_nodes_id":[334,336,929]},{"unique_id":336,"x":73,"y":115,"z":2,"connected_nodes_id":[324,335,337]},{"unique_id":337,"x":73,"y":109,"z":2,"connected_nodes_id":[336,338,343]},{"unique_id":338,"x":73,"y":103,"z":2,"connected_nodes_id":[337,339,997]},{"unique_id":339,"x":73,"y":96,"z":2,"connected_nodes_id":[338,344]},{"unique_id":340,"x":81,"y":169,"z":2,"connected_nodes_id":[330,347]},{"unique_id":341,"x":81,"y":93,"z":2,"connected_nodes_id":[331,1061]},{"unique_id":342,"x":83,"y":63,"z":2,"connected_nodes_id":[348,987]},{"unique_id":343,"x":85,"y":109,"z":2,"connected_nodes_id":[337,344,361]},{"unique_id":344,"x":85,"y":96,"z":2,"connected_nodes_id":[339,1086,362,1062]},{"unique_id":345,"x":87,"y":137,"z":2,"connected_nodes_id":[1085,355,1013]},{"unique_id":346,"x":89,"y":173,"z":2,"connected_nodes_id":[347,359]},{"unique_id":347,"x":89,"y":169,"z":2,"connected_nodes_id":[340,346,349]},{"unique_id":348,"x":89,"y":63,"z":2,"connected_nodes_id":[342,1045]},{"unique_id":349,"x":90,"y":169,"z":2,"connected_nodes_id":[347,350,360]},{"unique_id":350,"x":90,"y":162,"z":2,"connected_nodes_id":[349,351,385]},{"unique_id":351,"x":91,"y":161,"z":2,"connected_nodes_id":[350,352]},{"unique_id":352,"x":91,"y":152,"z":2,"connected_nodes_id":[351,353]},{"unique_id":353,"x":91,"y":147,"z":2,"connected_nodes_id":[352,354,1013]},{"unique_id":354,"x":91,"y":141,"z":2,"connected_nodes_id":[353,355,394]},{"unique_id":355,"x":91,"y":137,"z":2,"connected_nodes_id":[345,354,395,1084]},{"unique_id":356,"x":92,"y":56,"z":2,"connected_nodes_id":[357,374]},{"unique_id":357,"x":92,"y":50,"z":2,"connected_nodes_id":[356,973]},{"unique_id":358,"x":93,"y":180,"z":2,"connected_nodes_id":[359,383]},{"unique_id":359,"x":93,"y":173,"z":2,"connected_nodes_id":[346,358,360,384]},{"unique_id":360,"x":93,"y":169,"z":2,"connected_nodes_id":[349,359]},{"unique_id":361,"x":93,"y":109,"z":2,"connected_nodes_id":[343,1090,386]},{"unique_id":362,"x":93,"y":96,"z":2,"connected_nodes_id":[344,1087,363]},{"unique_id":363,"x":93,"y":92,"z":2,"connected_nodes_id":[362,364,379]},{"unique_id":364,"x":93,"y":90,"z":2,"connected_nodes_id":[363,365]},{"unique_id":365,"x":93,"y":82,"z":2,"connected_nodes_id":[364,366]},{"unique_id":366,"x":93,"y":79,"z":2,"connected_nodes_id":[365,367,390]},{"unique_id":367,"x":93,"y":77,"z":2,"connected_nodes_id":[366,368,1050]},{"unique_id":368,"x":93,"y":73,"z":2,"connected_nodes_id":[367,369,402]},{"unique_id":369,"x":93,"y":70,"z":2,"connected_nodes_id":[368,1045]},{"unique_id":370,"x":93,"y":43,"z":2,"connected_nodes_id":[382]},{"unique_id":371,"x":94,"y":68,"z":2,"connected_nodes_id":[372,420]},{"unique_id":372,"x":94,"y":63,"z":2,"connected_nodes_id":[371,373,391]},{"unique_id":373,"x":94,"y":60,"z":2,"connected_nodes_id":[372,374,396]},{"unique_id":374,"x":94,"y":56,"z":2,"connected_nodes_id":[356,373,376]},{"unique_id":375,"x":95,"y":155,"z":2,"connected_nodes_id":[1097]},{"unique_id":376,"x":95,"y":55,"z":2,"connected_nodes_id":[374,403]},{"unique_id":377,"x":96,"y":149,"z":2,"connected_nodes_id":[392]},{"unique_id":378,"x":97,"y":192,"z":2,"connected_nodes_id":[414,888]},{"unique_id":379,"x":97,"y":92,"z":2,"connected_nodes_id":[363,380,388]},{"unique_id":380,"x":97,"y":87,"z":2,"connected_nodes_id":[379,389]},{"unique_id":381,"x":98,"y":47,"z":2,"connected_nodes_id":[382,397,968]},{"unique_id":382,"x":98,"y":43,"z":2,"connected_nodes_id":[370,381]},{"unique_id":383,"x":99,"y":180,"z":2,"connected_nodes_id":[358,384]},{"unique_id":384,"x":99,"y":173,"z":2,"connected_nodes_id":[359,383,431]},{"unique_id":385,"x":99,"y":162,"z":2,"connected_nodes_id":[350,433,1097]},{"unique_id":386,"x":99,"y":109,"z":2,"connected_nodes_id":[361,387,400]},{"unique_id":387,"x":99,"y":100,"z":2,"connected_nodes_id":[386,388,438,1087]},{"unique_id":388,"x":99,"y":92,"z":2,"connected_nodes_id":[379,387,389]},{"unique_id":389,"x":99,"y":87,"z":2,"connected_nodes_id":[380,388,390,419]},{"unique_id":390,"x":99,"y":79,"z":2,"connected_nodes_id":[366,389,401]},{"unique_id":391,"x":100,"y":63,"z":2,"connected_nodes_id":[372,421]},{"unique_id":392,"x":101,"y":149,"z":2,"connected_nodes_id":[377,393,1093]},{"unique_id":393,"x":101,"y":145,"z":2,"connected_nodes_id":[392,394,398]},{"unique_id":394,"x":101,"y":141,"z":2,"connected_nodes_id":[354,393,395,408]},{"unique_id":395,"x":101,"y":137,"z":2,"connected_nodes_id":[355,394,409]},{"unique_id":396,"x":101,"y":60,"z":2,"connected_nodes_id":[373]},{"unique_id":397,"x":101,"y":47,"z":2,"connected_nodes_id":[381,404]},{"unique_id":398,"x":102,"y":146,"z":2,"connected_nodes_id":[393,405]},{"unique_id":399,"x":103,"y":159,"z":2,"connected_nodes_id":[]},{"unique_id":400,"x":103,"y":109,"z":2,"connected_nodes_id":[386,437,1066]},{"unique_id":401,"x":103,"y":79,"z":2,"connected_nodes_id":[390,402,444]},{"unique_id":402,"x":103,"y":73,"z":2,"connected_nodes_id":[368,401,445]},{"unique_id":403,"x":103,"y":55,"z":2,"connected_nodes_id":[376,404]},{"unique_id":404,"x":103,"y":47,"z":2,"connected_nodes_id":[397,403,423]},{"unique_id":405,"x":105,"y":146,"z":2,"connected_nodes_id":[398,406,407]},{"unique_id":406,"x":105,"y":143,"z":2,"connected_nodes_id":[405,446]},{"unique_id":407,"x":106,"y":147,"z":2,"connected_nodes_id":[405,439]},{"unique_id":408,"x":106,"y":141,"z":2,"connected_nodes_id":[394,409,440]},{"unique_id":409,"x":106,"y":137,"z":2,"connected_nodes_id":[395,408,410,441]},{"unique_id":410,"x":106,"y":128,"z":2,"connected_nodes_id":[409,411,442]},{"unique_id":411,"x":106,"y":116,"z":2,"connected_nodes_id":[410,443]},{"unique_id":412,"x":106,"y":39,"z":2,"connected_nodes_id":[425,957]},{"unique_id":413,"x":107,"y":196,"z":2,"connected_nodes_id":[414]},{"unique_id":414,"x":107,"y":192,"z":2,"connected_nodes_id":[378,413,468]},{"unique_id":415,"x":107,"y":159,"z":2,"connected_nodes_id":[]},{"unique_id":416,"x":107,"y":96,"z":2,"connected_nodes_id":[417]},{"unique_id":417,"x":107,"y":93,"z":2,"connected_nodes_id":[416,418,1115]},{"unique_id":418,"x":107,"y":90,"z":2,"connected_nodes_id":[417,419,1114]},{"unique_id":419,"x":107,"y":87,"z":2,"connected_nodes_id":[389,418]},{"unique_id":420,"x":107,"y":68,"z":2,"connected_nodes_id":[371,421,449]},{"unique_id":421,"x":107,"y":63,"z":2,"connected_nodes_id":[391,420,422,450]},{"unique_id":422,"x":107,"y":56,"z":2,"connected_nodes_id":[421,423]},{"unique_id":423,"x":107,"y":47,"z":2,"connected_nodes_id":[404,422,424]},{"unique_id":424,"x":107,"y":43,"z":2,"connected_nodes_id":[423,425,447]},{"unique_id":425,"x":107,"y":38,"z":2,"connected_nodes_id":[412,424,426,453]},{"unique_id":426,"x":107,"y":33,"z":2,"connected_nodes_id":[425,427,954]},{"unique_id":427,"x":107,"y":26,"z":2,"connected_nodes_id":[426,428]},{"unique_id":428,"x":107,"y":22,"z":2,"connected_nodes_id":[427,429,456]},{"unique_id":429,"x":107,"y":17,"z":2,"connected_nodes_id":[428,430]},{"unique_id":430,"x":107,"y":14,"z":2,"connected_nodes_id":[429,434,463]},{"unique_id":431,"x":108,"y":173,"z":2,"connected_nodes_id":[384,432,436]},{"unique_id":432,"x":108,"y":167,"z":2,"connected_nodes_id":[431]},{"unique_id":433,"x":108,"y":162,"z":2,"connected_nodes_id":[385,458]},{"unique_id":434,"x":108,"y":13,"z":2,"connected_nodes_id":[430]},{"unique_id":435,"x":109,"y":177,"z":2,"connected_nodes_id":[436,464]},{"unique_id":436,"x":109,"y":174,"z":2,"connected_nodes_id":[431,435]},{"unique_id":437,"x":109,"y":109,"z":2,"connected_nodes_id":[400,438]},{"unique_id":438,"x":109,"y":100,"z":2,"connected_nodes_id":[387,437,471]},{"unique_id":439,"x":110,"y":147,"z":2,"connected_nodes_id":[407,1094]},{"unique_id":440,"x":110,"y":141,"z":2,"connected_nodes_id":[408,441]},{"unique_id":441,"x":110,"y":137,"z":2,"connected_nodes_id":[409,440,442]},{"unique_id":442,"x":110,"y":128,"z":2,"connected_nodes_id":[410,441,443,448]},{"unique_id":443,"x":110,"y":116,"z":2,"connected_nodes_id":[411,442]},{"unique_id":444,"x":110,"y":79,"z":2,"connected_nodes_id":[401,445,1105]},{"unique_id":445,"x":110,"y":73,"z":2,"connected_nodes_id":[402,444,1103]},{"unique_id":446,"x":111,"y":143,"z":2,"connected_nodes_id":[406]},{"unique_id":447,"x":111,"y":43,"z":2,"connected_nodes_id":[424]},{"unique_id":448,"x":113,"y":128,"z":2,"connected_nodes_id":[442,481]},{"unique_id":449,"x":113,"y":68,"z":2,"connected_nodes_id":[420,450]},{"unique_id":450,"x":113,"y":63,"z":2,"connected_nodes_id":[421,449,461]},{"unique_id":451,"x":113,"y":54,"z":2,"connected_nodes_id":[452,462]},{"unique_id":452,"x":113,"y":48,"z":2,"connected_nodes_id":[451,473]},{"unique_id":453,"x":113,"y":38,"z":2,"connected_nodes_id":[425,454,475]},{"unique_id":454,"x":113,"y":30,"z":2,"connected_nodes_id":[453]},{"unique_id":455,"x":113,"y":26,"z":2,"connected_nodes_id":[456]},{"unique_id":456,"x":113,"y":22,"z":2,"connected_nodes_id":[428,455,457,483]},{"unique_id":457,"x":113,"y":17,"z":2,"connected_nodes_id":[456]},{"unique_id":458,"x":114,"y":162,"z":2,"connected_nodes_id":[433,466]},{"unique_id":459,"x":114,"y":146,"z":2,"connected_nodes_id":[460]},{"unique_id":460,"x":114,"y":137,"z":2,"connected_nodes_id":[459,479]},{"unique_id":461,"x":114,"y":62,"z":2,"connected_nodes_id":[450,462]},{"unique_id":462,"x":114,"y":53,"z":2,"connected_nodes_id":[451,461]},{"unique_id":463,"x":114,"y":14,"z":2,"connected_nodes_id":[430,491]},{"unique_id":464,"x":115,"y":177,"z":2,"connected_nodes_id":[435,465]},{"unique_id":465,"x":115,"y":171,"z":2,"connected_nodes_id":[464,466]},{"unique_id":466,"x":115,"y":163,"z":2,"connected_nodes_id":[458,465]},{"unique_id":467,"x":115,"y":159,"z":2,"connected_nodes_id":[1100]},{"unique_id":468,"x":116,"y":192,"z":2,"connected_nodes_id":[414,469]},{"unique_id":469,"x":116,"y":188,"z":2,"connected_nodes_id":[468,470,492]},{"unique_id":470,"x":116,"y":184,"z":2,"connected_nodes_id":[469,493]},{"unique_id":471,"x":118,"y":100,"z":2,"connected_nodes_id":[438,490,1116]},{"unique_id":472,"x":118,"y":52,"z":2,"connected_nodes_id":[473]},{"unique_id":473,"x":118,"y":48,"z":2,"connected_nodes_id":[452,472,474,496]},{"unique_id":474,"x":118,"y":44,"z":2,"connected_nodes_id":[473]},{"unique_id":475,"x":118,"y":38,"z":2,"connected_nodes_id":[453,476]},{"unique_id":476,"x":118,"y":32,"z":2,"connected_nodes_id":[475,497]},{"unique_id":477,"x":119,"y":155,"z":2,"connected_nodes_id":[486,1100,1135]},{"unique_id":478,"x":119,"y":150,"z":2,"connected_nodes_id":[487,1092]},{"unique_id":479,"x":119,"y":137,"z":2,"connected_nodes_id":[460,480,489]},{"unique_id":480,"x":119,"y":132,"z":2,"connected_nodes_id":[479,481,506]},{"unique_id":481,"x":119,"y":128,"z":2,"connected_nodes_id":[448,480,501]},{"unique_id":482,"x":119,"y":26,"z":2,"connected_nodes_id":[483]},{"unique_id":483,"x":119,"y":22,"z":2,"connected_nodes_id":[456,482,484,494]},{"unique_id":484,"x":119,"y":17,"z":2,"connected_nodes_id":[483]},{"unique_id":485,"x":120,"y":164,"z":2,"connected_nodes_id":[486,1142]},{"unique_id":486,"x":120,"y":156,"z":2,"connected_nodes_id":[477,485]},{"unique_id":487,"x":120,"y":149,"z":2,"connected_nodes_id":[478,488,1132]},{"unique_id":488,"x":120,"y":147,"z":2,"connected_nodes_id":[487,489]},{"unique_id":489,"x":120,"y":138,"z":2,"connected_nodes_id":[479,488]},{"unique_id":490,"x":122,"y":100,"z":2,"connected_nodes_id":[471,1119]},{"unique_id":491,"x":122,"y":14,"z":2,"connected_nodes_id":[463,495]},{"unique_id":492,"x":123,"y":188,"z":2,"connected_nodes_id":[469,493]},{"unique_id":493,"x":123,"y":184,"z":2,"connected_nodes_id":[470,492,512]},{"unique_id":494,"x":123,"y":22,"z":2,"connected_nodes_id":[483,495]},{"unique_id":495,"x":123,"y":15,"z":2,"connected_nodes_id":[491,494,511]},{"unique_id":496,"x":124,"y":48,"z":2,"connected_nodes_id":[473,498]},{"unique_id":497,"x":124,"y":32,"z":2,"connected_nodes_id":[476,499]},{"unique_id":498,"x":125,"y":47,"z":2,"connected_nodes_id":[496,500]},{"unique_id":499,"x":125,"y":31,"z":2,"connected_nodes_id":[497,525]},{"unique_id":500,"x":126,"y":46,"z":2,"connected_nodes_id":[498,503]},{"unique_id":501,"x":127,"y":128,"z":2,"connected_nodes_id":[481,502,507]},{"unique_id":502,"x":127,"y":125,"z":2,"connected_nodes_id":[501,1127]},{"unique_id":503,"x":127,"y":45,"z":2,"connected_nodes_id":[500,523]},{"unique_id":504,"x":129,"y":142,"z":2,"connected_nodes_id":[505,1132]},{"unique_id":505,"x":129,"y":137,"z":2,"connected_nodes_id":[504,506]},{"unique_id":506,"x":129,"y":132,"z":2,"connected_nodes_id":[480,505,507,533]},{"unique_id":507,"x":129,"y":128,"z":2,"connected_nodes_id":[501,506,513]},{"unique_id":508,"x":130,"y":190,"z":2,"connected_nodes_id":[509]},{"unique_id":509,"x":130,"y":185,"z":2,"connected_nodes_id":[508,512]},{"unique_id":510,"x":130,"y":101,"z":2,"connected_nodes_id":[517,1122]},{"unique_id":511,"x":130,"y":15,"z":2,"connected_nodes_id":[495,530]},{"unique_id":512,"x":131,"y":184,"z":2,"connected_nodes_id":[493,509,1155]},{"unique_id":513,"x":131,"y":128,"z":2,"connected_nodes_id":[507,534,1128]},{"unique_id":514,"x":131,"y":58,"z":2,"connected_nodes_id":[515,521]},{"unique_id":515,"x":131,"y":53,"z":2,"connected_nodes_id":[514,522]},{"unique_id":516,"x":133,"y":143,"z":2,"connected_nodes_id":[547,1133]},{"unique_id":517,"x":133,"y":101,"z":2,"connected_nodes_id":[510,519,1117]},{"unique_id":518,"x":134,"y":95,"z":2,"connected_nodes_id":[520,1117]},{"unique_id":519,"x":136,"y":101,"z":2,"connected_nodes_id":[517,520,541,1118]},{"unique_id":520,"x":136,"y":95,"z":2,"connected_nodes_id":[518,519]},{"unique_id":521,"x":136,"y":58,"z":2,"connected_nodes_id":[514,522]},{"unique_id":522,"x":136,"y":53,"z":2,"connected_nodes_id":[515,521,523]},{"unique_id":523,"x":136,"y":45,"z":2,"connected_nodes_id":[503,522,524,554]},{"unique_id":524,"x":136,"y":39,"z":2,"connected_nodes_id":[523,525]},{"unique_id":525,"x":136,"y":31,"z":2,"connected_nodes_id":[499,524,543]},{"unique_id":526,"x":136,"y":7,"z":2,"connected_nodes_id":[531]},{"unique_id":527,"x":137,"y":70,"z":2,"connected_nodes_id":[528,550,1102]},{"unique_id":528,"x":137,"y":66,"z":2,"connected_nodes_id":[527,551]},{"unique_id":529,"x":137,"y":17,"z":2,"connected_nodes_id":[530,545]},{"unique_id":530,"x":137,"y":15,"z":2,"connected_nodes_id":[511,529]},{"unique_id":531,"x":137,"y":8,"z":2,"connected_nodes_id":[526,553]},{"unique_id":532,"x":138,"y":139,"z":2,"connected_nodes_id":[533,548]},{"unique_id":533,"x":138,"y":132,"z":2,"connected_nodes_id":[506,532,534]},{"unique_id":534,"x":138,"y":128,"z":2,"connected_nodes_id":[513,533,537,1129]},{"unique_id":535,"x":140,"y":180,"z":2,"connected_nodes_id":[536,558]},{"unique_id":536,"x":140,"y":176,"z":2,"connected_nodes_id":[535,559,1147]},{"unique_id":537,"x":141,"y":128,"z":2,"connected_nodes_id":[534,538,565]},{"unique_id":538,"x":141,"y":121,"z":2,"connected_nodes_id":[537,539,566,1129]},{"unique_id":539,"x":141,"y":117,"z":2,"connected_nodes_id":[538,540]},{"unique_id":540,"x":141,"y":110,"z":2,"connected_nodes_id":[539,541,542,571,1122]},{"unique_id":541,"x":141,"y":101,"z":2,"connected_nodes_id":[519,540,572]},{"unique_id":542,"x":142,"y":111,"z":2,"connected_nodes_id":[540,576,1124]},{"unique_id":543,"x":142,"y":31,"z":2,"connected_nodes_id":[525,544,546]},{"unique_id":544,"x":142,"y":26,"z":2,"connected_nodes_id":[543,545]},{"unique_id":545,"x":142,"y":17,"z":2,"connected_nodes_id":[529,544,562]},{"unique_id":546,"x":143,"y":32,"z":2,"connected_nodes_id":[543,549]},{"unique_id":547,"x":144,"y":143,"z":2,"connected_nodes_id":[516,548,1168]},{"unique_id":548,"x":144,"y":139,"z":2,"connected_nodes_id":[532,547]},{"unique_id":549,"x":144,"y":33,"z":2,"connected_nodes_id":[546,552]},{"unique_id":550,"x":145,"y":70,"z":2,"connected_nodes_id":[527,551,1172]},{"unique_id":551,"x":145,"y":66,"z":2,"connected_nodes_id":[528,550]},{"unique_id":552,"x":145,"y":34,"z":2,"connected_nodes_id":[549,555]},{"unique_id":553,"x":145,"y":8,"z":2,"connected_nodes_id":[531,557]},{"unique_id":554,"x":146,"y":45,"z":2,"connected_nodes_id":[523,555,577]},{"unique_id":555,"x":146,"y":35,"z":2,"connected_nodes_id":[552,554]},{"unique_id":556,"x":146,"y":13,"z":2,"connected_nodes_id":[557,563]},{"unique_id":557,"x":146,"y":9,"z":2,"connected_nodes_id":[553,556]},{"unique_id":558,"x":147,"y":180,"z":2,"connected_nodes_id":[535,559,1148]},{"unique_id":559,"x":147,"y":176,"z":2,"connected_nodes_id":[536,558,580]},{"unique_id":560,"x":147,"y":164,"z":2,"connected_nodes_id":[561]},{"unique_id":561,"x":147,"y":159,"z":2,"connected_nodes_id":[560,568]},{"unique_id":562,"x":147,"y":17,"z":2,"connected_nodes_id":[545,563]},{"unique_id":563,"x":147,"y":14,"z":2,"connected_nodes_id":[556,562,567]},{"unique_id":564,"x":148,"y":148,"z":2,"connected_nodes_id":[583,1131]},{"unique_id":565,"x":148,"y":128,"z":2,"connected_nodes_id":[537,566,584]},{"unique_id":566,"x":148,"y":121,"z":2,"connected_nodes_id":[538,565]},{"unique_id":567,"x":148,"y":15,"z":2,"connected_nodes_id":[563]},{"unique_id":568,"x":149,"y":159,"z":2,"connected_nodes_id":[561,569]},{"unique_id":569,"x":149,"y":157,"z":2,"connected_nodes_id":[568,570]},{"unique_id":570,"x":150,"y":156,"z":2,"connected_nodes_id":[569,582]},{"unique_id":571,"x":150,"y":110,"z":2,"connected_nodes_id":[540,572,576]},{"unique_id":572,"x":150,"y":101,"z":2,"connected_nodes_id":[541,571,573,1200]},{"unique_id":573,"x":150,"y":92,"z":2,"connected_nodes_id":[572,574]},{"unique_id":574,"x":150,"y":87,"z":2,"connected_nodes_id":[573,575,1165]},{"unique_id":575,"x":150,"y":84,"z":2,"connected_nodes_id":[574,1190]},{"unique_id":576,"x":151,"y":111,"z":2,"connected_nodes_id":[542,571,586]},{"unique_id":577,"x":151,"y":45,"z":2,"connected_nodes_id":[554,579]},{"unique_id":578,"x":152,"y":50,"z":2,"connected_nodes_id":[579]},{"unique_id":579,"x":152,"y":46,"z":2,"connected_nodes_id":[577,578,1274]},{"unique_id":580,"x":153,"y":176,"z":2,"connected_nodes_id":[559,581,587,1149]},{"unique_id":581,"x":153,"y":167,"z":2,"connected_nodes_id":[580,589]},{"unique_id":582,"x":154,"y":156,"z":2,"connected_nodes_id":[570,583]},{"unique_id":583,"x":154,"y":148,"z":2,"connected_nodes_id":[564,582,592]},{"unique_id":584,"x":154,"y":128,"z":2,"connected_nodes_id":[565,585,594,1166]},{"unique_id":585,"x":154,"y":122,"z":2,"connected_nodes_id":[584,600]},{"unique_id":586,"x":159,"y":111,"z":2,"connected_nodes_id":[576,601,1203]},{"unique_id":587,"x":161,"y":176,"z":2,"connected_nodes_id":[580,588,595]},{"unique_id":588,"x":161,"y":172,"z":2,"connected_nodes_id":[587,589]},{"unique_id":589,"x":161,"y":167,"z":2,"connected_nodes_id":[581,588,590,602]},{"unique_id":590,"x":161,"y":161,"z":2,"connected_nodes_id":[589,591]},{"unique_id":591,"x":161,"y":154,"z":2,"connected_nodes_id":[590,596]},{"unique_id":592,"x":161,"y":148,"z":2,"connected_nodes_id":[583,593]},{"unique_id":593,"x":161,"y":138,"z":2,"connected_nodes_id":[592,594]},{"unique_id":594,"x":161,"y":128,"z":2,"connected_nodes_id":[584,593,599]},{"unique_id":595,"x":162,"y":177,"z":2,"connected_nodes_id":[587,597,628]},{"unique_id":596,"x":162,"y":153,"z":2,"connected_nodes_id":[591,598]},{"unique_id":597,"x":163,"y":178,"z":2,"connected_nodes_id":[595,605]},{"unique_id":598,"x":163,"y":152,"z":2,"connected_nodes_id":[596,603]},{"unique_id":599,"x":165,"y":128,"z":2,"connected_nodes_id":[594,632]},{"unique_id":600,"x":165,"y":122,"z":2,"connected_nodes_id":[585]},{"unique_id":601,"x":166,"y":111,"z":2,"connected_nodes_id":[586,1204]},{"unique_id":602,"x":167,"y":167,"z":2,"connected_nodes_id":[589,607]},{"unique_id":603,"x":167,"y":152,"z":2,"connected_nodes_id":[598,604]},{"unique_id":604,"x":167,"y":148,"z":2,"connected_nodes_id":[603,608]},{"unique_id":605,"x":168,"y":178,"z":2,"connected_nodes_id":[597,606,616]},{"unique_id":606,"x":168,"y":173,"z":2,"connected_nodes_id":[605,613]},{"unique_id":607,"x":168,"y":168,"z":2,"connected_nodes_id":[602,615]},{"unique_id":608,"x":168,"y":147,"z":2,"connected_nodes_id":[604,609]},{"unique_id":609,"x":168,"y":139,"z":2,"connected_nodes_id":[608,620]},{"unique_id":610,"x":169,"y":158,"z":2,"connected_nodes_id":[611,619]},{"unique_id":611,"x":169,"y":154,"z":2,"connected_nodes_id":[610]},{"unique_id":612,"x":171,"y":174,"z":2,"connected_nodes_id":[613,626]},{"unique_id":613,"x":171,"y":173,"z":2,"connected_nodes_id":[606,612,614]},{"unique_id":614,"x":171,"y":170,"z":2,"connected_nodes_id":[613,615]},{"unique_id":615,"x":171,"y":168,"z":2,"connected_nodes_id":[607,614,617]},{"unique_id":616,"x":172,"y":178,"z":2,"connected_nodes_id":[605,625]},{"unique_id":617,"x":173,"y":168,"z":2,"connected_nodes_id":[615,618]},{"unique_id":618,"x":173,"y":163,"z":2,"connected_nodes_id":[617,619]},{"unique_id":619,"x":173,"y":158,"z":2,"connected_nodes_id":[610,618,622]},{"unique_id":620,"x":173,"y":139,"z":2,"connected_nodes_id":[609,621]},{"unique_id":621,"x":173,"y":134,"z":2,"connected_nodes_id":[620,631]},{"unique_id":622,"x":174,"y":157,"z":2,"connected_nodes_id":[619,623,636]},{"unique_id":623,"x":174,"y":153,"z":2,"connected_nodes_id":[622]},{"unique_id":624,"x":175,"y":181,"z":2,"connected_nodes_id":[625]},{"unique_id":625,"x":175,"y":178,"z":2,"connected_nodes_id":[616,624,626,628]},{"unique_id":626,"x":175,"y":174,"z":2,"connected_nodes_id":[612,625]},{"unique_id":627,"x":175,"y":148,"z":2,"connected_nodes_id":[638]},{"unique_id":628,"x":176,"y":177,"z":2,"connected_nodes_id":[595,625,644]},{"unique_id":629,"x":176,"y":170,"z":2,"connected_nodes_id":[633]},{"unique_id":630,"x":179,"y":139,"z":2,"connected_nodes_id":[631,655]},{"unique_id":631,"x":179,"y":134,"z":2,"connected_nodes_id":[621,630,632,647]},{"unique_id":632,"x":179,"y":128,"z":2,"connected_nodes_id":[599,631,639,1308]},{"unique_id":633,"x":180,"y":170,"z":2,"connected_nodes_id":[629,634,640]},{"unique_id":634,"x":180,"y":167,"z":2,"connected_nodes_id":[633,650]},{"unique_id":635,"x":180,"y":162,"z":2,"connected_nodes_id":[636]},{"unique_id":636,"x":180,"y":157,"z":2,"connected_nodes_id":[622,635,637,643]},{"unique_id":637,"x":180,"y":155,"z":2,"connected_nodes_id":[636]},{"unique_id":638,"x":180,"y":148,"z":2,"connected_nodes_id":[627,641]},{"unique_id":639,"x":180,"y":127,"z":2,"connected_nodes_id":[632]},{"unique_id":640,"x":181,"y":169,"z":2,"connected_nodes_id":[633,649]},{"unique_id":641,"x":181,"y":147,"z":2,"connected_nodes_id":[638,654]},{"unique_id":642,"x":183,"y":159,"z":2,"connected_nodes_id":[643,651]},{"unique_id":643,"x":183,"y":157,"z":2,"connected_nodes_id":[636,642,645]},{"unique_id":644,"x":184,"y":177,"z":2,"connected_nodes_id":[628,646]},{"unique_id":645,"x":184,"y":156,"z":2,"connected_nodes_id":[643,652]},{"unique_id":646,"x":185,"y":176,"z":2,"connected_nodes_id":[644,648]},{"unique_id":647,"x":185,"y":134,"z":2,"connected_nodes_id":[631,660,1308]},{"unique_id":648,"x":186,"y":175,"z":2,"connected_nodes_id":[646,649,657]},{"unique_id":649,"x":186,"y":169,"z":2,"connected_nodes_id":[640,648,650,663]},{"unique_id":650,"x":186,"y":167,"z":2,"connected_nodes_id":[634,649,651,664]},{"unique_id":651,"x":186,"y":159,"z":2,"connected_nodes_id":[642,650]},{"unique_id":652,"x":187,"y":156,"z":2,"connected_nodes_id":[645,653,659]},{"unique_id":653,"x":187,"y":153,"z":2,"connected_nodes_id":[652,654]},{"unique_id":654,"x":187,"y":147,"z":2,"connected_nodes_id":[641,653,655]},{"unique_id":655,"x":187,"y":139,"z":2,"connected_nodes_id":[630,654,668]},{"unique_id":656,"x":189,"y":179,"z":2,"connected_nodes_id":[657]},{"unique_id":657,"x":189,"y":175,"z":2,"connected_nodes_id":[648,656,661]},{"unique_id":658,"x":190,"y":158,"z":2,"connected_nodes_id":[659,666]},{"unique_id":659,"x":190,"y":156,"z":2,"connected_nodes_id":[652,658]},{"unique_id":660,"x":190,"y":134,"z":2,"connected_nodes_id":[647]},{"unique_id":661,"x":193,"y":175,"z":2,"connected_nodes_id":[657,669,1153]},{"unique_id":662,"x":193,"y":171,"z":2,"connected_nodes_id":[663]},{"unique_id":663,"x":193,"y":169,"z":2,"connected_nodes_id":[649,662,664]},{"unique_id":664,"x":193,"y":167,"z":2,"connected_nodes_id":[650,663]},{"unique_id":665,"x":196,"y":153,"z":2,"connected_nodes_id":[676]},{"unique_id":666,"x":197,"y":158,"z":2,"connected_nodes_id":[658,667]},{"unique_id":667,"x":197,"y":146,"z":2,"connected_nodes_id":[666,668]},{"unique_id":668,"x":197,"y":139,"z":2,"connected_nodes_id":[655,667,670,675]},{"unique_id":669,"x":198,"y":175,"z":2,"connected_nodes_id":[661]},{"unique_id":670,"x":198,"y":138,"z":2,"connected_nodes_id":[668,671]},{"unique_id":671,"x":198,"y":132,"z":2,"connected_nodes_id":[670]},{"unique_id":672,"x":199,"y":168,"z":2,"connected_nodes_id":[673,680]},{"unique_id":673,"x":199,"y":162,"z":2,"connected_nodes_id":[672]},{"unique_id":674,"x":199,"y":115,"z":2,"connected_nodes_id":[682]},{"unique_id":675,"x":200,"y":139,"z":2,"connected_nodes_id":[668,683]},{"unique_id":676,"x":204,"y":153,"z":2,"connected_nodes_id":[665,692]},{"unique_id":677,"x":205,"y":183,"z":2,"connected_nodes_id":[678,696,1154]},{"unique_id":678,"x":205,"y":177,"z":2,"connected_nodes_id":[677,679,697]},{"unique_id":679,"x":205,"y":175,"z":2,"connected_nodes_id":[678,680]},{"unique_id":680,"x":205,"y":168,"z":2,"connected_nodes_id":[672,679]},{"unique_id":681,"x":205,"y":121,"z":2,"connected_nodes_id":[682,689]},{"unique_id":682,"x":205,"y":115,"z":2,"connected_nodes_id":[674,681,690]},{"unique_id":683,"x":206,"y":139,"z":2,"connected_nodes_id":[675,684]},{"unique_id":684,"x":207,"y":138,"z":2,"connected_nodes_id":[683,685]},{"unique_id":685,"x":208,"y":137,"z":2,"connected_nodes_id":[684,686]},{"unique_id":686,"x":209,"y":136,"z":2,"connected_nodes_id":[685,687]},{"unique_id":687,"x":210,"y":135,"z":2,"connected_nodes_id":[686,688]},{"unique_id":688,"x":210,"y":128,"z":2,"connected_nodes_id":[687,700]},{"unique_id":689,"x":211,"y":121,"z":2,"connected_nodes_id":[681,690,701]},{"unique_id":690,"x":211,"y":115,"z":2,"connected_nodes_id":[682,689,694]},{"unique_id":691,"x":212,"y":157,"z":2,"connected_nodes_id":[692]},{"unique_id":692,"x":212,"y":153,"z":2,"connected_nodes_id":[676,691,693]},{"unique_id":693,"x":212,"y":149,"z":2,"connected_nodes_id":[692,698]},{"unique_id":694,"x":212,"y":114,"z":2,"connected_nodes_id":[690,703]},{"unique_id":695,"x":213,"y":188,"z":2,"connected_nodes_id":[696]},{"unique_id":696,"x":213,"y":183,"z":2,"connected_nodes_id":[677,695,697]},{"unique_id":697,"x":213,"y":177,"z":2,"connected_nodes_id":[678,696]},{"unique_id":698,"x":216,"y":149,"z":2,"connected_nodes_id":[693,699]},{"unique_id":699,"x":216,"y":137,"z":2,"connected_nodes_id":[698,700]},{"unique_id":700,"x":216,"y":128,"z":2,"connected_nodes_id":[688,699,701]},{"unique_id":701,"x":216,"y":121,"z":2,"connected_nodes_id":[689,700]},{"unique_id":702,"x":218,"y":118,"z":2,"connected_nodes_id":[703]},{"unique_id":703,"x":218,"y":114,"z":2,"connected_nodes_id":[694,702,704]},{"unique_id":704,"x":218,"y":111,"z":2,"connected_nodes_id":[703]},{"unique_id":705,"x":8,"y":21,"z":3,"connected_nodes_id":[706]},{"unique_id":706,"x":8,"y":15,"z":3,"connected_nodes_id":[705,708]},{"unique_id":707,"x":13,"y":18,"z":3,"connected_nodes_id":[708,712]},{"unique_id":708,"x":13,"y":15,"z":3,"connected_nodes_id":[706,707]},{"unique_id":709,"x":22,"y":37,"z":3,"connected_nodes_id":[710,715]},{"unique_id":710,"x":22,"y":31,"z":3,"connected_nodes_id":[709,711,719]},{"unique_id":711,"x":22,"y":25,"z":3,"connected_nodes_id":[710,712,720]},{"unique_id":712,"x":22,"y":18,"z":3,"connected_nodes_id":[707,711,713]},{"unique_id":713,"x":22,"y":15,"z":3,"connected_nodes_id":[712,714,716]},{"unique_id":714,"x":22,"y":8,"z":3,"connected_nodes_id":[713]},{"unique_id":715,"x":29,"y":37,"z":3,"connected_nodes_id":[709,718]},{"unique_id":716,"x":29,"y":15,"z":3,"connected_nodes_id":[713,717,721]},{"unique_id":717,"x":29,"y":8,"z":3,"connected_nodes_id":[716,722]},{"unique_id":718,"x":34,"y":37,"z":3,"connected_nodes_id":[715,719,728]},{"unique_id":719,"x":34,"y":31,"z":3,"connected_nodes_id":[710,718,720,729]},{"unique_id":720,"x":34,"y":25,"z":3,"connected_nodes_id":[711,719,721]},{"unique_id":721,"x":34,"y":15,"z":3,"connected_nodes_id":[716,720,735]},{"unique_id":722,"x":35,"y":8,"z":3,"connected_nodes_id":[717,723]},{"unique_id":723,"x":36,"y":9,"z":3,"connected_nodes_id":[722,730]},{"unique_id":724,"x":38,"y":51,"z":3,"connected_nodes_id":[725]},{"unique_id":725,"x":38,"y":46,"z":3,"connected_nodes_id":[724,726]},{"unique_id":726,"x":38,"y":40,"z":3,"connected_nodes_id":[725,727]},{"unique_id":727,"x":39,"y":39,"z":3,"connected_nodes_id":[726,728]},{"unique_id":728,"x":39,"y":37,"z":3,"connected_nodes_id":[718,727,729,731]},{"unique_id":729,"x":39,"y":31,"z":3,"connected_nodes_id":[719,728,733]},{"unique_id":730,"x":42,"y":9,"z":3,"connected_nodes_id":[723]},{"unique_id":731,"x":46,"y":37,"z":3,"connected_nodes_id":[728,732]},{"unique_id":732,"x":46,"y":36,"z":3,"connected_nodes_id":[731,733,740]},{"unique_id":733,"x":46,"y":31,"z":3,"connected_nodes_id":[729,732,734,738]},{"unique_id":734,"x":46,"y":17,"z":3,"connected_nodes_id":[733,735,737]},{"unique_id":735,"x":46,"y":15,"z":3,"connected_nodes_id":[721,734]},{"unique_id":736,"x":49,"y":23,"z":3,"connected_nodes_id":[737,739]},{"unique_id":737,"x":49,"y":17,"z":3,"connected_nodes_id":[734,736]},{"unique_id":738,"x":50,"y":31,"z":3,"connected_nodes_id":[733,739]},{"unique_id":739,"x":50,"y":24,"z":3,"connected_nodes_id":[736,738]},{"unique_id":740,"x":51,"y":36,"z":3,"connected_nodes_id":[732]},{"unique_id":741,"x":9,"y":141,"z":2,"connected_nodes_id":[240,753]},{"unique_id":742,"x":14,"y":141,"z":2,"connected_nodes_id":[743,754]},{"unique_id":743,"x":18,"y":141,"z":2,"connected_nodes_id":[742,744]},{"unique_id":744,"x":22,"y":141,"z":2,"connected_nodes_id":[743,745]},{"unique_id":745,"x":26,"y":141,"z":2,"connected_nodes_id":[744,746]},{"unique_id":746,"x":30,"y":141,"z":2,"connected_nodes_id":[745,747]},{"unique_id":747,"x":35,"y":141,"z":2,"connected_nodes_id":[746,748,763]},{"unique_id":748,"x":41,"y":141,"z":2,"connected_nodes_id":[747,749,757]},{"unique_id":749,"x":47,"y":141,"z":2,"connected_nodes_id":[748,750,758]},{"unique_id":750,"x":52,"y":141,"z":2,"connected_nodes_id":[749,751,759]},{"unique_id":751,"x":55,"y":141,"z":2,"connected_nodes_id":[750,294,760]},{"unique_id":752,"x":6,"y":142,"z":2,"connected_nodes_id":[753,755,764]},{"unique_id":753,"x":10,"y":142,"z":2,"connected_nodes_id":[741,752,754,765]},{"unique_id":754,"x":13,"y":142,"z":2,"connected_nodes_id":[742,753,766]},{"unique_id":755,"x":5,"y":143,"z":2,"connected_nodes_id":[752]},{"unique_id":756,"x":36,"y":146,"z":2,"connected_nodes_id":[757,763]},{"unique_id":757,"x":41,"y":146,"z":2,"connected_nodes_id":[748,756,758]},{"unique_id":758,"x":47,"y":146,"z":2,"connected_nodes_id":[749,757,759]},{"unique_id":759,"x":52,"y":146,"z":2,"connected_nodes_id":[750,758,760]},{"unique_id":760,"x":55,"y":146,"z":2,"connected_nodes_id":[751,759,303,767]},{"unique_id":761,"x":26,"y":147,"z":2,"connected_nodes_id":[762,772]},{"unique_id":762,"x":30,"y":147,"z":2,"connected_nodes_id":[761,763,773]},{"unique_id":763,"x":35,"y":147,"z":2,"connected_nodes_id":[747,756,762,774]},{"unique_id":764,"x":6,"y":148,"z":2,"connected_nodes_id":[752,765]},{"unique_id":765,"x":10,"y":148,"z":2,"connected_nodes_id":[753,764,766,775]},{"unique_id":766,"x":13,"y":148,"z":2,"connected_nodes_id":[754,765,776]},{"unique_id":767,"x":55,"y":150,"z":2,"connected_nodes_id":[760]},{"unique_id":768,"x":34,"y":152,"z":2,"connected_nodes_id":[769,774,783]},{"unique_id":769,"x":42,"y":152,"z":2,"connected_nodes_id":[768,770]},{"unique_id":770,"x":48,"y":152,"z":2,"connected_nodes_id":[769,771,777]},{"unique_id":771,"x":53,"y":152,"z":2,"connected_nodes_id":[770,302]},{"unique_id":772,"x":26,"y":153,"z":2,"connected_nodes_id":[761,773]},{"unique_id":773,"x":30,"y":153,"z":2,"connected_nodes_id":[762,772,774,782]},{"unique_id":774,"x":35,"y":153,"z":2,"connected_nodes_id":[763,768,773,785]},{"unique_id":775,"x":10,"y":154,"z":2,"connected_nodes_id":[765,776,780]},{"unique_id":776,"x":13,"y":154,"z":2,"connected_nodes_id":[766,775,781]},{"unique_id":777,"x":48,"y":157,"z":2,"connected_nodes_id":[770,784,778]},{"unique_id":778,"x":53,"y":157,"z":2,"connected_nodes_id":[777,779,788]},{"unique_id":779,"x":54,"y":158,"z":2,"connected_nodes_id":[778,301]},{"unique_id":780,"x":10,"y":159,"z":2,"connected_nodes_id":[775,781,789]},{"unique_id":781,"x":13,"y":159,"z":2,"connected_nodes_id":[776,780,791]},{"unique_id":782,"x":30,"y":159,"z":2,"connected_nodes_id":[773,783]},{"unique_id":783,"x":34,"y":159,"z":2,"connected_nodes_id":[768,782,784,785]},{"unique_id":784,"x":48,"y":159,"z":2,"connected_nodes_id":[777,783,285,787]},{"unique_id":785,"x":35,"y":160,"z":2,"connected_nodes_id":[774,783,786]},{"unique_id":786,"x":41,"y":160,"z":2,"connected_nodes_id":[785,787,793]},{"unique_id":787,"x":47,"y":160,"z":2,"connected_nodes_id":[784,786,283,788]},{"unique_id":788,"x":53,"y":160,"z":2,"connected_nodes_id":[778,787]},{"unique_id":789,"x":10,"y":161,"z":2,"connected_nodes_id":[780,790]},{"unique_id":790,"x":11,"y":162,"z":2,"connected_nodes_id":[789,791]},{"unique_id":791,"x":13,"y":162,"z":2,"connected_nodes_id":[781,790,245,792]},{"unique_id":792,"x":16,"y":162,"z":2,"connected_nodes_id":[791]},{"unique_id":793,"x":41,"y":162,"z":2,"connected_nodes_id":[786,271]},{"unique_id":794,"x":13,"y":78,"z":2,"connected_nodes_id":[795]},{"unique_id":795,"x":16,"y":78,"z":2,"connected_nodes_id":[794,801,859]},{"unique_id":796,"x":27,"y":79,"z":2,"connected_nodes_id":[797,799]},{"unique_id":797,"x":34,"y":79,"z":2,"connected_nodes_id":[796,798]},{"unique_id":798,"x":42,"y":79,"z":2,"connected_nodes_id":[797,273,803]},{"unique_id":799,"x":27,"y":84,"z":2,"connected_nodes_id":[796,802]},{"unique_id":800,"x":11,"y":85,"z":2,"connected_nodes_id":[801,808]},{"unique_id":801,"x":16,"y":85,"z":2,"connected_nodes_id":[795,800,809]},{"unique_id":802,"x":28,"y":85,"z":2,"connected_nodes_id":[799,803,810]},{"unique_id":803,"x":42,"y":85,"z":2,"connected_nodes_id":[798,802,272,804]},{"unique_id":804,"x":41,"y":86,"z":2,"connected_nodes_id":[803,805]},{"unique_id":805,"x":41,"y":89,"z":2,"connected_nodes_id":[804,290,806]},{"unique_id":806,"x":41,"y":91,"z":2,"connected_nodes_id":[805,816]},{"unique_id":807,"x":8,"y":92,"z":2,"connected_nodes_id":[808,815]},{"unique_id":808,"x":11,"y":92,"z":2,"connected_nodes_id":[800,807]},{"unique_id":809,"x":16,"y":92,"z":2,"connected_nodes_id":[801,811]},{"unique_id":810,"x":28,"y":92,"z":2,"connected_nodes_id":[802,814]},{"unique_id":811,"x":16,"y":96,"z":2,"connected_nodes_id":[809,812]},{"unique_id":812,"x":17,"y":97,"z":2,"connected_nodes_id":[811,817]},{"unique_id":813,"x":23,"y":97,"z":2,"connected_nodes_id":[814,818]},{"unique_id":814,"x":28,"y":97,"z":2,"connected_nodes_id":[810,813,819]},{"unique_id":815,"x":8,"y":98,"z":2,"connected_nodes_id":[807,827]},{"unique_id":816,"x":41,"y":98,"z":2,"connected_nodes_id":[806,821]},{"unique_id":817,"x":17,"y":100,"z":2,"connected_nodes_id":[812]},{"unique_id":818,"x":23,"y":100,"z":2,"connected_nodes_id":[813,819,822]},{"unique_id":819,"x":28,"y":100,"z":2,"connected_nodes_id":[814,818,820]},{"unique_id":820,"x":27,"y":101,"z":2,"connected_nodes_id":[819,823]},{"unique_id":821,"x":41,"y":103,"z":2,"connected_nodes_id":[816,280,825]},{"unique_id":822,"x":23,"y":105,"z":2,"connected_nodes_id":[818,823]},{"unique_id":823,"x":27,"y":105,"z":2,"connected_nodes_id":[820,822,824,828]},{"unique_id":824,"x":34,"y":105,"z":2,"connected_nodes_id":[823,825,829]},{"unique_id":825,"x":41,"y":105,"z":2,"connected_nodes_id":[821,824,831]},{"unique_id":826,"x":6,"y":106,"z":2,"connected_nodes_id":[827]},{"unique_id":827,"x":8,"y":106,"z":2,"connected_nodes_id":[815,826,832]},{"unique_id":828,"x":27,"y":109,"z":2,"connected_nodes_id":[823,829]},{"unique_id":829,"x":34,"y":109,"z":2,"connected_nodes_id":[824,828,830]},{"unique_id":830,"x":34,"y":111,"z":2,"connected_nodes_id":[829,831]},{"unique_id":831,"x":41,"y":111,"z":2,"connected_nodes_id":[825,830]},{"unique_id":832,"x":8,"y":113,"z":2,"connected_nodes_id":[827,239,833]},{"unique_id":833,"x":12,"y":113,"z":2,"connected_nodes_id":[832,244]},{"unique_id":834,"x":36,"y":47,"z":2,"connected_nodes_id":[275,835]},{"unique_id":835,"x":35,"y":48,"z":2,"connected_nodes_id":[834,837]},{"unique_id":836,"x":29,"y":49,"z":2,"connected_nodes_id":[837,838]},{"unique_id":837,"x":34,"y":49,"z":2,"connected_nodes_id":[835,836]},{"unique_id":838,"x":28,"y":50,"z":2,"connected_nodes_id":[836]},{"unique_id":839,"x":40,"y":54,"z":2,"connected_nodes_id":[840,976]},{"unique_id":840,"x":40,"y":56,"z":2,"connected_nodes_id":[839,842,844]},{"unique_id":841,"x":34,"y":57,"z":2,"connected_nodes_id":[842,843]},{"unique_id":842,"x":39,"y":57,"z":2,"connected_nodes_id":[840,841,844,847]},{"unique_id":843,"x":35,"y":58,"z":2,"connected_nodes_id":[841,844]},{"unique_id":844,"x":40,"y":58,"z":2,"connected_nodes_id":[840,842,843]},{"unique_id":845,"x":25,"y":60,"z":2,"connected_nodes_id":[850]},{"unique_id":846,"x":33,"y":61,"z":2,"connected_nodes_id":[847,848,852]},{"unique_id":847,"x":39,"y":61,"z":2,"connected_nodes_id":[842,846]},{"unique_id":848,"x":34,"y":62,"z":2,"connected_nodes_id":[846,852]},{"unique_id":849,"x":22,"y":63,"z":2,"connected_nodes_id":[850]},{"unique_id":850,"x":25,"y":63,"z":2,"connected_nodes_id":[845,849,851,854]},{"unique_id":851,"x":30,"y":63,"z":2,"connected_nodes_id":[850,852,855]},{"unique_id":852,"x":33,"y":63,"z":2,"connected_nodes_id":[846,848,851]},{"unique_id":853,"x":20,"y":70,"z":2,"connected_nodes_id":[854,857]},{"unique_id":854,"x":25,"y":70,"z":2,"connected_nodes_id":[850,853,855]},{"unique_id":855,"x":30,"y":70,"z":2,"connected_nodes_id":[851,854,856,858]},{"unique_id":856,"x":35,"y":70,"z":2,"connected_nodes_id":[855,861]},{"unique_id":857,"x":19,"y":71,"z":2,"connected_nodes_id":[853,858]},{"unique_id":858,"x":29,"y":71,"z":2,"connected_nodes_id":[855,857]},{"unique_id":859,"x":16,"y":73,"z":2,"connected_nodes_id":[795,860]},{"unique_id":860,"x":22,"y":73,"z":2,"connected_nodes_id":[859]},{"unique_id":861,"x":35,"y":73,"z":2,"connected_nodes_id":[856,274]},{"unique_id":862,"x":42,"y":175,"z":2,"connected_nodes_id":[270,868]},{"unique_id":863,"x":11,"y":178,"z":2,"connected_nodes_id":[864,869]},{"unique_id":864,"x":15,"y":178,"z":2,"connected_nodes_id":[863,865,871]},{"unique_id":865,"x":20,"y":178,"z":2,"connected_nodes_id":[864,866,872]},{"unique_id":866,"x":26,"y":178,"z":2,"connected_nodes_id":[865,867,873]},{"unique_id":867,"x":31,"y":178,"z":2,"connected_nodes_id":[866,874]},{"unique_id":868,"x":42,"y":178,"z":2,"connected_nodes_id":[862,882]},{"unique_id":869,"x":11,"y":182,"z":2,"connected_nodes_id":[863,870,885]},{"unique_id":870,"x":13,"y":182,"z":2,"connected_nodes_id":[869,871]},{"unique_id":871,"x":15,"y":182,"z":2,"connected_nodes_id":[864,870,872]},{"unique_id":872,"x":20,"y":182,"z":2,"connected_nodes_id":[865,871,873,878]},{"unique_id":873,"x":26,"y":182,"z":2,"connected_nodes_id":[866,872,874]},{"unique_id":874,"x":31,"y":182,"z":2,"connected_nodes_id":[867,873,875]},{"unique_id":875,"x":34,"y":182,"z":2,"connected_nodes_id":[874,881]},{"unique_id":876,"x":47,"y":184,"z":2,"connected_nodes_id":[883]},{"unique_id":877,"x":59,"y":184,"z":2,"connected_nodes_id":[879]},{"unique_id":878,"x":20,"y":188,"z":2,"connected_nodes_id":[872,889]},{"unique_id":879,"x":59,"y":188,"z":2,"connected_nodes_id":[877,880]},{"unique_id":880,"x":68,"y":188,"z":2,"connected_nodes_id":[879,892]},{"unique_id":881,"x":34,"y":189,"z":2,"connected_nodes_id":[875,882,896]},{"unique_id":882,"x":42,"y":189,"z":2,"connected_nodes_id":[868,881,883,890]},{"unique_id":883,"x":47,"y":189,"z":2,"connected_nodes_id":[876,882,884]},{"unique_id":884,"x":50,"y":189,"z":2,"connected_nodes_id":[883,891]},{"unique_id":885,"x":11,"y":190,"z":2,"connected_nodes_id":[869,886]},{"unique_id":886,"x":16,"y":190,"z":2,"connected_nodes_id":[885,898]},{"unique_id":887,"x":84,"y":192,"z":2,"connected_nodes_id":[888,895]},{"unique_id":888,"x":90,"y":192,"z":2,"connected_nodes_id":[887,378,904]},{"unique_id":889,"x":20,"y":193,"z":2,"connected_nodes_id":[878,899]},{"unique_id":890,"x":42,"y":193,"z":2,"connected_nodes_id":[882,891,897,900]},{"unique_id":891,"x":50,"y":193,"z":2,"connected_nodes_id":[884,890]},{"unique_id":892,"x":68,"y":193,"z":2,"connected_nodes_id":[880,893]},{"unique_id":893,"x":72,"y":193,"z":2,"connected_nodes_id":[892,894,911]},{"unique_id":894,"x":77,"y":193,"z":2,"connected_nodes_id":[893,895]},{"unique_id":895,"x":83,"y":193,"z":2,"connected_nodes_id":[887,894,903]},{"unique_id":896,"x":34,"y":194,"z":2,"connected_nodes_id":[881,897,907]},{"unique_id":897,"x":41,"y":194,"z":2,"connected_nodes_id":[890,896,900]},{"unique_id":898,"x":16,"y":195,"z":2,"connected_nodes_id":[886,899]},{"unique_id":899,"x":20,"y":195,"z":2,"connected_nodes_id":[889,898,905]},{"unique_id":900,"x":42,"y":195,"z":2,"connected_nodes_id":[890,897,908]},{"unique_id":901,"x":49,"y":195,"z":2,"connected_nodes_id":[902]},{"unique_id":902,"x":48,"y":196,"z":2,"connected_nodes_id":[901,909]},{"unique_id":903,"x":83,"y":196,"z":2,"connected_nodes_id":[895,904]},{"unique_id":904,"x":90,"y":196,"z":2,"connected_nodes_id":[888,903]},{"unique_id":905,"x":20,"y":198,"z":2,"connected_nodes_id":[899,906]},{"unique_id":906,"x":19,"y":199,"z":2,"connected_nodes_id":[905,912]},{"unique_id":907,"x":34,"y":200,"z":2,"connected_nodes_id":[896,908,915]},{"unique_id":908,"x":42,"y":200,"z":2,"connected_nodes_id":[900,907,909]},{"unique_id":909,"x":48,"y":200,"z":2,"connected_nodes_id":[902,908]},{"unique_id":910,"x":65,"y":200,"z":2,"connected_nodes_id":[911,919]},{"unique_id":911,"x":72,"y":200,"z":2,"connected_nodes_id":[893,910]},{"unique_id":912,"x":19,"y":204,"z":2,"connected_nodes_id":[906,913]},{"unique_id":913,"x":24,"y":204,"z":2,"connected_nodes_id":[912,914]},{"unique_id":914,"x":32,"y":204,"z":2,"connected_nodes_id":[913,915]},{"unique_id":915,"x":34,"y":204,"z":2,"connected_nodes_id":[907,914,916]},{"unique_id":916,"x":39,"y":204,"z":2,"connected_nodes_id":[915,920]},{"unique_id":917,"x":43,"y":204,"z":2,"connected_nodes_id":[921]},{"unique_id":918,"x":57,"y":204,"z":2,"connected_nodes_id":[919,926]},{"unique_id":919,"x":65,"y":204,"z":2,"connected_nodes_id":[910,918]},{"unique_id":920,"x":38,"y":205,"z":2,"connected_nodes_id":[916]},{"unique_id":921,"x":44,"y":205,"z":2,"connected_nodes_id":[917,924]},{"unique_id":922,"x":42,"y":207,"z":2,"connected_nodes_id":[923]},{"unique_id":923,"x":49,"y":207,"z":2,"connected_nodes_id":[922,925]},{"unique_id":924,"x":44,"y":208,"z":2,"connected_nodes_id":[921,925]},{"unique_id":925,"x":48,"y":208,"z":2,"connected_nodes_id":[923,924,926]},{"unique_id":926,"x":57,"y":208,"z":2,"connected_nodes_id":[918,925]},{"unique_id":927,"x":51,"y":122,"z":2,"connected_nodes_id":[288,928]},{"unique_id":928,"x":52,"y":123,"z":2,"connected_nodes_id":[927,929]},{"unique_id":929,"x":63,"y":123,"z":2,"connected_nodes_id":[928,335]},{"unique_id":930,"x":43,"y":125,"z":2,"connected_nodes_id":[268,931,937]},{"unique_id":931,"x":46,"y":125,"z":2,"connected_nodes_id":[930,277,932]},{"unique_id":932,"x":48,"y":125,"z":2,"connected_nodes_id":[931,933,938]},{"unique_id":933,"x":58,"y":125,"z":2,"connected_nodes_id":[932,934,940]},{"unique_id":934,"x":59,"y":126,"z":2,"connected_nodes_id":[933,935]},{"unique_id":935,"x":67,"y":126,"z":2,"connected_nodes_id":[934,936]},{"unique_id":936,"x":66,"y":127,"z":2,"connected_nodes_id":[935,942]},{"unique_id":937,"x":43,"y":133,"z":2,"connected_nodes_id":[930,938]},{"unique_id":938,"x":48,"y":133,"z":2,"connected_nodes_id":[932,937,939]},{"unique_id":939,"x":54,"y":133,"z":2,"connected_nodes_id":[938,293,940]},{"unique_id":940,"x":58,"y":133,"z":2,"connected_nodes_id":[933,939,941]},{"unique_id":941,"x":63,"y":133,"z":2,"connected_nodes_id":[940,942]},{"unique_id":942,"x":66,"y":133,"z":2,"connected_nodes_id":[936,941]},{"unique_id":943,"x":99,"y":8,"z":2,"connected_nodes_id":[944,947]},{"unique_id":944,"x":104,"y":8,"z":2,"connected_nodes_id":[943]},{"unique_id":945,"x":85,"y":15,"z":2,"connected_nodes_id":[946,948]},{"unique_id":946,"x":92,"y":15,"z":2,"connected_nodes_id":[945,947]},{"unique_id":947,"x":99,"y":15,"z":2,"connected_nodes_id":[943,946,949]},{"unique_id":948,"x":85,"y":20,"z":2,"connected_nodes_id":[945,951]},{"unique_id":949,"x":99,"y":22,"z":2,"connected_nodes_id":[947,950]},{"unique_id":950,"x":99,"y":30,"z":2,"connected_nodes_id":[949,953]},{"unique_id":951,"x":85,"y":31,"z":2,"connected_nodes_id":[948,960]},{"unique_id":952,"x":93,"y":33,"z":2,"connected_nodes_id":[953,955]},{"unique_id":953,"x":99,"y":33,"z":2,"connected_nodes_id":[950,952,954]},{"unique_id":954,"x":103,"y":33,"z":2,"connected_nodes_id":[953,426]},{"unique_id":955,"x":93,"y":39,"z":2,"connected_nodes_id":[952,956]},{"unique_id":956,"x":98,"y":39,"z":2,"connected_nodes_id":[955]},{"unique_id":957,"x":103,"y":39,"z":2,"connected_nodes_id":[412]},{"unique_id":958,"x":86,"y":41,"z":2,"connected_nodes_id":[960,961]},{"unique_id":959,"x":79,"y":42,"z":2,"connected_nodes_id":[960,964]},{"unique_id":960,"x":85,"y":42,"z":2,"connected_nodes_id":[958,959,951]},{"unique_id":961,"x":86,"y":44,"z":2,"connected_nodes_id":[958,962]},{"unique_id":962,"x":88,"y":44,"z":2,"connected_nodes_id":[961,966,968]},{"unique_id":963,"x":74,"y":45,"z":2,"connected_nodes_id":[964,972]},{"unique_id":964,"x":79,"y":45,"z":2,"connected_nodes_id":[959,963,965]},{"unique_id":965,"x":82,"y":45,"z":2,"connected_nodes_id":[964,966,975]},{"unique_id":966,"x":89,"y":45,"z":2,"connected_nodes_id":[962,965]},{"unique_id":967,"x":51,"y":47,"z":2,"connected_nodes_id":[275,969]},{"unique_id":968,"x":88,"y":47,"z":2,"connected_nodes_id":[962,381,973]},{"unique_id":969,"x":52,"y":48,"z":2,"connected_nodes_id":[967,970]},{"unique_id":970,"x":61,"y":48,"z":2,"connected_nodes_id":[969,971]},{"unique_id":971,"x":70,"y":48,"z":2,"connected_nodes_id":[970,972]},{"unique_id":972,"x":74,"y":48,"z":2,"connected_nodes_id":[963,971]},{"unique_id":973,"x":88,"y":50,"z":2,"connected_nodes_id":[968,357]},{"unique_id":974,"x":78,"y":52,"z":2,"connected_nodes_id":[975,979]},{"unique_id":975,"x":82,"y":52,"z":2,"connected_nodes_id":[965,974,980]},{"unique_id":976,"x":47,"y":54,"z":2,"connected_nodes_id":[839,977]},{"unique_id":977,"x":52,"y":54,"z":2,"connected_nodes_id":[976,982]},{"unique_id":978,"x":73,"y":55,"z":2,"connected_nodes_id":[979,984]},{"unique_id":979,"x":78,"y":55,"z":2,"connected_nodes_id":[974,978]},{"unique_id":980,"x":82,"y":55,"z":2,"connected_nodes_id":[975,981]},{"unique_id":981,"x":85,"y":55,"z":2,"connected_nodes_id":[980,988]},{"unique_id":982,"x":52,"y":59,"z":2,"connected_nodes_id":[977,983]},{"unique_id":983,"x":55,"y":59,"z":2,"connected_nodes_id":[982,298]},{"unique_id":984,"x":73,"y":60,"z":2,"connected_nodes_id":[978,986]},{"unique_id":985,"x":63,"y":61,"z":2,"connected_nodes_id":[986,1041]},{"unique_id":986,"x":72,"y":61,"z":2,"connected_nodes_id":[984,985,987]},{"unique_id":987,"x":83,"y":61,"z":2,"connected_nodes_id":[986,342,988]},{"unique_id":988,"x":85,"y":61,"z":2,"connected_nodes_id":[981,987]},{"unique_id":989,"x":52,"y":97,"z":2,"connected_nodes_id":[281,290,990,992]},{"unique_id":990,"x":59,"y":97,"z":2,"connected_nodes_id":[989,308,996]},{"unique_id":991,"x":65,"y":100,"z":2,"connected_nodes_id":[326,997]},{"unique_id":992,"x":52,"y":102,"z":2,"connected_nodes_id":[989,995]},{"unique_id":993,"x":56,"y":102,"z":2,"connected_nodes_id":[998,994]},{"unique_id":994,"x":60,"y":102,"z":2,"connected_nodes_id":[993,996]},{"unique_id":995,"x":51,"y":103,"z":2,"connected_nodes_id":[992,280,996]},{"unique_id":996,"x":59,"y":103,"z":2,"connected_nodes_id":[990,994,995,997]},{"unique_id":997,"x":65,"y":103,"z":2,"connected_nodes_id":[991,996,338,999]},{"unique_id":998,"x":56,"y":107,"z":2,"connected_nodes_id":[993,305]},{"unique_id":999,"x":65,"y":108,"z":2,"connected_nodes_id":[997,325,1002]},{"unique_id":1000,"x":50,"y":113,"z":2,"connected_nodes_id":[279,289]},{"unique_id":1001,"x":63,"y":113,"z":2,"connected_nodes_id":[312,1002]},{"unique_id":1002,"x":65,"y":113,"z":2,"connected_nodes_id":[999,1001,318]},{"unique_id":1003,"x":70,"y":142,"z":2,"connected_nodes_id":[1010]},{"unique_id":1004,"x":76,"y":142,"z":2,"connected_nodes_id":[1011]},{"unique_id":1005,"x":60,"y":143,"z":2,"connected_nodes_id":[1006,1020]},{"unique_id":1006,"x":65,"y":143,"z":2,"connected_nodes_id":[1005,1009]},{"unique_id":1007,"x":81,"y":144,"z":2,"connected_nodes_id":[1008,1085]},{"unique_id":1008,"x":82,"y":145,"z":2,"connected_nodes_id":[1007,1012]},{"unique_id":1009,"x":65,"y":146,"z":2,"connected_nodes_id":[1006,1010,1014]},{"unique_id":1010,"x":70,"y":146,"z":2,"connected_nodes_id":[1003,1009,1011]},{"unique_id":1011,"x":76,"y":146,"z":2,"connected_nodes_id":[1004,1010,1016]},{"unique_id":1012,"x":83,"y":146,"z":2,"connected_nodes_id":[1008,1018]},{"unique_id":1013,"x":87,"y":147,"z":2,"connected_nodes_id":[345,353,1019]},{"unique_id":1014,"x":65,"y":149,"z":2,"connected_nodes_id":[1009,1015,1023]},{"unique_id":1015,"x":66,"y":150,"z":2,"connected_nodes_id":[1014,1016,1025]},{"unique_id":1016,"x":76,"y":150,"z":2,"connected_nodes_id":[1011,1015,1017,1027]},{"unique_id":1017,"x":80,"y":150,"z":2,"connected_nodes_id":[1016,1018,1028]},{"unique_id":1018,"x":83,"y":150,"z":2,"connected_nodes_id":[1012,1017,1019]},{"unique_id":1019,"x":87,"y":150,"z":2,"connected_nodes_id":[1013,1018]},{"unique_id":1020,"x":60,"y":152,"z":2,"connected_nodes_id":[1005,302,1021,1022]},{"unique_id":1021,"x":59,"y":153,"z":2,"connected_nodes_id":[1020,1022,1024]},{"unique_id":1022,"x":61,"y":153,"z":2,"connected_nodes_id":[1020,1021,1040]},{"unique_id":1023,"x":65,"y":154,"z":2,"connected_nodes_id":[1014,1025]},{"unique_id":1024,"x":59,"y":155,"z":2,"connected_nodes_id":[1021,1025,1039]},{"unique_id":1025,"x":66,"y":155,"z":2,"connected_nodes_id":[1015,1023,1024,317,1026,1030]},{"unique_id":1026,"x":73,"y":155,"z":2,"connected_nodes_id":[1025,1027]},{"unique_id":1027,"x":76,"y":155,"z":2,"connected_nodes_id":[1016,1026,1028,1031,1036]},{"unique_id":1028,"x":80,"y":155,"z":2,"connected_nodes_id":[1017,1027,1029,1037]},{"unique_id":1029,"x":83,"y":155,"z":2,"connected_nodes_id":[1028]},{"unique_id":1030,"x":67,"y":156,"z":2,"connected_nodes_id":[1025,1032,1031]},{"unique_id":1031,"x":77,"y":156,"z":2,"connected_nodes_id":[1027,1030]},{"unique_id":1032,"x":67,"y":160,"z":2,"connected_nodes_id":[1030,321,1033,1034]},{"unique_id":1033,"x":72,"y":160,"z":2,"connected_nodes_id":[1032,1035]},{"unique_id":1034,"x":68,"y":161,"z":2,"connected_nodes_id":[1032,322]},{"unique_id":1035,"x":73,"y":161,"z":2,"connected_nodes_id":[1033,1036]},{"unique_id":1036,"x":76,"y":161,"z":2,"connected_nodes_id":[1027,1035,1037]},{"unique_id":1037,"x":80,"y":161,"z":2,"connected_nodes_id":[1028,1036,1038]},{"unique_id":1038,"x":83,"y":161,"z":2,"connected_nodes_id":[1037]},{"unique_id":1039,"x":59,"y":162,"z":2,"connected_nodes_id":[1024,1040]},{"unique_id":1040,"x":61,"y":162,"z":2,"connected_nodes_id":[1022,1039]},{"unique_id":1041,"x":63,"y":66,"z":2,"connected_nodes_id":[298,985,1046]},{"unique_id":1042,"x":67,"y":70,"z":2,"connected_nodes_id":[1043,1047]},{"unique_id":1043,"x":76,"y":70,"z":2,"connected_nodes_id":[1042,1044,1048]},{"unique_id":1044,"x":85,"y":70,"z":2,"connected_nodes_id":[1043,1049]},{"unique_id":1045,"x":89,"y":70,"z":2,"connected_nodes_id":[348,369]},{"unique_id":1046,"x":63,"y":73,"z":2,"connected_nodes_id":[1041,297,1051]},{"unique_id":1047,"x":67,"y":74,"z":2,"connected_nodes_id":[1042,1048,1052]},{"unique_id":1048,"x":76,"y":74,"z":2,"connected_nodes_id":[1043,1047,1049]},{"unique_id":1049,"x":85,"y":74,"z":2,"connected_nodes_id":[1044,1048,1054]},{"unique_id":1050,"x":88,"y":77,"z":2,"connected_nodes_id":[367,1055]},{"unique_id":1051,"x":63,"y":78,"z":2,"connected_nodes_id":[1046,296]},{"unique_id":1052,"x":67,"y":82,"z":2,"connected_nodes_id":[1047,307,1053,1057]},{"unique_id":1053,"x":76,"y":82,"z":2,"connected_nodes_id":[1052,1054,1060]},{"unique_id":1054,"x":85,"y":82,"z":2,"connected_nodes_id":[1049,1053,1062,1055]},{"unique_id":1055,"x":88,"y":82,"z":2,"connected_nodes_id":[1050,1054]},{"unique_id":1056,"x":61,"y":85,"z":2,"connected_nodes_id":[309,311,1057]},{"unique_id":1057,"x":67,"y":85,"z":2,"connected_nodes_id":[1052,1056,1058]},{"unique_id":1058,"x":71,"y":85,"z":2,"connected_nodes_id":[1057,1059]},{"unique_id":1059,"x":71,"y":87,"z":2,"connected_nodes_id":[1058,1064,1060]},{"unique_id":1060,"x":76,"y":87,"z":2,"connected_nodes_id":[1053,1059,1061]},{"unique_id":1061,"x":81,"y":87,"z":2,"connected_nodes_id":[1060,341,1062]},{"unique_id":1062,"x":85,"y":87,"z":2,"connected_nodes_id":[1054,1061,344]},{"unique_id":1063,"x":64,"y":89,"z":2,"connected_nodes_id":[315,1064]},{"unique_id":1064,"x":71,"y":89,"z":2,"connected_nodes_id":[1059,1063,331]},{"unique_id":1065,"x":98,"y":115,"z":2,"connected_nodes_id":[1066,1069]},{"unique_id":1066,"x":103,"y":115,"z":2,"connected_nodes_id":[1065,400]},{"unique_id":1067,"x":85,"y":120,"z":2,"connected_nodes_id":[1068,1071]},{"unique_id":1068,"x":92,"y":120,"z":2,"connected_nodes_id":[1067,1069,1074]},{"unique_id":1069,"x":98,"y":120,"z":2,"connected_nodes_id":[1065,1068,1073]},{"unique_id":1070,"x":81,"y":124,"z":2,"connected_nodes_id":[1071,1079]},{"unique_id":1071,"x":85,"y":124,"z":2,"connected_nodes_id":[1067,1070,1072]},{"unique_id":1072,"x":88,"y":124,"z":2,"connected_nodes_id":[1071,1077]},{"unique_id":1073,"x":98,"y":124,"z":2,"connected_nodes_id":[1069,1082]},{"unique_id":1074,"x":92,"y":125,"z":2,"connected_nodes_id":[1068,1075]},{"unique_id":1075,"x":95,"y":125,"z":2,"connected_nodes_id":[1074,1076]},{"unique_id":1076,"x":95,"y":128,"z":2,"connected_nodes_id":[1075]},{"unique_id":1077,"x":88,"y":129,"z":2,"connected_nodes_id":[1072,1078]},{"unique_id":1078,"x":91,"y":129,"z":2,"connected_nodes_id":[1077,1081]},{"unique_id":1079,"x":81,"y":131,"z":2,"connected_nodes_id":[1070,1085,1080]},{"unique_id":1080,"x":88,"y":131,"z":2,"connected_nodes_id":[1079,1083]},{"unique_id":1081,"x":91,"y":132,"z":2,"connected_nodes_id":[1078,1084]},{"unique_id":1082,"x":98,"y":132,"z":2,"connected_nodes_id":[1073]},{"unique_id":1083,"x":88,"y":133,"z":2,"connected_nodes_id":[1080,1084]},{"unique_id":1084,"x":91,"y":133,"z":2,"connected_nodes_id":[1081,1083,355]},{"unique_id":1085,"x":81,"y":137,"z":2,"connected_nodes_id":[333,345,1007,1079]},{"unique_id":1086,"x":85,"y":100,"z":2,"connected_nodes_id":[344,1087]},{"unique_id":1087,"x":93,"y":100,"z":2,"connected_nodes_id":[1086,1090,362,387]},{"unique_id":1088,"x":78,"y":104,"z":2,"connected_nodes_id":[]},{"unique_id":1089,"x":84,"y":104,"z":2,"connected_nodes_id":[1090]},{"unique_id":1090,"x":93,"y":104,"z":2,"connected_nodes_id":[1087,1089,361]},{"unique_id":1091,"x":109,"y":150,"z":2,"connected_nodes_id":[1092,1094]},{"unique_id":1092,"x":115,"y":150,"z":2,"connected_nodes_id":[1091,1100,478]},{"unique_id":1093,"x":101,"y":151,"z":2,"connected_nodes_id":[392,1094,1095]},{"unique_id":1094,"x":110,"y":151,"z":2,"connected_nodes_id":[1091,1093,439,1099]},{"unique_id":1095,"x":101,"y":153,"z":2,"connected_nodes_id":[1093,1096]},{"unique_id":1096,"x":100,"y":154,"z":2,"connected_nodes_id":[1095,1097]},{"unique_id":1097,"x":99,"y":155,"z":2,"connected_nodes_id":[1096,375,385,1098]},{"unique_id":1098,"x":104,"y":155,"z":2,"connected_nodes_id":[1097,1099]},{"unique_id":1099,"x":110,"y":155,"z":2,"connected_nodes_id":[1094,1098,1100]},{"unique_id":1100,"x":115,"y":155,"z":2,"connected_nodes_id":[1092,1099,467,477,1101]},{"unique_id":1101,"x":116,"y":156,"z":2,"connected_nodes_id":[1100]},{"unique_id":1102,"x":129,"y":70,"z":2,"connected_nodes_id":[527,1104]},{"unique_id":1103,"x":120,"y":73,"z":2,"connected_nodes_id":[445,1104,1107]},{"unique_id":1104,"x":129,"y":73,"z":2,"connected_nodes_id":[1102,1103,1108]},{"unique_id":1105,"x":111,"y":80,"z":2,"connected_nodes_id":[444,1106]},{"unique_id":1106,"x":112,"y":81,"z":2,"connected_nodes_id":[1105,1107,1111]},{"unique_id":1107,"x":120,"y":81,"z":2,"connected_nodes_id":[1103,1106,1108,1112]},{"unique_id":1108,"x":129,"y":81,"z":2,"connected_nodes_id":[1104,1107,1109]},{"unique_id":1109,"x":129,"y":87,"z":2,"connected_nodes_id":[1108,1110,1113]},{"unique_id":1110,"x":133,"y":87,"z":2,"connected_nodes_id":[1109,1117,1165]},{"unique_id":1111,"x":112,"y":89,"z":2,"connected_nodes_id":[1106,1112,1114]},{"unique_id":1112,"x":120,"y":89,"z":2,"connected_nodes_id":[1107,1111,1113]},{"unique_id":1113,"x":129,"y":89,"z":2,"connected_nodes_id":[1109,1112]},{"unique_id":1114,"x":111,"y":90,"z":2,"connected_nodes_id":[1111,418]},{"unique_id":1115,"x":113,"y":93,"z":2,"connected_nodes_id":[417,1116]},{"unique_id":1116,"x":118,"y":93,"z":2,"connected_nodes_id":[1115,471]},{"unique_id":1117,"x":133,"y":94,"z":2,"connected_nodes_id":[1110,517,518]},{"unique_id":1118,"x":136,"y":105,"z":2,"connected_nodes_id":[519,1124]},{"unique_id":1119,"x":122,"y":110,"z":2,"connected_nodes_id":[490,1120]},{"unique_id":1120,"x":124,"y":110,"z":2,"connected_nodes_id":[1119,1121]},{"unique_id":1121,"x":127,"y":110,"z":2,"connected_nodes_id":[1120,1127,1122]},{"unique_id":1122,"x":130,"y":110,"z":2,"connected_nodes_id":[1121,510,540,1123]},{"unique_id":1123,"x":131,"y":111,"z":2,"connected_nodes_id":[1122,1124,1126]},{"unique_id":1124,"x":136,"y":111,"z":2,"connected_nodes_id":[1118,1123,542]},{"unique_id":1125,"x":117,"y":112,"z":2,"connected_nodes_id":[]},{"unique_id":1126,"x":131,"y":115,"z":2,"connected_nodes_id":[1123]},{"unique_id":1127,"x":127,"y":116,"z":2,"connected_nodes_id":[1121,502]},{"unique_id":1128,"x":131,"y":121,"z":2,"connected_nodes_id":[513,1129]},{"unique_id":1129,"x":138,"y":121,"z":2,"connected_nodes_id":[1128,534,538]},{"unique_id":1130,"x":134,"y":148,"z":2,"connected_nodes_id":[1131,1133,1134]},{"unique_id":1131,"x":141,"y":148,"z":2,"connected_nodes_id":[1130,564]},{"unique_id":1132,"x":129,"y":149,"z":2,"connected_nodes_id":[487,504,1133]},{"unique_id":1133,"x":133,"y":149,"z":2,"connected_nodes_id":[1130,1132,516,1136]},{"unique_id":1134,"x":134,"y":154,"z":2,"connected_nodes_id":[1130,1136]},{"unique_id":1135,"x":128,"y":155,"z":2,"connected_nodes_id":[477,1136,1138]},{"unique_id":1136,"x":133,"y":155,"z":2,"connected_nodes_id":[1133,1134,1135,1137]},{"unique_id":1137,"x":137,"y":155,"z":2,"connected_nodes_id":[1136,1140]},{"unique_id":1138,"x":128,"y":159,"z":2,"connected_nodes_id":[1135,1139]},{"unique_id":1139,"x":132,"y":159,"z":2,"connected_nodes_id":[1138,1143]},{"unique_id":1140,"x":137,"y":159,"z":2,"connected_nodes_id":[1137,1144]},{"unique_id":1141,"x":144,"y":159,"z":2,"connected_nodes_id":[1145]},{"unique_id":1142,"x":126,"y":164,"z":2,"connected_nodes_id":[485]},{"unique_id":1143,"x":132,"y":165,"z":2,"connected_nodes_id":[1139,1144,1146]},{"unique_id":1144,"x":137,"y":165,"z":2,"connected_nodes_id":[1140,1143,1145]},{"unique_id":1145,"x":144,"y":165,"z":2,"connected_nodes_id":[1141,1144]},{"unique_id":1146,"x":132,"y":169,"z":2,"connected_nodes_id":[1143,1147]},{"unique_id":1147,"x":140,"y":169,"z":2,"connected_nodes_id":[1146,536]},{"unique_id":1148,"x":147,"y":182,"z":2,"connected_nodes_id":[558,1151]},{"unique_id":1149,"x":153,"y":182,"z":2,"connected_nodes_id":[580,1150]},{"unique_id":1150,"x":158,"y":182,"z":2,"connected_nodes_id":[1149,1158]},{"unique_id":1151,"x":146,"y":183,"z":2,"connected_nodes_id":[1148,1156]},{"unique_id":1152,"x":187,"y":183,"z":2,"connected_nodes_id":[1153,1162]},{"unique_id":1153,"x":193,"y":183,"z":2,"connected_nodes_id":[1152,661,1154]},{"unique_id":1154,"x":195,"y":183,"z":2,"connected_nodes_id":[1153,677]},{"unique_id":1155,"x":140,"y":184,"z":2,"connected_nodes_id":[512,1156,1163]},{"unique_id":1156,"x":145,"y":184,"z":2,"connected_nodes_id":[1151,1155]},{"unique_id":1157,"x":186,"y":186,"z":2,"connected_nodes_id":[1162]},{"unique_id":1158,"x":158,"y":187,"z":2,"connected_nodes_id":[1150,1159]},{"unique_id":1159,"x":163,"y":187,"z":2,"connected_nodes_id":[1158,1160,1164]},{"unique_id":1160,"x":168,"y":187,"z":2,"connected_nodes_id":[1159,1161]},{"unique_id":1161,"x":178,"y":187,"z":2,"connected_nodes_id":[1160,1162]},{"unique_id":1162,"x":187,"y":187,"z":2,"connected_nodes_id":[1152,1157,1161]},{"unique_id":1163,"x":140,"y":189,"z":2,"connected_nodes_id":[1155]},{"unique_id":1164,"x":163,"y":191,"z":2,"connected_nodes_id":[1159]},{"unique_id":1165,"x":140,"y":87,"z":2,"connected_nodes_id":[574,1110]},{"unique_id":1166,"x":154,"y":135,"z":2,"connected_nodes_id":[584,1167,1170]},{"unique_id":1167,"x":153,"y":136,"z":2,"connected_nodes_id":[1166,1168]},{"unique_id":1168,"x":153,"y":143,"z":2,"connected_nodes_id":[1167,547,1169]},{"unique_id":1169,"x":153,"y":145,"z":2,"connected_nodes_id":[1168,1170]},{"unique_id":1170,"x":154,"y":146,"z":2,"connected_nodes_id":[1166,1169,1171]},{"unique_id":1171,"x":158,"y":146,"z":2,"connected_nodes_id":[1170]},{"unique_id":1172,"x":152,"y":70,"z":2,"connected_nodes_id":[550,1173]},{"unique_id":1173,"x":156,"y":70,"z":2,"connected_nodes_id":[1172,1174,1188]},{"unique_id":1174,"x":164,"y":70,"z":2,"connected_nodes_id":[1173,1175]},{"unique_id":1175,"x":172,"y":70,"z":2,"connected_nodes_id":[1174,1176]},{"unique_id":1176,"x":176,"y":70,"z":2,"connected_nodes_id":[1175,1177,1293]},{"unique_id":1177,"x":180,"y":70,"z":2,"connected_nodes_id":[1176,1178]},{"unique_id":1178,"x":184,"y":70,"z":2,"connected_nodes_id":[1177,1179,1184]},{"unique_id":1179,"x":186,"y":70,"z":2,"connected_nodes_id":[1178,1291]},{"unique_id":1180,"x":198,"y":71,"z":2,"connected_nodes_id":[1181,1187,1294]},{"unique_id":1181,"x":202,"y":71,"z":2,"connected_nodes_id":[1180,1295]},{"unique_id":1182,"x":178,"y":77,"z":2,"connected_nodes_id":[1183,1193]},{"unique_id":1183,"x":183,"y":77,"z":2,"connected_nodes_id":[1182,1184]},{"unique_id":1184,"x":184,"y":78,"z":2,"connected_nodes_id":[1178,1183,1185]},{"unique_id":1185,"x":185,"y":79,"z":2,"connected_nodes_id":[1184,1186]},{"unique_id":1186,"x":192,"y":79,"z":2,"connected_nodes_id":[1185,1187]},{"unique_id":1187,"x":198,"y":79,"z":2,"connected_nodes_id":[1180,1186,1194]},{"unique_id":1188,"x":156,"y":80,"z":2,"connected_nodes_id":[1173,1189]},{"unique_id":1189,"x":157,"y":81,"z":2,"connected_nodes_id":[1188,1190]},{"unique_id":1190,"x":157,"y":84,"z":2,"connected_nodes_id":[1189,575,1191]},{"unique_id":1191,"x":158,"y":85,"z":2,"connected_nodes_id":[1190,1192]},{"unique_id":1192,"x":158,"y":86,"z":2,"connected_nodes_id":[1191,1195]},{"unique_id":1193,"x":178,"y":87,"z":2,"connected_nodes_id":[1182,1197]},{"unique_id":1194,"x":198,"y":87,"z":2,"connected_nodes_id":[1187,1199]},{"unique_id":1195,"x":158,"y":89,"z":2,"connected_nodes_id":[1192,1196]},{"unique_id":1196,"x":164,"y":89,"z":2,"connected_nodes_id":[1195]},{"unique_id":1197,"x":178,"y":94,"z":2,"connected_nodes_id":[1193,1198,1202]},{"unique_id":1198,"x":188,"y":94,"z":2,"connected_nodes_id":[1197,1206]},{"unique_id":1199,"x":198,"y":96,"z":2,"connected_nodes_id":[1194,1207]},{"unique_id":1200,"x":159,"y":101,"z":2,"connected_nodes_id":[572,1203]},{"unique_id":1201,"x":175,"y":102,"z":2,"connected_nodes_id":[1202,1209]},{"unique_id":1202,"x":178,"y":102,"z":2,"connected_nodes_id":[1197,1201,1205]},{"unique_id":1203,"x":159,"y":105,"z":2,"connected_nodes_id":[1200,586,1204]},{"unique_id":1204,"x":166,"y":105,"z":2,"connected_nodes_id":[1203,601]},{"unique_id":1205,"x":178,"y":105,"z":2,"connected_nodes_id":[1202,1206,1210]},{"unique_id":1206,"x":188,"y":105,"z":2,"connected_nodes_id":[1198,1205,1207]},{"unique_id":1207,"x":198,"y":105,"z":2,"connected_nodes_id":[1199,1206,1211]},{"unique_id":1208,"x":172,"y":107,"z":2,"connected_nodes_id":[1209]},{"unique_id":1209,"x":175,"y":107,"z":2,"connected_nodes_id":[1201,1208]},{"unique_id":1210,"x":178,"y":110,"z":2,"connected_nodes_id":[1205,1296]},{"unique_id":1211,"x":198,"y":110,"z":2,"connected_nodes_id":[1207,1212]},{"unique_id":1212,"x":203,"y":110,"z":2,"connected_nodes_id":[1211,1213]},{"unique_id":1213,"x":209,"y":110,"z":2,"connected_nodes_id":[1212]},{"unique_id":1214,"x":169,"y":4,"z":2,"connected_nodes_id":[1215,1227]},{"unique_id":1215,"x":171,"y":4,"z":2,"connected_nodes_id":[1214,1216]},{"unique_id":1216,"x":180,"y":4,"z":2,"connected_nodes_id":[1215,1217,1218]},{"unique_id":1217,"x":193,"y":4,"z":2,"connected_nodes_id":[1216,1219]},{"unique_id":1218,"x":181,"y":5,"z":2,"connected_nodes_id":[1216,1229]},{"unique_id":1219,"x":193,"y":7,"z":2,"connected_nodes_id":[1217,1220,1232]},{"unique_id":1220,"x":199,"y":7,"z":2,"connected_nodes_id":[1219,1221]},{"unique_id":1221,"x":211,"y":7,"z":2,"connected_nodes_id":[1220,1234]},{"unique_id":1222,"x":216,"y":11,"z":2,"connected_nodes_id":[1235]},{"unique_id":1223,"x":199,"y":12,"z":2,"connected_nodes_id":[1224,1238]},{"unique_id":1224,"x":201,"y":12,"z":2,"connected_nodes_id":[1223,1225]},{"unique_id":1225,"x":206,"y":12,"z":2,"connected_nodes_id":[1224,1233]},{"unique_id":1226,"x":221,"y":12,"z":2,"connected_nodes_id":[1240]},{"unique_id":1227,"x":169,"y":15,"z":2,"connected_nodes_id":[1214,1228,1246]},{"unique_id":1228,"x":177,"y":15,"z":2,"connected_nodes_id":[1227,1236]},{"unique_id":1229,"x":181,"y":15,"z":2,"connected_nodes_id":[1218,1230,1237]},{"unique_id":1230,"x":183,"y":15,"z":2,"connected_nodes_id":[1229,1231,1237]},{"unique_id":1231,"x":185,"y":15,"z":2,"connected_nodes_id":[1230,1232,1241]},{"unique_id":1232,"x":193,"y":15,"z":2,"connected_nodes_id":[1219,1231,1249]},{"unique_id":1233,"x":206,"y":15,"z":2,"connected_nodes_id":[1225,1234,1239,1245]},{"unique_id":1234,"x":211,"y":15,"z":2,"connected_nodes_id":[1221,1233,1235,1242]},{"unique_id":1235,"x":216,"y":15,"z":2,"connected_nodes_id":[1222,1234,1243]},{"unique_id":1236,"x":178,"y":16,"z":2,"connected_nodes_id":[1228,1237]},{"unique_id":1237,"x":182,"y":16,"z":2,"connected_nodes_id":[1229,1230,1236]},{"unique_id":1238,"x":199,"y":16,"z":2,"connected_nodes_id":[1223,1239]},{"unique_id":1239,"x":205,"y":16,"z":2,"connected_nodes_id":[1233,1238]},{"unique_id":1240,"x":221,"y":16,"z":2,"connected_nodes_id":[1226,1244]},{"unique_id":1241,"x":185,"y":19,"z":2,"connected_nodes_id":[1231,1248]},{"unique_id":1242,"x":211,"y":19,"z":2,"connected_nodes_id":[1234]},{"unique_id":1243,"x":216,"y":19,"z":2,"connected_nodes_id":[1235]},{"unique_id":1244,"x":221,"y":19,"z":2,"connected_nodes_id":[1240,1254]},{"unique_id":1245,"x":206,"y":20,"z":2,"connected_nodes_id":[1233,1251]},{"unique_id":1246,"x":169,"y":24,"z":2,"connected_nodes_id":[1227,1247,1259]},{"unique_id":1247,"x":177,"y":24,"z":2,"connected_nodes_id":[1246,1248]},{"unique_id":1248,"x":185,"y":24,"z":2,"connected_nodes_id":[1241,1247,1249]},{"unique_id":1249,"x":193,"y":24,"z":2,"connected_nodes_id":[1232,1248,1256]},{"unique_id":1250,"x":203,"y":24,"z":2,"connected_nodes_id":[1251,1257]},{"unique_id":1251,"x":206,"y":24,"z":2,"connected_nodes_id":[1245,1250,1252]},{"unique_id":1252,"x":211,"y":24,"z":2,"connected_nodes_id":[1251,1253]},{"unique_id":1253,"x":217,"y":24,"z":2,"connected_nodes_id":[1252,1254,1255]},{"unique_id":1254,"x":221,"y":24,"z":2,"connected_nodes_id":[1244,1253]},{"unique_id":1255,"x":217,"y":26,"z":2,"connected_nodes_id":[1253]},{"unique_id":1256,"x":193,"y":31,"z":2,"connected_nodes_id":[1249,1268]},{"unique_id":1257,"x":203,"y":32,"z":2,"connected_nodes_id":[1250,1269]},{"unique_id":1258,"x":163,"y":34,"z":2,"connected_nodes_id":[1259,1274]},{"unique_id":1259,"x":169,"y":34,"z":2,"connected_nodes_id":[1246,1258,1260]},{"unique_id":1260,"x":171,"y":34,"z":2,"connected_nodes_id":[1259,1261]},{"unique_id":1261,"x":178,"y":34,"z":2,"connected_nodes_id":[1260,1263]},{"unique_id":1262,"x":165,"y":35,"z":2,"connected_nodes_id":[]},{"unique_id":1263,"x":178,"y":38,"z":2,"connected_nodes_id":[1261,1266]},{"unique_id":1264,"x":172,"y":39,"z":2,"connected_nodes_id":[1265]},{"unique_id":1265,"x":174,"y":39,"z":2,"connected_nodes_id":[1264,1266]},{"unique_id":1266,"x":179,"y":39,"z":2,"connected_nodes_id":[1263,1265,1267]},{"unique_id":1267,"x":183,"y":39,"z":2,"connected_nodes_id":[1266,1268,1270]},{"unique_id":1268,"x":193,"y":39,"z":2,"connected_nodes_id":[1256,1267,1271]},{"unique_id":1269,"x":203,"y":39,"z":2,"connected_nodes_id":[1257,1273]},{"unique_id":1270,"x":184,"y":40,"z":2,"connected_nodes_id":[1267]},{"unique_id":1271,"x":193,"y":44,"z":2,"connected_nodes_id":[1268,1272]},{"unique_id":1272,"x":198,"y":44,"z":2,"connected_nodes_id":[1271,1273,1279]},{"unique_id":1273,"x":203,"y":44,"z":2,"connected_nodes_id":[1269,1272]},{"unique_id":1274,"x":163,"y":46,"z":2,"connected_nodes_id":[1258,579]},{"unique_id":1275,"x":157,"y":51,"z":2,"connected_nodes_id":[1280]},{"unique_id":1276,"x":166,"y":51,"z":2,"connected_nodes_id":[1277]},{"unique_id":1277,"x":168,"y":51,"z":2,"connected_nodes_id":[1276,1283]},{"unique_id":1278,"x":192,"y":53,"z":2,"connected_nodes_id":[1279,1287]},{"unique_id":1279,"x":198,"y":53,"z":2,"connected_nodes_id":[1272,1278,1288]},{"unique_id":1280,"x":157,"y":54,"z":2,"connected_nodes_id":[1275,1281]},{"unique_id":1281,"x":161,"y":54,"z":2,"connected_nodes_id":[1280,1282]},{"unique_id":1282,"x":162,"y":55,"z":2,"connected_nodes_id":[1281,1283]},{"unique_id":1283,"x":168,"y":55,"z":2,"connected_nodes_id":[1277,1282,1284]},{"unique_id":1284,"x":168,"y":57,"z":2,"connected_nodes_id":[1283,1285]},{"unique_id":1285,"x":173,"y":57,"z":2,"connected_nodes_id":[1284,1289]},{"unique_id":1286,"x":190,"y":60,"z":2,"connected_nodes_id":[1287,1292]},{"unique_id":1287,"x":192,"y":60,"z":2,"connected_nodes_id":[1278,1286,1288]},{"unique_id":1288,"x":198,"y":60,"z":2,"connected_nodes_id":[1279,1287,1294]},{"unique_id":1289,"x":173,"y":61,"z":2,"connected_nodes_id":[1285,1290]},{"unique_id":1290,"x":176,"y":61,"z":2,"connected_nodes_id":[1289,1293]},{"unique_id":1291,"x":186,"y":63,"z":2,"connected_nodes_id":[1179,1292]},{"unique_id":1292,"x":190,"y":63,"z":2,"connected_nodes_id":[1286,1291]},{"unique_id":1293,"x":176,"y":66,"z":2,"connected_nodes_id":[1290,1176]},{"unique_id":1294,"x":198,"y":66,"z":2,"connected_nodes_id":[1288,1180,1295]},{"unique_id":1295,"x":202,"y":66,"z":2,"connected_nodes_id":[1294,1181]},{"unique_id":1296,"x":178,"y":112,"z":2,"connected_nodes_id":[1210,1297,1298,1299,1302]},{"unique_id":1297,"x":181,"y":112,"z":2,"connected_nodes_id":[1296,1300]},{"unique_id":1298,"x":177,"y":113,"z":2,"connected_nodes_id":[1296,1299,1305]},{"unique_id":1299,"x":179,"y":113,"z":2,"connected_nodes_id":[1296,1298,1300,1306]},{"unique_id":1300,"x":182,"y":113,"z":2,"connected_nodes_id":[1297,1299,1303]},{"unique_id":1301,"x":175,"y":116,"z":2,"connected_nodes_id":[1302]},{"unique_id":1302,"x":178,"y":116,"z":2,"connected_nodes_id":[1296,1301,1304]},{"unique_id":1303,"x":182,"y":119,"z":2,"connected_nodes_id":[1300,1307]},{"unique_id":1304,"x":178,"y":121,"z":2,"connected_nodes_id":[1302,1305,1306]},{"unique_id":1305,"x":177,"y":122,"z":2,"connected_nodes_id":[1298,1304,1306]},{"unique_id":1306,"x":179,"y":122,"z":2,"connected_nodes_id":[1299,1304,1305,1307]},{"unique_id":1307,"x":182,"y":122,"z":2,"connected_nodes_id":[1303,1306]},{"unique_id":1308,"x":185,"y":128,"z":2,"connected_nodes_id":[632,647]}] From 2f3d4dba99b56acc1a6f2e6a35fa0602002bd737 Mon Sep 17 00:00:00 2001 From: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Date: Thu, 29 Sep 2022 21:50:46 -0700 Subject: [PATCH 50/82] Add rustg_toml_encode (#116) Add rustg_toml_encode --- dmsrc/toml.dm | 9 +++++++++ src/error.rs | 7 +++++-- src/toml.rs | 20 ++++++++++++++++++++ tests/dm/toml.dme | 8 ++++++++ 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/dmsrc/toml.dm b/dmsrc/toml.dm index 8ef7c277..c9a63382 100644 --- a/dmsrc/toml.dm +++ b/dmsrc/toml.dm @@ -6,3 +6,12 @@ return json_decode(output["content"]) else CRASH(output["content"]) + +#define rustg_raw_toml_encode(value) json_decode(call(RUST_G, "toml_encode")(json_encode(value))) + +/proc/rustg_toml_encode(value) + var/list/output = rustg_raw_toml_encode(value) + if (output["success"]) + return output["content"] + else + CRASH(output["content"]) diff --git a/src/error.rs b/src/error.rs index 81f11e15..104e80b7 100644 --- a/src/error.rs +++ b/src/error.rs @@ -34,6 +34,9 @@ pub enum Error { #[cfg(feature = "png")] #[error(transparent)] ImageEncoding(#[from] EncodingError), + #[cfg(feature = "http")] + #[error(transparent)] + JsonSerialization(#[from] serde_json::Error), #[error(transparent)] ParseInt(#[from] ParseIntError), #[error(transparent)] @@ -49,9 +52,9 @@ pub enum Error { #[cfg(feature = "toml")] #[error(transparent)] TomlDeserialization(#[from] toml_dep::de::Error), - #[cfg(feature = "http")] + #[cfg(feature = "toml")] #[error(transparent)] - Serialization(#[from] serde_json::Error), + TomlSerialization(#[from] toml_dep::ser::Error), #[cfg(feature = "unzip")] #[error(transparent)] Unzip(#[from] ZipError), diff --git a/src/toml.rs b/src/toml.rs index a28916af..09faf25c 100644 --- a/src/toml.rs +++ b/src/toml.rs @@ -20,3 +20,23 @@ fn toml_file_to_json_impl(path: &str) -> Result { path, )?)?)?) } + +byond_fn!(fn toml_encode(value) { + serde_json::to_string( + &match toml_encode_impl(value) { + Ok(value) => serde_json::json!({ + "success": true, "content": value + }), + + Err(error) => serde_json::json!({ + "success": false, "content": error.to_string() + }), + } + ).ok() +}); + +fn toml_encode_impl(value: &str) -> Result { + Ok(toml_dep::to_string_pretty(&serde_json::from_str::< + toml_dep::Value, + >(value)?)?) +} diff --git a/tests/dm/toml.dme b/tests/dm/toml.dme index 0125be98..959217e9 100644 --- a/tests/dm/toml.dme +++ b/tests/dm/toml.dme @@ -19,3 +19,11 @@ var/test_json = @{" if (toml_output ~! json_decode(test_json)) CRASH("test:\n[test_toml]\n \nexpected:\n[test_json]\n \nrustg:\n[json_encode(toml_output)]") + +/test/proc/check_rustg_toml_encode() + var/json_value = json_decode(test_json) + rustg_file_write(rustg_toml_encode(json_value), "test_encode.toml") + var/toml_output = rustg_read_toml_file("test_encode.toml") + + if (toml_output ~! json_value) + CRASH("test:\n[test_toml]\n \nexpected:\n[test_json]\n \nrustg:\n[json_encode(toml_output)]") From 7bb6cf84699ece120667cfe92da7318ad85c5a09 Mon Sep 17 00:00:00 2001 From: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Date: Fri, 30 Sep 2022 00:16:51 -0700 Subject: [PATCH 51/82] 1.1.0 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c79b9e7e..96b7ded4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1999,7 +1999,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "1.0.2" +version = "1.1.0" dependencies = [ "aho-corasick", "base64", diff --git a/Cargo.toml b/Cargo.toml index 95d6d1af..f654a70d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rust-g" edition = "2021" -version = "1.0.2" +version = "1.1.0" authors = ["Bjorn Neergaard ", "Tad Hardesty ", "rust-g maintainer team"] repository = "https://github.com/tgstation/rust-g" license = "MIT" From 0bdb3bb7a4a6aad2304d2dc5b28c307757e11289 Mon Sep 17 00:00:00 2001 From: Djiq <42111655+EdgeLordExe@users.noreply.github.com> Date: Sat, 1 Oct 2022 18:40:14 +0200 Subject: [PATCH 52/82] Fixes cellular noise not working for diff height and width values (#117) --- src/cellularnoise.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cellularnoise.rs b/src/cellularnoise.rs index de9bae65..fcd2bcb5 100644 --- a/src/cellularnoise.rs +++ b/src/cellularnoise.rs @@ -22,11 +22,11 @@ fn noise_gen( let width = width_as_str.parse::()?; let height = height_as_str.parse::()?; //we populate it, from 0 to height+3, 0 to height+1 is exactly height long, but we also need border guards, so we add another +2, so it is 0..height+3 - let mut filled_vec = (0..height + 3) + let mut filled_vec = (0..width + 3) .into_par_iter() .map(|x| { let mut rng = rand::thread_rng(); - (0..width + 3) + (0..height + 3) .into_iter() .map(|y| { if x == 0 || y == 0 || x == width + 2 || y == height + 2 { From 99acb3dc71d5c5bde19cb49fe6d110a536a964c9 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Mon, 24 Oct 2022 11:58:29 -0700 Subject: [PATCH 53/82] Update README.md update readme with `pathfinder` feature and rust-analyzer note, re: #115 --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4ec05ac4..6366c7be 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ This library is currently used in the [/tg/station] codebase, and is required fo it to run. A pre-compiled DLL version can be found in the repo root of codebases that use it, but you can build your own from this repo (and you should if you're running a server). -Builds can also be found on the [releases page] but should only be used for Windows, +Builds can also be found on the [releases page] **but should only be used for Windows**, as Linux has compatibility issues across distributions. [releases page]: https://github.com/tgstation/rust-g/releases @@ -104,11 +104,14 @@ The default features are: Additional features are: * batchnoise: Discrete Batched Perlin-like Noise, fast and multi-threaded - sent over once instead of having to query for every tile. +* pathfinder: An a* pathfinder used for finding the shortest path in a static node map. Not to be used for a non-static map. * hash: Faster replacement for `md5`, support for SHA-1, SHA-256, and SHA-512. Requires OpenSSL on Linux. * redis_pubsub: Library for sending and receiving messages through Redis. * unzip: Function to download a .zip from a URL and unzip it to a directory. * worleynoise: Function that generates a type of nice looking cellular noise, more expensive than cellularnoise +Regarding rust-analyzer: If you are using a feature set other than the default, you will need to adjust `rust-analyzer.cargo.features`. + ## Installing The rust-g binary (`rust_g.dll` or `librust_g.so`) should be placed in the root From 22a5b6eddb6e8ac8b982c0a5a153a0d0122be29b Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Mon, 24 Oct 2022 12:13:03 -0700 Subject: [PATCH 54/82] Fix the `pathfinder` feature's loc in the README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6366c7be..91e439bc 100644 --- a/README.md +++ b/README.md @@ -104,8 +104,8 @@ The default features are: Additional features are: * batchnoise: Discrete Batched Perlin-like Noise, fast and multi-threaded - sent over once instead of having to query for every tile. -* pathfinder: An a* pathfinder used for finding the shortest path in a static node map. Not to be used for a non-static map. * hash: Faster replacement for `md5`, support for SHA-1, SHA-256, and SHA-512. Requires OpenSSL on Linux. +* pathfinder: An a* pathfinder used for finding the shortest path in a static node map. Not to be used for a non-static map. * redis_pubsub: Library for sending and receiving messages through Redis. * unzip: Function to download a .zip from a URL and unzip it to a directory. * worleynoise: Function that generates a type of nice looking cellular noise, more expensive than cellularnoise From 42fc793d1c0aacde7c28a3d6fdd36b9d2c444e3f Mon Sep 17 00:00:00 2001 From: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Date: Mon, 24 Oct 2022 12:36:30 -0700 Subject: [PATCH 55/82] Package debug symbols with rust-g (#119) --- .github/workflows/rust.yml | 1 + Cargo.toml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 5567d1b4..80db2bdf 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -46,6 +46,7 @@ jobs: name: Windows Build path: | target/i686-pc-windows-msvc/release/rust_g.dll + target/i686-pc-windows-msvc/release/rust_g.pdb target/rust_g.dm diff --git a/Cargo.toml b/Cargo.toml index f654a70d..ca3ed09a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,6 +14,7 @@ crate-type = ["cdylib"] opt-level = 3 codegen-units = 1 lto = true +debug = true [dependencies] thiserror = "1.0" From acfc2528646cf9130ebbd13c74d0f0ef0476b878 Mon Sep 17 00:00:00 2001 From: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Date: Thu, 27 Oct 2022 16:54:41 +0100 Subject: [PATCH 56/82] 515 Support (#121) --- dmsrc/acreplace.dm | 8 ++++---- dmsrc/cellularnoise.dm | 2 +- dmsrc/dbpnoise.dm | 2 +- dmsrc/dmi.dm | 6 +++--- dmsrc/file.dm | 12 ++++++------ dmsrc/git.dm | 4 ++-- dmsrc/hash.dm | 8 ++++---- dmsrc/http.dm | 6 +++--- dmsrc/json.dm | 2 +- dmsrc/log.dm | 4 ++-- dmsrc/main.dm | 9 ++++++++- dmsrc/noise.dm | 2 +- dmsrc/pathfinder.dm | 8 ++++---- dmsrc/redis-pubsub.dm | 10 +++++----- dmsrc/sql.dm | 12 ++++++------ dmsrc/time.dm | 6 +++--- dmsrc/toml.dm | 4 ++-- dmsrc/unzip.dm | 4 ++-- dmsrc/url.dm | 4 ++-- dmsrc/worleynoise.dm | 2 +- 20 files changed, 61 insertions(+), 54 deletions(-) diff --git a/dmsrc/acreplace.dm b/dmsrc/acreplace.dm index 08107f0e..ada138c6 100644 --- a/dmsrc/acreplace.dm +++ b/dmsrc/acreplace.dm @@ -8,7 +8,7 @@ * * patterns - A non-associative list of strings to search for * * replacements - Default replacements for this automaton, used with rustg_acreplace */ -#define rustg_setup_acreplace(key, patterns, replacements) call(RUST_G, "setup_acreplace")(key, json_encode(patterns), json_encode(replacements)) +#define rustg_setup_acreplace(key, patterns, replacements) RUSTG_CALL(RUST_G, "setup_acreplace")(key, json_encode(patterns), json_encode(replacements)) /** * Sets up the Aho-Corasick automaton using supplied options. @@ -20,7 +20,7 @@ * * patterns - A non-associative list of strings to search for * * replacements - Default replacements for this automaton, used with rustg_acreplace */ -#define rustg_setup_acreplace_with_options(key, options, patterns, replacements) call(RUST_G, "setup_acreplace")(key, json_encode(options), json_encode(patterns), json_encode(replacements)) +#define rustg_setup_acreplace_with_options(key, options, patterns, replacements) RUSTG_CALL(RUST_G, "setup_acreplace")(key, json_encode(options), json_encode(patterns), json_encode(replacements)) /** * Run the specified replacement engine with the provided haystack text to replace, returning replaced text. @@ -29,7 +29,7 @@ * * key - The key for the automaton * * text - Text to run replacements on */ -#define rustg_acreplace(key, text) call(RUST_G, "acreplace")(key, text) +#define rustg_acreplace(key, text) RUSTG_CALL(RUST_G, "acreplace")(key, text) /** * Run the specified replacement engine with the provided haystack text to replace, returning replaced text. @@ -39,4 +39,4 @@ * * text - Text to run replacements on * * replacements - Replacements for this call. Must be the same length as the set-up patterns */ -#define rustg_acreplace_with_replacements(key, text, replacements) call(RUST_G, "acreplace_with_replacements")(key, text, json_encode(replacements)) +#define rustg_acreplace_with_replacements(key, text, replacements) RUSTG_CALL(RUST_G, "acreplace_with_replacements")(key, text, json_encode(replacements)) diff --git a/dmsrc/cellularnoise.dm b/dmsrc/cellularnoise.dm index 2f48dd9d..2828fdc8 100644 --- a/dmsrc/cellularnoise.dm +++ b/dmsrc/cellularnoise.dm @@ -12,4 +12,4 @@ * * height: The height of the grid. */ #define rustg_cnoise_generate(percentage, smoothing_iterations, birth_limit, death_limit, width, height) \ - call(RUST_G, "cnoise_generate")(percentage, smoothing_iterations, birth_limit, death_limit, width, height) + RUSTG_CALL(RUST_G, "cnoise_generate")(percentage, smoothing_iterations, birth_limit, death_limit, width, height) diff --git a/dmsrc/dbpnoise.dm b/dmsrc/dbpnoise.dm index 6cee0da5..2b3914d3 100644 --- a/dmsrc/dbpnoise.dm +++ b/dmsrc/dbpnoise.dm @@ -12,5 +12,5 @@ * * upper_range: upper bound of values selected for. (exclusive) */ #define rustg_dbp_generate(seed, accuracy, stamp_size, world_size, lower_range, upper_range) \ - call(RUST_G, "dbp_generate")(seed, accuracy, stamp_size, world_size, lower_range, upper_range) + RUSTG_CALL(RUST_G, "dbp_generate")(seed, accuracy, stamp_size, world_size, lower_range, upper_range) diff --git a/dmsrc/dmi.dm b/dmsrc/dmi.dm index 6eed4e50..f5d5fe5f 100644 --- a/dmsrc/dmi.dm +++ b/dmsrc/dmi.dm @@ -1,3 +1,3 @@ -#define rustg_dmi_strip_metadata(fname) call(RUST_G, "dmi_strip_metadata")(fname) -#define rustg_dmi_create_png(path, width, height, data) call(RUST_G, "dmi_create_png")(path, width, height, data) -#define rustg_dmi_resize_png(path, width, height, resizetype) call(RUST_G, "dmi_resize_png")(path, width, height, resizetype) +#define rustg_dmi_strip_metadata(fname) RUSTG_CALL(RUST_G, "dmi_strip_metadata")(fname) +#define rustg_dmi_create_png(path, width, height, data) RUSTG_CALL(RUST_G, "dmi_create_png")(path, width, height, data) +#define rustg_dmi_resize_png(path, width, height, resizetype) RUSTG_CALL(RUST_G, "dmi_resize_png")(path, width, height, resizetype) diff --git a/dmsrc/file.dm b/dmsrc/file.dm index cfc32585..c18d3f8a 100644 --- a/dmsrc/file.dm +++ b/dmsrc/file.dm @@ -1,9 +1,9 @@ -#define rustg_file_read(fname) call(RUST_G, "file_read")(fname) -#define rustg_file_exists(fname) call(RUST_G, "file_exists")(fname) -#define rustg_file_write(text, fname) call(RUST_G, "file_write")(text, fname) -#define rustg_file_append(text, fname) call(RUST_G, "file_append")(text, fname) -#define rustg_file_get_line_count(fname) text2num(call(RUST_G, "file_get_line_count")(fname)) -#define rustg_file_seek_line(fname, line) call(RUST_G, "file_seek_line")(fname, "[line]") +#define rustg_file_read(fname) RUSTG_CALL(RUST_G, "file_read")(fname) +#define rustg_file_exists(fname) RUSTG_CALL(RUST_G, "file_exists")(fname) +#define rustg_file_write(text, fname) RUSTG_CALL(RUST_G, "file_write")(text, fname) +#define rustg_file_append(text, fname) RUSTG_CALL(RUST_G, "file_append")(text, fname) +#define rustg_file_get_line_count(fname) text2num(RUSTG_CALL(RUST_G, "file_get_line_count")(fname)) +#define rustg_file_seek_line(fname, line) RUSTG_CALL(RUST_G, "file_seek_line")(fname, "[line]") #ifdef RUSTG_OVERRIDE_BUILTINS #define file2text(fname) rustg_file_read("[fname]") diff --git a/dmsrc/git.dm b/dmsrc/git.dm index 0dc5edca..b3185db7 100644 --- a/dmsrc/git.dm +++ b/dmsrc/git.dm @@ -1,2 +1,2 @@ -#define rustg_git_revparse(rev) call(RUST_G, "rg_git_revparse")(rev) -#define rustg_git_commit_date(rev) call(RUST_G, "rg_git_commit_date")(rev) +#define rustg_git_revparse(rev) RUSTG_CALL(RUST_G, "rg_git_revparse")(rev) +#define rustg_git_commit_date(rev) RUSTG_CALL(RUST_G, "rg_git_commit_date")(rev) diff --git a/dmsrc/hash.dm b/dmsrc/hash.dm index 867b00ee..c666d2e2 100644 --- a/dmsrc/hash.dm +++ b/dmsrc/hash.dm @@ -1,7 +1,7 @@ -#define rustg_hash_string(algorithm, text) call(RUST_G, "hash_string")(algorithm, text) -#define rustg_hash_file(algorithm, fname) call(RUST_G, "hash_file")(algorithm, fname) -#define rustg_hash_generate_totp(seed) call(RUST_G, "generate_totp")(seed) -#define rustg_hash_generate_totp_tolerance(seed, tolerance) call(RUST_G, "generate_totp_tolerance")(seed, tolerance) +#define rustg_hash_string(algorithm, text) RUSTG_CALL(RUST_G, "hash_string")(algorithm, text) +#define rustg_hash_file(algorithm, fname) RUSTG_CALL(RUST_G, "hash_file")(algorithm, fname) +#define rustg_hash_generate_totp(seed) RUSTG_CALL(RUST_G, "generate_totp")(seed) +#define rustg_hash_generate_totp_tolerance(seed, tolerance) RUSTG_CALL(RUST_G, "generate_totp_tolerance")(seed, tolerance) #define RUSTG_HASH_MD5 "md5" #define RUSTG_HASH_SHA1 "sha1" diff --git a/dmsrc/http.dm b/dmsrc/http.dm index 93d964bb..d63748d6 100644 --- a/dmsrc/http.dm +++ b/dmsrc/http.dm @@ -4,6 +4,6 @@ #define RUSTG_HTTP_METHOD_PATCH "patch" #define RUSTG_HTTP_METHOD_HEAD "head" #define RUSTG_HTTP_METHOD_POST "post" -#define rustg_http_request_blocking(method, url, body, headers, options) call(RUST_G, "http_request_blocking")(method, url, body, headers, options) -#define rustg_http_request_async(method, url, body, headers, options) call(RUST_G, "http_request_async")(method, url, body, headers, options) -#define rustg_http_check_request(req_id) call(RUST_G, "http_check_request")(req_id) +#define rustg_http_request_blocking(method, url, body, headers, options) RUSTG_CALL(RUST_G, "http_request_blocking")(method, url, body, headers, options) +#define rustg_http_request_async(method, url, body, headers, options) RUSTG_CALL(RUST_G, "http_request_async")(method, url, body, headers, options) +#define rustg_http_check_request(req_id) RUSTG_CALL(RUST_G, "http_check_request")(req_id) diff --git a/dmsrc/json.dm b/dmsrc/json.dm index 80a18539..caa637c4 100644 --- a/dmsrc/json.dm +++ b/dmsrc/json.dm @@ -1 +1 @@ -#define rustg_json_is_valid(text) (call(RUST_G, "json_is_valid")(text) == "true") +#define rustg_json_is_valid(text) (RUSTG_CALL(RUST_G, "json_is_valid")(text) == "true") diff --git a/dmsrc/log.dm b/dmsrc/log.dm index d0380a5d..1faadc8e 100644 --- a/dmsrc/log.dm +++ b/dmsrc/log.dm @@ -1,2 +1,2 @@ -#define rustg_log_write(fname, text, format) call(RUST_G, "log_write")(fname, text, format) -/proc/rustg_log_close_all() return call(RUST_G, "log_close_all")() +#define rustg_log_write(fname, text, format) RUSTG_CALL(RUST_G, "log_write")(fname, text, format) +/proc/rustg_log_close_all() return RUSTG_CALL(RUST_G, "log_close_all")() diff --git a/dmsrc/main.dm b/dmsrc/main.dm index bd4497ad..5f6b72e7 100644 --- a/dmsrc/main.dm +++ b/dmsrc/main.dm @@ -38,5 +38,12 @@ #define RUST_G (__rust_g || __detect_rust_g()) #endif +// Handle 515 call() -> call_ext() changes +#if DM_VERSION >= 515 +#define RUSTG_CALL call_ext +#else +#define RUSTG_CALL call +#endif + /// Gets the version of rust_g -/proc/rustg_get_version() return call(RUST_G, "get_version")() +/proc/rustg_get_version() return RUSTG_CALL(RUST_G, "get_version")() diff --git a/dmsrc/noise.dm b/dmsrc/noise.dm index 6277a462..5630600e 100644 --- a/dmsrc/noise.dm +++ b/dmsrc/noise.dm @@ -1 +1 @@ -#define rustg_noise_get_at_coordinates(seed, x, y) call(RUST_G, "noise_get_at_coordinates")(seed, x, y) +#define rustg_noise_get_at_coordinates(seed, x, y) RUSTG_CALL(RUST_G, "noise_get_at_coordinates")(seed, x, y) diff --git a/dmsrc/pathfinder.dm b/dmsrc/pathfinder.dm index be5ac802..3259aa87 100644 --- a/dmsrc/pathfinder.dm +++ b/dmsrc/pathfinder.dm @@ -13,20 +13,20 @@ * Nodes should not link across z levels. * A node cannot link twice to the same node and shouldn't link itself either */ -#define rustg_register_nodes_astar(json) call(RUST_G, "register_nodes_astar")(json) +#define rustg_register_nodes_astar(json) RUSTG_CALL(RUST_G, "register_nodes_astar")(json) /** * Add a new node to the static list of nodes. Same rule as registering_nodes applies. * This node unique_id must be equal to the current length of the static list of nodes */ -#define rustg_add_node_astar(json) call(RUST_G, "add_node_astar")(json) +#define rustg_add_node_astar(json) RUSTG_CALL(RUST_G, "add_node_astar")(json) /**² * Remove every link to the node with unique_id. Replace that node by null */ -#define rustg_remove_node_astart(unique_id) call(RUST_G, "remove_node_astar")(unique_id) +#define rustg_remove_node_astart(unique_id) RUSTG_CALL(RUST_G, "remove_node_astar")(unique_id) /** * Compute the shortest path between start_node and goal_node using A*. Heuristic used is simple geometric distance */ -#define rustg_generate_path_astar(start_node_id, goal_node_id) call(RUST_G, "generate_path_astar")(start_node_id, goal_node_id) +#define rustg_generate_path_astar(start_node_id, goal_node_id) RUSTG_CALL(RUST_G, "generate_path_astar")(start_node_id, goal_node_id) diff --git a/dmsrc/redis-pubsub.dm b/dmsrc/redis-pubsub.dm index 2524bb56..842f1bf5 100644 --- a/dmsrc/redis-pubsub.dm +++ b/dmsrc/redis-pubsub.dm @@ -1,7 +1,7 @@ #define RUSTG_REDIS_ERROR_CHANNEL "RUSTG_REDIS_ERROR_CHANNEL" -#define rustg_redis_connect(addr) call(RUST_G, "redis_connect")(addr) -/proc/rustg_redis_disconnect() return call(RUST_G, "redis_disconnect")() -#define rustg_redis_subscribe(channel) call(RUST_G, "redis_subscribe")(channel) -/proc/rustg_redis_get_messages() return call(RUST_G, "redis_get_messages")() -#define rustg_redis_publish(channel, message) call(RUST_G, "redis_publish")(channel, message) +#define rustg_redis_connect(addr) RUSTG_CALL(RUST_G, "redis_connect")(addr) +/proc/rustg_redis_disconnect() return RUSTG_CALL(RUST_G, "redis_disconnect")() +#define rustg_redis_subscribe(channel) RUSTG_CALL(RUST_G, "redis_subscribe")(channel) +/proc/rustg_redis_get_messages() return RUSTG_CALL(RUST_G, "redis_get_messages")() +#define rustg_redis_publish(channel, message) RUSTG_CALL(RUST_G, "redis_publish")(channel, message) diff --git a/dmsrc/sql.dm b/dmsrc/sql.dm index d3bfc49b..cad44b59 100644 --- a/dmsrc/sql.dm +++ b/dmsrc/sql.dm @@ -1,6 +1,6 @@ -#define rustg_sql_connect_pool(options) call(RUST_G, "sql_connect_pool")(options) -#define rustg_sql_query_async(handle, query, params) call(RUST_G, "sql_query_async")(handle, query, params) -#define rustg_sql_query_blocking(handle, query, params) call(RUST_G, "sql_query_blocking")(handle, query, params) -#define rustg_sql_connected(handle) call(RUST_G, "sql_connected")(handle) -#define rustg_sql_disconnect_pool(handle) call(RUST_G, "sql_disconnect_pool")(handle) -#define rustg_sql_check_query(job_id) call(RUST_G, "sql_check_query")("[job_id]") +#define rustg_sql_connect_pool(options) RUSTG_CALL(RUST_G, "sql_connect_pool")(options) +#define rustg_sql_query_async(handle, query, params) RUSTG_CALL(RUST_G, "sql_query_async")(handle, query, params) +#define rustg_sql_query_blocking(handle, query, params) RUSTG_CALL(RUST_G, "sql_query_blocking")(handle, query, params) +#define rustg_sql_connected(handle) RUSTG_CALL(RUST_G, "sql_connected")(handle) +#define rustg_sql_disconnect_pool(handle) RUSTG_CALL(RUST_G, "sql_disconnect_pool")(handle) +#define rustg_sql_check_query(job_id) RUSTG_CALL(RUST_G, "sql_check_query")("[job_id]") diff --git a/dmsrc/time.dm b/dmsrc/time.dm index 56e1b0c7..f6fbe634 100644 --- a/dmsrc/time.dm +++ b/dmsrc/time.dm @@ -1,3 +1,3 @@ -#define rustg_time_microseconds(id) text2num(call(RUST_G, "time_microseconds")(id)) -#define rustg_time_milliseconds(id) text2num(call(RUST_G, "time_milliseconds")(id)) -#define rustg_time_reset(id) call(RUST_G, "time_reset")(id) +#define rustg_time_microseconds(id) text2num(RUSTG_CALL(RUST_G, "time_microseconds")(id)) +#define rustg_time_milliseconds(id) text2num(RUSTG_CALL(RUST_G, "time_milliseconds")(id)) +#define rustg_time_reset(id) RUSTG_CALL(RUST_G, "time_reset")(id) diff --git a/dmsrc/toml.dm b/dmsrc/toml.dm index c9a63382..b490d959 100644 --- a/dmsrc/toml.dm +++ b/dmsrc/toml.dm @@ -1,4 +1,4 @@ -#define rustg_raw_read_toml_file(path) json_decode(call(RUST_G, "toml_file_to_json")(path) || "null") +#define rustg_raw_read_toml_file(path) json_decode(RUSTG_CALL(RUST_G, "toml_file_to_json")(path) || "null") /proc/rustg_read_toml_file(path) var/list/output = rustg_raw_read_toml_file(path) @@ -7,7 +7,7 @@ else CRASH(output["content"]) -#define rustg_raw_toml_encode(value) json_decode(call(RUST_G, "toml_encode")(json_encode(value))) +#define rustg_raw_toml_encode(value) json_decode(RUSTG_CALL(RUST_G, "toml_encode")(json_encode(value))) /proc/rustg_toml_encode(value) var/list/output = rustg_raw_toml_encode(value) diff --git a/dmsrc/unzip.dm b/dmsrc/unzip.dm index ce945b1b..77e79de2 100644 --- a/dmsrc/unzip.dm +++ b/dmsrc/unzip.dm @@ -1,2 +1,2 @@ -#define rustg_unzip_download_async(url, unzip_directory) call(RUST_G, "unzip_download_async")(url, unzip_directory) -#define rustg_unzip_check(job_id) call(RUST_G, "unzip_check")("[job_id]") +#define rustg_unzip_download_async(url, unzip_directory) RUSTG_CALL(RUST_G, "unzip_download_async")(url, unzip_directory) +#define rustg_unzip_check(job_id) RUSTG_CALL(RUST_G, "unzip_check")("[job_id]") diff --git a/dmsrc/url.dm b/dmsrc/url.dm index b56131be..3f53e257 100644 --- a/dmsrc/url.dm +++ b/dmsrc/url.dm @@ -1,5 +1,5 @@ -#define rustg_url_encode(text) call(RUST_G, "url_encode")("[text]") -#define rustg_url_decode(text) call(RUST_G, "url_decode")(text) +#define rustg_url_encode(text) RUSTG_CALL(RUST_G, "url_encode")("[text]") +#define rustg_url_decode(text) RUSTG_CALL(RUST_G, "url_decode")(text) #ifdef RUSTG_OVERRIDE_BUILTINS #define url_encode(text) rustg_url_encode(text) diff --git a/dmsrc/worleynoise.dm b/dmsrc/worleynoise.dm index 1ff347cf..379adfca 100644 --- a/dmsrc/worleynoise.dm +++ b/dmsrc/worleynoise.dm @@ -12,5 +12,5 @@ * * node_max: maximum amount of nodes in a region */ #define rustg_worley_generate(region_size, threshold, node_per_region_chance, size, node_min, node_max) \ - call(RUST_G, "worley_generate")(region_size, threshold, node_per_region_chance, size, node_min, node_max) + RUSTG_CALL(RUST_G, "worley_generate")(region_size, threshold, node_per_region_chance, size, node_min, node_max) From 7648776b6b19403bb035e780993a81394c41f64a Mon Sep 17 00:00:00 2001 From: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Date: Sat, 29 Oct 2022 00:53:38 -0400 Subject: [PATCH 57/82] add a unix_timestamp extern (#122) Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> --- dmsrc/time.dm | 3 +++ src/time.rs | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/dmsrc/time.dm b/dmsrc/time.dm index f6fbe634..f4ac5e5c 100644 --- a/dmsrc/time.dm +++ b/dmsrc/time.dm @@ -1,3 +1,6 @@ #define rustg_time_microseconds(id) text2num(RUSTG_CALL(RUST_G, "time_microseconds")(id)) #define rustg_time_milliseconds(id) text2num(RUSTG_CALL(RUST_G, "time_milliseconds")(id)) #define rustg_time_reset(id) RUSTG_CALL(RUST_G, "time_reset")(id) + +/proc/rustg_unix_timestamp() + return text2num(RUSTG_CALL(RUST_G, "unix_timestamp")()) diff --git a/src/time.rs b/src/time.rs index e08f33b5..f27b9ddb 100644 --- a/src/time.rs +++ b/src/time.rs @@ -35,3 +35,15 @@ byond_fn!(fn time_reset(instant_id) { Some("") }) }); + +byond_fn!( + fn unix_timestamp() { + Some( + std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap() + .as_secs_f64() + .to_string(), + ) + } +); From 135d0c68c019d66beecb2dd1dfbde6bbb74eccee Mon Sep 17 00:00:00 2001 From: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Date: Sat, 29 Oct 2022 14:05:04 -0700 Subject: [PATCH 58/82] 1.2.0 --- Cargo.lock | 2 +- Cargo.toml | 61 ++++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 47 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 96b7ded4..ab158a2b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1999,7 +1999,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "1.1.0" +version = "1.2.0" dependencies = [ "aho-corasick", "base64", diff --git a/Cargo.toml b/Cargo.toml index ca3ed09a..121c2528 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,12 @@ [package] name = "rust-g" edition = "2021" -version = "1.1.0" -authors = ["Bjorn Neergaard ", "Tad Hardesty ", "rust-g maintainer team"] +version = "1.2.0" +authors = [ + "Bjorn Neergaard ", + "Tad Hardesty ", + "rust-g maintainer team", +] repository = "https://github.com/tgstation/rust-g" license = "MIT" description = "Offloaded task library for the /tg/ Space Station 13 codebase" @@ -20,7 +24,7 @@ debug = true thiserror = "1.0" flume = { version = "0.10", optional = true } chrono = { version = "0.4", optional = true } -base64 = { version = "0.13", optional = true} +base64 = { version = "0.13", optional = true } md-5 = { version = "0.10", optional = true } twox-hash = { version = "1.6", optional = true } const-random = { version = "0.1.13", optional = true } @@ -32,9 +36,12 @@ url-dep = { version = "2.1", package = "url", optional = true } png = { version = "0.17", optional = true } image = { version = "0.24", optional = true } git2 = { version = "0.14", optional = true, default-features = false } -noise = { version = "0.7", optional = true} +noise = { version = "0.7", optional = true } redis = { version = "0.21", optional = true } -reqwest = { version = "0.11", optional = true, default-features = false, features = ["blocking", "rustls-tls"] } +reqwest = { version = "0.11", optional = true, default-features = false, features = [ + "blocking", + "rustls-tls", +] } serde = { version = "1.0", optional = true, features = ["derive"] } serde_json = { version = "1.0", optional = true } lazy_static = { version = "1.4", optional = true } @@ -42,20 +49,34 @@ once_cell = { version = "1.4", optional = true } mysql = { version = "22.2", optional = true } dashmap = { version = "5.3", optional = true } zip = { version = "0.6", optional = true } -rand = {version = "0.8", optional = true} -toml-dep = { version = "0.5.8", package="toml", optional = true } -aho-corasick = { version = "0.7.18", optional = true} -rayon = { version = "1.5", optional = true} -dbpnoise = { version = "0.1.2", optional = true} +rand = { version = "0.8", optional = true } +toml-dep = { version = "0.5.8", package = "toml", optional = true } +aho-corasick = { version = "0.7.18", optional = true } +rayon = { version = "1.5", optional = true } +dbpnoise = { version = "0.1.2", optional = true } pathfinding = { version = "3.0.13", optional = true } num = { version = "0.4.0", optional = true } [features] -default = ["acreplace", "cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "sql", "time", "toml", "url"] +default = [ + "acreplace", + "cellularnoise", + "dmi", + "file", + "git", + "http", + "json", + "log", + "noise", + "sql", + "time", + "toml", + "url", +] # default features acreplace = ["aho-corasick"] -cellularnoise = ["rand","rayon"] +cellularnoise = ["rand", "rayon"] dmi = ["png", "image"] file = [] git = ["git2", "chrono"] @@ -69,11 +90,21 @@ url = ["url-dep", "percent-encoding"] # additional features batchnoise = ["dbpnoise"] -hash = ["base64", "const-random", "md-5", "hex", "sha-1", "sha2", "twox-hash", "serde", "serde_json"] -pathfinder = [ "num", "pathfinding", "serde", "serde_json"] +hash = [ + "base64", + "const-random", + "md-5", + "hex", + "sha-1", + "sha2", + "twox-hash", + "serde", + "serde_json", +] +pathfinder = ["num", "pathfinding", "serde", "serde_json"] redis_pubsub = ["flume", "redis", "serde", "serde_json"] unzip = ["zip", "jobs"] -worleynoise = ["rand","rayon"] +worleynoise = ["rand", "rayon"] # internal feature-like things jobs = ["flume"] From a4800676b265337ff4ade5534c6692c678e7579a Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Sat, 11 Feb 2023 15:18:36 -0800 Subject: [PATCH 59/82] Remove useless features from the image crate (#128) * lmao we don't need jpeg dependencies for image * update `noise` to remove the rest of the junk deps * small clippy fixes (cherry picked from commit 65cf48a0072df02fe422aeeef31c416ad8791a08) --- Cargo.lock | 212 +++-------------------------------------------- Cargo.toml | 4 +- src/http.rs | 2 +- src/log.rs | 4 +- src/noise_gen.rs | 4 +- 5 files changed, 18 insertions(+), 208 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ab158a2b..9fee1ee0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -111,12 +111,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "bit_field" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4" - [[package]] name = "bitflags" version = "1.3.2" @@ -449,16 +443,6 @@ dependencies = [ "rayon", ] -[[package]] -name = "deflate" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" -dependencies = [ - "adler32", - "byteorder", -] - [[package]] name = "deflate" version = "1.0.0" @@ -511,22 +495,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "exr" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14cc0e06fb5f67e5d6beadf3a382fec9baca1aa751c6d5368fdeee7e5932c215" -dependencies = [ - "bit_field", - "deflate 1.0.0", - "flume", - "half", - "inflate", - "lebe", - "smallvec", - "threadpool", -] - [[package]] name = "fastrand" version = "1.7.0" @@ -550,7 +518,7 @@ checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" dependencies = [ "crc32fast", "libz-sys", - "miniz_oxide 0.5.3", + "miniz_oxide", ] [[package]] @@ -749,16 +717,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "gif" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3edd93c6756b4dfaf2709eafcc345ba2636565295c198a9cfbf75fa5e3e00b06" -dependencies = [ - "color_quant", - "weezl", -] - [[package]] name = "git2" version = "0.14.4" @@ -797,12 +755,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "half" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" - [[package]] name = "hashbrown" version = "0.12.3" @@ -918,25 +870,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "image" -version = "0.23.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1" -dependencies = [ - "bytemuck", - "byteorder", - "color_quant", - "gif", - "jpeg-decoder 0.1.22", - "num-iter", - "num-rational 0.3.2", - "num-traits", - "png 0.16.8", - "scoped_threadpool", - "tiff 0.6.1", -] - [[package]] name = "image" version = "0.24.3" @@ -946,14 +879,9 @@ dependencies = [ "bytemuck", "byteorder", "color_quant", - "exr", - "gif", - "jpeg-decoder 0.2.6", - "num-rational 0.4.1", + "num-rational", "num-traits", - "png 0.17.5", - "scoped_threadpool", - "tiff 0.7.2", + "png", ] [[package]] @@ -966,15 +894,6 @@ dependencies = [ "hashbrown", ] -[[package]] -name = "inflate" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff" -dependencies = [ - "adler32", -] - [[package]] name = "instant" version = "0.1.12" @@ -1041,24 +960,6 @@ dependencies = [ "libc", ] -[[package]] -name = "jpeg-decoder" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2" -dependencies = [ - "rayon", -] - -[[package]] -name = "jpeg-decoder" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9478aa10f73e7528198d75109c8be5cd7d15fb530238040148d5f9a22d4c5b3b" -dependencies = [ - "rayon", -] - [[package]] name = "js-sys" version = "0.3.58" @@ -1080,12 +981,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" -[[package]] -name = "lebe" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7efd1d698db0759e6ef11a7cd44407407399a910c774dd804c64c032da7826ff" - [[package]] name = "lerp" version = "0.4.0" @@ -1278,25 +1173,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "miniz_oxide" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" -dependencies = [ - "adler32", -] - -[[package]] -name = "miniz_oxide" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" -dependencies = [ - "adler", - "autocfg", -] - [[package]] name = "miniz_oxide" version = "0.5.3" @@ -1419,11 +1295,11 @@ dependencies = [ [[package]] name = "noise" -version = "0.7.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82051dd6745d5184c6efb7bc8be14892a7f6d4f3ad6dbf754d1c7d7d5fe24b43" +checksum = "9ba869e17168793186c10ca82c7079a4ffdeac4f1a7d9e755b9491c028180e40" dependencies = [ - "image 0.23.14", + "num-traits", "rand 0.7.3", "rand_xorshift", ] @@ -1448,7 +1324,7 @@ dependencies = [ "num-complex", "num-integer", "num-iter", - "num-rational 0.4.1", + "num-rational", "num-traits", ] @@ -1493,17 +1369,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-rational" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - [[package]] name = "num-rational" version = "0.4.1" @@ -1711,18 +1576,6 @@ version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" -[[package]] -name = "png" -version = "0.16.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" -dependencies = [ - "bitflags", - "crc32fast", - "deflate 0.8.6", - "miniz_oxide 0.3.7", -] - [[package]] name = "png" version = "0.17.5" @@ -1731,8 +1584,8 @@ checksum = "dc38c0ad57efb786dd57b9864e5b18bae478c00c824dc55a38bbc9da95dde3ba" dependencies = [ "bitflags", "crc32fast", - "deflate 1.0.0", - "miniz_oxide 0.5.3", + "deflate", + "miniz_oxide", ] [[package]] @@ -2010,7 +1863,7 @@ dependencies = [ "flume", "git2", "hex", - "image 0.24.3", + "image", "lazy_static", "md-5", "mysql", @@ -2019,7 +1872,7 @@ dependencies = [ "once_cell", "pathfinding", "percent-encoding", - "png 0.17.5", + "png", "rand 0.8.5", "rayon", "redis", @@ -2096,12 +1949,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "scoped_threadpool" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" - [[package]] name = "scopeguard" version = "1.1.0" @@ -2351,37 +2198,6 @@ dependencies = [ "syn", ] -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - -[[package]] -name = "tiff" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437" -dependencies = [ - "jpeg-decoder 0.1.22", - "miniz_oxide 0.4.4", - "weezl", -] - -[[package]] -name = "tiff" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cfada0986f446a770eca461e8c6566cb879682f7d687c8348aa0c857bd52286" -dependencies = [ - "flate2", - "jpeg-decoder 0.2.6", - "weezl", -] - [[package]] name = "time" version = "0.1.44" @@ -2716,12 +2532,6 @@ dependencies = [ "webpki", ] -[[package]] -name = "weezl" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" - [[package]] name = "winapi" version = "0.3.9" diff --git a/Cargo.toml b/Cargo.toml index 121c2528..024568e2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,9 +34,9 @@ hex = { version = "0.4", optional = true } percent-encoding = { version = "2.1", optional = true } url-dep = { version = "2.1", package = "url", optional = true } png = { version = "0.17", optional = true } -image = { version = "0.24", optional = true } +image = { version = "0.24", optional = true, default-features = false, features = ["png"] } git2 = { version = "0.14", optional = true, default-features = false } -noise = { version = "0.7", optional = true } +noise = { version = "0.8", optional = true } redis = { version = "0.21", optional = true } reqwest = { version = "0.11", optional = true, default-features = false, features = [ "blocking", diff --git a/src/http.rs b/src/http.rs index 5da2ff1a..8b72f0fe 100644 --- a/src/http.rs +++ b/src/http.rs @@ -148,7 +148,7 @@ fn submit_request(prep: RequestPrep) -> Result { } if let Some(output_filename) = prep.output_filename { - let mut writer = std::io::BufWriter::new(std::fs::File::create(&output_filename)?); + let mut writer = std::io::BufWriter::new(std::fs::File::create(output_filename)?); std::io::copy(&mut response, &mut writer)?; writer.flush()?; } else { diff --git a/src/log.rs b/src/log.rs index 9bd019b2..de45fc0b 100644 --- a/src/log.rs +++ b/src/log.rs @@ -31,12 +31,12 @@ byond_fn!(fn log_write(path, data, ...rest) { // write first line, timestamped let mut iter = data.split('\n'); if let Some(line) = iter.next() { - write!(file, "[{}] {}\n", Utc::now().format("%F %T%.3f"), line)?; + writeln!(file, "[{}] {}", Utc::now().format("%F %T%.3f"), line)?; } // write remaining lines for line in iter { - write!(file, " - {}\n", line)?; + writeln!(file, " - {}", line)?; } } diff --git a/src/noise_gen.rs b/src/noise_gen.rs index faa68a6e..d97a17e9 100644 --- a/src/noise_gen.rs +++ b/src/noise_gen.rs @@ -1,4 +1,4 @@ -use noise::{NoiseFn, Perlin, Seedable}; +use noise::{NoiseFn, Perlin}; use std::{ cell::RefCell, collections::hash_map::{Entry, HashMap}, @@ -25,7 +25,7 @@ fn get_at_coordinates(seed_as_str: &str, x_as_str: &str, y_as_str: &str) -> Resu Entry::Occupied(ref mut occ) => occ.get_mut(), Entry::Vacant(vac) => { let seed = seed_as_str.parse::()?; - let perlin = Perlin::new().set_seed(seed); + let perlin = Perlin::new(seed); vac.insert(perlin) } }; From 8c8b327c2bb1b04da40befd34dd0da4178784425 Mon Sep 17 00:00:00 2001 From: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Date: Sun, 21 May 2023 17:22:53 -0400 Subject: [PATCH 60/82] Update time.dm (#130) --- dmsrc/time.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dmsrc/time.dm b/dmsrc/time.dm index f4ac5e5c..1a81a21c 100644 --- a/dmsrc/time.dm +++ b/dmsrc/time.dm @@ -2,5 +2,6 @@ #define rustg_time_milliseconds(id) text2num(RUSTG_CALL(RUST_G, "time_milliseconds")(id)) #define rustg_time_reset(id) RUSTG_CALL(RUST_G, "time_reset")(id) +/// Returns the timestamp as a string /proc/rustg_unix_timestamp() - return text2num(RUSTG_CALL(RUST_G, "unix_timestamp")()) + return RUSTG_CALL(RUST_G, "unix_timestamp")() From 3c0f5703bfb81e1311a5987e5eb4497451dbbec1 Mon Sep 17 00:00:00 2001 From: oranges Date: Mon, 22 May 2023 09:27:04 +1200 Subject: [PATCH 61/82] Bump version major, due to breaking change in #130 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 024568e2..a6cb866d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rust-g" edition = "2021" -version = "1.2.0" +version = "2.0.0" authors = [ "Bjorn Neergaard ", "Tad Hardesty ", From ebddeecee890dce0713383db0b1fc7b58ae4cadc Mon Sep 17 00:00:00 2001 From: oranges Date: Mon, 22 May 2023 09:40:31 +1200 Subject: [PATCH 62/82] Try to fix the dependency issue --- .github/workflows/rust.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 80db2bdf..a2fd8a6c 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -63,7 +63,7 @@ jobs: - run: | sudo dpkg --add-architecture i386 sudo apt-get update - sudo apt-get install g++-multilib zlib1g-dev:i386 libssl-dev:i386 + sudo apt-get install libgcc-s1:i386 g++-multilib zlib1g-dev:i386 libssl-dev:i386 ./scripts/install_byond.sh - uses: actions-rs/toolchain@v1 From 9055d94f2661abcd767982dbd924a70fe683b294 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Sun, 21 May 2023 16:00:02 -0700 Subject: [PATCH 63/82] Upgrade a bunch of dependencies (#134) * Upgrade base64 to 0.21 * bump toml to 0.7.4 * Upgrade pathfinding to 4.2.1 * Upgrade git2 to 0.17.1 * update mysql crate to 24.0 * aho-corasic upgrade to 1.0 pt A "automatic configuration is now the default." * upgrade ahocorasic pt B --- Cargo.lock | 474 +++++++++++++++++++++++++++++++++++++---------- Cargo.toml | 12 +- src/acreplace.rs | 8 +- src/hash.rs | 3 +- src/sql.rs | 31 +++- 5 files changed, 406 insertions(+), 122 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9fee1ee0..d3f5ab52 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -28,20 +28,29 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.6" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ - "getrandom 0.2.7", + "cfg-if", "once_cell", "version_check", ] [[package]] name = "aho-corasick" -version = "0.7.18" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + +[[package]] +name = "aho-corasick" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" dependencies = [ "memchr", ] @@ -60,7 +69,7 @@ checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.98", ] [[package]] @@ -75,6 +84,12 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +[[package]] +name = "base64" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" + [[package]] name = "base64ct" version = "1.0.1" @@ -98,7 +113,7 @@ version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cexpr", "clang-sys", "lazy_static", @@ -117,11 +132,17 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6776fc96284a0bb647b615056fc496d1fe1644a7ab01829818a6d91cae888b84" + [[package]] name = "bitvec" -version = "0.22.3" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5237f00a8c86130a0cc317830e558b966dd7850d48a953d998c813f01a41b527" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", @@ -418,6 +439,41 @@ dependencies = [ "typenum", ] +[[package]] +name = "darling" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0558d22a7b463ed0241e993f76f09f30b126687447751a8638587b864e4b3944" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.16", +] + +[[package]] +name = "darling_macro" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.16", +] + [[package]] name = "dashmap" version = "5.3.4" @@ -425,7 +481,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3495912c9c1ccf2e18976439f4443f3fee0fd61f424ff99fde6a66b15ecb448f" dependencies = [ "cfg-if", - "hashbrown", + "hashbrown 0.12.3", "lock_api", "parking_lot_core", ] @@ -460,7 +516,7 @@ checksum = "532b4c15dccee12c7044f1fcad956e98410860b22231e44a3b827464797ca7bf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.98", ] [[package]] @@ -590,7 +646,7 @@ checksum = "3dbc4f084ec5a3f031d24ccedeb87ab2c3189a2f33b8d070889073837d5ea09e" dependencies = [ "frunk_proc_macro_helpers", "quote", - "syn", + "syn 1.0.98", ] [[package]] @@ -602,7 +658,7 @@ dependencies = [ "frunk_core", "proc-macro2", "quote", - "syn", + "syn 1.0.98", ] [[package]] @@ -626,14 +682,14 @@ dependencies = [ "frunk_proc_macro_helpers", "proc-macro-hack", "quote", - "syn", + "syn 1.0.98", ] [[package]] name = "funty" -version = "1.2.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1847abb9cb65d566acd5942e94aea9c8f547ad02c98e1649326fc0e8910b8b1e" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures-channel" @@ -719,11 +775,11 @@ dependencies = [ [[package]] name = "git2" -version = "0.14.4" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0155506aab710a86160ddb504a480d2964d7ab5b9e62419be69e0032bc5931c" +checksum = "8b7905cdfe33d31a88bb2e8419ddd054451f5432d1da9eaf2ac7804ee1ea12d5" dependencies = [ - "bitflags", + "bitflags 1.3.2", "libc", "libgit2-sys", "log", @@ -760,10 +816,22 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ "ahash", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -839,7 +907,7 @@ dependencies = [ "httpdate", "itoa 1.0.2", "pin-project-lite", - "socket2", + "socket2 0.4.4", "tokio", "tower-service", "tracing", @@ -859,6 +927,12 @@ dependencies = [ "tokio-rustls", ] +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" version = "0.2.3" @@ -886,12 +960,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.1" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", - "hashbrown", + "hashbrown 0.12.3", ] [[package]] @@ -921,7 +995,7 @@ dependencies = [ "autocfg", "derive_utils", "quote", - "syn", + "syn 1.0.98", ] [[package]] @@ -930,15 +1004,6 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" -[[package]] -name = "itertools" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" -dependencies = [ - "either", -] - [[package]] name = "itoa" version = "0.4.8" @@ -1065,15 +1130,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.126" +version = "0.2.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" [[package]] name = "libgit2-sys" -version = "0.13.4+1.4.2" +version = "0.15.1+1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0fa6563431ede25f5cc7f6d803c6afbc1c5d3ad3d4925d12c882bf2b526f5d1" +checksum = "fb4577bde8cdfc7d6a2a4bcb7b049598597de33ffd337276e9c7db6cd4a2cee7" dependencies = [ "cc", "libc", @@ -1124,11 +1189,11 @@ dependencies = [ [[package]] name = "lru" -version = "0.7.8" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" +checksum = "03f1160296536f10c833a82dca22267d5486734230d47bf00bf435885814ba1e" dependencies = [ - "hashbrown", + "hashbrown 0.13.2", ] [[package]] @@ -1191,14 +1256,14 @@ dependencies = [ "libc", "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", + "windows-sys 0.36.1", ] [[package]] name = "mysql" -version = "22.2.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d8136c78f78cda5c1a4eee4ce555281b71e3e6db715817bc50e186e623b36f" +checksum = "cfe2babc5f5b354eab9c0a0e40da3e69c4d77421c8b9b6ee03f97acc75bd7955" dependencies = [ "bufstream", "bytes", @@ -1215,21 +1280,39 @@ dependencies = [ "percent-encoding", "serde", "serde_json", - "socket2", + "socket2 0.5.3", "twox-hash", "url", ] +[[package]] +name = "mysql-common-derive" +version = "0.30.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56b0d8a0db9bf6d2213e11f2c701cb91387b0614361625ab7b9743b41aa4938f" +dependencies = [ + "darling", + "heck", + "num-bigint", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.16", + "termcolor", + "thiserror", +] + [[package]] name = "mysql_common" -version = "0.28.2" +version = "0.30.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4140827f2d12750de1e8755442577e4292a835f26ff2f659f0a380d1d71020b0" +checksum = "73b8fb568c9537cf4f1ad39e2542aa74a66bf89883e550df2cb30a8f0c0f0355" dependencies = [ - "base64", + "base64 0.21.0", "bigdecimal", "bindgen", - "bitflags", + "bitflags 2.3.1", "bitvec", "byteorder", "bytes", @@ -1240,6 +1323,7 @@ dependencies = [ "frunk", "lazy_static", "lexical", + "mysql-common-derive", "num-bigint", "num-traits", "rand 0.8.5", @@ -1248,7 +1332,7 @@ dependencies = [ "saturating", "serde", "serde_json", - "sha-1", + "sha1 0.10.1", "sha2", "smallvec", "subprocess", @@ -1411,9 +1495,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.13.0" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" [[package]] name = "opaque-debug" @@ -1427,7 +1511,7 @@ version = "0.10.41" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cfg-if", "foreign-types", "libc", @@ -1444,7 +1528,7 @@ checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.98", ] [[package]] @@ -1476,7 +1560,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-sys", + "windows-sys 0.36.1", ] [[package]] @@ -1492,14 +1576,13 @@ dependencies = [ [[package]] name = "pathfinding" -version = "3.0.13" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84da3eab6c7638931f4876ebb03455be74db8eab1e344cd5a90daba8b3ad2f22" +checksum = "7c4eef7dd95d1ad58de5954f7368116d2663ccc01e0e03e50b724fef7eb2161c" dependencies = [ "fixedbitset", "indexmap", "integer-sqrt", - "itertools", "num-traits", "rustc-hash", "thiserror", @@ -1525,11 +1608,12 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "pem" -version = "1.1.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c64931a1a212348ec4f3b4362585eca7159d0d09cbdf4a7f74f02173596fd4" +checksum = "6b13fe415cdf3c8e44518e18a7c95a13431d9bdf6d15367d82b23c377fdd441a" dependencies = [ - "base64", + "base64 0.21.0", + "serde", ] [[package]] @@ -1555,7 +1639,7 @@ checksum = "710faf75e1b33345361201d36d04e98ac1ed8909151a017ed384700836104c74" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.98", ] [[package]] @@ -1582,7 +1666,7 @@ version = "0.17.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc38c0ad57efb786dd57b9864e5b18bae478c00c824dc55a38bbc9da95dde3ba" dependencies = [ - "bitflags", + "bitflags 1.3.2", "crc32fast", "deflate", "miniz_oxide", @@ -1594,6 +1678,40 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.98", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + [[package]] name = "proc-macro-hack" version = "0.5.19" @@ -1602,27 +1720,27 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro2" -version = "1.0.40" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" +checksum = "fa1fb82fc0c281dd9671101b66b771ebbe1eaf967b96ac8740dcba4b70005ca8" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.20" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500" dependencies = [ "proc-macro2", ] [[package]] name = "radium" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rand" @@ -1767,7 +1885,7 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "534cfe58d6a18cc17120fbf4635d53d14691c1fe4d951064df9bd326178d7d5a" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -1776,7 +1894,7 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" dependencies = [ - "aho-corasick", + "aho-corasick 0.7.20", "memchr", "regex-syntax", ] @@ -1802,7 +1920,7 @@ version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92" dependencies = [ - "base64", + "base64 0.13.0", "bytes", "encoding_rs", "futures-core", @@ -1852,10 +1970,10 @@ dependencies = [ [[package]] name = "rust-g" -version = "1.2.0" +version = "2.0.0" dependencies = [ - "aho-corasick", - "base64", + "aho-corasick 1.0.1", + "base64 0.21.0", "chrono", "const-random", "dashmap", @@ -1924,7 +2042,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7522c9de787ff061458fe9a829dc790a3f5b22dc571694fc5883f448b94d9a9" dependencies = [ - "base64", + "base64 0.13.0", ] [[package]] @@ -1946,7 +2064,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" dependencies = [ "lazy_static", - "windows-sys", + "windows-sys 0.36.1", ] [[package]] @@ -1971,7 +2089,7 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", "core-foundation-sys", "libc", @@ -1990,22 +2108,22 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.140" +version = "1.0.163" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03" +checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.140" +version = "1.0.163" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da" +checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.16", ] [[package]] @@ -2019,6 +2137,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93107647184f6027e3b7dcb2e11034cf95ffa1e3a682c67951963ac69c1c007d" +dependencies = [ + "serde", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -2110,6 +2237,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "socket2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "spin" version = "0.5.2" @@ -2131,6 +2268,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "subprocess" version = "0.2.9" @@ -2158,6 +2301,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "tap" version = "1.0.1" @@ -2178,24 +2332,33 @@ dependencies = [ "winapi", ] +[[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.16", ] [[package]] @@ -2265,7 +2428,7 @@ dependencies = [ "num_cpus", "once_cell", "pin-project-lite", - "socket2", + "socket2 0.4.4", "winapi", ] @@ -2296,11 +2459,36 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.9" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +checksum = "d6135d499e69981f9ff0ef2167955a5333c35e36f6937d382974566b3d5b94ec" dependencies = [ "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d964908cec0d030b812013af25a0e57fddfadb1e066ecc6681d86253129d4f" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", ] [[package]] @@ -2393,9 +2581,9 @@ dependencies = [ [[package]] name = "uuid" -version = "0.8.2" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +checksum = "345444e32442451b267fc254ae85a209c64be56d2890e601a0c37ff0c3c5ecd2" [[package]] name = "vcpkg" @@ -2458,7 +2646,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn", + "syn 1.0.98", "wasm-bindgen-shared", ] @@ -2492,7 +2680,7 @@ checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.98", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2548,6 +2736,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -2560,43 +2757,118 @@ version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" dependencies = [ - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_msvc", + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.48.0", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + [[package]] name = "windows_aarch64_msvc" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + [[package]] name = "windows_i686_gnu" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + [[package]] name = "windows_i686_msvc" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + [[package]] name = "windows_x86_64_gnu" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + [[package]] name = "windows_x86_64_msvc" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winnow" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" version = "0.10.1" @@ -2608,9 +2880,9 @@ dependencies = [ [[package]] name = "wyz" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "129e027ad65ce1453680623c3fb5163cbf7107bfe1aa32257e7d0e63f9ced188" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" dependencies = [ "tap", ] diff --git a/Cargo.toml b/Cargo.toml index a6cb866d..478d5a72 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ debug = true thiserror = "1.0" flume = { version = "0.10", optional = true } chrono = { version = "0.4", optional = true } -base64 = { version = "0.13", optional = true } +base64 = { version = "0.21", optional = true } md-5 = { version = "0.10", optional = true } twox-hash = { version = "1.6", optional = true } const-random = { version = "0.1.13", optional = true } @@ -35,7 +35,7 @@ percent-encoding = { version = "2.1", optional = true } url-dep = { version = "2.1", package = "url", optional = true } png = { version = "0.17", optional = true } image = { version = "0.24", optional = true, default-features = false, features = ["png"] } -git2 = { version = "0.14", optional = true, default-features = false } +git2 = { version = "0.17.1", optional = true, default-features = false } noise = { version = "0.8", optional = true } redis = { version = "0.21", optional = true } reqwest = { version = "0.11", optional = true, default-features = false, features = [ @@ -46,15 +46,15 @@ serde = { version = "1.0", optional = true, features = ["derive"] } serde_json = { version = "1.0", optional = true } lazy_static = { version = "1.4", optional = true } once_cell = { version = "1.4", optional = true } -mysql = { version = "22.2", optional = true } +mysql = { version = "24.0", optional = true } dashmap = { version = "5.3", optional = true } zip = { version = "0.6", optional = true } rand = { version = "0.8", optional = true } -toml-dep = { version = "0.5.8", package = "toml", optional = true } -aho-corasick = { version = "0.7.18", optional = true } +toml-dep = { version = "0.7.4", package = "toml", optional = true } +aho-corasick = { version = "1.0", optional = true } rayon = { version = "1.5", optional = true } dbpnoise = { version = "0.1.2", optional = true } -pathfinding = { version = "3.0.13", optional = true } +pathfinding = { version = "4.2.1", optional = true } num = { version = "0.4.0", optional = true } [features] diff --git a/src/acreplace.rs b/src/acreplace.rs index 681bdf0b..365ce404 100644 --- a/src/acreplace.rs +++ b/src/acreplace.rs @@ -1,4 +1,4 @@ -use aho_corasick::{AhoCorasick, AhoCorasickBuilder, MatchKind}; +use aho_corasick::{AhoCorasick, AhoCorasickBuilder, MatchKind, StartKind}; use serde::Deserialize; use std::{cell::RefCell, collections::hash_map::HashMap}; @@ -20,11 +20,11 @@ struct AhoCorasickOptions { impl AhoCorasickOptions { fn auto_configure_and_build(&self, patterns: &[String]) -> AhoCorasick { AhoCorasickBuilder::new() - .anchored(self.anchored) + .start_kind(if self.anchored { StartKind::Anchored } else { StartKind::Unanchored }) .ascii_case_insensitive(self.ascii_case_insensitive) .match_kind(self.match_kind) - .auto_configure(patterns) .build(patterns) + .unwrap_or(AhoCorasickBuilder::new().build(patterns).unwrap()) } } @@ -56,7 +56,7 @@ thread_local! { byond_fn!(fn setup_acreplace(key, patterns_json, replacements_json) { let patterns: Vec = serde_json::from_str(patterns_json).ok()?; let replacements: Vec = serde_json::from_str(replacements_json).ok()?; - let ac = AhoCorasickBuilder::new().auto_configure(&patterns).build(&patterns); + let ac = AhoCorasickBuilder::new().build(patterns).unwrap(); // Recommends to just unwrap in the docs CREPLACE_MAP.with(|cell| { let mut map = cell.borrow_mut(); map.insert(key.to_owned(), Replacements { automaton: ac, replacements }); diff --git a/src/hash.rs b/src/hash.rs index 01c4af26..93ae7989 100644 --- a/src/hash.rs +++ b/src/hash.rs @@ -1,4 +1,5 @@ use crate::error::{Error, Result}; +use base64::Engine; use const_random::const_random; const XXHASH_SEED: u64 = const_random!(u64); use md5::Md5; @@ -66,7 +67,7 @@ fn hash_algorithm>(name: &str, bytes: B) -> Result { hasher.write(bytes.as_ref()); Ok(format!("{:x}", hasher.finish())) } - "base64" => Ok(base64::encode(bytes.as_ref())), + "base64" => Ok(base64::prelude::BASE64_STANDARD.encode(bytes.as_ref())), _ => Err(Error::InvalidAlgorithm), } } diff --git a/src/sql.rs b/src/sql.rs index 90b9f4ff..1c04d7a7 100644 --- a/src/sql.rs +++ b/src/sql.rs @@ -3,12 +3,12 @@ use dashmap::DashMap; use mysql::{ consts::{ColumnFlags, ColumnType::*}, prelude::Queryable, - OptsBuilder, Params, Pool, + OptsBuilder, Params, Pool, PoolConstraints, PoolOpts, }; use once_cell::sync::Lazy; use serde::Deserialize; use serde_json::{json, map::Map, Number}; -use std::sync::atomic::AtomicUsize; +use std::{collections::HashMap, sync::atomic::AtomicUsize}; use std::{error::Error, time::Duration}; // ---------------------------------------------------------------------------- @@ -110,6 +110,17 @@ static POOL: Lazy> = Lazy::new(DashMap::new); static NEXT_ID: AtomicUsize = AtomicUsize::new(0); fn sql_connect(options: ConnectOptions) -> Result> { + let pool_constraints = PoolConstraints::new( + options.min_threads.unwrap_or(DEFAULT_MIN_THREADS), + options.max_threads.unwrap_or(DEFAULT_MAX_THREADS), + ) + .unwrap_or(PoolConstraints::new_const::< + DEFAULT_MIN_THREADS, + DEFAULT_MAX_THREADS, + >()); + + let pool_opts = PoolOpts::with_constraints(PoolOpts::new(), pool_constraints); + let builder = OptsBuilder::new() .ip_or_hostname(options.host) .tcp_port(options.port.unwrap_or(DEFAULT_PORT)) @@ -120,13 +131,10 @@ fn sql_connect(options: ConnectOptions) -> Result) -> Para Params::Named( params .into_iter() - .map(|(key, val)| (key, json_to_mysql(val))) - .collect(), + .map(|(key, val)| { + let key_bytes: Vec = key.into_bytes(); + (key_bytes, json_to_mysql(val)) + }) + .collect::>(), ) } } From 09e7367f50aad003588324e473425bde89e24f43 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Sun, 21 May 2023 16:34:42 -0700 Subject: [PATCH 64/82] Adds a redis reliable queue implementation (#133) * adds project to vscode rust-analyzer config it asked me to * redis reliable queue implementation * readme * cleanup * shit fixed * proper redis response handling for lpop * more clean * okay better handling i GUESS * updated redis crate, all my tests pass breaking changes don't apply either * update the cargo lock to 2.0.0 * ignore clippy for the redis_lpush match return * fixes cellularnoise clippy lints --- .vscode/settings.json | 5 +- Cargo.lock | 57 +++--------- Cargo.toml | 3 +- README.md | 1 + dmsrc/redis-reliablequeue.dm | 38 ++++++++ src/acreplace.rs | 6 +- src/cellularnoise.rs | 5 +- src/lib.rs | 2 + src/redis_reliablequeue.rs | 172 +++++++++++++++++++++++++++++++++++ 9 files changed, 237 insertions(+), 52 deletions(-) create mode 100644 dmsrc/redis-reliablequeue.dm create mode 100644 src/redis_reliablequeue.rs diff --git a/.vscode/settings.json b/.vscode/settings.json index 111ee693..608e2d66 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,6 @@ { - "rust-analyzer.cargo.target": "i686-pc-windows-msvc" + "rust-analyzer.cargo.target": "i686-pc-windows-msvc", + "rust-analyzer.linkedProjects": [ + ".\\Cargo.toml" + ] } diff --git a/Cargo.lock b/Cargo.lock index d3f5ab52..e912deff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -61,17 +61,6 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" -[[package]] -name = "async-trait" -version = "0.1.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.98", -] - [[package]] name = "autocfg" version = "1.1.0" @@ -530,12 +519,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "dtoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" - [[package]] name = "either" version = "1.7.0" @@ -864,7 +847,7 @@ checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" dependencies = [ "bytes", "fnv", - "itoa 1.0.2", + "itoa", ] [[package]] @@ -905,7 +888,7 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa 1.0.2", + "itoa", "pin-project-lite", "socket2 0.4.4", "tokio", @@ -1004,12 +987,6 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - [[package]] name = "itoa" version = "1.0.2" @@ -1332,7 +1309,7 @@ dependencies = [ "saturating", "serde", "serde_json", - "sha1 0.10.1", + "sha1", "sha2", "smallvec", "subprocess", @@ -1866,16 +1843,15 @@ dependencies = [ [[package]] name = "redis" -version = "0.21.5" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a80b5f38d7f5a020856a0e16e40a9cfabf88ae8f0e4c2dcd8a3114c1e470852" +checksum = "3ea8c51b5dc1d8e5fd3350ec8167f464ec0995e79f2e90a075b63371500d557f" dependencies = [ - "async-trait", "combine", - "dtoa", - "itoa 0.4.8", + "itoa", "percent-encoding", - "sha1 0.6.1", + "ryu", + "sha1_smol", "url", ] @@ -2132,7 +2108,7 @@ version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7" dependencies = [ - "itoa 1.0.2", + "itoa", "ryu", "serde", ] @@ -2153,7 +2129,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.2", + "itoa", "ryu", "serde", ] @@ -2169,15 +2145,6 @@ dependencies = [ "digest", ] -[[package]] -name = "sha1" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" -dependencies = [ - "sha1_smol", -] - [[package]] name = "sha1" version = "0.10.1" @@ -2378,7 +2345,7 @@ version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72c91f41dcb2f096c05f0873d667dceec1087ce5bcf984ec8ffb19acddbb3217" dependencies = [ - "itoa 1.0.2", + "itoa", "libc", "num_threads", "time-macros", @@ -2902,7 +2869,7 @@ dependencies = [ "flate2", "hmac", "pbkdf2", - "sha1 0.10.1", + "sha1", "time 0.3.11", "zstd", ] diff --git a/Cargo.toml b/Cargo.toml index 478d5a72..35e1ccb3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,7 +37,7 @@ png = { version = "0.17", optional = true } image = { version = "0.24", optional = true, default-features = false, features = ["png"] } git2 = { version = "0.17.1", optional = true, default-features = false } noise = { version = "0.8", optional = true } -redis = { version = "0.21", optional = true } +redis = { version = "0.23", optional = true } reqwest = { version = "0.11", optional = true, default-features = false, features = [ "blocking", "rustls-tls", @@ -103,6 +103,7 @@ hash = [ ] pathfinder = ["num", "pathfinding", "serde", "serde_json"] redis_pubsub = ["flume", "redis", "serde", "serde_json"] +redis_reliablequeue = ["flume", "redis", "serde", "serde_json"] unzip = ["zip", "jobs"] worleynoise = ["rand", "rayon"] diff --git a/README.md b/README.md index 91e439bc..5aa28d08 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,7 @@ Additional features are: * hash: Faster replacement for `md5`, support for SHA-1, SHA-256, and SHA-512. Requires OpenSSL on Linux. * pathfinder: An a* pathfinder used for finding the shortest path in a static node map. Not to be used for a non-static map. * redis_pubsub: Library for sending and receiving messages through Redis. +* redis_reliablequeue: Library for using a reliable queue pattern through Redis. * unzip: Function to download a .zip from a URL and unzip it to a directory. * worleynoise: Function that generates a type of nice looking cellular noise, more expensive than cellularnoise diff --git a/dmsrc/redis-reliablequeue.dm b/dmsrc/redis-reliablequeue.dm new file mode 100644 index 00000000..710eb03e --- /dev/null +++ b/dmsrc/redis-reliablequeue.dm @@ -0,0 +1,38 @@ +/** + * Connects to a given redis server. + * + * Arguments: + * * addr - The address of the server, for example "redis://127.0.0.1/" + */ +#define rustg_redis_connect_rq(addr) RUSTG_CALL(RUST_G, "redis_connect_rq")(addr) +/** + * Disconnects from a previously connected redis server + */ +/proc/rustg_redis_disconnect_rq() return RUSTG_CALL(RUST_G, "redis_disconnect_rq")() +/** + * https://redis.io/commands/lpush/ + * + * Arguments + * * key (string) - The key to use + * * elements (list) - The elements to push, use a list even if there's only one element. + */ +#define rustg_redis_lpush(key, elements) RUSTG_CALL(RUST_G, "redis_lpush")(key, json_encode(elements)) +/** + * https://redis.io/commands/lrange/ + * + * Arguments + * * key (string) - The key to use + * * start (string) - The zero-based index to start retrieving at + * * stop (string) - The zero-based index to stop retrieving at (inclusive) + */ +#define rustg_redis_lrange(key, start, stop) RUSTG_CALL(RUST_G, "redis_lrange")(key, start, stop) +/** + * https://redis.io/commands/lpop/ + * + * Arguments + * * key (string) - The key to use + * * count (string|null) - The amount to pop off the list, pass null to omit (thus just 1) + * + * Note: `count` was added in Redis version 6.2.0 + */ +#define rustg_redis_lpop(key, count) RUSTG_CALL(RUST_G, "redis_lpop")(key, count) diff --git a/src/acreplace.rs b/src/acreplace.rs index 365ce404..e05e511f 100644 --- a/src/acreplace.rs +++ b/src/acreplace.rs @@ -20,7 +20,11 @@ struct AhoCorasickOptions { impl AhoCorasickOptions { fn auto_configure_and_build(&self, patterns: &[String]) -> AhoCorasick { AhoCorasickBuilder::new() - .start_kind(if self.anchored { StartKind::Anchored } else { StartKind::Unanchored }) + .start_kind(if self.anchored { + StartKind::Anchored + } else { + StartKind::Unanchored + }) .ascii_case_insensitive(self.ascii_case_insensitive) .match_kind(self.match_kind) .build(patterns) diff --git a/src/cellularnoise.rs b/src/cellularnoise.rs index fcd2bcb5..ccc17885 100644 --- a/src/cellularnoise.rs +++ b/src/cellularnoise.rs @@ -27,7 +27,6 @@ fn noise_gen( .map(|x| { let mut rng = rand::thread_rng(); (0..height + 3) - .into_iter() .map(|y| { if x == 0 || y == 0 || x == width + 2 || y == height + 2 { return false; @@ -39,12 +38,11 @@ fn noise_gen( .collect::>>(); //then we smoothe it - (0..smoothing_level).into_iter().for_each(|_| { + (0..smoothing_level).for_each(|_| { let replace_vec = (0..width + 3) .into_par_iter() .map(|x| { (0..height + 3) - .into_iter() .map(|y| { if x == 0 || y == 0 || x == width + 2 || y == height + 2 { return false; @@ -77,7 +75,6 @@ fn noise_gen( .into_par_iter() .map(|x| { (1..height + 1) - .into_iter() .map(|y| filled_vec[x][y]) .collect::>() }) diff --git a/src/lib.rs b/src/lib.rs index bbe40556..8b9fa90a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -34,6 +34,8 @@ pub mod noise_gen; pub mod pathfinder; #[cfg(feature = "redis_pubsub")] pub mod redis_pubsub; +#[cfg(feature = "redis_reliablequeue")] +pub mod redis_reliablequeue; #[cfg(feature = "sql")] pub mod sql; #[cfg(feature = "time")] diff --git a/src/redis_reliablequeue.rs b/src/redis_reliablequeue.rs new file mode 100644 index 00000000..cc2cca70 --- /dev/null +++ b/src/redis_reliablequeue.rs @@ -0,0 +1,172 @@ +use redis::{Client, Commands, RedisError}; +use std::cell::RefCell; +use std::num::NonZeroUsize; +use std::time::Duration; + +thread_local! { + static REDIS_CLIENT: RefCell> = RefCell::new(None); +} + +fn connect(addr: &str) -> Result<(), RedisError> { + let client = redis::Client::open(addr)?; + let _ = client.get_connection_with_timeout(Duration::from_secs(1))?; + REDIS_CLIENT.with(|cli| cli.replace(Some(client))); + Ok(()) +} + +fn disconnect() { + // Drop the client + REDIS_CLIENT.with(|client| { + client.replace(None); + }); +} + +/// +fn lpush(key: &str, data: serde_json::Value) -> serde_json::Value { + REDIS_CLIENT.with(|client| { + let client_ref = client.borrow(); + if let Some(client) = client_ref.as_ref() { + return match client.get_connection() { + Ok(mut conn) => { + // Need to handle the case of `[{}, {}]` and `{}` + let result = match data { + serde_json::Value::Null => return serde_json::json!( + {"success": false, "content": format!("Failed to perform LPUSH operation: Data sent was null")} + ), + serde_json::Value::Bool(_) | + serde_json::Value::Number(_) | + serde_json::Value::String(_) | + serde_json::Value::Object(_) => conn.lpush::<&str, String, isize>(key, data.to_string()), + serde_json::Value::Array(arr) => conn.lpush::<&str, Vec, isize>(key, map_jvalues_to_strings(&arr)), + }; + return match result { + Ok(res) => serde_json::json!( + {"success": true, "content": res} + ), + Err(e) => serde_json::json!( + {"success": false, "content": format!("Failed to perform LPUSH operation: {e}")} + ), + }; + }, + Err(e) => { + serde_json::json!( + {"success": false, "content": format!("Failed to get connection: {e}")} + ) + } + } + } + serde_json::json!({ + "success": false, "content": "Not Connected" + }) + }) +} + +fn map_jvalues_to_strings(values: &[serde_json::Value]) -> Vec { + values.iter().map(|value| value.to_string()).collect() +} + +/// +fn lrange(key: &str, start: isize, stop: isize) -> serde_json::Value { + REDIS_CLIENT.with(|client| { + let client_ref = client.borrow(); + if let Some(client) = client_ref.as_ref() { + return match client.get_connection() { + Ok(mut conn) => match conn.lrange::<&str, Vec>(key, start, stop) { + Ok(res) => serde_json::json!( + {"success": true, "content": res} + ), + Err(e) => serde_json::json!( + {"success": false, "content": format!("Failed to perform LRANGE operation: {e}")} + ), + }, + Err(e) => + serde_json::json!( + {"success": false, "content": format!("Failed to get connection: {e}")} + ), + } + } + serde_json::json!( + {"success": false, "content": "Not Connected"} + ) + }) +} + +/// +fn lpop(key: &str, count: Option) -> serde_json::Value { + REDIS_CLIENT.with(|client| { + let client_ref = client.borrow(); + if let Some(client) = client_ref.as_ref() { + let mut conn = match client.get_connection() { + Ok(conn) => conn, + Err(e) => { + return serde_json::json!({ + "success": false, "content": format!("Failed to get connection: {e}") + }) + } + }; + // It will return either an Array or a BulkStr per ref + // Yes, this code could be written more tersely but it's more intensive + match count { + None => { + let result = conn.lpop::<&str, String>(key, count); + return match result { + Ok(res) => serde_json::json!({ + "success": true, "content": res + }), + Err(e) => serde_json::json!({ + "success": false, "content": format!("Failed to perform LPOP operation: {e}") + }), + }; + } + Some(_) => { + let result = conn.lpop::<&str, Vec>(key, count); + return match result { + Ok(res) => serde_json::json!({ + "success": true, "content": res + }), + Err(e) => serde_json::json!({ + "success": false, "content": format!("Failed to perform LPOP operation: {e}") + }), + }; + } + }; + } + serde_json::json!({ + "success": false, "content": "Not Connected" + }) + }) +} + +byond_fn!(fn redis_connect_rq(addr) { + connect(addr).err().map(|e| e.to_string()) +}); + +byond_fn!( + fn redis_disconnect_rq() { + disconnect(); + Some("") + } +); + +byond_fn!(fn redis_lpush(key, elements) { + #[allow(clippy::needless_return)] + return match serde_json::from_str(elements) { + Ok(elem) => Some(lpush(key, elem).to_string()), + Err(e) => Some(serde_json::json!({ + "success": false, "content": format!("Failed to deserialize JSON: {e}") + }).to_string()), + }; +}); + +byond_fn!(fn redis_lrange(key, start, stop) { + Some(lrange(key, start.parse().unwrap_or(0), stop.parse().unwrap_or(-1)).to_string()) +}); + +byond_fn!(fn redis_lpop(key, count) { + let count_parsed = if count.is_empty() { + 0 + } else { + count.parse().unwrap_or(0) + }; + Some(lpop(key, std::num::NonZeroUsize::new(count_parsed)).to_string()) +}); From a23e280362e1fda86857183f5230544f2d62314e Mon Sep 17 00:00:00 2001 From: DTraitor <74188902+DTraitor@users.noreply.github.com> Date: Sun, 28 May 2023 03:16:55 +0300 Subject: [PATCH 65/82] dmi_strip_metadata won't remove alpha channel anymore (#136) --- src/dmi.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/dmi.rs b/src/dmi.rs index 1737341d..08f8d8dd 100644 --- a/src/dmi.rs +++ b/src/dmi.rs @@ -54,6 +54,10 @@ fn write_png( encoder.set_palette(palette); } + if let Some(trns_chunk) = reader_info.trns.to_owned() { + encoder.set_trns(trns_chunk); + } + let mut writer = encoder.write_header()?; // Handles zTxt chunk copying from the original image if we /don't/ want to strip it if !strip { From 606a8a60f891ac1f92296ddcba3596d8c87b26b2 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Fri, 2 Jun 2023 14:40:08 -0700 Subject: [PATCH 66/82] pedantic and nursery clippy lints (#137) --- src/cellularnoise.rs | 4 ++-- src/dmi.rs | 14 +++++++------- src/error.rs | 8 ++++---- src/file.rs | 2 +- src/http.rs | 5 +---- src/jobs.rs | 2 +- src/json.rs | 2 +- src/log.rs | 6 +++--- src/noise_gen.rs | 2 +- src/sql.rs | 5 ++--- 10 files changed, 23 insertions(+), 27 deletions(-) diff --git a/src/cellularnoise.rs b/src/cellularnoise.rs index ccc17885..43e64a03 100644 --- a/src/cellularnoise.rs +++ b/src/cellularnoise.rs @@ -71,10 +71,10 @@ fn noise_gen( }); //then we cut it - let map = (1..width + 1) + let map = (1..=width) .into_par_iter() .map(|x| { - (1..height + 1) + (1..=height) .map(|y| filled_vec[x][y]) .collect::>() }) diff --git a/src/dmi.rs b/src/dmi.rs index 08f8d8dd..e9b6a292 100644 --- a/src/dmi.rs +++ b/src/dmi.rs @@ -27,7 +27,7 @@ byond_fn!(fn dmi_resize_png(path, width, height, resizetype) { fn strip_metadata(path: &str) -> Result<()> { let (reader, frame_info, image) = read_png(path)?; - write_png(path, reader, frame_info, image, true) + write_png(path, &reader, &frame_info, &image, true) } fn read_png(path: &str) -> Result<(Reader, OutputInfo, Vec)> { @@ -40,9 +40,9 @@ fn read_png(path: &str) -> Result<(Reader, OutputInfo, Vec)> { fn write_png( path: &str, - reader: Reader, - info: OutputInfo, - image: Vec, + reader: &Reader, + info: &OutputInfo, + image: &[u8], strip: bool, ) -> Result<()> { let mut encoder = Encoder::new(File::create(path)?, info.width, info.height); @@ -50,11 +50,11 @@ fn write_png( encoder.set_depth(info.bit_depth); let reader_info = reader.info(); - if let Some(palette) = reader_info.palette.to_owned() { + if let Some(palette) = reader_info.palette.clone() { encoder.set_palette(palette); } - if let Some(trns_chunk) = reader_info.trns.to_owned() { + if let Some(trns_chunk) = reader_info.trns.clone() { encoder.set_trns(trns_chunk); } @@ -65,7 +65,7 @@ fn write_png( writer.write_text_chunk(chunk)?; } } - Ok(writer.write_image_data(&image)?) + Ok(writer.write_image_data(image)?) } fn create_png(path: &str, width: &str, height: &str, data: &str) -> Result<()> { diff --git a/src/error.rs b/src/error.rs index 104e80b7..d56cb5c3 100644 --- a/src/error.rs +++ b/src/error.rs @@ -64,8 +64,8 @@ pub enum Error { } impl From for Error { - fn from(source: Utf8Error) -> Error { - Error::Utf8 { + fn from(source: Utf8Error) -> Self { + Self::Utf8 { source, position: source.valid_up_to(), } @@ -73,13 +73,13 @@ impl From for Error { } impl From for String { - fn from(error: Error) -> String { + fn from(error: Error) -> Self { error.to_string() } } impl From for Vec { - fn from(error: Error) -> Vec { + fn from(error: Error) -> Self { error.to_string().into_bytes() } } diff --git a/src/file.rs b/src/file.rs index d766e96f..7799ee80 100644 --- a/src/file.rs +++ b/src/file.rs @@ -89,5 +89,5 @@ fn get_line_count(path: &str) -> Result { fn seek_line(path: &str, line: usize) -> Option { let file = BufReader::new(File::open(path).ok()?); - file.lines().nth(line).and_then(|line| line.ok()) + file.lines().nth(line).and_then(std::result::Result::ok) } diff --git a/src/http.rs b/src/http.rs index 8b72f0fe..43f891e9 100644 --- a/src/http.rs +++ b/src/http.rs @@ -70,10 +70,7 @@ fn setup_http_client() -> reqwest::blocking::Client { }; let mut headers = HeaderMap::new(); - headers.insert( - USER_AGENT, - format!("{}/{}", PKG_NAME, VERSION).parse().unwrap(), - ); + headers.insert(USER_AGENT, format!("{PKG_NAME}/{VERSION}").parse().unwrap()); Client::builder().default_headers(headers).build().unwrap() } diff --git a/src/jobs.rs b/src/jobs.rs index 0d595a0a..bb155090 100644 --- a/src/jobs.rs +++ b/src/jobs.rs @@ -52,7 +52,7 @@ impl Jobs { } thread_local! { - static JOBS: RefCell = Default::default(); + static JOBS: RefCell = RefCell::default(); } pub fn start Output + Send + 'static>(f: F) -> JobId { diff --git a/src/json.rs b/src/json.rs index db75d967..9a0b4ea1 100644 --- a/src/json.rs +++ b/src/json.rs @@ -13,7 +13,7 @@ byond_fn!(fn json_is_valid(text) { }); /// Gets the recursion level of the given value -/// If it is above VALID_JSON_MAX_RECURSION_DEPTH, returns Err(()) +/// If it is above `VALID_JSON_MAX_RECURSION_DEPTH`, returns Err(()) fn get_recursion_level(value: &Value) -> Result { let values: Vec<&Value> = match value { Value::Array(array) => array.iter().collect(), diff --git a/src/log.rs b/src/log.rs index de45fc0b..41849454 100644 --- a/src/log.rs +++ b/src/log.rs @@ -26,7 +26,7 @@ byond_fn!(fn log_write(path, data, ...rest) { if rest.first().map(|x| &**x) == Some("false") { // Write the data to the file with no accoutrements. - write!(file, "{}", data)?; + write!(file, "{data}")?; } else { // write first line, timestamped let mut iter = data.split('\n'); @@ -36,7 +36,7 @@ byond_fn!(fn log_write(path, data, ...rest) { // write remaining lines for line in iter { - writeln!(file, " - {}", line)?; + writeln!(file, " - {line}")?; } } @@ -56,7 +56,7 @@ byond_fn!( fn open(path: &Path) -> Result { if let Some(parent) = path.parent() { - fs::create_dir_all(parent)? + fs::create_dir_all(parent)?; } Ok(OpenOptions::new().append(true).create(true).open(path)?) diff --git a/src/noise_gen.rs b/src/noise_gen.rs index d97a17e9..9d76da42 100644 --- a/src/noise_gen.rs +++ b/src/noise_gen.rs @@ -32,7 +32,7 @@ fn get_at_coordinates(seed_as_str: &str, x_as_str: &str, y_as_str: &str) -> Resu //perlin noise produces a result in [-sqrt(0.5), sqrt(0.5)] which we scale to [0, 1] for simplicity let unscaled = generator.get([x, y]); let scaled = (unscaled * 2.0_f64.sqrt() + 1.0) / 2.0; - let clamped = scaled.min(1.0).max(0.0); + let clamped = scaled.clamp(0.0, 1.0); Ok(clamped.to_string()) }) } diff --git a/src/sql.rs b/src/sql.rs index 1c04d7a7..b631089d 100644 --- a/src/sql.rs +++ b/src/sql.rs @@ -204,13 +204,12 @@ fn do_query(handle: &str, query: &str, params: &str) -> Result serde_json::Value::Number(Number::from(*u)), mysql::Value::Date(year, month, day, hour, minute, second, _ms) => { serde_json::Value::String(format!( - "{}-{:02}-{:02} {:02}:{:02}:{:02}", - year, month, day, hour, minute, second + "{year}-{month:02}-{day:02} {hour:02}:{minute:02}:{second:02}" )) } _ => serde_json::Value::Null, }; - json_row.push(converted) + json_row.push(converted); } rows.push(serde_json::Value::Array(json_row)); } From 0c15a77d83876db001f5a732ebf5df244189025e Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Fri, 16 Jun 2023 13:46:15 -0700 Subject: [PATCH 67/82] June `cargo update` (#138) * `cargo update` * update `const-random` to 0.1.15 (nothingburger change) * Update the url packages (percent-encoding and url) (still nothingburger) * dashmap to 5.4 * rayon to 1.7 * Stop using deprecated chrono func (would panic) * run `cargo update` again apparently a lot of things did some releases * put the once_cell version to 1.17 for some reason i missed it, ooops --- Cargo.lock | 1194 ++++++++++++++++++++++++++++++++-------------------- Cargo.toml | 12 +- src/git.rs | 2 +- 3 files changed, 736 insertions(+), 472 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e912deff..ecc188d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,22 +8,26 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "adler32" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" - [[package]] name = "aes" -version = "0.7.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" dependencies = [ "cfg-if", "cipher", "cpufeatures", - "opaque-debug", +] + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom 0.2.10", + "once_cell", + "version_check", ] [[package]] @@ -39,27 +43,33 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.20" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" dependencies = [ "memchr", ] [[package]] -name = "aho-corasick" -version = "1.0.1" +name = "android-tzdata" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ - "memchr", + "libc", ] [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "8868f09ff8cea88b079da74ae569d9b8c62a23c68c746240b704ee6f7525c89c" [[package]] name = "autocfg" @@ -69,27 +79,21 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "base64" -version = "0.13.0" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" - -[[package]] -name = "base64" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" [[package]] name = "base64ct" -version = "1.0.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bigdecimal" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aaf33151a6429fe9211d1b276eafdf70cdff28b071e76c0b0e1503221ea3744" +checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" dependencies = [ "num-bigint", "num-integer", @@ -98,11 +102,11 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.59.2" +version = "0.66.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" +checksum = "79b8b0b1a751b3cb21f8a485561988881f744d9040bae7bfa29269dcb9a1949f" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.3.2", "cexpr", "clang-sys", "lazy_static", @@ -113,6 +117,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", + "syn 2.0.18", ] [[package]] @@ -123,9 +128,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6776fc96284a0bb647b615056fc496d1fe1644a7ab01829818a6d91cae888b84" +checksum = "6dbe3c979c178231552ecba20214a8272df4e09f232a87aef4320cf06539aded" [[package]] name = "bitvec" @@ -141,13 +146,58 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.10.2" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ "generic-array", ] +[[package]] +name = "borsh" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +dependencies = [ + "borsh-derive", + "hashbrown 0.13.2", +] + +[[package]] +name = "borsh-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "bufstream" version = "0.1.4" @@ -156,15 +206,37 @@ checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" [[package]] name = "bumpalo" -version = "3.10.0" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" + +[[package]] +name = "bytecheck" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" +checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] name = "bytemuck" -version = "1.10.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c53dfa917ec274df8ed3c572698f381a24eef2efba9492d797301b72b6db408a" +checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" [[package]] name = "byteorder" @@ -174,15 +246,15 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b3de4a0c5e67e16066a0715723abd91edc2f9001d09c46e1dca929351e130e" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] name = "bzip2" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" dependencies = [ "bzip2-sys", "libc", @@ -201,9 +273,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.73" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" dependencies = [ "jobserver", ] @@ -225,31 +297,34 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.19" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" dependencies = [ - "libc", - "num-integer", + "android-tzdata", + "iana-time-zone", + "js-sys", "num-traits", - "time 0.1.44", + "time 0.1.45", + "wasm-bindgen", "winapi", ] [[package]] name = "cipher" -version = "0.3.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "generic-array", + "crypto-common", + "inout", ] [[package]] name = "clang-sys" -version = "1.3.3" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a050e2153c5be08febd6734e29298e844fdb0fa21aeddd63b4eb7baa106c69b" +checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" dependencies = [ "glob", "libc", @@ -258,9 +333,9 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.48" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443a" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" dependencies = [ "cc", ] @@ -273,9 +348,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "combine" -version = "4.6.4" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a604e93b79d1808327a6fca85a6f2d69de66461e7620f5a4cbf5fb4d1d7c948" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" dependencies = [ "bytes", "memchr", @@ -283,9 +358,9 @@ dependencies = [ [[package]] name = "const-random" -version = "0.1.13" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f590d95d011aa80b063ffe3253422ed5aa462af4e9867d43ce8337562bac77c4" +checksum = "368a7a772ead6ce7e1de82bfb04c485f3db8ec744f72925af5735e29a22cc18e" dependencies = [ "const-random-macro", "proc-macro-hack", @@ -293,12 +368,12 @@ dependencies = [ [[package]] name = "const-random-macro" -version = "0.1.13" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "615f6e27d000a2bffbc7f2f6a8669179378fa27ee4d0a509e985dfc0a7defb40" +checksum = "9d7d6ab3c3a2282db210df5f02c4dab6e0a7057af0fb7ebd4070f30fe05c0ddb" dependencies = [ - "getrandom 0.2.7", - "lazy_static", + "getrandom 0.2.10", + "once_cell", "proc-macro-hack", "tiny-keccak", ] @@ -321,15 +396,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.2" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" +checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" dependencies = [ "libc", ] @@ -345,9 +420,9 @@ dependencies = [ [[package]] name = "crossbeam" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae5588f6b3c3cb05239e90bd110f257254aecd01e4635400391aeae07497845" +checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" dependencies = [ "cfg-if", "crossbeam-channel", @@ -359,9 +434,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.5" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c02a4d71819009c192cf4872265391563fd6a84c81ff2c0f2a7026ca4c1d85c" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if", "crossbeam-utils", @@ -369,9 +444,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -380,23 +455,22 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.9" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07db9d94cbd326813772c968ccd25999e5f8ae22f4f8d1b11effa37ef6ce281d" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", "memoffset", - "once_cell", "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f25d8400f4a7a5778f0e4e52384a48cbd9b5c495d110786187fc750075277a2" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" dependencies = [ "cfg-if", "crossbeam-utils", @@ -404,12 +478,11 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.10" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d82ee10ce34d7bc12c2122495e7593a9c41347ecdd64185af4ecf72cb1a7f83" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -449,7 +522,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.16", + "syn 2.0.18", ] [[package]] @@ -460,18 +533,19 @@ checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" dependencies = [ "darling_core", "quote", - "syn 2.0.16", + "syn 2.0.18", ] [[package]] name = "dashmap" -version = "5.3.4" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3495912c9c1ccf2e18976439f4443f3fee0fd61f424ff99fde6a66b15ecb448f" +checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" dependencies = [ "cfg-if", "hashbrown 0.12.3", "lock_api", + "once_cell", "parking_lot_core", ] @@ -488,31 +562,22 @@ dependencies = [ "rayon", ] -[[package]] -name = "deflate" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c86f7e25f518f4b81808a2cf1c50996a61f5c2eb394b2393bd87f2a4780a432f" -dependencies = [ - "adler32", -] - [[package]] name = "derive_utils" -version = "0.11.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532b4c15dccee12c7044f1fcad956e98410860b22231e44a3b827464797ca7bf" +checksum = "dff8f6a793f528719e1ad4425a52a213ac1214ac7158c5fb97a7f50a64bfc96d" dependencies = [ "proc-macro2", "quote", - "syn 1.0.98", + "syn 2.0.18", ] [[package]] name = "digest" -version = "0.10.3" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", @@ -521,28 +586,58 @@ dependencies = [ [[package]] name = "either" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "encoding_rs" -version = "0.8.31" +version = "0.8.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" dependencies = [ "cfg-if", ] +[[package]] +name = "errno" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "fastrand" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" dependencies = [ "instant", ] +[[package]] +name = "fdeflate" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" +dependencies = [ + "simd-adler32", +] + [[package]] name = "fixedbitset" version = "0.4.2" @@ -551,9 +646,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.24" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" dependencies = [ "crc32fast", "libz-sys", @@ -570,7 +665,7 @@ dependencies = [ "futures-sink", "nanorand", "pin-project", - "spin 0.9.4", + "spin 0.9.8", ] [[package]] @@ -596,19 +691,18 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ - "matches", "percent-encoding", ] [[package]] name = "frunk" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cd67cf7d54b7e72d0ea76f3985c3747d74aee43e0218ad993b7903ba7a5395e" +checksum = "a89c703bf50009f383a0873845357cc400a95fc535f836feddfe015d7df6e1e0" dependencies = [ "frunk_core", "frunk_derives", @@ -617,38 +711,38 @@ dependencies = [ [[package]] name = "frunk_core" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1246cf43ec80bf8b2505b5c360b8fb999c97dabd17dbb604d85558d5cbc25482" +checksum = "2a446d01a558301dca28ef43222864a9fa2bd9a2e71370f769d5d5d5ec9f3537" [[package]] name = "frunk_derives" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dbc4f084ec5a3f031d24ccedeb87ab2c3189a2f33b8d070889073837d5ea09e" +checksum = "b83164912bb4c97cfe0772913c7af7387ee2e00cb6d4636fb65a35b3d0c8f173" dependencies = [ "frunk_proc_macro_helpers", "quote", - "syn 1.0.98", + "syn 1.0.109", ] [[package]] name = "frunk_proc_macro_helpers" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99f11257f106c6753f5ffcb8e601fb39c390a088017aaa55b70c526bff15f63e" +checksum = "015425591bbeb0f5b8a75593340f1789af428e9f887a4f1e36c0c471f067ef50" dependencies = [ "frunk_core", "proc-macro2", "quote", - "syn 1.0.98", + "syn 1.0.109", ] [[package]] name = "frunk_proc_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a078bd8459eccbb85e0b007b8f756585762a72a9efc53f359b371c3b6351dbcc" +checksum = "ea01524f285deab48affffb342b97f186e657b119c3f1821ac531780e0fbfae0" dependencies = [ "frunk_core", "frunk_proc_macros_impl", @@ -657,15 +751,15 @@ dependencies = [ [[package]] name = "frunk_proc_macros_impl" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ffba99f0fa4f57e42f57388fbb9a0ca863bc2b4261f3c5570fed579d5df6c32" +checksum = "0a802d974cc18ee7fe1a7868fc9ce31086294fd96ba62f8da64ecb44e92a2653" dependencies = [ "frunk_core", "frunk_proc_macro_helpers", "proc-macro-hack", "quote", - "syn 1.0.98", + "syn 1.0.109", ] [[package]] @@ -676,42 +770,42 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures-channel" -version = "0.3.21" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.21" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] name = "futures-io" -version = "0.3.21" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" [[package]] name = "futures-sink" -version = "0.3.21" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" [[package]] name = "futures-task" -version = "0.3.21" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" [[package]] name = "futures-util" -version = "0.3.21" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" dependencies = [ "futures-core", "futures-io", @@ -724,9 +818,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.5" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -745,9 +839,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.7" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "js-sys", @@ -758,9 +852,9 @@ dependencies = [ [[package]] name = "git2" -version = "0.17.1" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b7905cdfe33d31a88bb2e8419ddd054451f5432d1da9eaf2ac7804ee1ea12d5" +checksum = "7b989d6a7ca95a362cf2cfc5ad688b3a467be1f87e480b8dad07fee8c79b0044" dependencies = [ "bitflags 1.3.2", "libc", @@ -771,15 +865,15 @@ dependencies = [ [[package]] name = "glob" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "h2" -version = "0.3.13" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57" +checksum = "d357c7ae988e7d2182f7d7871d0b963962420b0678b0997ce7de72001aeab782" dependencies = [ "bytes", "fnv", @@ -799,6 +893,9 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.6", +] [[package]] name = "hashbrown" @@ -806,7 +903,7 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash", + "ahash 0.8.3", ] [[package]] @@ -817,13 +914,19 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.1.19" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" + [[package]] name = "hex" version = "0.4.3" @@ -841,9 +944,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", @@ -863,9 +966,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" @@ -875,9 +978,9 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "hyper" -version = "0.14.20" +version = "0.14.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac" +checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" dependencies = [ "bytes", "futures-channel", @@ -890,7 +993,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.4", + "socket2 0.4.9", "tokio", "tower-service", "tracing", @@ -899,9 +1002,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac" +checksum = "0646026eb1b3eea4cd9ba47912ea5ce9cc07713d105b1a14698f4e6433d348b7" dependencies = [ "http", "hyper", @@ -910,6 +1013,29 @@ dependencies = [ "tokio-rustls", ] +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -918,20 +1044,19 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.2.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ - "matches", "unicode-bidi", "unicode-normalization", ] [[package]] name = "image" -version = "0.24.3" +version = "0.24.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e30ca2ecf7666107ff827a8e481de6a132a9b687ed3bb20bb1c144a36c00964" +checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" dependencies = [ "bytemuck", "byteorder", @@ -951,6 +1076,15 @@ dependencies = [ "hashbrown 0.12.3", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + [[package]] name = "instant" version = "0.1.12" @@ -971,42 +1105,51 @@ dependencies = [ [[package]] name = "io-enum" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e3306b0f260aad2872563eb0d5d1a59f2420fad270a661dce59a01e92d806b" +checksum = "01c662c349c9c9f542e7bfd9134143beb27da4b20dfbc3b3ef5b2a5b507dafbd" dependencies = [ - "autocfg", "derive_utils", - "quote", - "syn 1.0.98", + "syn 2.0.18", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi 0.3.1", + "libc", + "windows-sys 0.48.0", ] [[package]] name = "ipnet" -version = "2.5.0" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" +checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" [[package]] name = "itoa" -version = "1.0.2" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" [[package]] name = "jobserver" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.58" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -1107,15 +1250,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.144" +version = "0.2.146" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" +checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" [[package]] name = "libgit2-sys" -version = "0.15.1+1.6.4" +version = "0.15.2+1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb4577bde8cdfc7d6a2a4bcb7b049598597de33ffd337276e9c7db6cd4a2cee7" +checksum = "a80df2e11fb4a61f4ba2ab42dbe7f74468da143f1a75c74e11dee7c813f694fa" dependencies = [ "cc", "libc", @@ -1125,9 +1268,9 @@ dependencies = [ [[package]] name = "libloading" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ "cfg-if", "winapi", @@ -1135,9 +1278,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" +checksum = "56ee889ecc9568871456d42f603d6a0ce59ff328d291063a45cbdf0036baf6db" dependencies = [ "cc", "libc", @@ -1145,11 +1288,17 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + [[package]] name = "lock_api" -version = "0.4.7" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -1157,12 +1306,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" [[package]] name = "lru" @@ -1173,17 +1319,11 @@ dependencies = [ "hashbrown 0.13.2", ] -[[package]] -name = "matches" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" - [[package]] name = "md-5" -version = "0.10.1" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658646b21e0b72f7866c7038ab086d3d5e1cd6271f060fd37defb241949d0582" +checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" dependencies = [ "digest", ] @@ -1196,18 +1336,18 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" -version = "0.6.5" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "mime" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "minimal-lexical" @@ -1217,23 +1357,23 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.5.3" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", + "simd-adler32", ] [[package]] name = "mio" -version = "0.8.4" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", - "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.36.1", + "windows-sys 0.48.0", ] [[package]] @@ -1271,25 +1411,25 @@ dependencies = [ "darling", "heck", "num-bigint", - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.18", "termcolor", "thiserror", ] [[package]] name = "mysql_common" -version = "0.30.4" +version = "0.30.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b8fb568c9537cf4f1ad39e2542aa74a66bf89883e550df2cb30a8f0c0f0355" +checksum = "66ab0ba05e763898c67e63bd734102ff331e699989b1a8a89135f516e57e5ffd" dependencies = [ - "base64 0.21.0", + "base64", "bigdecimal", "bindgen", - "bitflags 2.3.1", + "bitflags 2.3.2", "bitvec", "byteorder", "bytes", @@ -1314,7 +1454,7 @@ dependencies = [ "smallvec", "subprocess", "thiserror", - "time 0.3.11", + "time 0.3.22", "uuid", ] @@ -1333,14 +1473,14 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "getrandom 0.2.7", + "getrandom 0.2.10", ] [[package]] name = "native-tls" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" dependencies = [ "lazy_static", "libc", @@ -1367,9 +1507,9 @@ dependencies = [ [[package]] name = "nom" -version = "7.1.1" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", @@ -1402,9 +1542,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19" +checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" dependencies = [ "num-traits", ] @@ -1453,40 +1593,25 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_threads" -version = "0.1.6" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ + "hermit-abi 0.2.6", "libc", ] [[package]] name = "once_cell" -version = "1.17.1" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" - -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "openssl" -version = "0.10.41" +version = "0.10.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0" +checksum = "69b3f656a17a6cbc115b5c7a40c616947d213ba182135b014d6051b73ab6f019" dependencies = [ "bitflags 1.3.2", "cfg-if", @@ -1499,13 +1624,13 @@ dependencies = [ [[package]] name = "openssl-macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 1.0.98", + "syn 2.0.18", ] [[package]] @@ -1516,11 +1641,10 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.75" +version = "0.9.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f" +checksum = "c2ce0f250f34a308dcfdbb351f511359857d4ed2134ba715a4eadd46e1ffd617" dependencies = [ - "autocfg", "cc", "libc", "pkg-config", @@ -1529,33 +1653,33 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.3" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-sys 0.36.1", + "windows-targets", ] [[package]] name = "password-hash" -version = "0.3.2" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d791538a6dcc1e7cb7fe6f6b58aca40e7f79403c45b2bc274008b5e647af1d8" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", - "rand_core 0.6.3", + "rand_core 0.6.4", "subtle", ] [[package]] name = "pathfinding" -version = "4.2.1" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c4eef7dd95d1ad58de5954f7368116d2663ccc01e0e03e50b724fef7eb2161c" +checksum = "dfc597cf0c06c15bcca90fba95ee81b3a80a934403562001d0ed7d8626f7c6ae" dependencies = [ "fixedbitset", "indexmap", @@ -1567,9 +1691,9 @@ dependencies = [ [[package]] name = "pbkdf2" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271779f35b581956db91a3e55737327a03aa051e90b1c47aeb189508533adfd7" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ "digest", "hmac", @@ -1589,34 +1713,34 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b13fe415cdf3c8e44518e18a7c95a13431d9bdf6d15367d82b23c377fdd441a" dependencies = [ - "base64 0.21.0", + "base64", "serde", ] [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pin-project" -version = "1.0.11" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78203e83c48cffbe01e4a2d35d566ca4de445d79a85372fc64e378bfc812a260" +checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.11" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "710faf75e1b33345361201d36d04e98ac1ed8909151a017ed384700836104c74" +checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" dependencies = [ "proc-macro2", "quote", - "syn 1.0.98", + "syn 2.0.18", ] [[package]] @@ -1633,27 +1757,37 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "png" -version = "0.17.5" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc38c0ad57efb786dd57b9864e5b18bae478c00c824dc55a38bbc9da95dde3ba" +checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" dependencies = [ "bitflags 1.3.2", "crc32fast", - "deflate", + "fdeflate", + "flate2", "miniz_oxide", ] [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml 0.5.11", +] [[package]] name = "proc-macro-crate" @@ -1674,7 +1808,7 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", - "syn 1.0.98", + "syn 1.0.109", "version_check", ] @@ -1691,24 +1825,44 @@ dependencies = [ [[package]] name = "proc-macro-hack" -version = "0.5.19" +version = "0.5.20+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.58" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa1fb82fc0c281dd9671101b66b771ebbe1eaf967b96ac8740dcba4b70005ca8" +checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" dependencies = [ "unicode-ident", ] +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "quote" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500" +checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" dependencies = [ "proc-macro2", ] @@ -1740,7 +1894,7 @@ checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha 0.3.1", - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -1760,7 +1914,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -1774,11 +1928,11 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.7", + "getrandom 0.2.10", ] [[package]] @@ -1796,7 +1950,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" dependencies = [ - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -1805,7 +1959,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf2890aaef0aa82719a50e808de264f9484b74b442e1a3a0e5ee38243ac40bdb" dependencies = [ - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -1819,21 +1973,19 @@ dependencies = [ [[package]] name = "rayon" -version = "1.5.3" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" dependencies = [ - "autocfg", - "crossbeam-deque", "either", "rayon-core", ] [[package]] name = "rayon-core" -version = "1.9.3" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -1857,46 +2009,46 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.15" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534cfe58d6a18cc17120fbf4635d53d14691c1fe4d951064df9bd326178d7d5a" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "regex" -version = "1.6.0" +version = "1.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" dependencies = [ - "aho-corasick 0.7.20", + "aho-corasick", "memchr", "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.27" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" +checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" [[package]] -name = "remove_dir_all" -version = "0.5.3" +name = "rend" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab" dependencies = [ - "winapi", + "bytecheck", ] [[package]] name = "reqwest" -version = "0.11.11" +version = "0.11.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92" +checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" dependencies = [ - "base64 0.13.0", + "base64", "bytes", "encoding_rs", "futures-core", @@ -1908,9 +2060,9 @@ dependencies = [ "hyper-rustls", "ipnet", "js-sys", - "lazy_static", "log", "mime", + "once_cell", "percent-encoding", "pin-project-lite", "rustls", @@ -1944,12 +2096,40 @@ dependencies = [ "winapi", ] +[[package]] +name = "rkyv" +version = "0.7.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58" +dependencies = [ + "bitvec", + "bytecheck", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "rust-g" version = "2.0.0" dependencies = [ - "aho-corasick 1.0.1", - "base64 0.21.0", + "aho-corasick", + "base64", "chrono", "const-random", "dashmap", @@ -1977,7 +2157,7 @@ dependencies = [ "sha-1", "sha2", "thiserror", - "toml", + "toml 0.7.4", "twox-hash", "url", "zip", @@ -1985,13 +2165,20 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.25.0" +version = "1.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34a3bb58e85333f1ab191bf979104b586ebd77475bc6681882825f4532dfe87c" +checksum = "d0446843641c69436765a35a5a77088e28c2e6a12da93e84aa3ab1cd4aa5a042" dependencies = [ "arrayvec", + "borsh", + "bytecheck", + "byteorder", + "bytes", "num-traits", + "rand 0.8.5", + "rkyv", "serde", + "serde_json", ] [[package]] @@ -2000,32 +2187,56 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustix" +version = "0.37.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "windows-sys 0.48.0", +] + [[package]] name = "rustls" -version = "0.20.6" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aab8ee6c7097ed6057f43c187a62418d0c05a4bd5f18b3571db50ee0f9ce033" +checksum = "e32ca28af694bc1bbf399c33a516dbdf1c90090b8ab23c2bc24f834aa2247f5f" dependencies = [ "log", "ring", + "rustls-webpki", "sct", - "webpki", ] [[package]] name = "rustls-pemfile" -version = "1.0.0" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +dependencies = [ + "base64", +] + +[[package]] +name = "rustls-webpki" +version = "0.100.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7522c9de787ff061458fe9a829dc790a3f5b22dc571694fc5883f448b94d9a9" +checksum = "d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b" dependencies = [ - "base64 0.13.0", + "ring", + "untrusted", ] [[package]] name = "ryu" -version = "1.0.10" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" [[package]] name = "saturating" @@ -2035,12 +2246,11 @@ checksum = "ece8e78b2f38ec51c51f5d475df0a7187ba5111b2a28bdc761ee05b075d40a71" [[package]] name = "schannel" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" dependencies = [ - "lazy_static", - "windows-sys 0.36.1", + "windows-sys 0.42.0", ] [[package]] @@ -2059,11 +2269,17 @@ dependencies = [ "untrusted", ] +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + [[package]] name = "security-framework" -version = "2.6.1" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -2074,9 +2290,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.6.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" dependencies = [ "core-foundation-sys", "libc", @@ -2084,29 +2300,29 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.163" +version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" +checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.163" +version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" +checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.18", ] [[package]] name = "serde_json" -version = "1.0.82" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7" +checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" dependencies = [ "itoa", "ryu", @@ -2136,9 +2352,9 @@ dependencies = [ [[package]] name = "sha-1" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" dependencies = [ "cfg-if", "cpufeatures", @@ -2147,9 +2363,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.1" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77f4e7f65455545c2153c1253d25056825e77ee2533f0e41deb65a93a34852f" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ "cfg-if", "cpufeatures", @@ -2164,9 +2380,9 @@ checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" [[package]] name = "sha2" -version = "0.10.2" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" dependencies = [ "cfg-if", "cpufeatures", @@ -2179,26 +2395,38 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" +[[package]] +name = "simd-adler32" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" + +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + [[package]] name = "slab" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" dependencies = [ "autocfg", ] [[package]] name = "smallvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "socket2" -version = "0.4.4" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", "winapi", @@ -2222,9 +2450,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "spin" -version = "0.9.4" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" dependencies = [ "lock_api", ] @@ -2253,15 +2481,15 @@ dependencies = [ [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" -version = "1.0.98" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", @@ -2270,9 +2498,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.16" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01" +checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" dependencies = [ "proc-macro2", "quote", @@ -2287,16 +2515,16 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.3.0" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" dependencies = [ + "autocfg", "cfg-if", "fastrand", - "libc", "redox_syscall", - "remove_dir_all", - "winapi", + "rustix", + "windows-sys 0.48.0", ] [[package]] @@ -2325,14 +2553,14 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.18", ] [[package]] name = "time" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" dependencies = [ "libc", "wasi 0.10.0+wasi-snapshot-preview1", @@ -2341,21 +2569,29 @@ dependencies = [ [[package]] name = "time" -version = "0.3.11" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c91f41dcb2f096c05f0873d667dceec1087ce5bcf984ec8ffb19acddbb3217" +checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" dependencies = [ - "itoa", - "libc", - "num_threads", + "serde", + "time-core", "time-macros", ] +[[package]] +name = "time-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" + [[package]] name = "time-macros" -version = "0.2.4" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" +checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" +dependencies = [ + "time-core", +] [[package]] name = "tiny-keccak" @@ -2377,44 +2613,41 @@ dependencies = [ [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.20.0" +version = "1.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57aec3cfa4c296db7255446efb4928a6be304b431a806216105542a67b6ca82e" +checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" dependencies = [ "autocfg", "bytes", "libc", - "memchr", "mio", "num_cpus", - "once_cell", "pin-project-lite", - "socket2 0.4.4", - "winapi", + "socket2 0.4.9", + "windows-sys 0.48.0", ] [[package]] name = "tokio-rustls" -version = "0.23.4" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls", "tokio", - "webpki", ] [[package]] name = "tokio-util" -version = "0.7.3" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" dependencies = [ "bytes", "futures-core", @@ -2424,6 +2657,15 @@ dependencies = [ "tracing", ] +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + [[package]] name = "toml" version = "0.7.4" @@ -2447,9 +2689,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.19.9" +version = "0.19.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d964908cec0d030b812013af25a0e57fddfadb1e066ecc6681d86253129d4f" +checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739" dependencies = [ "indexmap", "serde", @@ -2466,9 +2708,9 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.35" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if", "pin-project-lite", @@ -2477,18 +2719,18 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.28" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b7358be39f2f274f322d2aaed611acc57f382e8eb1e5b48cb9ae30933495ce7" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" dependencies = [ "once_cell", ] [[package]] name = "try-lock" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "twox-hash" @@ -2503,27 +2745,27 @@ dependencies = [ [[package]] name = "typenum" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" [[package]] name = "unicode-bidi" -version = "0.3.8" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.2" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7" +checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" [[package]] name = "unicode-normalization" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] @@ -2536,21 +2778,20 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.2.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" dependencies = [ "form_urlencoded", "idna", - "matches", "percent-encoding", ] [[package]] name = "uuid" -version = "1.3.3" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345444e32442451b267fc254ae85a209c64be56d2890e601a0c37ff0c3c5ecd2" +checksum = "0fa2982af2eec27de306107c027578ff7f423d65f7250e40ce0fea8f45248b81" [[package]] name = "vcpkg" @@ -2566,11 +2807,10 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -2594,9 +2834,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.81" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -2604,24 +2844,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.81" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", - "lazy_static", "log", + "once_cell", "proc-macro2", "quote", - "syn 1.0.98", + "syn 2.0.18", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.31" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de9a9cec1733468a8c657e57fa2413d2ae2c0129b95e87c5b72b8ace4d13f31f" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -2631,9 +2871,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.81" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2641,28 +2881,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.81" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.98", + "syn 2.0.18", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.81" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "web-sys" -version = "0.3.58" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -2680,9 +2920,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.22.4" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c760f0d366a6c24a02ed7816e23e691f5d92291f94d15e836006fd11b04daf" +checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" dependencies = [ "webpki", ] @@ -2718,17 +2958,28 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-sys" -version = "0.36.1" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ - "windows_aarch64_msvc 0.36.1", - "windows_i686_gnu 0.36.1", - "windows_i686_msvc 0.36.1", - "windows_x86_64_gnu 0.36.1", - "windows_x86_64_msvc 0.36.1", + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", ] [[package]] @@ -2746,15 +2997,21 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" dependencies = [ - "windows_aarch64_gnullvm", + "windows_aarch64_gnullvm 0.48.0", "windows_aarch64_msvc 0.48.0", "windows_i686_gnu 0.48.0", "windows_i686_msvc 0.48.0", "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm", + "windows_x86_64_gnullvm 0.48.0", "windows_x86_64_msvc 0.48.0", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.0" @@ -2763,9 +3020,9 @@ checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" [[package]] name = "windows_aarch64_msvc" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" @@ -2775,9 +3032,9 @@ checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" [[package]] name = "windows_i686_gnu" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" @@ -2787,9 +3044,9 @@ checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" [[package]] name = "windows_i686_msvc" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" @@ -2799,9 +3056,9 @@ checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" [[package]] name = "windows_x86_64_gnu" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" @@ -2809,6 +3066,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.0" @@ -2817,9 +3080,9 @@ checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" [[package]] name = "windows_x86_64_msvc" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" @@ -2829,9 +3092,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "winnow" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699" +checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" dependencies = [ "memchr", ] @@ -2856,9 +3119,9 @@ dependencies = [ [[package]] name = "zip" -version = "0.6.2" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf225bcf73bb52cbb496e70475c7bd7a3f769df699c0020f6c7bd9a96dcf0b8d" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" dependencies = [ "aes", "byteorder", @@ -2870,24 +3133,24 @@ dependencies = [ "hmac", "pbkdf2", "sha1", - "time 0.3.11", + "time 0.3.22", "zstd", ] [[package]] name = "zstd" -version = "0.10.2+zstd.1.5.2" +version = "0.11.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4a6bd64f22b5e3e94b4e238669ff9f10815c27a5180108b849d24174a83847" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "4.1.6+zstd.1.5.2" +version = "5.0.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b61c51bb270702d6167b8ce67340d2754b088d0c091b06e593aa772c3ee9bb" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" dependencies = [ "libc", "zstd-sys", @@ -2895,10 +3158,11 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "1.6.3+zstd.1.5.2" +version = "2.0.8+zstd.1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc49afa5c8d634e75761feda8c592051e7eeb4683ba827211eb0d731d3402ea8" +checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" dependencies = [ "cc", "libc", + "pkg-config", ] diff --git a/Cargo.toml b/Cargo.toml index 35e1ccb3..7cc5e1c0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,12 +27,12 @@ chrono = { version = "0.4", optional = true } base64 = { version = "0.21", optional = true } md-5 = { version = "0.10", optional = true } twox-hash = { version = "1.6", optional = true } -const-random = { version = "0.1.13", optional = true } +const-random = { version = "0.1.15", optional = true } sha-1 = { version = "0.10", optional = true } sha2 = { version = "0.10", optional = true } hex = { version = "0.4", optional = true } -percent-encoding = { version = "2.1", optional = true } -url-dep = { version = "2.1", package = "url", optional = true } +percent-encoding = { version = "2.2", optional = true } +url-dep = { version = "2.3", package = "url", optional = true } png = { version = "0.17", optional = true } image = { version = "0.24", optional = true, default-features = false, features = ["png"] } git2 = { version = "0.17.1", optional = true, default-features = false } @@ -45,14 +45,14 @@ reqwest = { version = "0.11", optional = true, default-features = false, feature serde = { version = "1.0", optional = true, features = ["derive"] } serde_json = { version = "1.0", optional = true } lazy_static = { version = "1.4", optional = true } -once_cell = { version = "1.4", optional = true } +once_cell = { version = "1.17", optional = true } mysql = { version = "24.0", optional = true } -dashmap = { version = "5.3", optional = true } +dashmap = { version = "5.4", optional = true } zip = { version = "0.6", optional = true } rand = { version = "0.8", optional = true } toml-dep = { version = "0.7.4", package = "toml", optional = true } aho-corasick = { version = "1.0", optional = true } -rayon = { version = "1.5", optional = true } +rayon = { version = "1.7", optional = true } dbpnoise = { version = "0.1.2", optional = true } pathfinding = { version = "4.2.1", optional = true } num = { version = "0.4.0", optional = true } diff --git a/src/git.rs b/src/git.rs index 1ce3d069..fb184fcd 100644 --- a/src/git.rs +++ b/src/git.rs @@ -18,7 +18,7 @@ byond_fn!(fn rg_git_commit_date(rev) { let repo = repo.as_ref().map_err(Error::code)?; let object = repo.revparse_single(rev).map_err(|e| e.code())?; let commit = object.as_commit().ok_or(ErrorCode::GenericError)?; - let datetime = Utc.timestamp(commit.time().seconds(), 0); + let datetime = Utc.timestamp_opt(commit.time().seconds(), 0).latest().unwrap(); Ok(datetime.format("%F").to_string()) }).ok() }); From d8097d328f046bf6913bfa05e35196bb610e6915 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Sun, 18 Jun 2023 12:15:21 -0700 Subject: [PATCH 68/82] 2.0.1 (#139) --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ecc188d4..b048cdbd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2126,7 +2126,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "2.0.0" +version = "2.0.1" dependencies = [ "aho-corasick", "base64", diff --git a/Cargo.toml b/Cargo.toml index 7cc5e1c0..ab947b07 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rust-g" edition = "2021" -version = "2.0.0" +version = "2.0.1" authors = [ "Bjorn Neergaard ", "Tad Hardesty ", From e9f41f4738f764f7b3982a98c58f4ff1d944a79c Mon Sep 17 00:00:00 2001 From: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Date: Thu, 29 Jun 2023 17:51:30 -0400 Subject: [PATCH 69/82] add uniform precision to rust-g timestamp (#141) * add precision to rust-g timestamp * coping --- src/time.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/time.rs b/src/time.rs index f27b9ddb..ba726cf1 100644 --- a/src/time.rs +++ b/src/time.rs @@ -38,12 +38,12 @@ byond_fn!(fn time_reset(instant_id) { byond_fn!( fn unix_timestamp() { - Some( + Some(format!( + "{:.6}", std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) .unwrap() .as_secs_f64() - .to_string(), - ) + )) } ); From f00c980c1de2175b398fed29269ab235f387ab60 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sat, 8 Jul 2023 14:09:59 -0700 Subject: [PATCH 70/82] adds rustg_dmi_icon_states (#140) --- Cargo.lock | 37 +++++++++++++++++++++++++++++++++++++ Cargo.toml | 3 ++- README.md | 4 ++-- dmsrc/dmi.dm | 6 ++++++ src/dmi.rs | 24 ++++++++++++++++++++++++ 5 files changed, 71 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b048cdbd..9d3dc02f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,6 +8,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + [[package]] name = "aes" version = "0.8.2" @@ -562,6 +568,15 @@ dependencies = [ "rayon", ] +[[package]] +name = "deflate" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c86f7e25f518f4b81808a2cf1c50996a61f5c2eb394b2393bd87f2a4780a432f" +dependencies = [ + "adler32", +] + [[package]] name = "derive_utils" version = "0.13.0" @@ -584,6 +599,18 @@ dependencies = [ "subtle", ] +[[package]] +name = "dmi" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3df7937260ba09ec3ded02a7ce74e759f6beebd2e0b7fc403217a87b9c1e04" +dependencies = [ + "deflate", + "image", + "inflate", + "thiserror", +] + [[package]] name = "either" version = "1.8.1" @@ -1076,6 +1103,15 @@ dependencies = [ "hashbrown 0.12.3", ] +[[package]] +name = "inflate" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff" +dependencies = [ + "adler32", +] + [[package]] name = "inout" version = "0.1.3" @@ -2134,6 +2170,7 @@ dependencies = [ "const-random", "dashmap", "dbpnoise", + "dmi", "flume", "git2", "hex", diff --git a/Cargo.toml b/Cargo.toml index ab947b07..a924223c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -56,6 +56,7 @@ rayon = { version = "1.7", optional = true } dbpnoise = { version = "0.1.2", optional = true } pathfinding = { version = "4.2.1", optional = true } num = { version = "0.4.0", optional = true } +dmi = { version = "0.3.0", optional = true } [features] default = [ @@ -77,7 +78,7 @@ default = [ # default features acreplace = ["aho-corasick"] cellularnoise = ["rand", "rayon"] -dmi = ["png", "image"] +dmi = ["png", "image", "dep:dmi"] file = [] git = ["git2", "chrono"] http = ["reqwest", "serde", "serde_json", "once_cell", "jobs"] diff --git a/README.md b/README.md index 5aa28d08..713e31dc 100644 --- a/README.md +++ b/README.md @@ -89,8 +89,8 @@ To get additional features, pass a list to `--features`, for example `--features The default features are: * acreplace: Aho-Corasick string matching and replacement. * cellularnoise: Function to generate cellular automata-based noise. -* dmi: DMI manipulations which are impossible from within BYOND. - Used by the asset cache subsystem to improve load times. +* dmi: DMI manipulations which are impossible or degraded from within BYOND. + Mostly used by the asset cache subsystem to improve load times. * file: Faster replacements for `file2text` and `text2file`, as well as reading or checking if files exist. * git: Functions for robustly checking the current git revision. * http: Asynchronous HTTP(s) client supporting most standard methods. diff --git a/dmsrc/dmi.dm b/dmsrc/dmi.dm index f5d5fe5f..9ebb8edc 100644 --- a/dmsrc/dmi.dm +++ b/dmsrc/dmi.dm @@ -1,3 +1,9 @@ #define rustg_dmi_strip_metadata(fname) RUSTG_CALL(RUST_G, "dmi_strip_metadata")(fname) #define rustg_dmi_create_png(path, width, height, data) RUSTG_CALL(RUST_G, "dmi_create_png")(path, width, height, data) #define rustg_dmi_resize_png(path, width, height, resizetype) RUSTG_CALL(RUST_G, "dmi_resize_png")(path, width, height, resizetype) +/** + * input: must be a path, not an /icon; you have to do your own handling if it is one, as icon objects can't be directly passed to rustg. + * + * output: json_encode'd list. json_decode to get a flat list with icon states in the order they're in inside the .dmi + */ +#define rustg_dmi_icon_states(fname) RUSTG_CALL(RUST_G, "dmi_icon_states")(fname) diff --git a/src/dmi.rs b/src/dmi.rs index e9b6a292..e365e023 100644 --- a/src/dmi.rs +++ b/src/dmi.rs @@ -1,7 +1,9 @@ use crate::error::{Error, Result}; +use dmi::icon::Icon; use png::{Decoder, Encoder, OutputInfo, Reader}; use std::{ fs::{create_dir_all, File}, + io::BufReader, path::Path, }; @@ -25,6 +27,10 @@ byond_fn!(fn dmi_resize_png(path, width, height, resizetype) { resize_png(path, width, height, resizetype).err() }); +byond_fn!(fn dmi_icon_states(path) { + read_states(path).ok() +}); + fn strip_metadata(path: &str) -> Result<()> { let (reader, frame_info, image) = read_png(path)?; write_png(path, &reader, &frame_info, &image, true) @@ -112,3 +118,21 @@ fn resize_png>( Ok(newimg.save_with_format(path.as_ref(), image::ImageFormat::Png)?) } + +/// Output is a JSON string for reading within BYOND +/// +/// Erroring at any point will produce an empty string +fn read_states(path: &str) -> Result { + let reader = BufReader::new(File::open(path)?); + let icon = Icon::load(reader).ok(); + if icon.is_none() { + return Err(Error::InvalidPngData); + } + let states: Vec<_> = icon + .unwrap() + .states + .iter() + .map(|s| s.name.clone()) + .collect(); + Ok(serde_json::to_string(&states)?) +} From 257fea8d5a22df813e5431d4b28c23034769736d Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Sat, 8 Jul 2023 14:36:03 -0700 Subject: [PATCH 71/82] 2.1.0 (#143) --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9d3dc02f..e2bfd321 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2162,7 +2162,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "2.0.1" +version = "2.1.0" dependencies = [ "aho-corasick", "base64", diff --git a/Cargo.toml b/Cargo.toml index a924223c..5e38e333 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rust-g" edition = "2021" -version = "2.0.1" +version = "2.1.0" authors = [ "Bjorn Neergaard ", "Tad Hardesty ", From 36e66130cb12fb64f64e2110057c1b714a073c3e Mon Sep 17 00:00:00 2001 From: oranges Date: Sun, 23 Jul 2023 11:24:42 +1200 Subject: [PATCH 72/82] Make mysql use the native rust tls stack by default (#144) --- .github/workflows/rust.yml | 12 ++++++------ Cargo.lock | 15 ++++++++++++++- Cargo.toml | 31 ++++++++++++++++++++++++++++++- 3 files changed, 50 insertions(+), 8 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index a2fd8a6c..0ea8c56b 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -25,7 +25,7 @@ jobs: with: toolchain: stable command: clippy - args: --target i686-pc-windows-msvc --all-features --locked -- -D warnings + args: --target i686-pc-windows-msvc --features all --locked -- -D warnings - name: Rustfmt uses: actions-rs/cargo@v1 @@ -39,7 +39,7 @@ jobs: with: toolchain: stable command: build - args: --target i686-pc-windows-msvc --release + args: --target i686-pc-windows-msvc --locked --release - uses: actions/upload-artifact@v3 with: @@ -78,21 +78,21 @@ jobs: with: toolchain: stable command: check - args: --target i686-unknown-linux-gnu --all-features + args: --target i686-unknown-linux-gnu --locked --features all - name: Build (Debug) (all features) uses: actions-rs/cargo@v1 with: toolchain: stable command: build - args: --target i686-unknown-linux-gnu --all-features + args: --target i686-unknown-linux-gnu --locked --features all - name: Run tests (all features) uses: actions-rs/cargo@v1 with: toolchain: stable command: test - args: --target i686-unknown-linux-gnu --all-features + args: --target i686-unknown-linux-gnu --locked --features all env: BYOND_BIN: /home/runner/BYOND/byond/bin @@ -101,7 +101,7 @@ jobs: with: toolchain: stable command: build - args: --target i686-unknown-linux-gnu --release + args: --target i686-unknown-linux-gnu --locked --release - uses: actions/upload-artifact@v3 with: diff --git a/Cargo.lock b/Cargo.lock index e2bfd321..3630e172 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1431,11 +1431,15 @@ dependencies = [ "once_cell", "pem", "percent-encoding", + "rustls", + "rustls-pemfile", "serde", "serde_json", "socket2 0.5.3", "twox-hash", "url", + "webpki", + "webpki-roots 0.23.1", ] [[package]] @@ -2113,7 +2117,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", + "webpki-roots 0.22.6", "winreg", ] @@ -2964,6 +2968,15 @@ dependencies = [ "webpki", ] +[[package]] +name = "webpki-roots" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" +dependencies = [ + "rustls-webpki", +] + [[package]] name = "winapi" version = "0.3.9" diff --git a/Cargo.toml b/Cargo.toml index 5e38e333..66e9c00a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,7 +46,7 @@ serde = { version = "1.0", optional = true, features = ["derive"] } serde_json = { version = "1.0", optional = true } lazy_static = { version = "1.4", optional = true } once_cell = { version = "1.17", optional = true } -mysql = { version = "24.0", optional = true } +mysql = { version = "24.0", default_features = false, optional = true} dashmap = { version = "5.4", optional = true } zip = { version = "0.6", optional = true } rand = { version = "0.8", optional = true } @@ -69,12 +69,37 @@ default = [ "json", "log", "noise", + "rustls_tls", "sql", "time", "toml", "url", ] +all = [ + "acreplace", + "cellularnoise", + "dmi", + "file", + "git", + "http", + "json", + "log", + "noise", + "rustls_tls", + "sql", + "time", + "toml", + "url", + "batchnoise", + "hash", + "pathfinder", + "redis_pubsub", + "redis_reliablequeue", + "unzip", + "worleynoise" +] + # default features acreplace = ["aho-corasick"] cellularnoise = ["rand", "rayon"] @@ -108,6 +133,10 @@ redis_reliablequeue = ["flume", "redis", "serde", "serde_json"] unzip = ["zip", "jobs"] worleynoise = ["rand", "rayon"] +# Use the native tls stack for the mysql db +native_tls = ["mysql/default"] +rustls_tls = ["mysql/default-rustls"] + # internal feature-like things jobs = ["flume"] From cd741e913c0d0cf1ea50ffd492fc1268c57b24e5 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Sat, 22 Jul 2023 17:48:26 -0700 Subject: [PATCH 73/82] 3.0.0 (#147) --- .github/workflows/rust.yml | 2 +- Cargo.lock | 2 +- Cargo.toml | 2 +- README.md | 22 ++++++++++------------ docker/Dockerfile.i686-unknown-linux-gnu | 2 +- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 0ea8c56b..a91cf657 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -63,7 +63,7 @@ jobs: - run: | sudo dpkg --add-architecture i386 sudo apt-get update - sudo apt-get install libgcc-s1:i386 g++-multilib zlib1g-dev:i386 libssl-dev:i386 + sudo apt-get install libgcc-s1:i386 g++-multilib zlib1g-dev:i386 ./scripts/install_byond.sh - uses: actions-rs/toolchain@v1 diff --git a/Cargo.lock b/Cargo.lock index 3630e172..afdaa609 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2166,7 +2166,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "2.1.0" +version = "3.0.0" dependencies = [ "aho-corasick", "base64", diff --git a/Cargo.toml b/Cargo.toml index 66e9c00a..958fbd4e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rust-g" edition = "2021" -version = "2.1.0" +version = "3.0.0" authors = [ "Bjorn Neergaard ", "Tad Hardesty ", diff --git a/README.md b/README.md index 713e31dc..3490242b 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ System libraries: ```sh sudo dpkg --add-architecture i386 sudo apt-get update - sudo apt-get install zlib1g-dev:i386 libssl-dev:i386 + sudo apt-get install zlib1g-dev:i386 ``` * Other Linux distributions install the appropriate **32-bit development** and **32-bit runtime** packages. @@ -84,7 +84,8 @@ cargo build --release --target i686-pc-windows-msvc If you aren't sharing the binary with other people, consider compiling [targeting your native cpu](https://rust-lang.github.io/packed_simd/perf-guide/target-feature/rustflags.html#target-cpu) for potential performance improvements. You can do this by setting the `RUSTFLAGS` environment variable to `-C target-cpu=native`. For example, in Powershell you would use `$Env:RUSTFLAGS="-C target-cpu=native"`. -To get additional features, pass a list to `--features`, for example `--features hash,url`. To get all features, pass `--all-features`. To disable the default features, pass `--no-default-features`. +To get additional features, pass a list to `--features`, for example `--features hash,url`. To get all features, pass `--features all`. To disable the default features, pass `--no-default-features`. +You can't use `--all-features` because of conflicting `native_tls` and `rustls_tls` features to select the mysql backend. The default features are: * acreplace: Aho-Corasick string matching and replacement. @@ -139,16 +140,13 @@ sample output, but the most important thing is that nothing is listed as ```sh $ ldd librust_g.so # Linux - linux-gate.so.1 (0xf7f45000) - libssl.so.1.1 => /usr/lib/i386-linux-gnu/libssl.so.1.1 (0xf6c79000) - libcrypto.so.1.1 => /usr/lib/i386-linux-gnu/libcrypto.so.1.1 (0xf69cd000) - libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf69c8000) - librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf69be000) - libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf699f000) - libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf6981000) - libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf67a5000) - /lib/ld-linux.so.2 (0xf7f47000) - libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf66a3000) + linux-gate.so.1 (0xf7f8b000) + libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7957000) + libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7935000) + libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7831000) + libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf782b000) + libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7643000) + /lib/ld-linux.so.2 (0xf7f8d000) ``` If BYOND cannot find the shared library, ensure that the directory containing diff --git a/docker/Dockerfile.i686-unknown-linux-gnu b/docker/Dockerfile.i686-unknown-linux-gnu index f37a8bfd..d8fb287b 100644 --- a/docker/Dockerfile.i686-unknown-linux-gnu +++ b/docker/Dockerfile.i686-unknown-linux-gnu @@ -2,4 +2,4 @@ FROM rustembedded/cross:i686-unknown-linux-gnu RUN dpkg --add-architecture i386 && \ apt-get update && \ - apt-get install --assume-yes zlib1g-dev:i386 libssl-dev:i386 pkg-config:i386 + apt-get install --assume-yes zlib1g-dev:i386 pkg-config:i386 From 85631fa2a75df15adea9a3b0fdcc671bec3bc6ad Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Mon, 25 Sep 2023 13:38:15 -0700 Subject: [PATCH 74/82] Some routine updates for 3.0.0 (#152) routine package maintenance and upgrades - i went through the breaking changes and didn't see anything that looked like it affected us, only additions to public apis really --- .github/workflows/rust.yml | 61 +-- Cargo.lock | 843 ++++++++++++++++++------------------- Cargo.toml | 14 +- 3 files changed, 436 insertions(+), 482 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index a91cf657..3d76971a 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -2,44 +2,31 @@ name: rust-g on: push: branches: - - master + - master pull_request: branches: - - master + - master jobs: build-windows: runs-on: windows-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v4 - - uses: actions-rs/toolchain@v1 + - uses: dtolnay/rust-toolchain@stable with: - toolchain: stable - target: i686-pc-windows-msvc + targets: i686-pc-windows-msvc components: rustfmt, clippy - uses: Swatinem/rust-cache@v2 - name: Clippy (all features) - uses: actions-rs/cargo@v1 - with: - toolchain: stable - command: clippy - args: --target i686-pc-windows-msvc --features all --locked -- -D warnings + run: cargo clippy --target i686-pc-windows-msvc --features all --locked -- -D warnings - name: Rustfmt - uses: actions-rs/cargo@v1 - with: - toolchain: stable - command: fmt - args: -- --check + run: cargo fmt -- --check - name: Build (release) (default features) - uses: actions-rs/cargo@v1 - with: - toolchain: stable - command: build - args: --target i686-pc-windows-msvc --locked --release + run: cargo build --target i686-pc-windows-msvc --locked --release - uses: actions/upload-artifact@v3 with: @@ -49,7 +36,6 @@ jobs: target/i686-pc-windows-msvc/release/rust_g.pdb target/rust_g.dm - build-linux: runs-on: ubuntu-latest env: @@ -58,7 +44,7 @@ jobs: PKG_CONFIG_ALLOW_CROSS: 1 steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v4 - run: | sudo dpkg --add-architecture i386 @@ -66,42 +52,25 @@ jobs: sudo apt-get install libgcc-s1:i386 g++-multilib zlib1g-dev:i386 ./scripts/install_byond.sh - - uses: actions-rs/toolchain@v1 + - uses: dtolnay/rust-toolchain@stable with: - toolchain: stable - target: i686-unknown-linux-gnu + targets: i686-unknown-linux-gnu - uses: Swatinem/rust-cache@v2 - name: Check (all features) - uses: actions-rs/cargo@v1 - with: - toolchain: stable - command: check - args: --target i686-unknown-linux-gnu --locked --features all + run: cargo check --target i686-unknown-linux-gnu --locked --features all - name: Build (Debug) (all features) - uses: actions-rs/cargo@v1 - with: - toolchain: stable - command: build - args: --target i686-unknown-linux-gnu --locked --features all + run: cargo build --target i686-unknown-linux-gnu --locked --features all - name: Run tests (all features) - uses: actions-rs/cargo@v1 - with: - toolchain: stable - command: test - args: --target i686-unknown-linux-gnu --locked --features all + run: cargo test --target i686-unknown-linux-gnu --locked --features all env: BYOND_BIN: /home/runner/BYOND/byond/bin - name: Build (release) (default features) - uses: actions-rs/cargo@v1 - with: - toolchain: stable - command: build - args: --target i686-unknown-linux-gnu --locked --release + run: cargo build --target i686-unknown-linux-gnu --locked --release - uses: actions/upload-artifact@v3 with: diff --git a/Cargo.lock b/Cargo.lock index afdaa609..3b8c421a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,15 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + [[package]] name = "adler" version = "1.0.2" @@ -16,9 +25,9 @@ checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "aes" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ "cfg-if", "cipher", @@ -49,9 +58,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" dependencies = [ "memchr", ] @@ -73,9 +82,9 @@ dependencies = [ [[package]] name = "arrayvec" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8868f09ff8cea88b079da74ae569d9b8c62a23c68c746240b704ee6f7525c89c" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "autocfg" @@ -83,11 +92,26 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + [[package]] name = "base64" -version = "0.21.2" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" [[package]] name = "base64ct" @@ -108,11 +132,11 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.66.0" +version = "0.68.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79b8b0b1a751b3cb21f8a485561988881f744d9040bae7bfa29269dcb9a1949f" +checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" dependencies = [ - "bitflags 2.3.2", + "bitflags 2.4.0", "cexpr", "clang-sys", "lazy_static", @@ -123,7 +147,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.18", + "syn 2.0.37", ] [[package]] @@ -134,9 +158,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbe3c979c178231552ecba20214a8272df4e09f232a87aef4320cf06539aded" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "bitvec" @@ -212,9 +236,9 @@ checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "bytecheck" @@ -240,9 +264,9 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "byteorder" @@ -252,9 +276,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "bzip2" @@ -279,11 +303,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "jobserver", + "libc", ] [[package]] @@ -303,17 +328,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", - "time 0.1.45", "wasm-bindgen", - "winapi", + "windows-targets", ] [[package]] @@ -408,9 +432,9 @@ checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ "libc", ] @@ -509,9 +533,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0558d22a7b463ed0241e993f76f09f30b126687447751a8638587b864e4b3944" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" dependencies = [ "darling_core", "darling_macro", @@ -519,37 +543,37 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.18", + "syn 2.0.37", ] [[package]] name = "darling_macro" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.18", + "syn 2.0.37", ] [[package]] name = "dashmap" -version = "5.4.0" +version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.12.3", + "hashbrown 0.14.0", "lock_api", "once_cell", "parking_lot_core", @@ -577,15 +601,33 @@ dependencies = [ "adler32", ] +[[package]] +name = "deprecate-until" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ec2e2a2d0c79afd023be50309ecf010f20bf4a2761f15e264f4ac9516aff58b" +dependencies = [ + "proc-macro2", + "quote", + "semver", + "syn 2.0.37", +] + +[[package]] +name = "deranged" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" + [[package]] name = "derive_utils" -version = "0.13.0" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff8f6a793f528719e1ad4425a52a213ac1214ac7158c5fb97a7f50a64bfc96d" +checksum = "9abcad25e9720609ccb3dcdb795d845e37d8ce34183330a9f48b03a1a71c8e21" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.37", ] [[package]] @@ -613,28 +655,34 @@ dependencies = [ [[package]] name = "either" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "errno" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" dependencies = [ "errno-dragonfly", "libc", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -649,12 +697,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "1.9.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" [[package]] name = "fdeflate" @@ -673,9 +718,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" dependencies = [ "crc32fast", "libz-sys", @@ -684,14 +729,13 @@ dependencies = [ [[package]] name = "flume" -version = "0.10.14" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" dependencies = [ "futures-core", "futures-sink", "nanorand", - "pin-project", "spin 0.9.8", ] @@ -727,9 +771,9 @@ dependencies = [ [[package]] name = "frunk" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89c703bf50009f383a0873845357cc400a95fc535f836feddfe015d7df6e1e0" +checksum = "11a351b59e12f97b4176ee78497dff72e4276fb1ceb13e19056aca7fa0206287" dependencies = [ "frunk_core", "frunk_derives", @@ -738,55 +782,43 @@ dependencies = [ [[package]] name = "frunk_core" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a446d01a558301dca28ef43222864a9fa2bd9a2e71370f769d5d5d5ec9f3537" +checksum = "af2469fab0bd07e64ccf0ad57a1438f63160c69b2e57f04a439653d68eb558d6" [[package]] name = "frunk_derives" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b83164912bb4c97cfe0772913c7af7387ee2e00cb6d4636fb65a35b3d0c8f173" +checksum = "b0fa992f1656e1707946bbba340ad244f0814009ef8c0118eb7b658395f19a2e" dependencies = [ "frunk_proc_macro_helpers", "quote", - "syn 1.0.109", + "syn 2.0.37", ] [[package]] name = "frunk_proc_macro_helpers" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "015425591bbeb0f5b8a75593340f1789af428e9f887a4f1e36c0c471f067ef50" +checksum = "35b54add839292b743aeda6ebedbd8b11e93404f902c56223e51b9ec18a13d2c" dependencies = [ "frunk_core", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.37", ] [[package]] name = "frunk_proc_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea01524f285deab48affffb342b97f186e657b119c3f1821ac531780e0fbfae0" -dependencies = [ - "frunk_core", - "frunk_proc_macros_impl", - "proc-macro-hack", -] - -[[package]] -name = "frunk_proc_macros_impl" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a802d974cc18ee7fe1a7868fc9ce31086294fd96ba62f8da64ecb44e92a2653" +checksum = "71b85a1d4a9a6b300b41c05e8e13ef2feca03e0334127f29eca9506a7fe13a93" dependencies = [ "frunk_core", "frunk_proc_macro_helpers", - "proc-macro-hack", "quote", - "syn 1.0.109", + "syn 2.0.37", ] [[package]] @@ -816,6 +848,17 @@ version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + [[package]] name = "futures-sink" version = "0.3.28" @@ -836,6 +879,7 @@ checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" dependencies = [ "futures-core", "futures-io", + "futures-macro", "futures-task", "memchr", "pin-project-lite", @@ -877,13 +921,19 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "gimli" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" + [[package]] name = "git2" -version = "0.17.2" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b989d6a7ca95a362cf2cfc5ad688b3a467be1f87e480b8dad07fee8c79b0044" +checksum = "fbf97ba92db08df386e10c8ede66a2a0369bd277090afd8710e19e38de9ec0cd" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "libc", "libgit2-sys", "log", @@ -898,9 +948,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "h2" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d357c7ae988e7d2182f7d7871d0b963962420b0678b0997ce7de72001aeab782" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ "bytes", "fnv", @@ -908,7 +958,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 1.9.3", "slab", "tokio", "tokio-util", @@ -934,25 +984,22 @@ dependencies = [ ] [[package]] -name = "heck" -version = "0.4.1" +name = "hashbrown" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" [[package]] -name = "hermit-abi" -version = "0.2.6" +name = "heck" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -999,15 +1046,15 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.26" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes", "futures-channel", @@ -1029,10 +1076,11 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0646026eb1b3eea4cd9ba47912ea5ce9cc07713d105b1a14698f4e6433d348b7" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" dependencies = [ + "futures-util", "http", "hyper", "rustls", @@ -1081,9 +1129,9 @@ dependencies = [ [[package]] name = "image" -version = "0.24.6" +version = "0.24.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" +checksum = "6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711" dependencies = [ "bytemuck", "byteorder", @@ -1103,6 +1151,16 @@ dependencies = [ "hashbrown 0.12.3", ] +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + [[package]] name = "inflate" version = "0.4.5" @@ -1121,15 +1179,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - [[package]] name = "integer-sqrt" version = "0.1.5" @@ -1141,36 +1190,25 @@ dependencies = [ [[package]] name = "io-enum" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01c662c349c9c9f542e7bfd9134143beb27da4b20dfbc3b3ef5b2a5b507dafbd" +checksum = "5305557fa27b460072ae15ce07617e999f5879f14d376c8449f0bfb9f9d8e91e" dependencies = [ "derive_utils", - "syn 2.0.18", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.48.0", + "syn 2.0.37", ] [[package]] name = "ipnet" -version = "2.7.2" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "jobserver" @@ -1286,15 +1324,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.146" +version = "0.2.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" +checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" [[package]] name = "libgit2-sys" -version = "0.15.2+1.6.4" +version = "0.16.1+1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a80df2e11fb4a61f4ba2ab42dbe7f74468da143f1a75c74e11dee7c813f694fa" +checksum = "f2a2bb3680b094add03bb3732ec520ece34da31a8cd2d633d1389d0f0fb60d0c" dependencies = [ "cc", "libc", @@ -1314,9 +1352,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.9" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ee889ecc9568871456d42f603d6a0ce59ff328d291063a45cbdf0036baf6db" +checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" dependencies = [ "cc", "libc", @@ -1326,9 +1364,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.3.8" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" [[package]] name = "lock_api" @@ -1342,33 +1380,34 @@ dependencies = [ [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "lru" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03f1160296536f10c833a82dca22267d5486734230d47bf00bf435885814ba1e" +checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" dependencies = [ "hashbrown 0.13.2", ] [[package]] name = "md-5" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ + "cfg-if", "digest", ] [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "memoffset" @@ -1409,7 +1448,7 @@ checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -1435,7 +1474,7 @@ dependencies = [ "rustls-pemfile", "serde", "serde_json", - "socket2 0.5.3", + "socket2 0.5.4", "twox-hash", "url", "webpki", @@ -1455,21 +1494,21 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.37", "termcolor", "thiserror", ] [[package]] name = "mysql_common" -version = "0.30.5" +version = "0.30.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66ab0ba05e763898c67e63bd734102ff331e699989b1a8a89135f516e57e5ffd" +checksum = "57349d5a326b437989b6ee4dc8f2f34b0cc131202748414712a8e7d98952fc8c" dependencies = [ "base64", "bigdecimal", "bindgen", - "bitflags 2.3.2", + "bitflags 2.4.0", "bitvec", "byteorder", "bytes", @@ -1494,7 +1533,7 @@ dependencies = [ "smallvec", "subprocess", "thiserror", - "time 0.3.22", + "time", "uuid", ] @@ -1557,9 +1596,9 @@ dependencies = [ [[package]] name = "num" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" dependencies = [ "num-bigint", "num-complex", @@ -1571,9 +1610,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -1582,9 +1621,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" dependencies = [ "num-traits", ] @@ -1624,23 +1663,32 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi", "libc", ] +[[package]] +name = "object" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" version = "1.18.0" @@ -1649,11 +1697,11 @@ checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "openssl" -version = "0.10.54" +version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69b3f656a17a6cbc115b5c7a40c616947d213ba182135b014d6051b73ab6f019" +checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "cfg-if", "foreign-types", "libc", @@ -1670,7 +1718,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.37", ] [[package]] @@ -1681,9 +1729,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.88" +version = "0.9.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ce0f250f34a308dcfdbb351f511359857d4ed2134ba715a4eadd46e1ffd617" +checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" dependencies = [ "cc", "libc", @@ -1717,12 +1765,13 @@ dependencies = [ [[package]] name = "pathfinding" -version = "4.3.0" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc597cf0c06c15bcca90fba95ee81b3a80a934403562001d0ed7d8626f7c6ae" +checksum = "7b7d06c8716de428def400ae9e5cd92463cd458d98169ed835b2da5d08cf4698" dependencies = [ + "deprecate-until", "fixedbitset", - "indexmap", + "indexmap 2.0.0", "integer-sqrt", "num-traits", "rustc-hash", @@ -1763,31 +1812,11 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" -[[package]] -name = "pin-project" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.18", -] - [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -1803,9 +1832,9 @@ checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "png" -version = "0.17.9" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" +checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -1871,9 +1900,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.60" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" dependencies = [ "unicode-ident", ] @@ -1900,9 +1929,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.28" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -2013,9 +2042,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" dependencies = [ "either", "rayon-core", @@ -2023,27 +2052,26 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] [[package]] name = "redis" -version = "0.23.0" +version = "0.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea8c51b5dc1d8e5fd3350ec8167f464ec0995e79f2e90a075b63371500d557f" +checksum = "4f49cdc0bb3f412bf8e7d1bd90fe1d9eb10bc5c399ba90973c14662a27b3f8ba" dependencies = [ "combine", "itoa", "percent-encoding", "ryu", "sha1_smol", + "socket2 0.4.9", "url", ] @@ -2058,9 +2086,21 @@ dependencies = [ [[package]] name = "regex" -version = "1.8.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" +checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" dependencies = [ "aho-corasick", "memchr", @@ -2069,9 +2109,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.2" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "rend" @@ -2084,9 +2124,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" dependencies = [ "base64", "bytes", @@ -2117,7 +2157,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.22.6", + "webpki-roots 0.25.2", "winreg", ] @@ -2198,7 +2238,7 @@ dependencies = [ "sha-1", "sha2", "thiserror", - "toml 0.7.4", + "toml 0.7.8", "twox-hash", "url", "zip", @@ -2206,14 +2246,12 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.30.0" +version = "1.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0446843641c69436765a35a5a77088e28c2e6a12da93e84aa3ab1cd4aa5a042" +checksum = "a4c4216490d5a413bc6d10fa4742bd7d4955941d062c0ef873141d6b0e7b30fd" dependencies = [ "arrayvec", "borsh", - "bytecheck", - "byteorder", "bytes", "num-traits", "rand 0.8.5", @@ -2222,6 +2260,12 @@ dependencies = [ "serde_json", ] +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + [[package]] name = "rustc-hash" version = "1.1.0" @@ -2230,44 +2274,53 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustix" -version = "0.37.20" +version = "0.38.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0" +checksum = "747c788e9ce8e92b12cd485c49ddf90723550b654b32508f979b71a7b1ecda4f" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "errno", - "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] name = "rustls" -version = "0.21.2" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e32ca28af694bc1bbf399c33a516dbdf1c90090b8ab23c2bc24f834aa2247f5f" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" dependencies = [ "log", "ring", - "rustls-webpki", + "rustls-webpki 0.101.6", "sct", ] [[package]] name = "rustls-pemfile" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ "base64", ] [[package]] name = "rustls-webpki" -version = "0.100.1" +version = "0.100.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6a5fc258f1c1276dfe3016516945546e2d5383911efc0fc4f1cdc5df3a4ae3" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b" +checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" dependencies = [ "ring", "untrusted", @@ -2275,9 +2328,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "saturating" @@ -2287,18 +2340,18 @@ checksum = "ece8e78b2f38ec51c51f5d475df0a7187ba5111b2a28bdc761ee05b075d40a71" [[package]] name = "schannel" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys 0.42.0", + "windows-sys", ] [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sct" @@ -2318,9 +2371,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] name = "security-framework" -version = "2.9.1" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -2331,39 +2384,45 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", ] +[[package]] +name = "semver" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" + [[package]] name = "serde" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.37", ] [[package]] name = "serde_json" -version = "1.0.96" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ "itoa", "ryu", @@ -2372,9 +2431,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93107647184f6027e3b7dcb2e11034cf95ffa1e3a682c67951963ac69c1c007d" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" dependencies = [ "serde", ] @@ -2404,9 +2463,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", @@ -2432,15 +2491,15 @@ dependencies = [ [[package]] name = "shlex" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" +checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" [[package]] name = "simd-adler32" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "simdutf8" @@ -2450,18 +2509,18 @@ checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" [[package]] name = "socket2" @@ -2475,12 +2534,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -2539,9 +2598,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.18" +version = "2.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" dependencies = [ "proc-macro2", "quote", @@ -2556,64 +2615,53 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.6.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ - "autocfg", "cfg-if", "fastrand", "redox_syscall", "rustix", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] name = "termcolor" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.37", ] [[package]] name = "time" -version = "0.1.45" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "time" -version = "0.3.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" +checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" dependencies = [ + "deranged", "serde", "time-core", "time-macros", @@ -2621,15 +2669,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.9" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" dependencies = [ "time-core", ] @@ -2660,18 +2708,18 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.28.2" +version = "1.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" dependencies = [ - "autocfg", + "backtrace", "bytes", "libc", "mio", "num_cpus", "pin-project-lite", - "socket2 0.4.9", - "windows-sys 0.48.0", + "socket2 0.5.4", + "windows-sys", ] [[package]] @@ -2686,9 +2734,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" dependencies = [ "bytes", "futures-core", @@ -2709,9 +2757,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.4" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6135d499e69981f9ff0ef2167955a5333c35e36f6937d382974566b3d5b94ec" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" dependencies = [ "serde", "serde_spanned", @@ -2721,20 +2769,20 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.19.10" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap", + "indexmap 2.0.0", "serde", "serde_spanned", "toml_datetime", @@ -2786,9 +2834,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-bidi" @@ -2798,9 +2846,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -2819,9 +2867,9 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", @@ -2830,9 +2878,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.3.4" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa2982af2eec27de306107c027578ff7f423d65f7250e40ce0fea8f45248b81" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" [[package]] name = "vcpkg" @@ -2861,12 +2909,6 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -2894,7 +2936,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.37", "wasm-bindgen-shared", ] @@ -2928,7 +2970,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.37", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2951,9 +2993,9 @@ dependencies = [ [[package]] name = "webpki" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +checksum = "f0e74f82d49d545ad128049b7e88f6576df2da6b02e9ce565c6f533be576957e" dependencies = [ "ring", "untrusted", @@ -2961,21 +3003,18 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.22.6" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" dependencies = [ - "webpki", + "rustls-webpki 0.100.3", ] [[package]] name = "webpki-roots" -version = "0.23.1" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" -dependencies = [ - "rustls-webpki", -] +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" [[package]] name = "winapi" @@ -2995,9 +3034,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -3017,21 +3056,6 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-sys" version = "0.48.0" @@ -3043,119 +3067,78 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.4.7" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" +checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" dependencies = [ "memchr", ] [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys", ] [[package]] @@ -3183,7 +3166,7 @@ dependencies = [ "hmac", "pbkdf2", "sha1", - "time 0.3.22", + "time", "zstd", ] diff --git a/Cargo.toml b/Cargo.toml index 958fbd4e..bdd040f0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ debug = true [dependencies] thiserror = "1.0" -flume = { version = "0.10", optional = true } +flume = { version = "0.11", optional = true } chrono = { version = "0.4", optional = true } base64 = { version = "0.21", optional = true } md-5 = { version = "0.10", optional = true } @@ -34,8 +34,10 @@ hex = { version = "0.4", optional = true } percent-encoding = { version = "2.2", optional = true } url-dep = { version = "2.3", package = "url", optional = true } png = { version = "0.17", optional = true } -image = { version = "0.24", optional = true, default-features = false, features = ["png"] } -git2 = { version = "0.17.1", optional = true, default-features = false } +image = { version = "0.24", optional = true, default-features = false, features = [ + "png", +] } +git2 = { version = "0.18.1", optional = true, default-features = false } noise = { version = "0.8", optional = true } redis = { version = "0.23", optional = true } reqwest = { version = "0.11", optional = true, default-features = false, features = [ @@ -46,11 +48,11 @@ serde = { version = "1.0", optional = true, features = ["derive"] } serde_json = { version = "1.0", optional = true } lazy_static = { version = "1.4", optional = true } once_cell = { version = "1.17", optional = true } -mysql = { version = "24.0", default_features = false, optional = true} +mysql = { version = "24.0", default_features = false, optional = true } dashmap = { version = "5.4", optional = true } zip = { version = "0.6", optional = true } rand = { version = "0.8", optional = true } -toml-dep = { version = "0.7.4", package = "toml", optional = true } +toml-dep = { version = "0.7.8", package = "toml", optional = true } aho-corasick = { version = "1.0", optional = true } rayon = { version = "1.7", optional = true } dbpnoise = { version = "0.1.2", optional = true } @@ -97,7 +99,7 @@ all = [ "redis_pubsub", "redis_reliablequeue", "unzip", - "worleynoise" + "worleynoise", ] # default features From b964c8765dc1251e2a93b3e621d17962632a2696 Mon Sep 17 00:00:00 2001 From: Lucy Date: Sat, 16 Dec 2023 20:47:38 -0500 Subject: [PATCH 75/82] Use gitoxide rather than libgit2 for the git module (#156) --- Cargo.lock | 1475 +++++++++++++++++++++++++++++++++++++------------- Cargo.toml | 48 +- dmsrc/git.dm | 6 + src/git.rs | 30 +- 4 files changed, 1130 insertions(+), 429 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3b8c421a..bd75bffe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -36,31 +36,32 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.11", "once_cell", "version_check", ] [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" dependencies = [ "cfg-if", "once_cell", "version_check", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -80,6 +81,12 @@ dependencies = [ "libc", ] +[[package]] +name = "arc-swap" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" + [[package]] name = "arrayvec" version = "0.7.4" @@ -109,9 +116,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.4" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "base64ct" @@ -132,11 +139,11 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.68.1" +version = "0.69.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" +checksum = "9ffcebc3849946a7170a05992aac39da343a90676ab392c51a4280981d6379c2" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "cexpr", "clang-sys", "lazy_static", @@ -147,7 +154,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.37", + "syn 2.0.40", ] [[package]] @@ -158,9 +165,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "bitvec" @@ -185,47 +192,46 @@ dependencies = [ [[package]] name = "borsh" -version = "0.10.3" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +checksum = "9897ef0f1bd2362169de6d7e436ea2237dc1085d7d1e4db75f4be34d86f309d1" dependencies = [ "borsh-derive", - "hashbrown 0.13.2", + "cfg_aliases", ] [[package]] name = "borsh-derive" -version = "0.10.3" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +checksum = "478b41ff04256c5c8330f3dfdaaae2a5cc976a8e75088bafa4625b0d0208de8c" dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", - "proc-macro-crate 0.1.5", + "once_cell", + "proc-macro-crate 2.0.0", "proc-macro2", - "syn 1.0.109", + "quote", + "syn 2.0.40", + "syn_derive", ] [[package]] -name = "borsh-derive-internal" -version = "0.10.3" +name = "bstr" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "memchr", + "regex-automata", + "serde", ] [[package]] -name = "borsh-schema-derive-internal" -version = "0.10.3" +name = "btoi" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +checksum = "9dd6407f73a9b8b6162d8a2ef999fe6afd7cc15902ebf42c5cd296addf17e0ad" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "num-traits", ] [[package]] @@ -270,9 +276,9 @@ checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" @@ -326,6 +332,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + [[package]] name = "chrono" version = "0.4.31" @@ -337,7 +349,7 @@ dependencies = [ "js-sys", "num-traits", "wasm-bindgen", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] @@ -361,6 +373,12 @@ dependencies = [ "libloading", ] +[[package]] +name = "clru" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8191fa7302e03607ff0e237d4246cc043ff5b3cb9409d995172ba3bea16b807" + [[package]] name = "cmake" version = "0.1.50" @@ -388,23 +406,21 @@ dependencies = [ [[package]] name = "const-random" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368a7a772ead6ce7e1de82bfb04c485f3db8ec744f72925af5735e29a22cc18e" +checksum = "5aaf16c9c2c612020bcfd042e170f6e32de9b9d75adb5277cdbbd2e2c8c8299a" dependencies = [ "const-random-macro", - "proc-macro-hack", ] [[package]] name = "const-random-macro" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d7d6ab3c3a2282db210df5f02c4dab6e0a7057af0fb7ebd4070f30fe05c0ddb" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.11", "once_cell", - "proc-macro-hack", "tiny-keccak", ] @@ -416,9 +432,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -426,15 +442,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" dependencies = [ "libc", ] @@ -552,7 +568,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.37", + "syn 2.0.40", ] [[package]] @@ -563,7 +579,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.37", + "syn 2.0.40", ] [[package]] @@ -573,7 +589,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.0", + "hashbrown 0.14.3", "lock_api", "once_cell", "parking_lot_core", @@ -603,21 +619,24 @@ dependencies = [ [[package]] name = "deprecate-until" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ec2e2a2d0c79afd023be50309ecf010f20bf4a2761f15e264f4ac9516aff58b" +checksum = "7a3767f826efbbe5a5ae093920b58b43b01734202be697e1354914e862e8e704" dependencies = [ "proc-macro2", "quote", "semver", - "syn 2.0.37", + "syn 2.0.40", ] [[package]] name = "deranged" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" +checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" +dependencies = [ + "powerfmt", +] [[package]] name = "derive_utils" @@ -627,7 +646,7 @@ checksum = "9abcad25e9720609ccb3dcdb795d845e37d8ce34183330a9f48b03a1a71c8e21" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.40", ] [[package]] @@ -643,9 +662,9 @@ dependencies = [ [[package]] name = "dmi" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3df7937260ba09ec3ded02a7ce74e759f6beebd2e0b7fc403217a87b9c1e04" +checksum = "d6c191706391473812b2c9f11befada49b65e094a19d3d422985f0d1e2daf900" dependencies = [ "deflate", "image", @@ -653,6 +672,12 @@ dependencies = [ "thiserror", ] +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + [[package]] name = "either" version = "1.9.0" @@ -676,40 +701,50 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.3" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "errno-dragonfly", "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "faster-hex" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183" dependencies = [ - "cc", - "libc", + "serde", ] [[package]] name = "fastrand" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "fdeflate" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" +checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868" dependencies = [ "simd-adler32", ] +[[package]] +name = "filetime" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "windows-sys 0.52.0", +] + [[package]] name = "fixedbitset" version = "0.4.2" @@ -718,9 +753,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "libz-sys", @@ -762,9 +797,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -794,7 +829,7 @@ checksum = "b0fa992f1656e1707946bbba340ad244f0814009ef8c0118eb7b658395f19a2e" dependencies = [ "frunk_proc_macro_helpers", "quote", - "syn 2.0.37", + "syn 2.0.40", ] [[package]] @@ -806,7 +841,7 @@ dependencies = [ "frunk_core", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.40", ] [[package]] @@ -818,7 +853,7 @@ dependencies = [ "frunk_core", "frunk_proc_macro_helpers", "quote", - "syn 2.0.37", + "syn 2.0.40", ] [[package]] @@ -829,57 +864,45 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" [[package]] name = "futures-io" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" - -[[package]] -name = "futures-macro" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.37", -] +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" dependencies = [ "futures-core", "futures-io", - "futures-macro", "futures-task", "memchr", "pin-project-lite", @@ -909,35 +932,522 @@ dependencies = [ ] [[package]] -name = "getrandom" -version = "0.2.10" +name = "getrandom" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "gix" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0dcdc9c60d66535897fa40a7ea2a635e72f99456b1d9ae86b7e170e80618cb" +dependencies = [ + "gix-actor", + "gix-commitgraph", + "gix-config", + "gix-date", + "gix-diff", + "gix-discover", + "gix-features", + "gix-fs", + "gix-glob", + "gix-hash", + "gix-hashtable", + "gix-index", + "gix-lock", + "gix-macros", + "gix-object", + "gix-odb", + "gix-pack", + "gix-path", + "gix-ref", + "gix-refspec", + "gix-revision", + "gix-revwalk", + "gix-sec", + "gix-tempfile", + "gix-trace", + "gix-traverse", + "gix-url", + "gix-utils", + "gix-validate", + "once_cell", + "parking_lot", + "smallvec", + "thiserror", + "unicode-normalization", +] + +[[package]] +name = "gix-actor" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eadca029ef716b4378f7afb19f7ee101fde9e58ba1f1445971315ac866db417" +dependencies = [ + "bstr", + "btoi", + "gix-date", + "itoa", + "thiserror", + "winnow", +] + +[[package]] +name = "gix-bitmap" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49e1a13a30d3f88be4bceae184dd13a2d3fb9ffa7515f7ed7ae771b857f4916" +dependencies = [ + "thiserror", +] + +[[package]] +name = "gix-chunk" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d411ecd9b558b0c20b3252b7e409eec48eabc41d18324954fe526bac6e2db55f" +dependencies = [ + "thiserror", +] + +[[package]] +name = "gix-commitgraph" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85a7007ba021f059803afaf6f8a48872422abc20550ac12ede6ddea2936cec36" +dependencies = [ + "bstr", + "gix-chunk", + "gix-features", + "gix-hash", + "memmap2", + "thiserror", +] + +[[package]] +name = "gix-config" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0341471d55d8676e98b88e121d7065dfa4c9c5acea4b6d6ecdd2846e85cce0c3" +dependencies = [ + "bstr", + "gix-config-value", + "gix-features", + "gix-glob", + "gix-path", + "gix-ref", + "gix-sec", + "memchr", + "once_cell", + "smallvec", + "thiserror", + "unicode-bom", + "winnow", +] + +[[package]] +name = "gix-config-value" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6419db582ea84dfb58c7e7b0af7fd62c808aa14954af2936a33f89b0f4ed018e" +dependencies = [ + "bitflags 2.4.1", + "bstr", + "gix-path", + "libc", + "thiserror", +] + +[[package]] +name = "gix-date" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "468dfbe411f335f01525a1352271727f8e7772075a93fa747260f502086b30be" +dependencies = [ + "bstr", + "itoa", + "thiserror", + "time", +] + +[[package]] +name = "gix-diff" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8119a985887cfe68f4bdf92e51bd64bc758a73882d82fcfc03ebcb164441c85d" +dependencies = [ + "bstr", + "gix-hash", + "gix-object", + "thiserror", +] + +[[package]] +name = "gix-discover" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fad89416ebe0b3b7df78464124e2a02417b6cd3743d48ad93df86f4d2929c07" +dependencies = [ + "bstr", + "dunce", + "gix-hash", + "gix-path", + "gix-ref", + "gix-sec", + "thiserror", +] + +[[package]] +name = "gix-features" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d46a4a5c6bb5bebec9c0d18b65ada20e6517dbd7cf855b87dd4bbdce3a771b2" +dependencies = [ + "crc32fast", + "crossbeam-channel", + "flate2", + "gix-hash", + "gix-trace", + "jwalk", + "libc", + "once_cell", + "parking_lot", + "prodash", + "sha1_smol", + "thiserror", + "walkdir", +] + +[[package]] +name = "gix-fs" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20e86eb040f5776a5ade092282e51cdcad398adb77d948b88d17583c2ae4e107" +dependencies = [ + "gix-features", +] + +[[package]] +name = "gix-glob" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5db19298c5eeea2961e5b3bf190767a2d1f09b8802aeb5f258e42276350aff19" +dependencies = [ + "bitflags 2.4.1", + "bstr", + "gix-features", + "gix-path", +] + +[[package]] +name = "gix-hash" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f8cf8c2266f63e582b7eb206799b63aa5fa68ee510ad349f637dfe2d0653de0" +dependencies = [ + "faster-hex", + "thiserror", +] + +[[package]] +name = "gix-hashtable" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feb61880816d7ec4f0b20606b498147d480860ddd9133ba542628df2f548d3ca" +dependencies = [ + "gix-hash", + "hashbrown 0.14.3", + "parking_lot", +] + +[[package]] +name = "gix-index" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3f308f5cd2992e96a274b0d1931e9a0e44fdcba87695ead3f6df30d8a697e9c" +dependencies = [ + "bitflags 2.4.1", + "bstr", + "btoi", + "filetime", + "gix-bitmap", + "gix-features", + "gix-fs", + "gix-hash", + "gix-lock", + "gix-object", + "gix-traverse", + "itoa", + "libc", + "memmap2", + "rustix", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-lock" +version = "11.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e5c65e6a29830a435664891ced3f3c1af010f14900226019590ee0971a22f37" +dependencies = [ + "gix-tempfile", + "gix-utils", + "thiserror", +] + +[[package]] +name = "gix-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02a5bcaf6704d9354a3071cede7e77d366a5980c7352e102e2c2f9b645b1d3ae" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.40", +] + +[[package]] +name = "gix-object" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "febf79c5825720c1c63fe974c7bbe695d0cb54aabad73f45671c60ce0e501e33" +dependencies = [ + "bstr", + "btoi", + "gix-actor", + "gix-date", + "gix-features", + "gix-hash", + "gix-validate", + "itoa", + "smallvec", + "thiserror", + "winnow", +] + +[[package]] +name = "gix-odb" +version = "0.55.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fae5f971540c99c6ecc8d4368ecc9d18a9dc8b9391025c68c4399747dc93bac" +dependencies = [ + "arc-swap", + "gix-date", + "gix-features", + "gix-hash", + "gix-object", + "gix-pack", + "gix-path", + "gix-quote", + "parking_lot", + "tempfile", + "thiserror", +] + +[[package]] +name = "gix-pack" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4569491c92446fddf373456ff360aff9a9effd627b40a70f2d7914dcd75a3205" +dependencies = [ + "clru", + "gix-chunk", + "gix-features", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-path", + "gix-tempfile", + "memmap2", + "parking_lot", + "smallvec", + "thiserror", + "uluru", +] + +[[package]] +name = "gix-path" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86d6fac2fabe07b67b7835f46d07571f68b11aa1aaecae94fe722ea4ef305e1" +dependencies = [ + "bstr", + "gix-trace", + "home", + "once_cell", + "thiserror", +] + +[[package]] +name = "gix-quote" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f84845efa535468bc79c5a87b9d29219f1da0313c8ecf0365a5daa7e72786f2" +dependencies = [ + "bstr", + "btoi", + "thiserror", +] + +[[package]] +name = "gix-ref" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ac23ed741583c792f573c028785db683496a6dfcd672ec701ee54ba6a77e1ff" +dependencies = [ + "gix-actor", + "gix-date", + "gix-features", + "gix-fs", + "gix-hash", + "gix-lock", + "gix-object", + "gix-path", + "gix-tempfile", + "gix-validate", + "memmap2", + "thiserror", + "winnow", +] + +[[package]] +name = "gix-refspec" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d9d3b82e1ee78fc0dc1c37ea5ea76c2dbc73f407db155f0dfcea285e583bee" +dependencies = [ + "bstr", + "gix-hash", + "gix-revision", + "gix-validate", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-revision" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe5dd51710ce5434bc315ea30394fab483c5377276494edd79222b321a5a9544" +dependencies = [ + "bstr", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-revwalk", + "gix-trace", + "thiserror", +] + +[[package]] +name = "gix-revwalk" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d4ed2493ca94a475fdf147138e1ef8bab3b6ebb56abf3d9bda1c05372ec1dd" +dependencies = [ + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-sec" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a36ea2c5907d64a9b4b5d3cc9f430e6c30f0509646b5e38eb275ca57c5bf29e2" +dependencies = [ + "bitflags 2.4.1", + "gix-path", + "libc", + "windows", +] + +[[package]] +name = "gix-tempfile" +version = "11.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388dd29114a86ec69b28d1e26d6d63a662300ecf61ab3f4cc578f7d7dc9e7e23" +dependencies = [ + "gix-fs", + "libc", + "once_cell", + "parking_lot", + "tempfile", +] + +[[package]] +name = "gix-trace" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b686a35799b53a9825575ca3f06481d0a053a409c4d97ffcf5ddd67a8760b497" + +[[package]] +name = "gix-traverse" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df2112088122a0206592c84fbd42020db63b2ccaed66a0293779f2e5fbf80474" +dependencies = [ + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-revwalk", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-url" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "0c427a1a11ccfa53a4a2da47d9442c2241deee63a154bc15cc14b8312fbc4005" dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", + "bstr", + "gix-features", + "gix-path", + "home", + "thiserror", + "url", ] [[package]] -name = "gimli" -version = "0.28.0" +name = "gix-utils" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "9f82c41937f00e15a1f6cb0b55307f0ca1f77f4407ff2bf440be35aa688c6a3e" +dependencies = [ + "fastrand", +] [[package]] -name = "git2" -version = "0.18.1" +name = "gix-validate" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf97ba92db08df386e10c8ede66a2a0369bd277090afd8710e19e38de9ec0cd" +checksum = "75b7d8e4274be69f284bbc7e6bb2ccf7065dbcdeba22d8c549f2451ae426883f" dependencies = [ - "bitflags 2.4.0", - "libc", - "libgit2-sys", - "log", - "url", + "bstr", + "thiserror", ] [[package]] @@ -948,9 +1458,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "h2" -version = "0.3.21" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ "bytes", "fnv", @@ -958,7 +1468,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.3", + "indexmap", "slab", "tokio", "tokio-util", @@ -971,7 +1481,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.6", + "ahash 0.7.7", ] [[package]] @@ -980,14 +1490,14 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", ] [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" [[package]] name = "heck" @@ -1016,11 +1526,20 @@ dependencies = [ "digest", ] +[[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys 0.48.0", +] + [[package]] name = "http" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ "bytes", "fnv", @@ -1029,9 +1548,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -1067,7 +1586,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.9", + "socket2 0.4.10", "tokio", "tower-service", "tracing", @@ -1076,9 +1595,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http", @@ -1090,16 +1609,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -1119,9 +1638,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -1143,22 +1662,12 @@ dependencies = [ [[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 = "indexmap" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.3", ] [[package]] @@ -1195,39 +1704,49 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5305557fa27b460072ae15ce07617e999f5879f14d376c8449f0bfb9f9d8e91e" dependencies = [ "derive_utils", - "syn 2.0.37", + "syn 2.0.40", ] [[package]] name = "ipnet" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jobserver" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" dependencies = [ "wasm-bindgen", ] +[[package]] +name = "jwalk" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2735847566356cd2179a2a38264839308f7079fa96e6bd5a42d740460e003c56" +dependencies = [ + "crossbeam", + "rayon", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -1324,21 +1843,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.148" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" - -[[package]] -name = "libgit2-sys" -version = "0.16.1+1.7.1" +version = "0.2.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2a2bb3680b094add03bb3732ec520ece34da31a8cd2d633d1389d0f0fb60d0c" -dependencies = [ - "cc", - "libc", - "libz-sys", - "pkg-config", -] +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" [[package]] name = "libloading" @@ -1357,22 +1864,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" dependencies = [ "cc", - "libc", "pkg-config", "vcpkg", ] [[package]] name = "linux-raw-sys" -version = "0.4.7" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -1405,9 +1911,18 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.3" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "memmap2" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deaba38d7abf1d4cca21cc89e932e542ba2b9258664d2a9ef0e61512039c9375" +dependencies = [ + "libc", +] [[package]] name = "memoffset" @@ -1442,13 +1957,13 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -1474,7 +1989,7 @@ dependencies = [ "rustls-pemfile", "serde", "serde_json", - "socket2 0.5.4", + "socket2 0.5.5", "twox-hash", "url", "webpki", @@ -1494,7 +2009,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.40", "termcolor", "thiserror", ] @@ -1508,7 +2023,7 @@ dependencies = [ "base64", "bigdecimal", "bindgen", - "bitflags 2.4.0", + "bitflags 2.4.1", "bitvec", "byteorder", "bytes", @@ -1552,7 +2067,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.11", ] [[package]] @@ -1663,9 +2178,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] @@ -1680,6 +2195,15 @@ dependencies = [ "libc", ] +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + [[package]] name = "object" version = "0.32.1" @@ -1691,17 +2215,17 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl" -version = "0.10.57" +version = "0.10.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" +checksum = "6b8419dc8cc6d866deb801274bba2e6f8f6108c1bb7fcc10ee5ab864931dbb45" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "cfg-if", "foreign-types", "libc", @@ -1718,7 +2242,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.40", ] [[package]] @@ -1729,9 +2253,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.93" +version = "0.9.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" +checksum = "c3eaad34cdd97d81de97964fc7f29e2d104f483840d906ef56daa1912338460b" dependencies = [ "cc", "libc", @@ -1739,17 +2263,27 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] @@ -1765,13 +2299,13 @@ dependencies = [ [[package]] name = "pathfinding" -version = "4.3.2" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b7d06c8716de428def400ae9e5cd92463cd458d98169ed835b2da5d08cf4698" +checksum = "752866d4511516a35883728309499db42696f388263586b70659a5461e641db5" dependencies = [ "deprecate-until", "fixedbitset", - "indexmap 2.0.0", + "indexmap", "integer-sqrt", "num-traits", "rustc-hash", @@ -1808,9 +2342,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project-lite" @@ -1843,6 +2377,12 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -1851,21 +2391,21 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro-crate" -version = "0.1.5" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ - "toml 0.5.11", + "once_cell", + "toml_edit 0.19.15", ] [[package]] name = "proc-macro-crate" -version = "1.3.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" dependencies = [ - "once_cell", - "toml_edit", + "toml_edit 0.20.7", ] [[package]] @@ -1892,21 +2432,21 @@ dependencies = [ "version_check", ] -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - [[package]] name = "proc-macro2" -version = "1.0.67" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" +checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" dependencies = [ "unicode-ident", ] +[[package]] +name = "prodash" +version = "26.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "794b5bf8e2d19b53dcdcec3e4bba628e20f5b6062503ba89281fa7037dd7bbcf" + [[package]] name = "ptr_meta" version = "0.1.4" @@ -2001,7 +2541,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.11", ] [[package]] @@ -2071,24 +2611,24 @@ dependencies = [ "percent-encoding", "ryu", "sha1_smol", - "socket2 0.4.9", + "socket2 0.4.10", "url", ] [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "regex" -version = "1.9.5" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", @@ -2098,9 +2638,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.8" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", @@ -2109,24 +2649,24 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "rend" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab" +checksum = "a2571463863a6bd50c32f94402933f03457a3fbaf697a707c5be741e459f08fd" dependencies = [ "bytecheck", ] [[package]] name = "reqwest" -version = "0.11.20" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ "base64", "bytes", @@ -2150,6 +2690,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-rustls", "tower-service", @@ -2157,7 +2698,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.25.2", + "webpki-roots 0.25.3", "winreg", ] @@ -2171,11 +2712,25 @@ dependencies = [ "libc", "once_cell", "spin 0.5.2", - "untrusted", + "untrusted 0.7.1", "web-sys", "winapi", ] +[[package]] +name = "ring" +version = "0.17.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" +dependencies = [ + "cc", + "getrandom 0.2.11", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.48.0", +] + [[package]] name = "rkyv" version = "0.7.42" @@ -2216,7 +2771,7 @@ dependencies = [ "dbpnoise", "dmi", "flume", - "git2", + "gix", "hex", "image", "lazy_static", @@ -2238,7 +2793,7 @@ dependencies = [ "sha-1", "sha2", "thiserror", - "toml 0.7.8", + "toml", "twox-hash", "url", "zip", @@ -2246,9 +2801,9 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.32.0" +version = "1.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c4216490d5a413bc6d10fa4742bd7d4955941d062c0ef873141d6b0e7b30fd" +checksum = "06676aec5ccb8fc1da723cc8c0f9a46549f21ebb8753d3915c6c41db1e7f1dc4" dependencies = [ "arrayvec", "borsh", @@ -2274,34 +2829,34 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustix" -version = "0.38.14" +version = "0.38.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "747c788e9ce8e92b12cd485c49ddf90723550b654b32508f979b71a7b1ecda4f" +checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "errno", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.21.7" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", - "ring", - "rustls-webpki 0.101.6", + "ring 0.17.7", + "rustls-webpki 0.101.7", "sct", ] [[package]] name = "rustls-pemfile" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ "base64", ] @@ -2312,25 +2867,34 @@ version = "0.100.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f6a5fc258f1c1276dfe3016516945546e2d5383911efc0fc4f1cdc5df3a4ae3" dependencies = [ - "ring", - "untrusted", + "ring 0.16.20", + "untrusted 0.7.1", ] [[package]] name = "rustls-webpki" -version = "0.101.6" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring", - "untrusted", + "ring 0.17.7", + "untrusted 0.9.0", ] [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" + +[[package]] +name = "same-file" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] [[package]] name = "saturating" @@ -2344,7 +2908,7 @@ version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -2355,12 +2919,12 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring", - "untrusted", + "ring 0.17.7", + "untrusted 0.9.0", ] [[package]] @@ -2394,35 +2958,35 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" -version = "1.0.188" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.40", ] [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", @@ -2431,9 +2995,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" dependencies = [ "serde", ] @@ -2480,9 +3044,9 @@ checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" [[package]] name = "sha2" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -2518,15 +3082,15 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", @@ -2534,12 +3098,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -2598,15 +3162,48 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "13fa70a4ee923979ffb522cacce59d34421ebdea5625e1073c4326ef9d2dd42e" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.40", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tap" version = "1.0.1" @@ -2615,53 +3212,57 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.8.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" dependencies = [ "cfg-if", "fastrand", "redox_syscall", "rustix", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] name = "termcolor" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" dependencies = [ "winapi-util", ] [[package]] name = "thiserror" -version = "1.0.48" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.48" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.40", ] [[package]] name = "time" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" +checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ "deranged", + "itoa", + "libc", + "num_threads", + "powerfmt", "serde", "time-core", "time-macros", @@ -2708,9 +3309,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.32.0" +version = "1.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c" dependencies = [ "backtrace", "bytes", @@ -2718,8 +3319,8 @@ dependencies = [ "mio", "num_cpus", "pin-project-lite", - "socket2 0.5.4", - "windows-sys", + "socket2 0.5.5", + "windows-sys 0.48.0", ] [[package]] @@ -2734,9 +3335,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -2746,15 +3347,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.7.8" @@ -2764,14 +3356,14 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_edit 0.19.15", ] [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" dependencies = [ "serde", ] @@ -2782,13 +3374,24 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.0.0", + "indexmap", "serde", "serde_spanned", "toml_datetime", "winnow", ] +[[package]] +name = "toml_edit" +version = "0.20.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + [[package]] name = "tower-service" version = "0.3.2" @@ -2797,29 +3400,28 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "pin-project-lite", "tracing-core", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", ] [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "twox-hash" @@ -2838,11 +3440,26 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "uluru" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "794a32261a1f5eb6a4462c81b59cec87b5c27d5deea7dd1ac8fc781c41d226db" +dependencies = [ + "arrayvec", +] + [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" + +[[package]] +name = "unicode-bom" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" [[package]] name = "unicode-ident" @@ -2865,11 +3482,17 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "url" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -2878,9 +3501,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.4.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" [[package]] name = "vcpkg" @@ -2894,6 +3517,16 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "walkdir" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +dependencies = [ + "same-file", + "winapi-util", +] + [[package]] name = "want" version = "0.3.1" @@ -2917,9 +3550,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -2927,24 +3560,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.40", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" dependencies = [ "cfg-if", "js-sys", @@ -2954,9 +3587,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2964,28 +3597,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.40", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" dependencies = [ "js-sys", "wasm-bindgen", @@ -2993,12 +3626,12 @@ dependencies = [ [[package]] name = "webpki" -version = "0.22.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0e74f82d49d545ad128049b7e88f6576df2da6b02e9ce565c6f533be576957e" +checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" dependencies = [ - "ring", - "untrusted", + "ring 0.17.7", + "untrusted 0.9.0", ] [[package]] @@ -3012,9 +3645,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.25.2" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" +checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" [[package]] name = "winapi" @@ -3053,7 +3686,16 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets 0.48.5", ] [[package]] @@ -3062,7 +3704,16 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", ] [[package]] @@ -3071,13 +3722,28 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] @@ -3086,47 +3752,89 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + [[package]] name = "winnow" -version = "0.5.15" +version = "0.5.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" +checksum = "b67b5f0a4e7a27a64c651977932b9dc5667ca7fc31ac44b03ed37a0cf42fdfff" dependencies = [ "memchr", ] @@ -3138,7 +3846,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ "cfg-if", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -3150,6 +3858,26 @@ dependencies = [ "tap", ] +[[package]] +name = "zerocopy" +version = "0.7.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "306dca4455518f1f31635ec308b6b3e4eb1b11758cefafc782827d0aa7acb5c7" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be912bf68235a88fbefd1b73415cb218405958d1655b2ece9035a19920bdf6ba" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.40", +] + [[package]] name = "zip" version = "0.6.6" @@ -3191,11 +3919,10 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.8+zstd.1.5.5" +version = "2.0.9+zstd.1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" +checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" dependencies = [ "cc", - "libc", "pkg-config", ] diff --git a/Cargo.toml b/Cargo.toml index bdd040f0..42d81f9e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,11 +2,7 @@ name = "rust-g" edition = "2021" version = "3.0.0" -authors = [ - "Bjorn Neergaard ", - "Tad Hardesty ", - "rust-g maintainer team", -] +authors = ["Bjorn Neergaard ", "Tad Hardesty ", "rust-g maintainer team"] repository = "https://github.com/tgstation/rust-g" license = "MIT" description = "Offloaded task library for the /tg/ Space Station 13 codebase" @@ -34,16 +30,11 @@ hex = { version = "0.4", optional = true } percent-encoding = { version = "2.2", optional = true } url-dep = { version = "2.3", package = "url", optional = true } png = { version = "0.17", optional = true } -image = { version = "0.24", optional = true, default-features = false, features = [ - "png", -] } -git2 = { version = "0.18.1", optional = true, default-features = false } +image = { version = "0.24", optional = true, default-features = false, features = ["png"] } +gix = { version = "0.56", optional = true, default-features = false, features = ["revision", "max-performance-safe"] } noise = { version = "0.8", optional = true } redis = { version = "0.23", optional = true } -reqwest = { version = "0.11", optional = true, default-features = false, features = [ - "blocking", - "rustls-tls", -] } +reqwest = { version = "0.11", optional = true, default-features = false, features = ["blocking", "rustls-tls"] } serde = { version = "1.0", optional = true, features = ["derive"] } serde_json = { version = "1.0", optional = true } lazy_static = { version = "1.4", optional = true } @@ -61,22 +52,7 @@ num = { version = "0.4.0", optional = true } dmi = { version = "0.3.0", optional = true } [features] -default = [ - "acreplace", - "cellularnoise", - "dmi", - "file", - "git", - "http", - "json", - "log", - "noise", - "rustls_tls", - "sql", - "time", - "toml", - "url", -] +default = ["acreplace", "cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "rustls_tls", "sql", "time", "toml", "url"] all = [ "acreplace", @@ -107,7 +83,7 @@ acreplace = ["aho-corasick"] cellularnoise = ["rand", "rayon"] dmi = ["png", "image", "dep:dmi"] file = [] -git = ["git2", "chrono"] +git = ["gix", "chrono"] http = ["reqwest", "serde", "serde_json", "once_cell", "jobs"] json = ["serde", "serde_json"] log = ["chrono"] @@ -118,17 +94,7 @@ url = ["url-dep", "percent-encoding"] # additional features batchnoise = ["dbpnoise"] -hash = [ - "base64", - "const-random", - "md-5", - "hex", - "sha-1", - "sha2", - "twox-hash", - "serde", - "serde_json", -] +hash = ["base64", "const-random", "md-5", "hex", "sha-1", "sha2", "twox-hash", "serde", "serde_json"] pathfinder = ["num", "pathfinding", "serde", "serde_json"] redis_pubsub = ["flume", "redis", "serde", "serde_json"] redis_reliablequeue = ["flume", "redis", "serde", "serde_json"] diff --git a/dmsrc/git.dm b/dmsrc/git.dm index b3185db7..8e50256e 100644 --- a/dmsrc/git.dm +++ b/dmsrc/git.dm @@ -1,2 +1,8 @@ +/// Returns the git hash of the given revision, ex. "HEAD". #define rustg_git_revparse(rev) RUSTG_CALL(RUST_G, "rg_git_revparse")(rev) + +/** + * Returns the date of the given revision in the format YYYY-MM-DD. + * Returns null if the revision is invalid. + */ #define rustg_git_commit_date(rev) RUSTG_CALL(RUST_G, "rg_git_commit_date")(rev) diff --git a/src/git.rs b/src/git.rs index fb184fcd..e84d50c9 100644 --- a/src/git.rs +++ b/src/git.rs @@ -1,24 +1,26 @@ use chrono::{TimeZone, Utc}; -use git2::{Error, ErrorCode, Repository}; +use gix::{open::Error as OpenError, Repository}; thread_local! { - static REPOSITORY: Result = Repository::open("."); + static REPOSITORY: Result = gix::open("."); } byond_fn!(fn rg_git_revparse(rev) { - REPOSITORY.with(|repo| -> Result { - let repo = repo.as_ref().map_err(Error::code)?; - let object = repo.revparse_single(rev).map_err(|e| e.code())?; - Ok(object.id().to_string()) - }).ok() + REPOSITORY.with(|repo| -> Option { + let repo = repo.as_ref().ok()?; + let object = repo.rev_parse_single(rev).ok()?; + Some(object.to_string()) + }) }); byond_fn!(fn rg_git_commit_date(rev) { - REPOSITORY.with(|repo| -> Result { - let repo = repo.as_ref().map_err(Error::code)?; - let object = repo.revparse_single(rev).map_err(|e| e.code())?; - let commit = object.as_commit().ok_or(ErrorCode::GenericError)?; - let datetime = Utc.timestamp_opt(commit.time().seconds(), 0).latest().unwrap(); - Ok(datetime.format("%F").to_string()) - }).ok() + REPOSITORY.with(|repo| -> Option { + let repo = repo.as_ref().ok()?; + let rev = repo.rev_parse_single(rev).ok()?; + let object = rev.object().ok()?; + let commit = object.try_into_commit().ok()?; + let commit_time = commit.committer().ok()?.time; + let datetime = Utc.timestamp_opt(commit_time.seconds, 0).latest()?; + Some(datetime.format("%F").to_string()) + }) }); From 9cfa3506abc790b6eac980b70de2e6e11d8938f9 Mon Sep 17 00:00:00 2001 From: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Date: Sun, 17 Dec 2023 02:55:52 +0000 Subject: [PATCH 76/82] Adds Base64 decoding stuff (#154) --- dmsrc/hash.dm | 5 +++++ src/hash.rs | 4 ++++ tests/dm/hash.dme | 9 +++++++++ 3 files changed, 18 insertions(+) diff --git a/dmsrc/hash.dm b/dmsrc/hash.dm index c666d2e2..3df78b10 100644 --- a/dmsrc/hash.dm +++ b/dmsrc/hash.dm @@ -10,6 +10,11 @@ #define RUSTG_HASH_XXH64 "xxh64" #define RUSTG_HASH_BASE64 "base64" +/// Encode a given string into base64 +#define rustg_encode_base64(str) rustg_hash_string(RUSTG_HASH_BASE64, str) +/// Decode a given base64 string +#define rustg_decode_base64(str) RUSTG_CALL(RUST_G, "decode_base64")(str) + #ifdef RUSTG_OVERRIDE_BUILTINS #define md5(thing) (isfile(thing) ? rustg_hash_file(RUSTG_HASH_MD5, "[thing]") : rustg_hash_string(RUSTG_HASH_MD5, thing)) #endif diff --git a/src/hash.rs b/src/hash.rs index 93ae7989..ee959fe0 100644 --- a/src/hash.rs +++ b/src/hash.rs @@ -18,6 +18,10 @@ byond_fn!(fn hash_string(algorithm, string) { string_hash(algorithm, string).ok() }); +byond_fn!(fn decode_base64(string) { + Some(base64::prelude::BASE64_STANDARD.decode(string).unwrap()) +}); + byond_fn!(fn hash_file(algorithm, string) { file_hash(algorithm, string).ok() }); diff --git a/tests/dm/hash.dme b/tests/dm/hash.dme index dcd5411f..5b64455f 100644 --- a/tests/dm/hash.dme +++ b/tests/dm/hash.dme @@ -21,3 +21,12 @@ var/list/reference = list() for (var/entry in reference) check_hash_base64(entry) + + // Test B64 decode stuff + var/input_str = "dGhpcyBpcyBzb21lIHRleHQ=" + var/expected_output = "this is some text" + var/actual = rustg_decode_base64(input_str) + + if (!cmptextEx(expected_output, actual)) + CRASH("Base64 decode failed | S: [input_str] | E: [expected_output] | A: [actual]") + From 75a6384a913e3e6ca3792685730546ce060c5658 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Sat, 16 Dec 2023 18:57:46 -0800 Subject: [PATCH 77/82] More routine updates (#157) --- Cargo.lock | 656 +++++++++++++++++++++------------------------- Cargo.toml | 76 ++++-- src/pathfinder.rs | 2 +- 3 files changed, 353 insertions(+), 381 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bd75bffe..63e6449e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -36,32 +36,31 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.7" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.11", + "getrandom 0.2.10", "once_cell", "version_check", ] [[package]] name = "ahash" -version = "0.8.6" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ "cfg-if", "once_cell", "version_check", - "zerocopy", ] [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" dependencies = [ "memchr", ] @@ -116,9 +115,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.5" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" [[package]] name = "base64ct" @@ -139,11 +138,11 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.69.1" +version = "0.68.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ffcebc3849946a7170a05992aac39da343a90676ab392c51a4280981d6379c2" +checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.0", "cexpr", "clang-sys", "lazy_static", @@ -165,9 +164,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "bitvec" @@ -192,26 +191,47 @@ dependencies = [ [[package]] name = "borsh" -version = "1.2.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9897ef0f1bd2362169de6d7e436ea2237dc1085d7d1e4db75f4be34d86f309d1" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" dependencies = [ "borsh-derive", - "cfg_aliases", + "hashbrown 0.13.2", ] [[package]] name = "borsh-derive" -version = "1.2.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478b41ff04256c5c8330f3dfdaaae2a5cc976a8e75088bafa4625b0d0208de8c" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" dependencies = [ - "once_cell", - "proc-macro-crate 2.0.0", "proc-macro2", "quote", - "syn 2.0.40", - "syn_derive", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] @@ -221,7 +241,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c" dependencies = [ "memchr", - "regex-automata", + "regex-automata 0.4.3", "serde", ] @@ -276,9 +296,9 @@ checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "byteorder" -version = "1.5.0" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" @@ -332,12 +352,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - [[package]] name = "chrono" version = "0.4.31" @@ -419,7 +433,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.11", + "getrandom 0.2.10", "once_cell", "tiny-keccak", ] @@ -432,9 +446,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "core-foundation" -version = "0.9.4" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" dependencies = [ "core-foundation-sys", "libc", @@ -442,15 +456,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ "libc", ] @@ -631,12 +645,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.10" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" -dependencies = [ - "powerfmt", -] +checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" [[package]] name = "derive_utils" @@ -720,15 +731,15 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" [[package]] name = "fdeflate" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868" +checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" dependencies = [ "simd-adler32", ] @@ -741,7 +752,7 @@ checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.4.1", "windows-sys 0.52.0", ] @@ -753,9 +764,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" dependencies = [ "crc32fast", "libz-sys", @@ -864,45 +875,57 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-macro" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.40", +] [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" dependencies = [ "futures-core", "futures-io", + "futures-macro", "futures-task", "memchr", "pin-project-lite", @@ -933,9 +956,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "js-sys", @@ -946,9 +969,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "gix" @@ -1065,7 +1088,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6419db582ea84dfb58c7e7b0af7fd62c808aa14954af2936a33f89b0f4ed018e" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.0", "bstr", "gix-path", "libc", @@ -1147,7 +1170,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5db19298c5eeea2961e5b3bf190767a2d1f09b8802aeb5f258e42276350aff19" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.0", "bstr", "gix-features", "gix-path", @@ -1180,7 +1203,7 @@ version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3f308f5cd2992e96a274b0d1931e9a0e44fdcba87695ead3f6df30d8a697e9c" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.0", "bstr", "btoi", "filetime", @@ -1306,9 +1329,9 @@ dependencies = [ [[package]] name = "gix-ref" -version = "0.39.0" +version = "0.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac23ed741583c792f573c028785db683496a6dfcd672ec701ee54ba6a77e1ff" +checksum = "3b2069adc212cf7f3317ef55f6444abd06c50f28479dbbac5a86acf3b05cbbfe" dependencies = [ "gix-actor", "gix-date", @@ -1376,7 +1399,7 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a36ea2c5907d64a9b4b5d3cc9f430e6c30f0509646b5e38eb275ca57c5bf29e2" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.0", "gix-path", "libc", "windows", @@ -1458,9 +1481,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "h2" -version = "0.3.22" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ "bytes", "fnv", @@ -1468,7 +1491,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 1.9.3", "slab", "tokio", "tokio-util", @@ -1481,7 +1504,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.7", + "ahash 0.7.6", ] [[package]] @@ -1490,7 +1513,7 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "ahash 0.8.6", + "ahash 0.8.3", ] [[package]] @@ -1528,18 +1551,18 @@ dependencies = [ [[package]] name = "home" -version = "0.5.5" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "http" -version = "0.2.11" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", @@ -1548,9 +1571,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.6" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", "http", @@ -1586,7 +1609,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.10", + "socket2 0.4.9", "tokio", "tower-service", "tracing", @@ -1595,9 +1618,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.2" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" dependencies = [ "futures-util", "http", @@ -1609,16 +1632,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.58" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows", ] [[package]] @@ -1660,6 +1683,16 @@ dependencies = [ "png", ] +[[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 = "indexmap" version = "2.1.0" @@ -1709,30 +1742,30 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "jobserver" -version = "0.1.27" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -1876,9 +1909,9 @@ checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -1911,15 +1944,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.4" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "memmap2" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deaba38d7abf1d4cca21cc89e932e542ba2b9258664d2a9ef0e61512039c9375" +checksum = "8f850157af41022bbb1b04ed15c011ce4d59520be82a4e3718b10c34b02cb85e" dependencies = [ "libc", ] @@ -1957,9 +1990,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.10" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", "wasi 0.11.0+wasi-snapshot-preview1", @@ -1989,7 +2022,7 @@ dependencies = [ "rustls-pemfile", "serde", "serde_json", - "socket2 0.5.5", + "socket2 0.5.4", "twox-hash", "url", "webpki", @@ -2023,7 +2056,7 @@ dependencies = [ "base64", "bigdecimal", "bindgen", - "bitflags 2.4.1", + "bitflags 2.4.0", "bitvec", "byteorder", "bytes", @@ -2067,7 +2100,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "getrandom 0.2.11", + "getrandom 0.2.10", ] [[package]] @@ -2109,20 +2142,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "num" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" -dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - [[package]] name = "num-bigint" version = "0.4.4" @@ -2134,15 +2153,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-complex" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" -dependencies = [ - "num-traits", -] - [[package]] name = "num-integer" version = "0.1.45" @@ -2153,17 +2163,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-iter" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - [[package]] name = "num-rational" version = "0.4.1" @@ -2171,7 +2170,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ "autocfg", - "num-bigint", "num-integer", "num-traits", ] @@ -2221,11 +2219,11 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl" -version = "0.10.61" +version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b8419dc8cc6d866deb801274bba2e6f8f6108c1bb7fcc10ee5ab864931dbb45" +checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.0", "cfg-if", "foreign-types", "libc", @@ -2253,9 +2251,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.97" +version = "0.9.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3eaad34cdd97d81de97964fc7f29e2d104f483840d906ef56daa1912338460b" +checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" dependencies = [ "cc", "libc", @@ -2275,13 +2273,13 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.3.5", "smallvec", "windows-targets 0.48.5", ] @@ -2305,7 +2303,7 @@ checksum = "752866d4511516a35883728309499db42696f388263586b70659a5461e641db5" dependencies = [ "deprecate-until", "fixedbitset", - "indexmap", + "indexmap 2.1.0", "integer-sqrt", "num-traits", "rustc-hash", @@ -2377,12 +2375,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - [[package]] name = "ppv-lite86" version = "0.2.17" @@ -2391,21 +2383,21 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro-crate" -version = "1.3.1" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" dependencies = [ - "once_cell", - "toml_edit 0.19.15", + "toml 0.5.11", ] [[package]] name = "proc-macro-crate" -version = "2.0.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ - "toml_edit 0.20.7", + "once_cell", + "toml_edit 0.19.15", ] [[package]] @@ -2541,7 +2533,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.11", + "getrandom 0.2.10", ] [[package]] @@ -2602,19 +2594,28 @@ dependencies = [ [[package]] name = "redis" -version = "0.23.3" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f49cdc0bb3f412bf8e7d1bd90fe1d9eb10bc5c399ba90973c14662a27b3f8ba" +checksum = "c580d9cbbe1d1b479e8d67cf9daf6a62c957e6846048408b80b43ac3f6af84cd" dependencies = [ "combine", "itoa", "percent-encoding", "ryu", "sha1_smol", - "socket2 0.4.10", + "socket2 0.4.9", "url", ] +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "redox_syscall" version = "0.4.1" @@ -2626,47 +2627,53 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" dependencies = [ "aho-corasick", "memchr", - "regex-automata", + "regex-automata 0.3.8", "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" dependencies = [ "aho-corasick", "memchr", "regex-syntax", ] +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" + [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "rend" -version = "0.4.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2571463863a6bd50c32f94402933f03457a3fbaf697a707c5be741e459f08fd" +checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab" dependencies = [ "bytecheck", ] [[package]] name = "reqwest" -version = "0.11.22" +version = "0.11.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" +checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" dependencies = [ "base64", "bytes", @@ -2690,7 +2697,6 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "system-configuration", "tokio", "tokio-rustls", "tower-service", @@ -2698,7 +2704,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.25.3", + "webpki-roots 0.25.2", "winreg", ] @@ -2712,25 +2718,11 @@ dependencies = [ "libc", "once_cell", "spin 0.5.2", - "untrusted 0.7.1", + "untrusted", "web-sys", "winapi", ] -[[package]] -name = "ring" -version = "0.17.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" -dependencies = [ - "cc", - "getrandom 0.2.11", - "libc", - "spin 0.9.8", - "untrusted 0.9.0", - "windows-sys 0.48.0", -] - [[package]] name = "rkyv" version = "0.7.42" @@ -2778,7 +2770,7 @@ dependencies = [ "md-5", "mysql", "noise", - "num", + "num-integer", "once_cell", "pathfinding", "percent-encoding", @@ -2793,7 +2785,7 @@ dependencies = [ "sha-1", "sha2", "thiserror", - "toml", + "toml 0.8.8", "twox-hash", "url", "zip", @@ -2801,9 +2793,9 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.33.1" +version = "1.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06676aec5ccb8fc1da723cc8c0f9a46549f21ebb8753d3915c6c41db1e7f1dc4" +checksum = "a4c4216490d5a413bc6d10fa4742bd7d4955941d062c0ef873141d6b0e7b30fd" dependencies = [ "arrayvec", "borsh", @@ -2833,7 +2825,7 @@ version = "0.38.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.0", "errno", "libc", "linux-raw-sys", @@ -2842,21 +2834,21 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.10" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" dependencies = [ "log", - "ring 0.17.7", - "rustls-webpki 0.101.7", + "ring", + "rustls-webpki 0.101.6", "sct", ] [[package]] name = "rustls-pemfile" -version = "1.0.4" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ "base64", ] @@ -2867,25 +2859,25 @@ version = "0.100.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f6a5fc258f1c1276dfe3016516945546e2d5383911efc0fc4f1cdc5df3a4ae3" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "ring", + "untrusted", ] [[package]] name = "rustls-webpki" -version = "0.101.7" +version = "0.101.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" dependencies = [ - "ring 0.17.7", - "untrusted 0.9.0", + "ring", + "untrusted", ] [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "same-file" @@ -2919,12 +2911,12 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sct" -version = "0.7.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" dependencies = [ - "ring 0.17.7", - "untrusted 0.9.0", + "ring", + "untrusted", ] [[package]] @@ -2964,18 +2956,18 @@ checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", @@ -2984,9 +2976,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ "itoa", "ryu", @@ -3044,9 +3036,9 @@ checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" dependencies = [ "cfg-if", "cpufeatures", @@ -3082,15 +3074,15 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.2" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" [[package]] name = "socket2" -version = "0.4.10" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", "winapi", @@ -3098,9 +3090,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" dependencies = [ "libc", "windows-sys 0.48.0", @@ -3171,39 +3163,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "syn_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.40", -] - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "tap" version = "1.0.1" @@ -3212,22 +3171,22 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.8.1" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ "cfg-if", "fastrand", - "redox_syscall", + "redox_syscall 0.3.5", "rustix", "windows-sys 0.48.0", ] [[package]] name = "termcolor" -version = "1.4.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] @@ -3254,15 +3213,14 @@ dependencies = [ [[package]] name = "time" -version = "0.3.30" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" +checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" dependencies = [ "deranged", "itoa", "libc", "num_threads", - "powerfmt", "serde", "time-core", "time-macros", @@ -3309,9 +3267,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.35.0" +version = "1.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" dependencies = [ "backtrace", "bytes", @@ -3319,7 +3277,7 @@ dependencies = [ "mio", "num_cpus", "pin-project-lite", - "socket2 0.5.5", + "socket2 0.5.4", "windows-sys 0.48.0", ] @@ -3335,9 +3293,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" dependencies = [ "bytes", "futures-core", @@ -3349,14 +3307,23 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.8" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.19.15", + "toml_edit 0.21.0", ] [[package]] @@ -3374,20 +3341,20 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap", - "serde", - "serde_spanned", + "indexmap 2.1.0", "toml_datetime", "winnow", ] [[package]] name = "toml_edit" -version = "0.20.7" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ - "indexmap", + "indexmap 2.1.0", + "serde", + "serde_spanned", "toml_datetime", "winnow", ] @@ -3400,28 +3367,29 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ + "cfg-if", "pin-project-lite", "tracing-core", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" dependencies = [ "once_cell", ] [[package]] name = "try-lock" -version = "0.2.5" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "twox-hash" @@ -3451,9 +3419,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.14" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-bom" @@ -3482,12 +3450,6 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - [[package]] name = "url" version = "2.5.0" @@ -3501,9 +3463,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.6.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" [[package]] name = "vcpkg" @@ -3550,9 +3512,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3560,9 +3522,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", @@ -3575,9 +3537,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.39" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -3587,9 +3549,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3597,9 +3559,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", @@ -3610,15 +3572,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "web-sys" -version = "0.3.66" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -3626,12 +3588,12 @@ dependencies = [ [[package]] name = "webpki" -version = "0.22.4" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" +checksum = "f0e74f82d49d545ad128049b7e88f6576df2da6b02e9ce565c6f533be576957e" dependencies = [ - "ring 0.17.7", - "untrusted 0.9.0", + "ring", + "untrusted", ] [[package]] @@ -3645,9 +3607,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.25.3" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" [[package]] name = "winapi" @@ -3689,15 +3651,6 @@ dependencies = [ "windows-targets 0.48.5", ] -[[package]] -name = "windows-core" -version = "0.51.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-sys" version = "0.48.0" @@ -3832,9 +3785,9 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.26" +version = "0.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67b5f0a4e7a27a64c651977932b9dc5667ca7fc31ac44b03ed37a0cf42fdfff" +checksum = "6c830786f7720c2fd27a1a0e27a709dbd3c4d009b56d098fc742d4f4eab91fe2" dependencies = [ "memchr", ] @@ -3858,26 +3811,6 @@ dependencies = [ "tap", ] -[[package]] -name = "zerocopy" -version = "0.7.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306dca4455518f1f31635ec308b6b3e4eb1b11758cefafc782827d0aa7acb5c7" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be912bf68235a88fbefd1b73415cb218405958d1655b2ece9035a19920bdf6ba" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.40", -] - [[package]] name = "zip" version = "0.6.6" @@ -3919,10 +3852,11 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.9+zstd.1.5.5" +version = "2.0.8+zstd.1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" dependencies = [ "cc", + "libc", "pkg-config", ] diff --git a/Cargo.toml b/Cargo.toml index 42d81f9e..59d452bd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,10 +2,15 @@ name = "rust-g" edition = "2021" version = "3.0.0" -authors = ["Bjorn Neergaard ", "Tad Hardesty ", "rust-g maintainer team"] +authors = [ + "Bjorn Neergaard ", + "Tad Hardesty ", + "rust-g maintainer team", +] repository = "https://github.com/tgstation/rust-g" license = "MIT" description = "Offloaded task library for the /tg/ Space Station 13 codebase" +rust-version = "1.70" [lib] crate-type = ["cdylib"] @@ -23,36 +28,59 @@ chrono = { version = "0.4", optional = true } base64 = { version = "0.21", optional = true } md-5 = { version = "0.10", optional = true } twox-hash = { version = "1.6", optional = true } -const-random = { version = "0.1.15", optional = true } +const-random = { version = "0.1.17", optional = true } sha-1 = { version = "0.10", optional = true } sha2 = { version = "0.10", optional = true } hex = { version = "0.4", optional = true } -percent-encoding = { version = "2.2", optional = true } -url-dep = { version = "2.3", package = "url", optional = true } +percent-encoding = { version = "2.3", optional = true } +url-dep = { version = "2.5", package = "url", optional = true } png = { version = "0.17", optional = true } -image = { version = "0.24", optional = true, default-features = false, features = ["png"] } -gix = { version = "0.56", optional = true, default-features = false, features = ["revision", "max-performance-safe"] } +image = { version = "0.24", optional = true, default-features = false, features = [ + "png", +] } +gix = { version = "0.56", optional = true, default-features = false, features = [ + "revision", + "max-performance-safe", +] } noise = { version = "0.8", optional = true } -redis = { version = "0.23", optional = true } -reqwest = { version = "0.11", optional = true, default-features = false, features = ["blocking", "rustls-tls"] } +redis = { version = "0.24", optional = true } +reqwest = { version = "0.11", optional = true, default-features = false, features = [ + "blocking", + "rustls-tls", +] } serde = { version = "1.0", optional = true, features = ["derive"] } serde_json = { version = "1.0", optional = true } lazy_static = { version = "1.4", optional = true } -once_cell = { version = "1.17", optional = true } +once_cell = { version = "1.19", optional = true } mysql = { version = "24.0", default_features = false, optional = true } -dashmap = { version = "5.4", optional = true } +dashmap = { version = "5.5", optional = true } zip = { version = "0.6", optional = true } rand = { version = "0.8", optional = true } -toml-dep = { version = "0.7.8", package = "toml", optional = true } -aho-corasick = { version = "1.0", optional = true } -rayon = { version = "1.7", optional = true } +toml-dep = { version = "0.8.8", package = "toml", optional = true } +aho-corasick = { version = "1.1", optional = true } +rayon = { version = "1.8", optional = true } dbpnoise = { version = "0.1.2", optional = true } -pathfinding = { version = "4.2.1", optional = true } -num = { version = "0.4.0", optional = true } -dmi = { version = "0.3.0", optional = true } +pathfinding = { version = "4.4", optional = true } +num-integer = { version = "0.1.45", optional = true } +dmi = { version = "0.3.1", optional = true } [features] -default = ["acreplace", "cellularnoise", "dmi", "file", "git", "http", "json", "log", "noise", "rustls_tls", "sql", "time", "toml", "url"] +default = [ + "acreplace", + "cellularnoise", + "dmi", + "file", + "git", + "http", + "json", + "log", + "noise", + "rustls_tls", + "sql", + "time", + "toml", + "url", +] all = [ "acreplace", @@ -94,8 +122,18 @@ url = ["url-dep", "percent-encoding"] # additional features batchnoise = ["dbpnoise"] -hash = ["base64", "const-random", "md-5", "hex", "sha-1", "sha2", "twox-hash", "serde", "serde_json"] -pathfinder = ["num", "pathfinding", "serde", "serde_json"] +hash = [ + "base64", + "const-random", + "md-5", + "hex", + "sha-1", + "sha2", + "twox-hash", + "serde", + "serde_json", +] +pathfinder = ["num-integer", "pathfinding", "serde", "serde_json"] redis_pubsub = ["flume", "redis", "serde", "serde_json"] redis_reliablequeue = ["flume", "redis", "serde", "serde_json"] unzip = ["zip", "jobs"] diff --git a/src/pathfinder.rs b/src/pathfinder.rs index 395c40d3..50f993ce 100644 --- a/src/pathfinder.rs +++ b/src/pathfinder.rs @@ -1,4 +1,4 @@ -use num::integer::sqrt; +use num_integer::sqrt; use pathfinding::prelude::astar; use serde::{Deserialize, Serialize}; use std::cell::RefCell; From 50f36fa10742a1d68e70c2256f69786e59a6ae8c Mon Sep 17 00:00:00 2001 From: Kapu1178 <75460809+Kapu1178@users.noreply.github.com> Date: Sat, 23 Dec 2023 03:17:11 -0500 Subject: [PATCH 78/82] Updates `rustg_file_exists()` macro to remove user error (#158) --- dmsrc/file.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dmsrc/file.dm b/dmsrc/file.dm index c18d3f8a..8d64b72b 100644 --- a/dmsrc/file.dm +++ b/dmsrc/file.dm @@ -1,5 +1,5 @@ #define rustg_file_read(fname) RUSTG_CALL(RUST_G, "file_read")(fname) -#define rustg_file_exists(fname) RUSTG_CALL(RUST_G, "file_exists")(fname) +#define rustg_file_exists(fname) (RUSTG_CALL(RUST_G, "file_exists")(fname) == "true") #define rustg_file_write(text, fname) RUSTG_CALL(RUST_G, "file_write")(text, fname) #define rustg_file_append(text, fname) RUSTG_CALL(RUST_G, "file_append")(text, fname) #define rustg_file_get_line_count(fname) text2num(RUSTG_CALL(RUST_G, "file_get_line_count")(fname)) From bf20ba0e461c1bcc0b5494c4c917f84aa89689ea Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Sat, 23 Dec 2023 01:04:28 -0800 Subject: [PATCH 79/82] Last little bit of updates (#159) --- Cargo.lock | 355 +++++++++++++++++++++++++++++------------------------ 1 file changed, 193 insertions(+), 162 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 63e6449e..d765c942 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -36,11 +36,11 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.11", "once_cell", "version_check", ] @@ -58,9 +58,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -115,9 +115,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.4" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "base64ct" @@ -142,7 +142,7 @@ version = "0.68.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "cexpr", "clang-sys", "lazy_static", @@ -153,7 +153,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.40", + "syn 2.0.42", ] [[package]] @@ -164,9 +164,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "bitvec" @@ -296,9 +296,9 @@ checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" @@ -433,7 +433,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.11", "once_cell", "tiny-keccak", ] @@ -456,15 +456,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" dependencies = [ "libc", ] @@ -494,9 +494,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "14c3242926edf34aec4ac3a77108ad4854bffaa2e4ddc1824124ce59231302d5" dependencies = [ "cfg-if", "crossbeam-utils", @@ -504,9 +504,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -515,22 +515,21 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "2d2fe95351b870527a5d09bf563ed3c97c0cffb87cf1c78a591bf48bb218d9aa" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +checksum = "b9bcf5bdbfdd6030fb4a1c497b5d5fc5921aa2f60d359a17e249c0e6df3de153" dependencies = [ "cfg-if", "crossbeam-utils", @@ -538,9 +537,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +checksum = "c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f" dependencies = [ "cfg-if", ] @@ -582,7 +581,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.40", + "syn 2.0.42", ] [[package]] @@ -593,7 +592,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.40", + "syn 2.0.42", ] [[package]] @@ -640,14 +639,17 @@ dependencies = [ "proc-macro2", "quote", "semver", - "syn 2.0.40", + "syn 2.0.42", ] [[package]] name = "deranged" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" +checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" +dependencies = [ + "powerfmt", +] [[package]] name = "derive_utils" @@ -657,7 +659,7 @@ checksum = "9abcad25e9720609ccb3dcdb795d845e37d8ce34183330a9f48b03a1a71c8e21" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.42", ] [[package]] @@ -731,15 +733,15 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "fdeflate" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" +checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868" dependencies = [ "simd-adler32", ] @@ -752,7 +754,7 @@ checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", + "redox_syscall", "windows-sys 0.52.0", ] @@ -764,9 +766,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "libz-sys", @@ -840,7 +842,7 @@ checksum = "b0fa992f1656e1707946bbba340ad244f0814009ef8c0118eb7b658395f19a2e" dependencies = [ "frunk_proc_macro_helpers", "quote", - "syn 2.0.40", + "syn 2.0.42", ] [[package]] @@ -852,7 +854,7 @@ dependencies = [ "frunk_core", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.42", ] [[package]] @@ -864,7 +866,7 @@ dependencies = [ "frunk_core", "frunk_proc_macro_helpers", "quote", - "syn 2.0.40", + "syn 2.0.42", ] [[package]] @@ -884,9 +886,9 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" [[package]] name = "futures-io" @@ -902,14 +904,14 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.42", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" [[package]] name = "futures-task" @@ -956,9 +958,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if", "js-sys", @@ -1088,7 +1090,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6419db582ea84dfb58c7e7b0af7fd62c808aa14954af2936a33f89b0f4ed018e" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "bstr", "gix-path", "libc", @@ -1170,7 +1172,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5db19298c5eeea2961e5b3bf190767a2d1f09b8802aeb5f258e42276350aff19" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "bstr", "gix-features", "gix-path", @@ -1203,7 +1205,7 @@ version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3f308f5cd2992e96a274b0d1931e9a0e44fdcba87695ead3f6df30d8a697e9c" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "bstr", "btoi", "filetime", @@ -1241,7 +1243,7 @@ checksum = "02a5bcaf6704d9354a3071cede7e77d366a5980c7352e102e2c2f9b645b1d3ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.42", ] [[package]] @@ -1399,7 +1401,7 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a36ea2c5907d64a9b4b5d3cc9f430e6c30f0509646b5e38eb275ca57c5bf29e2" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "gix-path", "libc", "windows", @@ -1504,7 +1506,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.6", + "ahash 0.7.7", ] [[package]] @@ -1609,7 +1611,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.9", + "socket2 0.4.10", "tokio", "tower-service", "tracing", @@ -1632,16 +1634,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -1737,7 +1739,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5305557fa27b460072ae15ce07617e999f5879f14d376c8449f0bfb9f9d8e91e" dependencies = [ "derive_utils", - "syn 2.0.40", + "syn 2.0.42", ] [[package]] @@ -1748,24 +1750,24 @@ checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jobserver" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" dependencies = [ "wasm-bindgen", ] @@ -1909,9 +1911,9 @@ checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -1944,15 +1946,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.3" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memmap2" -version = "0.9.1" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f850157af41022bbb1b04ed15c011ce4d59520be82a4e3718b10c34b02cb85e" +checksum = "45fd3a57831bf88bc63f8cebc0cf956116276e97fef3966103e96416209f7c92" dependencies = [ "libc", ] @@ -2042,7 +2044,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.42", "termcolor", "thiserror", ] @@ -2056,7 +2058,7 @@ dependencies = [ "base64", "bigdecimal", "bindgen", - "bitflags 2.4.0", + "bitflags 2.4.1", "bitvec", "byteorder", "bytes", @@ -2100,7 +2102,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.11", ] [[package]] @@ -2223,7 +2225,7 @@ version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "cfg-if", "foreign-types", "libc", @@ -2240,7 +2242,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.42", ] [[package]] @@ -2273,13 +2275,13 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", + "redox_syscall", "smallvec", "windows-targets 0.48.5", ] @@ -2297,9 +2299,9 @@ dependencies = [ [[package]] name = "pathfinding" -version = "4.4.0" +version = "4.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "752866d4511516a35883728309499db42696f388263586b70659a5461e641db5" +checksum = "f6f4a3f5089b981000cb50ec24320faf7a19649a45e8730e4adf49f78f066528" dependencies = [ "deprecate-until", "fixedbitset", @@ -2358,9 +2360,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" [[package]] name = "png" @@ -2375,6 +2377,12 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -2426,9 +2434,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8" dependencies = [ "unicode-ident", ] @@ -2533,7 +2541,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.11", ] [[package]] @@ -2603,19 +2611,10 @@ dependencies = [ "percent-encoding", "ryu", "sha1_smol", - "socket2 0.4.9", + "socket2 0.4.10", "url", ] -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.4.1" @@ -2662,18 +2661,18 @@ checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "rend" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab" +checksum = "a2571463863a6bd50c32f94402933f03457a3fbaf697a707c5be741e459f08fd" dependencies = [ "bytecheck", ] [[package]] name = "reqwest" -version = "0.11.20" +version = "0.11.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" dependencies = [ "base64", "bytes", @@ -2697,6 +2696,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-rustls", "tower-service", @@ -2725,12 +2725,13 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.42" +version = "0.7.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58" +checksum = "527a97cdfef66f65998b5f3b637c26f5a5ec09cc52a3f9932313ac645f4190f5" dependencies = [ "bitvec", "bytecheck", + "bytes", "hashbrown 0.12.3", "ptr_meta", "rend", @@ -2742,9 +2743,9 @@ dependencies = [ [[package]] name = "rkyv_derive" -version = "0.7.42" +version = "0.7.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d" +checksum = "b5c462a1328c8e67e4d6dbad1eb0355dd43e8ab432c6e227a43657f16ade5033" dependencies = [ "proc-macro2", "quote", @@ -2825,7 +2826,7 @@ version = "0.38.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "errno", "libc", "linux-raw-sys", @@ -2875,9 +2876,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "same-file" @@ -2956,29 +2957,29 @@ checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" -version = "1.0.188" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.42", ] [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", @@ -2987,9 +2988,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" dependencies = [ "serde", ] @@ -3036,9 +3037,9 @@ checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" [[package]] name = "sha2" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -3074,15 +3075,15 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", @@ -3154,15 +3155,36 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.40" +version = "2.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13fa70a4ee923979ffb522cacce59d34421ebdea5625e1073c4326ef9d2dd42e" +checksum = "5b7d0a2c048d661a1a59fcd7355baa232f7ed34e0ee4df2eef3c1c1c0d3852d8" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tap" version = "1.0.1" @@ -3171,13 +3193,13 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.8.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" dependencies = [ "cfg-if", "fastrand", - "redox_syscall 0.3.5", + "redox_syscall", "rustix", "windows-sys 0.48.0", ] @@ -3193,34 +3215,35 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.42", ] [[package]] name = "time" -version = "0.3.29" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" +checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" dependencies = [ "deranged", "itoa", "libc", "num_threads", + "powerfmt", "serde", "time-core", "time-macros", @@ -3234,9 +3257,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" dependencies = [ "time-core", ] @@ -3398,7 +3421,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ "cfg-if", - "rand 0.8.5", + "rand 0.7.3", "static_assertions", ] @@ -3419,9 +3442,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" [[package]] name = "unicode-bom" @@ -3463,9 +3486,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.4.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" [[package]] name = "vcpkg" @@ -3512,9 +3535,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3522,16 +3545,16 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.42", "wasm-bindgen-shared", ] @@ -3549,9 +3572,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3559,22 +3582,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.42", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "web-sys" @@ -3651,6 +3674,15 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -3785,9 +3817,9 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.28" +version = "0.5.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c830786f7720c2fd27a1a0e27a709dbd3c4d009b56d098fc742d4f4eab91fe2" +checksum = "9b5c3db89721d50d0e2a673f5043fc4722f76dcc352d7b1ab8b8288bed4ed2c5" dependencies = [ "memchr", ] @@ -3852,11 +3884,10 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.8+zstd.1.5.5" +version = "2.0.9+zstd.1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" +checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" dependencies = [ "cc", - "libc", "pkg-config", ] From 79f04b1df3d9f17300c31bdd1b3e5725062c4921 Mon Sep 17 00:00:00 2001 From: ZeWaka Date: Sat, 23 Dec 2023 13:15:10 -0800 Subject: [PATCH 80/82] v3.1.0 (#161) --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d765c942..98170f30 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2754,7 +2754,7 @@ dependencies = [ [[package]] name = "rust-g" -version = "3.0.0" +version = "3.1.0" dependencies = [ "aho-corasick", "base64", diff --git a/Cargo.toml b/Cargo.toml index 59d452bd..482865b1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rust-g" edition = "2021" -version = "3.0.0" +version = "3.1.0" authors = [ "Bjorn Neergaard ", "Tad Hardesty ", From c3313a1fdbf9134b572ef2c7db40b8623dd2c0a0 Mon Sep 17 00:00:00 2001 From: vvvv-vvvv <136390975+vvvv-vvvv@users.noreply.github.com> Date: Sun, 24 Dec 2023 00:31:03 +0000 Subject: [PATCH 81/82] pathfinder: fix typo in rustg_remove_node_astar (#162) --- dmsrc/pathfinder.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dmsrc/pathfinder.dm b/dmsrc/pathfinder.dm index 3259aa87..60bfb0dd 100644 --- a/dmsrc/pathfinder.dm +++ b/dmsrc/pathfinder.dm @@ -21,10 +21,10 @@ */ #define rustg_add_node_astar(json) RUSTG_CALL(RUST_G, "add_node_astar")(json) -/**² +/** * Remove every link to the node with unique_id. Replace that node by null */ -#define rustg_remove_node_astart(unique_id) RUSTG_CALL(RUST_G, "remove_node_astar")(unique_id) +#define rustg_remove_node_astar(unique_id) RUSTG_CALL(RUST_G, "remove_node_astar")(unique_id) /** * Compute the shortest path between start_node and goal_node using A*. Heuristic used is simple geometric distance From 4aff57f7720f29ccb71d4121953b648d676027d5 Mon Sep 17 00:00:00 2001 From: vvvv-vvvv <136390975+vvvv-vvvv@users.noreply.github.com> Date: Sun, 24 Dec 2023 00:39:30 +0000 Subject: [PATCH 82/82] pathfinder: stringify args expecting numbers (#163) --- dmsrc/pathfinder.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dmsrc/pathfinder.dm b/dmsrc/pathfinder.dm index 60bfb0dd..f6e5424f 100644 --- a/dmsrc/pathfinder.dm +++ b/dmsrc/pathfinder.dm @@ -24,9 +24,9 @@ /** * Remove every link to the node with unique_id. Replace that node by null */ -#define rustg_remove_node_astar(unique_id) RUSTG_CALL(RUST_G, "remove_node_astar")(unique_id) +#define rustg_remove_node_astar(unique_id) RUSTG_CALL(RUST_G, "remove_node_astar")("[unique_id]") /** * Compute the shortest path between start_node and goal_node using A*. Heuristic used is simple geometric distance */ -#define rustg_generate_path_astar(start_node_id, goal_node_id) RUSTG_CALL(RUST_G, "generate_path_astar")(start_node_id, goal_node_id) +#define rustg_generate_path_astar(start_node_id, goal_node_id) RUSTG_CALL(RUST_G, "generate_path_astar")("[start_node_id]", "[goal_node_id]")