Compare commits
	
		
			1 Commits
		
	
	
		
			renovate/m
			...
			a21830060e
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| a21830060e | 
							
								
								
									
										332
									
								
								virtweb_backend/Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										332
									
								
								virtweb_backend/Cargo.lock
									
									
									
										generated
									
									
									
								
							@@ -11,7 +11,7 @@ dependencies = [
 | 
				
			|||||||
 "actix-macros",
 | 
					 "actix-macros",
 | 
				
			||||||
 "actix-rt",
 | 
					 "actix-rt",
 | 
				
			||||||
 "actix_derive",
 | 
					 "actix_derive",
 | 
				
			||||||
 "bitflags",
 | 
					 "bitflags 2.9.1",
 | 
				
			||||||
 "bytes",
 | 
					 "bytes",
 | 
				
			||||||
 "crossbeam-channel",
 | 
					 "crossbeam-channel",
 | 
				
			||||||
 "futures-core",
 | 
					 "futures-core",
 | 
				
			||||||
@@ -33,7 +33,7 @@ version = "0.5.2"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a"
 | 
					checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bitflags",
 | 
					 "bitflags 2.9.1",
 | 
				
			||||||
 "bytes",
 | 
					 "bytes",
 | 
				
			||||||
 "futures-core",
 | 
					 "futures-core",
 | 
				
			||||||
 "futures-sink",
 | 
					 "futures-sink",
 | 
				
			||||||
@@ -61,17 +61,17 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "actix-files"
 | 
					name = "actix-files"
 | 
				
			||||||
version = "0.6.8"
 | 
					version = "0.6.6"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "6c0d87f10d70e2948ad40e8edea79c8e77c6c66e0250a4c1f09b690465199576"
 | 
					checksum = "0773d59061dedb49a8aed04c67291b9d8cf2fe0b60130a381aab53c6dd86e9be"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "actix-http",
 | 
					 "actix-http",
 | 
				
			||||||
 "actix-service",
 | 
					 "actix-service",
 | 
				
			||||||
 "actix-utils",
 | 
					 "actix-utils",
 | 
				
			||||||
 "actix-web",
 | 
					 "actix-web",
 | 
				
			||||||
 "bitflags",
 | 
					 "bitflags 2.9.1",
 | 
				
			||||||
 "bytes",
 | 
					 "bytes",
 | 
				
			||||||
 "derive_more 2.0.1",
 | 
					 "derive_more 0.99.20",
 | 
				
			||||||
 "futures-core",
 | 
					 "futures-core",
 | 
				
			||||||
 "http-range",
 | 
					 "http-range",
 | 
				
			||||||
 "log",
 | 
					 "log",
 | 
				
			||||||
@@ -84,16 +84,16 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "actix-http"
 | 
					name = "actix-http"
 | 
				
			||||||
version = "3.11.2"
 | 
					version = "3.11.0"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "7926860314cbe2fb5d1f13731e387ab43bd32bca224e82e6e2db85de0a3dba49"
 | 
					checksum = "44dfe5c9e0004c623edc65391dfd51daa201e7e30ebd9c9bedf873048ec32bc2"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "actix-codec",
 | 
					 "actix-codec",
 | 
				
			||||||
 "actix-rt",
 | 
					 "actix-rt",
 | 
				
			||||||
 "actix-service",
 | 
					 "actix-service",
 | 
				
			||||||
 "actix-utils",
 | 
					 "actix-utils",
 | 
				
			||||||
 "base64 0.22.1",
 | 
					 "base64 0.22.1",
 | 
				
			||||||
 "bitflags",
 | 
					 "bitflags 2.9.1",
 | 
				
			||||||
 "brotli",
 | 
					 "brotli",
 | 
				
			||||||
 "bytes",
 | 
					 "bytes",
 | 
				
			||||||
 "bytestring",
 | 
					 "bytestring",
 | 
				
			||||||
@@ -102,7 +102,7 @@ dependencies = [
 | 
				
			|||||||
 "flate2",
 | 
					 "flate2",
 | 
				
			||||||
 "foldhash",
 | 
					 "foldhash",
 | 
				
			||||||
 "futures-core",
 | 
					 "futures-core",
 | 
				
			||||||
 "h2 0.3.27",
 | 
					 "h2 0.3.26",
 | 
				
			||||||
 "http 0.2.12",
 | 
					 "http 0.2.12",
 | 
				
			||||||
 "httparse",
 | 
					 "httparse",
 | 
				
			||||||
 "httpdate",
 | 
					 "httpdate",
 | 
				
			||||||
@@ -233,7 +233,7 @@ dependencies = [
 | 
				
			|||||||
 "futures-core",
 | 
					 "futures-core",
 | 
				
			||||||
 "futures-util",
 | 
					 "futures-util",
 | 
				
			||||||
 "mio",
 | 
					 "mio",
 | 
				
			||||||
 "socket2 0.5.9",
 | 
					 "socket2",
 | 
				
			||||||
 "tokio",
 | 
					 "tokio",
 | 
				
			||||||
 "tracing",
 | 
					 "tracing",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -312,7 +312,7 @@ dependencies = [
 | 
				
			|||||||
 "serde_json",
 | 
					 "serde_json",
 | 
				
			||||||
 "serde_urlencoded",
 | 
					 "serde_urlencoded",
 | 
				
			||||||
 "smallvec",
 | 
					 "smallvec",
 | 
				
			||||||
 "socket2 0.5.9",
 | 
					 "socket2",
 | 
				
			||||||
 "time",
 | 
					 "time",
 | 
				
			||||||
 "tracing",
 | 
					 "tracing",
 | 
				
			||||||
 "url",
 | 
					 "url",
 | 
				
			||||||
@@ -435,6 +435,12 @@ dependencies = [
 | 
				
			|||||||
 "alloc-no-stdlib",
 | 
					 "alloc-no-stdlib",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "android-tzdata"
 | 
				
			||||||
 | 
					version = "0.1.1"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "android_system_properties"
 | 
					name = "android_system_properties"
 | 
				
			||||||
version = "0.1.5"
 | 
					version = "0.1.5"
 | 
				
			||||||
@@ -496,9 +502,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "anyhow"
 | 
					name = "anyhow"
 | 
				
			||||||
version = "1.0.100"
 | 
					version = "1.0.98"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
 | 
					checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "arbitrary"
 | 
					name = "arbitrary"
 | 
				
			||||||
@@ -640,6 +646,12 @@ version = "0.10.2"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
 | 
					checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "bitflags"
 | 
				
			||||||
 | 
					version = "1.3.2"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "bitflags"
 | 
					name = "bitflags"
 | 
				
			||||||
version = "2.9.1"
 | 
					version = "2.9.1"
 | 
				
			||||||
@@ -723,11 +735,21 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "bzip2"
 | 
					name = "bzip2"
 | 
				
			||||||
version = "0.6.0"
 | 
					version = "0.5.2"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "bea8dcd42434048e4f7a304411d9273a411f647446c1234a65ce0554923f4cff"
 | 
					checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libbz2-rs-sys",
 | 
					 "bzip2-sys",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "bzip2-sys"
 | 
				
			||||||
 | 
					version = "0.1.13+1.0.8"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "cc",
 | 
				
			||||||
 | 
					 "pkg-config",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -765,15 +787,16 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "chrono"
 | 
					name = "chrono"
 | 
				
			||||||
version = "0.4.42"
 | 
					version = "0.4.41"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
 | 
					checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "android-tzdata",
 | 
				
			||||||
 "iana-time-zone",
 | 
					 "iana-time-zone",
 | 
				
			||||||
 "js-sys",
 | 
					 "js-sys",
 | 
				
			||||||
 "num-traits",
 | 
					 "num-traits",
 | 
				
			||||||
 "wasm-bindgen",
 | 
					 "wasm-bindgen",
 | 
				
			||||||
 "windows-link 0.2.0",
 | 
					 "windows-link",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -788,9 +811,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "clap"
 | 
					name = "clap"
 | 
				
			||||||
version = "4.5.51"
 | 
					version = "4.5.41"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5"
 | 
					checksum = "be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "clap_builder",
 | 
					 "clap_builder",
 | 
				
			||||||
 "clap_derive",
 | 
					 "clap_derive",
 | 
				
			||||||
@@ -798,9 +821,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "clap_builder"
 | 
					name = "clap_builder"
 | 
				
			||||||
version = "4.5.51"
 | 
					version = "4.5.41"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a"
 | 
					checksum = "707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "anstream",
 | 
					 "anstream",
 | 
				
			||||||
 "anstyle",
 | 
					 "anstyle",
 | 
				
			||||||
@@ -810,9 +833,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "clap_derive"
 | 
					name = "clap_derive"
 | 
				
			||||||
version = "4.5.49"
 | 
					version = "4.5.41"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671"
 | 
					checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "heck",
 | 
					 "heck",
 | 
				
			||||||
 "proc-macro2",
 | 
					 "proc-macro2",
 | 
				
			||||||
@@ -1246,26 +1269,6 @@ version = "2.3.0"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
 | 
					checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "fax"
 | 
					 | 
				
			||||||
version = "0.2.6"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "fax_derive",
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "fax_derive"
 | 
					 | 
				
			||||||
version = "0.2.0"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "proc-macro2",
 | 
					 | 
				
			||||||
 "quote",
 | 
					 | 
				
			||||||
 "syn",
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "fdeflate"
 | 
					name = "fdeflate"
 | 
				
			||||||
version = "0.3.7"
 | 
					version = "0.3.7"
 | 
				
			||||||
@@ -1325,9 +1328,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "form_urlencoded"
 | 
					name = "form_urlencoded"
 | 
				
			||||||
version = "1.2.2"
 | 
					version = "1.2.1"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
 | 
					checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "percent-encoding",
 | 
					 "percent-encoding",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1452,9 +1455,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			|||||||
checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
 | 
					checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "cfg-if",
 | 
					 "cfg-if",
 | 
				
			||||||
 | 
					 "js-sys",
 | 
				
			||||||
 "libc",
 | 
					 "libc",
 | 
				
			||||||
 "r-efi",
 | 
					 "r-efi",
 | 
				
			||||||
 "wasi 0.14.2+wasi-0.2.4",
 | 
					 "wasi 0.14.2+wasi-0.2.4",
 | 
				
			||||||
 | 
					 "wasm-bindgen",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -1496,9 +1501,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "h2"
 | 
					name = "h2"
 | 
				
			||||||
version = "0.3.27"
 | 
					version = "0.3.26"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d"
 | 
					checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bytes",
 | 
					 "bytes",
 | 
				
			||||||
 "fnv",
 | 
					 "fnv",
 | 
				
			||||||
@@ -1705,7 +1710,7 @@ dependencies = [
 | 
				
			|||||||
 "libc",
 | 
					 "libc",
 | 
				
			||||||
 "percent-encoding",
 | 
					 "percent-encoding",
 | 
				
			||||||
 "pin-project-lite",
 | 
					 "pin-project-lite",
 | 
				
			||||||
 "socket2 0.5.9",
 | 
					 "socket2",
 | 
				
			||||||
 "system-configuration",
 | 
					 "system-configuration",
 | 
				
			||||||
 "tokio",
 | 
					 "tokio",
 | 
				
			||||||
 "tower-service",
 | 
					 "tower-service",
 | 
				
			||||||
@@ -1831,9 +1836,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "idna"
 | 
					name = "idna"
 | 
				
			||||||
version = "1.1.0"
 | 
					version = "1.0.3"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
 | 
					checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "idna_adapter",
 | 
					 "idna_adapter",
 | 
				
			||||||
 "smallvec",
 | 
					 "smallvec",
 | 
				
			||||||
@@ -1852,9 +1857,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "image"
 | 
					name = "image"
 | 
				
			||||||
version = "0.25.8"
 | 
					version = "0.25.6"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7"
 | 
					checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bytemuck",
 | 
					 "bytemuck",
 | 
				
			||||||
 "byteorder-lite",
 | 
					 "byteorder-lite",
 | 
				
			||||||
@@ -1862,7 +1867,6 @@ dependencies = [
 | 
				
			|||||||
 "exr",
 | 
					 "exr",
 | 
				
			||||||
 "gif",
 | 
					 "gif",
 | 
				
			||||||
 "image-webp",
 | 
					 "image-webp",
 | 
				
			||||||
 "moxcms",
 | 
					 | 
				
			||||||
 "num-traits",
 | 
					 "num-traits",
 | 
				
			||||||
 "png",
 | 
					 "png",
 | 
				
			||||||
 "qoi",
 | 
					 "qoi",
 | 
				
			||||||
@@ -1926,17 +1930,6 @@ dependencies = [
 | 
				
			|||||||
 "syn",
 | 
					 "syn",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "io-uring"
 | 
					 | 
				
			||||||
version = "0.7.9"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "bitflags",
 | 
					 | 
				
			||||||
 "cfg-if",
 | 
					 | 
				
			||||||
 "libc",
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "ipnet"
 | 
					name = "ipnet"
 | 
				
			||||||
version = "2.11.0"
 | 
					version = "2.11.0"
 | 
				
			||||||
@@ -2017,6 +2010,12 @@ dependencies = [
 | 
				
			|||||||
 "libc",
 | 
					 "libc",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "jpeg-decoder"
 | 
				
			||||||
 | 
					version = "0.3.1"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "js-sys"
 | 
					name = "js-sys"
 | 
				
			||||||
version = "0.3.77"
 | 
					version = "0.3.77"
 | 
				
			||||||
@@ -2083,17 +2082,11 @@ version = "0.5.2"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
 | 
					checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "libbz2-rs-sys"
 | 
					 | 
				
			||||||
version = "0.2.2"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "libc"
 | 
					name = "libc"
 | 
				
			||||||
version = "0.2.174"
 | 
					version = "0.2.172"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
 | 
					checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "libfuzzer-sys"
 | 
					name = "libfuzzer-sys"
 | 
				
			||||||
@@ -2202,9 +2195,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "log"
 | 
					name = "log"
 | 
				
			||||||
version = "0.4.28"
 | 
					version = "0.4.27"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
 | 
					checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "loop9"
 | 
					name = "loop9"
 | 
				
			||||||
@@ -2284,16 +2277,6 @@ dependencies = [
 | 
				
			|||||||
 "windows-sys 0.52.0",
 | 
					 "windows-sys 0.52.0",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "moxcms"
 | 
					 | 
				
			||||||
version = "0.7.5"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "ddd32fa8935aeadb8a8a6b6b351e40225570a37c43de67690383d87ef170cd08"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "num-traits",
 | 
					 | 
				
			||||||
 "pxfm",
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "native-tls"
 | 
					name = "native-tls"
 | 
				
			||||||
version = "0.2.14"
 | 
					version = "0.2.14"
 | 
				
			||||||
@@ -2323,7 +2306,7 @@ version = "0.30.1"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
 | 
					checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bitflags",
 | 
					 "bitflags 2.9.1",
 | 
				
			||||||
 "cfg-if",
 | 
					 "cfg-if",
 | 
				
			||||||
 "cfg_aliases",
 | 
					 "cfg_aliases",
 | 
				
			||||||
 "libc",
 | 
					 "libc",
 | 
				
			||||||
@@ -2451,7 +2434,7 @@ version = "0.3.1"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166"
 | 
					checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bitflags",
 | 
					 "bitflags 2.9.1",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -2491,7 +2474,7 @@ version = "0.10.72"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da"
 | 
					checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bitflags",
 | 
					 "bitflags 2.9.1",
 | 
				
			||||||
 "cfg-if",
 | 
					 "cfg-if",
 | 
				
			||||||
 "foreign-types",
 | 
					 "foreign-types",
 | 
				
			||||||
 "libc",
 | 
					 "libc",
 | 
				
			||||||
@@ -2607,9 +2590,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "percent-encoding"
 | 
					name = "percent-encoding"
 | 
				
			||||||
version = "2.3.2"
 | 
					version = "2.3.1"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
 | 
					checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "pin-project-lite"
 | 
					name = "pin-project-lite"
 | 
				
			||||||
@@ -2641,11 +2624,11 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "png"
 | 
					name = "png"
 | 
				
			||||||
version = "0.18.0"
 | 
					version = "0.17.16"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0"
 | 
					checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bitflags",
 | 
					 "bitflags 1.3.2",
 | 
				
			||||||
 "crc32fast",
 | 
					 "crc32fast",
 | 
				
			||||||
 "fdeflate",
 | 
					 "fdeflate",
 | 
				
			||||||
 "flate2",
 | 
					 "flate2",
 | 
				
			||||||
@@ -2694,12 +2677,6 @@ version = "0.2.0"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
 | 
					checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "ppmd-rust"
 | 
					 | 
				
			||||||
version = "1.2.1"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "c834641d8ad1b348c9ee86dec3b9840d805acd5f24daa5f90c788951a52ff59b"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "ppv-lite86"
 | 
					name = "ppv-lite86"
 | 
				
			||||||
version = "0.2.21"
 | 
					version = "0.2.21"
 | 
				
			||||||
@@ -2746,15 +2723,6 @@ dependencies = [
 | 
				
			|||||||
 "syn",
 | 
					 "syn",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "pxfm"
 | 
					 | 
				
			||||||
version = "0.1.22"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "376f733579ac4d3b9fbf0afca99bf8f6b698d541118affca554d0b86f73c2470"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "num-traits",
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "qoi"
 | 
					name = "qoi"
 | 
				
			||||||
version = "0.4.1"
 | 
					version = "0.4.1"
 | 
				
			||||||
@@ -2772,9 +2740,9 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "quick-xml"
 | 
					name = "quick-xml"
 | 
				
			||||||
version = "0.38.3"
 | 
					version = "0.38.0"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89"
 | 
					checksum = "8927b0664f5c5a98265138b7e3f90aa19a6b21353182469ace36d4ac527b7b1b"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "memchr",
 | 
					 "memchr",
 | 
				
			||||||
 "serde",
 | 
					 "serde",
 | 
				
			||||||
@@ -2930,7 +2898,7 @@ version = "0.5.12"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af"
 | 
					checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bitflags",
 | 
					 "bitflags 2.9.1",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -2970,9 +2938,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "reqwest"
 | 
					name = "reqwest"
 | 
				
			||||||
version = "0.12.24"
 | 
					version = "0.12.22"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f"
 | 
					checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "base64 0.22.1",
 | 
					 "base64 0.22.1",
 | 
				
			||||||
 "bytes",
 | 
					 "bytes",
 | 
				
			||||||
@@ -3097,7 +3065,7 @@ version = "1.0.7"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
 | 
					checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bitflags",
 | 
					 "bitflags 2.9.1",
 | 
				
			||||||
 "errno",
 | 
					 "errno",
 | 
				
			||||||
 "libc",
 | 
					 "libc",
 | 
				
			||||||
 "linux-raw-sys",
 | 
					 "linux-raw-sys",
 | 
				
			||||||
@@ -3193,7 +3161,7 @@ version = "2.11.1"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
 | 
					checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bitflags",
 | 
					 "bitflags 2.9.1",
 | 
				
			||||||
 "core-foundation",
 | 
					 "core-foundation",
 | 
				
			||||||
 "core-foundation-sys",
 | 
					 "core-foundation-sys",
 | 
				
			||||||
 "libc",
 | 
					 "libc",
 | 
				
			||||||
@@ -3218,28 +3186,18 @@ checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "serde"
 | 
					name = "serde"
 | 
				
			||||||
version = "1.0.224"
 | 
					version = "1.0.219"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "6aaeb1e94f53b16384af593c71e20b095e958dab1d26939c1b70645c5cfbcc0b"
 | 
					checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "serde_core",
 | 
					 | 
				
			||||||
 "serde_derive",
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "serde_core"
 | 
					 | 
				
			||||||
version = "1.0.224"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "32f39390fa6346e24defbcdd3d9544ba8a19985d0af74df8501fbfe9a64341ab"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "serde_derive",
 | 
					 "serde_derive",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "serde_derive"
 | 
					name = "serde_derive"
 | 
				
			||||||
version = "1.0.224"
 | 
					version = "1.0.219"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "87ff78ab5e8561c9a675bfc1785cb07ae721f0ee53329a595cefd8c04c2ac4e0"
 | 
					checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "proc-macro2",
 | 
					 "proc-macro2",
 | 
				
			||||||
 "quote",
 | 
					 "quote",
 | 
				
			||||||
@@ -3248,15 +3206,14 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "serde_json"
 | 
					name = "serde_json"
 | 
				
			||||||
version = "1.0.145"
 | 
					version = "1.0.141"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
 | 
					checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "itoa",
 | 
					 "itoa",
 | 
				
			||||||
 "memchr",
 | 
					 "memchr",
 | 
				
			||||||
 "ryu",
 | 
					 "ryu",
 | 
				
			||||||
 "serde",
 | 
					 "serde",
 | 
				
			||||||
 "serde_core",
 | 
					 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -3374,7 +3331,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb"
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "num-bigint",
 | 
					 "num-bigint",
 | 
				
			||||||
 "num-traits",
 | 
					 "num-traits",
 | 
				
			||||||
 "thiserror 2.0.17",
 | 
					 "thiserror 2.0.12",
 | 
				
			||||||
 "time",
 | 
					 "time",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -3403,16 +3360,6 @@ dependencies = [
 | 
				
			|||||||
 "windows-sys 0.52.0",
 | 
					 "windows-sys 0.52.0",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "socket2"
 | 
					 | 
				
			||||||
version = "0.6.0"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "libc",
 | 
					 | 
				
			||||||
 "windows-sys 0.59.0",
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "spki"
 | 
					name = "spki"
 | 
				
			||||||
version = "0.7.3"
 | 
					version = "0.7.3"
 | 
				
			||||||
@@ -3474,9 +3421,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "sysinfo"
 | 
					name = "sysinfo"
 | 
				
			||||||
version = "0.36.1"
 | 
					version = "0.35.2"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "252800745060e7b9ffb7b2badbd8b31cfa4aa2e61af879d0a3bf2a317c20217d"
 | 
					checksum = "3c3ffa3e4ff2b324a57f7aeb3c349656c7b127c3c189520251a648102a92496e"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc",
 | 
					 "libc",
 | 
				
			||||||
 "memchr",
 | 
					 "memchr",
 | 
				
			||||||
@@ -3493,7 +3440,7 @@ version = "0.6.1"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
 | 
					checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bitflags",
 | 
					 "bitflags 2.9.1",
 | 
				
			||||||
 "core-foundation",
 | 
					 "core-foundation",
 | 
				
			||||||
 "system-configuration-sys",
 | 
					 "system-configuration-sys",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -3551,11 +3498,11 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "thiserror"
 | 
					name = "thiserror"
 | 
				
			||||||
version = "2.0.17"
 | 
					version = "2.0.12"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
 | 
					checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "thiserror-impl 2.0.17",
 | 
					 "thiserror-impl 2.0.12",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -3571,9 +3518,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "thiserror-impl"
 | 
					name = "thiserror-impl"
 | 
				
			||||||
version = "2.0.17"
 | 
					version = "2.0.12"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
 | 
					checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "proc-macro2",
 | 
					 "proc-macro2",
 | 
				
			||||||
 "quote",
 | 
					 "quote",
 | 
				
			||||||
@@ -3582,16 +3529,13 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "tiff"
 | 
					name = "tiff"
 | 
				
			||||||
version = "0.10.3"
 | 
					version = "0.9.1"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f"
 | 
					checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "fax",
 | 
					 | 
				
			||||||
 "flate2",
 | 
					 "flate2",
 | 
				
			||||||
 "half",
 | 
					 "jpeg-decoder",
 | 
				
			||||||
 "quick-error",
 | 
					 | 
				
			||||||
 "weezl",
 | 
					 "weezl",
 | 
				
			||||||
 "zune-jpeg",
 | 
					 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -3637,22 +3581,20 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "tokio"
 | 
					name = "tokio"
 | 
				
			||||||
version = "1.47.1"
 | 
					version = "1.45.0"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038"
 | 
					checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "backtrace",
 | 
					 "backtrace",
 | 
				
			||||||
 "bytes",
 | 
					 "bytes",
 | 
				
			||||||
 "io-uring",
 | 
					 | 
				
			||||||
 "libc",
 | 
					 "libc",
 | 
				
			||||||
 "mio",
 | 
					 "mio",
 | 
				
			||||||
 "parking_lot",
 | 
					 "parking_lot",
 | 
				
			||||||
 "pin-project-lite",
 | 
					 "pin-project-lite",
 | 
				
			||||||
 "signal-hook-registry",
 | 
					 "signal-hook-registry",
 | 
				
			||||||
 "slab",
 | 
					 "socket2",
 | 
				
			||||||
 "socket2 0.6.0",
 | 
					 | 
				
			||||||
 "tokio-macros",
 | 
					 "tokio-macros",
 | 
				
			||||||
 "windows-sys 0.59.0",
 | 
					 "windows-sys 0.52.0",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -3754,7 +3696,7 @@ version = "0.6.6"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
 | 
					checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bitflags",
 | 
					 "bitflags 2.9.1",
 | 
				
			||||||
 "bytes",
 | 
					 "bytes",
 | 
				
			||||||
 "futures-util",
 | 
					 "futures-util",
 | 
				
			||||||
 "http 1.3.1",
 | 
					 "http 1.3.1",
 | 
				
			||||||
@@ -3864,14 +3806,13 @@ checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "url"
 | 
					name = "url"
 | 
				
			||||||
version = "2.5.7"
 | 
					version = "2.5.4"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
 | 
					checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "form_urlencoded",
 | 
					 "form_urlencoded",
 | 
				
			||||||
 "idna",
 | 
					 "idna",
 | 
				
			||||||
 "percent-encoding",
 | 
					 "percent-encoding",
 | 
				
			||||||
 "serde",
 | 
					 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -3894,14 +3835,12 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "uuid"
 | 
					name = "uuid"
 | 
				
			||||||
version = "1.17.0"
 | 
					version = "1.16.0"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d"
 | 
					checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "getrandom 0.3.3",
 | 
					 "getrandom 0.3.3",
 | 
				
			||||||
 "js-sys",
 | 
					 | 
				
			||||||
 "serde",
 | 
					 "serde",
 | 
				
			||||||
 "wasm-bindgen",
 | 
					 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -3941,9 +3880,9 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "virt"
 | 
					name = "virt"
 | 
				
			||||||
version = "0.4.3"
 | 
					version = "0.4.2"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "b191deb9f351999588bbd289fd40d5ca0076fd9784d1a1a0af531ec8684093c9"
 | 
					checksum = "77a05f77c836efa9be343b5419663cf829d75203b813579993cdd9c44f51767e"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc",
 | 
					 "libc",
 | 
				
			||||||
 "uuid",
 | 
					 "uuid",
 | 
				
			||||||
@@ -3952,9 +3891,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "virt-sys"
 | 
					name = "virt-sys"
 | 
				
			||||||
version = "0.3.1"
 | 
					version = "0.3.0"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "8762dc8eb11b230e7ed6c94152910f8382a128eed861af21047a203e3e2ebb00"
 | 
					checksum = "c504e459878f09177f41bf2f8bb3e9a8af4fca7a09e73152fee02535d501601c"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc",
 | 
					 "libc",
 | 
				
			||||||
 "pkg-config",
 | 
					 "pkg-config",
 | 
				
			||||||
@@ -4005,7 +3944,7 @@ dependencies = [
 | 
				
			|||||||
 "serde_yml",
 | 
					 "serde_yml",
 | 
				
			||||||
 "sysinfo",
 | 
					 "sysinfo",
 | 
				
			||||||
 "tempfile",
 | 
					 "tempfile",
 | 
				
			||||||
 "thiserror 2.0.17",
 | 
					 "thiserror 2.0.12",
 | 
				
			||||||
 "tokio",
 | 
					 "tokio",
 | 
				
			||||||
 "url",
 | 
					 "url",
 | 
				
			||||||
 "uuid",
 | 
					 "uuid",
 | 
				
			||||||
@@ -4143,9 +4082,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "weezl"
 | 
					name = "weezl"
 | 
				
			||||||
version = "0.1.10"
 | 
					version = "0.1.8"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3"
 | 
					checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "winapi"
 | 
					name = "winapi"
 | 
				
			||||||
@@ -4187,7 +4126,7 @@ dependencies = [
 | 
				
			|||||||
 "windows-collections",
 | 
					 "windows-collections",
 | 
				
			||||||
 "windows-core",
 | 
					 "windows-core",
 | 
				
			||||||
 "windows-future",
 | 
					 "windows-future",
 | 
				
			||||||
 "windows-link 0.1.1",
 | 
					 "windows-link",
 | 
				
			||||||
 "windows-numerics",
 | 
					 "windows-numerics",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -4208,7 +4147,7 @@ checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "windows-implement",
 | 
					 "windows-implement",
 | 
				
			||||||
 "windows-interface",
 | 
					 "windows-interface",
 | 
				
			||||||
 "windows-link 0.1.1",
 | 
					 "windows-link",
 | 
				
			||||||
 "windows-result",
 | 
					 "windows-result",
 | 
				
			||||||
 "windows-strings 0.4.2",
 | 
					 "windows-strings 0.4.2",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -4220,7 +4159,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			|||||||
checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
 | 
					checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "windows-core",
 | 
					 "windows-core",
 | 
				
			||||||
 "windows-link 0.1.1",
 | 
					 "windows-link",
 | 
				
			||||||
 "windows-threading",
 | 
					 "windows-threading",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -4252,12 +4191,6 @@ version = "0.1.1"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
 | 
					checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "windows-link"
 | 
					 | 
				
			||||||
version = "0.2.0"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "windows-numerics"
 | 
					name = "windows-numerics"
 | 
				
			||||||
version = "0.2.0"
 | 
					version = "0.2.0"
 | 
				
			||||||
@@ -4265,7 +4198,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			|||||||
checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
 | 
					checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "windows-core",
 | 
					 "windows-core",
 | 
				
			||||||
 "windows-link 0.1.1",
 | 
					 "windows-link",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -4285,7 +4218,7 @@ version = "0.3.4"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
 | 
					checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "windows-link 0.1.1",
 | 
					 "windows-link",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -4294,7 +4227,7 @@ version = "0.3.1"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319"
 | 
					checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "windows-link 0.1.1",
 | 
					 "windows-link",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -4303,7 +4236,7 @@ version = "0.4.2"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
 | 
					checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "windows-link 0.1.1",
 | 
					 "windows-link",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -4362,7 +4295,7 @@ version = "0.1.0"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
 | 
					checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "windows-link 0.1.1",
 | 
					 "windows-link",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -4476,7 +4409,7 @@ version = "0.39.0"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
 | 
					checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bitflags",
 | 
					 "bitflags 2.9.1",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@@ -4605,9 +4538,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "zip"
 | 
					name = "zip"
 | 
				
			||||||
version = "4.3.0"
 | 
					version = "4.1.0"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "9aed4ac33e8eb078c89e6cbb1d5c4c7703ec6d299fc3e7c3695af8f8b423468b"
 | 
					checksum = "af7dcdb4229c0e79c2531a24de7726a0e980417a74fb4d030a35f535665439a0"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "aes",
 | 
					 "aes",
 | 
				
			||||||
 "arbitrary",
 | 
					 "arbitrary",
 | 
				
			||||||
@@ -4622,7 +4555,6 @@ dependencies = [
 | 
				
			|||||||
 "liblzma",
 | 
					 "liblzma",
 | 
				
			||||||
 "memchr",
 | 
					 "memchr",
 | 
				
			||||||
 "pbkdf2",
 | 
					 "pbkdf2",
 | 
				
			||||||
 "ppmd-rust",
 | 
					 | 
				
			||||||
 "sha1",
 | 
					 "sha1",
 | 
				
			||||||
 "time",
 | 
					 "time",
 | 
				
			||||||
 "zeroize",
 | 
					 "zeroize",
 | 
				
			||||||
@@ -4693,9 +4625,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "zune-jpeg"
 | 
					name = "zune-jpeg"
 | 
				
			||||||
version = "0.4.21"
 | 
					version = "0.4.14"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713"
 | 
					checksum = "99a5bab8d7dedf81405c4bb1f2b83ea057643d9cb28778cea9eecddeedd2e028"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "zune-core",
 | 
					 "zune-core",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,9 +6,9 @@ edition = "2024"
 | 
				
			|||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 | 
					# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[dependencies]
 | 
					[dependencies]
 | 
				
			||||||
log = "0.4.28"
 | 
					log = "0.4.27"
 | 
				
			||||||
env_logger = "0.11.8"
 | 
					env_logger = "0.11.8"
 | 
				
			||||||
clap = { version = "4.5.51", features = ["derive", "env"] }
 | 
					clap = { version = "4.5.41", features = ["derive", "env"] }
 | 
				
			||||||
light-openid = { version = "1.0.4", features = ["crypto-wrapper"] }
 | 
					light-openid = { version = "1.0.4", features = ["crypto-wrapper"] }
 | 
				
			||||||
lazy_static = "1.5.0"
 | 
					lazy_static = "1.5.0"
 | 
				
			||||||
actix = "0.13.5"
 | 
					actix = "0.13.5"
 | 
				
			||||||
@@ -17,27 +17,27 @@ actix-remote-ip = "0.1.0"
 | 
				
			|||||||
actix-session = { version = "0.10.1", features = ["cookie-session"] }
 | 
					actix-session = { version = "0.10.1", features = ["cookie-session"] }
 | 
				
			||||||
actix-identity = "0.8.0"
 | 
					actix-identity = "0.8.0"
 | 
				
			||||||
actix-cors = "0.7.1"
 | 
					actix-cors = "0.7.1"
 | 
				
			||||||
actix-files = "0.6.8"
 | 
					actix-files = "0.6.6"
 | 
				
			||||||
actix-ws = "0.3.0"
 | 
					actix-ws = "0.3.0"
 | 
				
			||||||
actix-http = "3.11.2"
 | 
					actix-http = "3.11.0"
 | 
				
			||||||
serde = { version = "1.0.219", features = ["derive"] }
 | 
					serde = { version = "1.0.219", features = ["derive"] }
 | 
				
			||||||
serde_json = "1.0.145"
 | 
					serde_json = "1.0.141"
 | 
				
			||||||
serde_yml = "0.0.12"
 | 
					serde_yml = "0.0.12"
 | 
				
			||||||
quick-xml = { version = "0.38.3", features = ["serialize", "overlapped-lists"] }
 | 
					quick-xml = { version = "0.38.0", features = ["serialize", "overlapped-lists"] }
 | 
				
			||||||
futures-util = "0.3.31"
 | 
					futures-util = "0.3.31"
 | 
				
			||||||
anyhow = "1.0.100"
 | 
					anyhow = "1.0.98"
 | 
				
			||||||
actix-multipart = "0.7.2"
 | 
					actix-multipart = "0.7.2"
 | 
				
			||||||
tempfile = "3.20.0"
 | 
					tempfile = "3.20.0"
 | 
				
			||||||
reqwest = { version = "0.12.24", features = ["stream"] }
 | 
					reqwest = { version = "0.12.22", features = ["stream"] }
 | 
				
			||||||
url = "2.5.7"
 | 
					url = "2.5.4"
 | 
				
			||||||
virt = "0.4.3"
 | 
					virt = "0.4.2"
 | 
				
			||||||
sysinfo = { version = "0.36.1", features = ["serde"] }
 | 
					sysinfo = { version = "0.35.2", features = ["serde"] }
 | 
				
			||||||
uuid = { version = "1.17.0", features = ["v4", "serde"] }
 | 
					uuid = { version = "1.16.0", features = ["v4", "serde"] }
 | 
				
			||||||
lazy-regex = "3.4.1"
 | 
					lazy-regex = "3.4.1"
 | 
				
			||||||
thiserror = "2.0.17"
 | 
					thiserror = "2.0.12"
 | 
				
			||||||
image = "0.25.8"
 | 
					image = "0.25.6"
 | 
				
			||||||
rand = "0.9.2"
 | 
					rand = "0.9.2"
 | 
				
			||||||
tokio = { version = "1.47.1", features = ["rt", "time", "macros"] }
 | 
					tokio = { version = "1.45.0", features = ["rt", "time", "macros"] }
 | 
				
			||||||
futures = "0.3.31"
 | 
					futures = "0.3.31"
 | 
				
			||||||
ipnetwork = { version = "0.21.1", features = ["serde"] }
 | 
					ipnetwork = { version = "0.21.1", features = ["serde"] }
 | 
				
			||||||
num = "0.4.3"
 | 
					num = "0.4.3"
 | 
				
			||||||
@@ -45,5 +45,5 @@ rust-embed = { version = "8.7.2", features = ["mime-guess"] }
 | 
				
			|||||||
dotenvy = "0.15.7"
 | 
					dotenvy = "0.15.7"
 | 
				
			||||||
nix = { version = "0.30.1", features = ["net"] }
 | 
					nix = { version = "0.30.1", features = ["net"] }
 | 
				
			||||||
basic-jwt = "0.3.0"
 | 
					basic-jwt = "0.3.0"
 | 
				
			||||||
zip = "4.3.0"
 | 
					zip = "4.1.0"
 | 
				
			||||||
chrono = "0.4.42"
 | 
					chrono = "0.4.41"
 | 
				
			||||||
@@ -104,11 +104,11 @@ impl Token {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    /// Check whether a token is expired or not
 | 
					    /// Check whether a token is expired or not
 | 
				
			||||||
    pub fn is_expired(&self) -> bool {
 | 
					    pub fn is_expired(&self) -> bool {
 | 
				
			||||||
        if let Some(max_inactivity) = self.max_inactivity
 | 
					        if let Some(max_inactivity) = self.max_inactivity {
 | 
				
			||||||
            && max_inactivity + self.last_used < time()
 | 
					            if max_inactivity + self.last_used < time() {
 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
                return true;
 | 
					                return true;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        false
 | 
					        false
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -188,11 +188,11 @@ impl NewToken {
 | 
				
			|||||||
            return Some(err);
 | 
					            return Some(err);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if let Some(t) = self.max_inactivity
 | 
					        if let Some(t) = self.max_inactivity {
 | 
				
			||||||
            && t < 3600
 | 
					            if t < 3600 {
 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
                return Some("API tokens shall be valid for at least 1 hour!");
 | 
					                return Some("API tokens shall be valid for at least 1 hour!");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        None
 | 
					        None
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,13 +31,13 @@ pub async fn upload(MultipartForm(mut form): MultipartForm<UploadDiskImageForm>)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Check file mime type
 | 
					    // Check file mime type
 | 
				
			||||||
    if let Some(mime_type) = file.content_type
 | 
					    if let Some(mime_type) = file.content_type {
 | 
				
			||||||
        && !constants::ALLOWED_DISK_IMAGES_MIME_TYPES.contains(&mime_type.as_ref())
 | 
					        if !constants::ALLOWED_DISK_IMAGES_MIME_TYPES.contains(&mime_type.as_ref()) {
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
            return Ok(HttpResponse::BadRequest().json(format!(
 | 
					            return Ok(HttpResponse::BadRequest().json(format!(
 | 
				
			||||||
                "Unsupported file type for disk upload: {mime_type}"
 | 
					                "Unsupported file type for disk upload: {mime_type}"
 | 
				
			||||||
            )));
 | 
					            )));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Extract and check file name
 | 
					    // Extract and check file name
 | 
				
			||||||
    let Some(file_name) = file.file_name else {
 | 
					    let Some(file_name) = file.file_name else {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,12 +31,12 @@ pub async fn upload_file(MultipartForm(mut form): MultipartForm<UploadIsoForm>)
 | 
				
			|||||||
        return Ok(HttpResponse::BadRequest().json("File is too large!"));
 | 
					        return Ok(HttpResponse::BadRequest().json("File is too large!"));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if let Some(m) = &file.content_type
 | 
					    if let Some(m) = &file.content_type {
 | 
				
			||||||
        && !constants::ALLOWED_ISO_MIME_TYPES.contains(&m.to_string().as_str())
 | 
					        if !constants::ALLOWED_ISO_MIME_TYPES.contains(&m.to_string().as_str()) {
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
            log::error!("Uploaded ISO file has an invalid mimetype!");
 | 
					            log::error!("Uploaded ISO file has an invalid mimetype!");
 | 
				
			||||||
            return Ok(HttpResponse::BadRequest().json("Invalid mimetype!"));
 | 
					            return Ok(HttpResponse::BadRequest().json("Invalid mimetype!"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let file_name = match &file.file_name {
 | 
					    let file_name = match &file.file_name {
 | 
				
			||||||
        None => {
 | 
					        None => {
 | 
				
			||||||
@@ -87,17 +87,17 @@ pub async fn upload_from_url(req: web::Json<DownloadFromURLReq>) -> HttpResult {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    let response = reqwest::get(&req.url).await?;
 | 
					    let response = reqwest::get(&req.url).await?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if let Some(len) = response.content_length()
 | 
					    if let Some(len) = response.content_length() {
 | 
				
			||||||
        && len > constants::ISO_MAX_SIZE.as_bytes() as u64
 | 
					        if len > constants::ISO_MAX_SIZE.as_bytes() as u64 {
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
            return Ok(HttpResponse::BadRequest().json("File is too large!"));
 | 
					            return Ok(HttpResponse::BadRequest().json("File is too large!"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if let Some(ct) = response.headers().get("content-type")
 | 
					    if let Some(ct) = response.headers().get("content-type") {
 | 
				
			||||||
        && !constants::ALLOWED_ISO_MIME_TYPES.contains(&ct.to_str()?)
 | 
					        if !constants::ALLOWED_ISO_MIME_TYPES.contains(&ct.to_str()?) {
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
            return Ok(HttpResponse::BadRequest().json("Invalid file mimetype!"));
 | 
					            return Ok(HttpResponse::BadRequest().json("Invalid file mimetype!"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let mut stream = response.bytes_stream();
 | 
					    let mut stream = response.bytes_stream();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -128,22 +128,22 @@ impl FromRequest for ApiAuthExtractor {
 | 
				
			|||||||
                ));
 | 
					                ));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if let Some(ip) = token.ip_restriction
 | 
					            if let Some(ip) = token.ip_restriction {
 | 
				
			||||||
                && !ip.contains(remote_ip.0)
 | 
					                if !ip.contains(remote_ip.0) {
 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                    log::error!(
 | 
					                    log::error!(
 | 
				
			||||||
                        "Attempt to use a token for an unauthorized IP! {remote_ip:?} token_id={}",
 | 
					                        "Attempt to use a token for an unauthorized IP! {remote_ip:?} token_id={}",
 | 
				
			||||||
                        token.id.0
 | 
					                        token.id.0
 | 
				
			||||||
                    );
 | 
					                    );
 | 
				
			||||||
                    return Err(ErrorUnauthorized("Token cannot be used from this IP!"));
 | 
					                    return Err(ErrorUnauthorized("Token cannot be used from this IP!"));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if token.should_update_last_activity()
 | 
					            if token.should_update_last_activity() {
 | 
				
			||||||
                && let Err(e) = api_tokens::refresh_last_used(token.id).await
 | 
					                if let Err(e) = api_tokens::refresh_last_used(token.id).await {
 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                    log::error!("Could not update token last activity! {e}");
 | 
					                    log::error!("Could not update token last activity! {e}");
 | 
				
			||||||
                    return Err(ErrorBadRequest("Couldn't refresh token last activity!"));
 | 
					                    return Err(ErrorBadRequest("Couldn't refresh token last activity!"));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Ok(ApiAuthExtractor { token, claims })
 | 
					            Ok(ApiAuthExtractor { token, claims })
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -96,29 +96,29 @@ impl NetworkInfo {
 | 
				
			|||||||
            return Err(StructureExtraction("network name is invalid!").into());
 | 
					            return Err(StructureExtraction("network name is invalid!").into());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if let Some(n) = &self.title
 | 
					        if let Some(n) = &self.title {
 | 
				
			||||||
            && n.contains('\n')
 | 
					            if n.contains('\n') {
 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
                return Err(StructureExtraction("Network title contain newline char!").into());
 | 
					                return Err(StructureExtraction("Network title contain newline char!").into());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if let Some(dev) = &self.device
 | 
					        if let Some(dev) = &self.device {
 | 
				
			||||||
            && !regex!("^[a-zA-Z0-9]+$").is_match(dev)
 | 
					            if !regex!("^[a-zA-Z0-9]+$").is_match(dev) {
 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
                return Err(StructureExtraction("Network device name is invalid!").into());
 | 
					                return Err(StructureExtraction("Network device name is invalid!").into());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					 | 
				
			||||||
        if let Some(bridge) = &self.bridge_name
 | 
					 | 
				
			||||||
            && !regex!("^[a-zA-Z0-9]+$").is_match(bridge)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            return Err(StructureExtraction("Network bridge name is invalid!").into());
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if let Some(domain) = &self.domain
 | 
					        if let Some(bridge) = &self.bridge_name {
 | 
				
			||||||
            && !regex!("^[a-zA-Z0-9.]+$").is_match(domain)
 | 
					            if !regex!("^[a-zA-Z0-9]+$").is_match(bridge) {
 | 
				
			||||||
        {
 | 
					                return Err(StructureExtraction("Network bridge name is invalid!").into());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if let Some(domain) = &self.domain {
 | 
				
			||||||
 | 
					            if !regex!("^[a-zA-Z0-9.]+$").is_match(domain) {
 | 
				
			||||||
                return Err(StructureExtraction("Domain name is invalid!").into());
 | 
					                return Err(StructureExtraction("Domain name is invalid!").into());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let mut ips = Vec::with_capacity(2);
 | 
					        let mut ips = Vec::with_capacity(2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -303,17 +303,17 @@ impl NetworkInfo {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    /// Check if at least one NAT definition was specified on this interface
 | 
					    /// Check if at least one NAT definition was specified on this interface
 | 
				
			||||||
    pub fn has_nat_def(&self) -> bool {
 | 
					    pub fn has_nat_def(&self) -> bool {
 | 
				
			||||||
        if let Some(ipv4) = &self.ip_v4
 | 
					        if let Some(ipv4) = &self.ip_v4 {
 | 
				
			||||||
            && ipv4.nat.is_some()
 | 
					            if ipv4.nat.is_some() {
 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
                return true;
 | 
					                return true;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if let Some(ipv6) = &self.ip_v6
 | 
					        if let Some(ipv6) = &self.ip_v6 {
 | 
				
			||||||
            && ipv6.nat.is_some()
 | 
					            if ipv6.nat.is_some() {
 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
                return true;
 | 
					                return true;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        false
 | 
					        false
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,12 +43,14 @@ impl From<&String> for NetworkFilterMacAddressOrVar {
 | 
				
			|||||||
fn extract_mac_address_or_var(
 | 
					fn extract_mac_address_or_var(
 | 
				
			||||||
    n: &Option<NetworkFilterMacAddressOrVar>,
 | 
					    n: &Option<NetworkFilterMacAddressOrVar>,
 | 
				
			||||||
) -> anyhow::Result<Option<String>> {
 | 
					) -> anyhow::Result<Option<String>> {
 | 
				
			||||||
    if let Some(mac) = n
 | 
					    if let Some(mac) = n {
 | 
				
			||||||
        && !mac.is_valid()
 | 
					        if !mac.is_valid() {
 | 
				
			||||||
    {
 | 
					            return Err(NetworkFilterExtraction(format!(
 | 
				
			||||||
        return Err(
 | 
					                "Invalid mac address or variable! {}",
 | 
				
			||||||
            NetworkFilterExtraction(format!("Invalid mac address or variable! {}", mac.0)).into(),
 | 
					                mac.0
 | 
				
			||||||
        );
 | 
					            ))
 | 
				
			||||||
 | 
					            .into());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Ok(n.as_ref().map(|n| n.0.to_string()))
 | 
					    Ok(n.as_ref().map(|n| n.0.to_string()))
 | 
				
			||||||
@@ -81,35 +83,35 @@ impl<const V: usize> From<&String> for NetworkFilterIPOrVar<V> {
 | 
				
			|||||||
fn extract_ip_or_var<const V: usize>(
 | 
					fn extract_ip_or_var<const V: usize>(
 | 
				
			||||||
    n: &Option<NetworkFilterIPOrVar<V>>,
 | 
					    n: &Option<NetworkFilterIPOrVar<V>>,
 | 
				
			||||||
) -> anyhow::Result<Option<String>> {
 | 
					) -> anyhow::Result<Option<String>> {
 | 
				
			||||||
    if let Some(ip) = n
 | 
					    if let Some(ip) = n {
 | 
				
			||||||
        && !ip.is_valid()
 | 
					        if !ip.is_valid() {
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
            return Err(NetworkFilterExtraction(format!(
 | 
					            return Err(NetworkFilterExtraction(format!(
 | 
				
			||||||
                "Invalid IPv{V} address or variable! {}",
 | 
					                "Invalid IPv{V} address or variable! {}",
 | 
				
			||||||
                ip.0
 | 
					                ip.0
 | 
				
			||||||
            ))
 | 
					            ))
 | 
				
			||||||
            .into());
 | 
					            .into());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Ok(n.as_ref().map(|n| n.0.to_string()))
 | 
					    Ok(n.as_ref().map(|n| n.0.to_string()))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn extract_ip_mask<const V: usize>(n: Option<u8>) -> anyhow::Result<Option<u8>> {
 | 
					fn extract_ip_mask<const V: usize>(n: Option<u8>) -> anyhow::Result<Option<u8>> {
 | 
				
			||||||
    if let Some(mask) = n
 | 
					    if let Some(mask) = n {
 | 
				
			||||||
        && !net_utils::is_mask_valid(V, mask)
 | 
					        if !net_utils::is_mask_valid(V, mask) {
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
            return Err(NetworkFilterExtraction(format!("Invalid IPv{V} mask! {mask}")).into());
 | 
					            return Err(NetworkFilterExtraction(format!("Invalid IPv{V} mask! {mask}")).into());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Ok(n)
 | 
					    Ok(n)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn extract_nw_filter_comment(n: &Option<String>) -> anyhow::Result<Option<String>> {
 | 
					fn extract_nw_filter_comment(n: &Option<String>) -> anyhow::Result<Option<String>> {
 | 
				
			||||||
    if let Some(comment) = n
 | 
					    if let Some(comment) = n {
 | 
				
			||||||
        && (comment.len() > 256 || comment.contains('\"') || comment.contains('\n'))
 | 
					        if comment.len() > 256 || comment.contains('\"') || comment.contains('\n') {
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
            return Err(NetworkFilterExtraction(format!("Invalid comment! {comment}")).into());
 | 
					            return Err(NetworkFilterExtraction(format!("Invalid comment! {comment}")).into());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Ok(n.clone())
 | 
					    Ok(n.clone())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -867,10 +869,12 @@ impl NetworkFilter {
 | 
				
			|||||||
            );
 | 
					            );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if let Some(priority) = self.priority
 | 
					        if let Some(priority) = self.priority {
 | 
				
			||||||
            && !(-1000..=1000).contains(&priority)
 | 
					            if !(-1000..=1000).contains(&priority) {
 | 
				
			||||||
        {
 | 
					                return Err(
 | 
				
			||||||
            return Err(NetworkFilterExtraction("Network priority is invalid!".to_string()).into());
 | 
					                    NetworkFilterExtraction("Network priority is invalid!".to_string()).into(),
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for fref in &self.join_filters {
 | 
					        for fref in &self.join_filters {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -118,23 +118,23 @@ impl VMInfo {
 | 
				
			|||||||
            XMLUuid::new_random()
 | 
					            XMLUuid::new_random()
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if let Some(n) = &self.genid
 | 
					        if let Some(n) = &self.genid {
 | 
				
			||||||
            && !n.is_valid()
 | 
					            if !n.is_valid() {
 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
                return Err(StructureExtraction("VM genid is invalid!").into());
 | 
					                return Err(StructureExtraction("VM genid is invalid!").into());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					 | 
				
			||||||
        if let Some(n) = &self.title
 | 
					 | 
				
			||||||
            && n.contains('\n')
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            return Err(StructureExtraction("VM title contain newline char!").into());
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if let Some(group) = &self.group
 | 
					        if let Some(n) = &self.title {
 | 
				
			||||||
            && !regex!("^[a-zA-Z0-9]+$").is_match(&group.0)
 | 
					            if n.contains('\n') {
 | 
				
			||||||
        {
 | 
					                return Err(StructureExtraction("VM title contain newline char!").into());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if let Some(group) = &self.group {
 | 
				
			||||||
 | 
					            if !regex!("^[a-zA-Z0-9]+$").is_match(&group.0) {
 | 
				
			||||||
                return Err(StructureExtraction("VM group name is invalid!").into());
 | 
					                return Err(StructureExtraction("VM group name is invalid!").into());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if self.memory < constants::MIN_VM_MEMORY || self.memory > constants::MAX_VM_MEMORY {
 | 
					        if self.memory < constants::MIN_VM_MEMORY || self.memory > constants::MAX_VM_MEMORY {
 | 
				
			||||||
            return Err(StructureExtraction("VM memory is invalid!").into());
 | 
					            return Err(StructureExtraction("VM memory is invalid!").into());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -60,11 +60,11 @@ pub struct Nat<IPv> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
impl<IPv> Nat<IPv> {
 | 
					impl<IPv> Nat<IPv> {
 | 
				
			||||||
    pub fn check(&self) -> anyhow::Result<()> {
 | 
					    pub fn check(&self) -> anyhow::Result<()> {
 | 
				
			||||||
        if let NatSourceIP::Interface { name } = &self.host_ip
 | 
					        if let NatSourceIP::Interface { name } = &self.host_ip {
 | 
				
			||||||
            && !net_utils::is_net_interface_name_valid(name)
 | 
					            if !net_utils::is_net_interface_name_valid(name) {
 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
                return Err(NatDefError::InvalidNatDef("Invalid nat interface name!").into());
 | 
					                return Err(NatDefError::InvalidNatDef("Invalid nat interface name!").into());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if let NatHostPort::Range { start, end } = &self.host_port {
 | 
					        if let NatHostPort::Range { start, end } = &self.host_port {
 | 
				
			||||||
            if *start == 0 {
 | 
					            if *start == 0 {
 | 
				
			||||||
@@ -84,11 +84,11 @@ impl<IPv> Nat<IPv> {
 | 
				
			|||||||
            return Err(NatDefError::InvalidNatDef("Invalid guest port!").into());
 | 
					            return Err(NatDefError::InvalidNatDef("Invalid guest port!").into());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if let Some(comment) = &self.comment
 | 
					        if let Some(comment) = &self.comment {
 | 
				
			||||||
            && comment.len() > constants::NET_NAT_COMMENT_MAX_SIZE
 | 
					            if comment.len() > constants::NET_NAT_COMMENT_MAX_SIZE {
 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
                return Err(NatDefError::InvalidNatDef("Comment is too large!").into());
 | 
					                return Err(NatDefError::InvalidNatDef("Comment is too large!").into());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Ok(())
 | 
					        Ok(())
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1799
									
								
								virtweb_frontend/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1799
									
								
								virtweb_frontend/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -12,45 +12,45 @@
 | 
				
			|||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@emotion/react": "^11.14.0",
 | 
					    "@emotion/react": "^11.14.0",
 | 
				
			||||||
    "@emotion/styled": "^11.14.1",
 | 
					    "@emotion/styled": "^11.14.1",
 | 
				
			||||||
    "@fontsource/roboto": "^5.2.8",
 | 
					    "@fontsource/roboto": "^5.2.6",
 | 
				
			||||||
    "@mdi/js": "^7.4.47",
 | 
					    "@mdi/js": "^7.4.47",
 | 
				
			||||||
    "@mdi/react": "^1.6.1",
 | 
					    "@mdi/react": "^1.6.1",
 | 
				
			||||||
    "@monaco-editor/react": "^4.7.0",
 | 
					    "@monaco-editor/react": "^4.7.0",
 | 
				
			||||||
    "@mui/icons-material": "^7.3.4",
 | 
					    "@mui/icons-material": "^7.2.0",
 | 
				
			||||||
    "@mui/material": "^7.3.4",
 | 
					    "@mui/material": "^7.2.0",
 | 
				
			||||||
    "@mui/x-charts": "^8.16.0",
 | 
					    "@mui/x-charts": "^8.3.1",
 | 
				
			||||||
    "@mui/x-data-grid": "^8.11.3",
 | 
					    "@mui/x-data-grid": "^8.9.1",
 | 
				
			||||||
    "date-and-time": "^3.6.0",
 | 
					    "date-and-time": "^3.6.0",
 | 
				
			||||||
    "filesize": "^10.1.6",
 | 
					    "filesize": "^10.1.6",
 | 
				
			||||||
    "humanize-duration": "^3.33.1",
 | 
					    "humanize-duration": "^3.33.0",
 | 
				
			||||||
    "monaco-editor": "^0.52.2",
 | 
					    "monaco-editor": "^0.52.2",
 | 
				
			||||||
    "monaco-yaml": "^5.4.0",
 | 
					    "monaco-yaml": "^5.4.0",
 | 
				
			||||||
    "react": "^19.2.0",
 | 
					    "react": "^19.1.0",
 | 
				
			||||||
    "react-dom": "^19.2.0",
 | 
					    "react-dom": "^19.1.0",
 | 
				
			||||||
    "react-router-dom": "^7.9.5",
 | 
					    "react-router-dom": "^7.7.1",
 | 
				
			||||||
    "react-syntax-highlighter": "^15.6.6",
 | 
					    "react-syntax-highlighter": "^15.6.1",
 | 
				
			||||||
    "react-vnc": "^3.1.0",
 | 
					    "react-vnc": "^3.1.0",
 | 
				
			||||||
    "uuid": "^11.1.0",
 | 
					    "uuid": "^11.1.0",
 | 
				
			||||||
    "xml-formatter": "^3.6.6",
 | 
					    "xml-formatter": "^3.6.6",
 | 
				
			||||||
    "yaml": "^2.8.1"
 | 
					    "yaml": "^2.8.0"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "@eslint/js": "^9.35.0",
 | 
					    "@eslint/js": "^9.32.0",
 | 
				
			||||||
    "@types/humanize-duration": "^3.27.4",
 | 
					    "@types/humanize-duration": "^3.27.4",
 | 
				
			||||||
    "@types/jest": "^30.0.0",
 | 
					    "@types/jest": "^29.5.14",
 | 
				
			||||||
    "@types/react": "^19.2.2",
 | 
					    "@types/react": "^19.1.8",
 | 
				
			||||||
    "@types/react-dom": "^19.2.2",
 | 
					    "@types/react-dom": "^19.1.6",
 | 
				
			||||||
    "@types/react-syntax-highlighter": "^15.5.13",
 | 
					    "@types/react-syntax-highlighter": "^15.5.13",
 | 
				
			||||||
    "@types/uuid": "^10.0.0",
 | 
					    "@types/uuid": "^10.0.0",
 | 
				
			||||||
    "@vitejs/plugin-react": "^4.7.0",
 | 
					    "@vitejs/plugin-react": "^4.7.0",
 | 
				
			||||||
    "eslint": "^9.35.0",
 | 
					    "eslint": "^9.31.0",
 | 
				
			||||||
    "eslint-plugin-react-dom": "^1.53.1",
 | 
					    "eslint-plugin-react-dom": "^1.52.3",
 | 
				
			||||||
    "eslint-plugin-react-hooks": "^5.2.0",
 | 
					    "eslint-plugin-react-hooks": "^5.2.0",
 | 
				
			||||||
    "eslint-plugin-react-refresh": "^0.4.24",
 | 
					    "eslint-plugin-react-refresh": "^0.4.20",
 | 
				
			||||||
    "eslint-plugin-react-x": "^1.53.1",
 | 
					    "eslint-plugin-react-x": "^1.52.3",
 | 
				
			||||||
    "globals": "^16.3.0",
 | 
					    "globals": "^16.3.0",
 | 
				
			||||||
    "typescript": "^5.9.3",
 | 
					    "typescript": "^5.8.3",
 | 
				
			||||||
    "typescript-eslint": "^8.43.0",
 | 
					    "typescript-eslint": "^8.38.0",
 | 
				
			||||||
    "vite": "^6.3.6"
 | 
					    "vite": "^6.3.5"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user