From 4bc0d697dc7ab8d45260a367d029c03bf347ac3d Mon Sep 17 00:00:00 2001 From: futile Date: Wed, 26 Mar 2025 11:02:25 +0000 Subject: [PATCH] initial commit --- .gitignore | 2 + Cargo.lock | 4236 +++++++++++++++++++++++++++++++++ Cargo.toml | 27 + assets/icon.ico | Bin 0 -> 202092 bytes assets/icon.png | Bin 0 -> 37730 bytes build.rs | 7 + src/features/anti_afk.rs | 42 + src/features/empty_session.rs | 60 + src/features/force_close.rs | 32 + src/features/launch.rs | 55 + src/features/mod.rs | 4 + src/gui.rs | 177 ++ src/main.rs | 9 + src/util.rs | 40 + 14 files changed, 4691 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 assets/icon.ico create mode 100644 assets/icon.png create mode 100644 build.rs create mode 100644 src/features/anti_afk.rs create mode 100644 src/features/empty_session.rs create mode 100644 src/features/force_close.rs create mode 100644 src/features/launch.rs create mode 100644 src/features/mod.rs create mode 100644 src/gui.rs create mode 100644 src/main.rs create mode 100644 src/util.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9026c77 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +.vscode diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..34fa71a --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,4236 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ab_glyph" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" + +[[package]] +name = "accesskit" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d3b8f9bae46a948369bc4a03e815d4ed6d616bd00de4051133a5019dc31c5a" + +[[package]] +name = "accesskit_atspi_common" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c5dd55e6e94949498698daf4d48fb5659e824d7abec0d394089656ceaf99d4f" +dependencies = [ + "accesskit", + "accesskit_consumer", + "atspi-common", + "serde", + "thiserror 1.0.69", + "zvariant", +] + +[[package]] +name = "accesskit_consumer" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f47983a1084940ba9a39c077a8c63e55c619388be5476ac04c804cfbd1e63459" +dependencies = [ + "accesskit", + "hashbrown", + "immutable-chunkmap", +] + +[[package]] +name = "accesskit_macos" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7329821f3bd1101e03a7d2e03bd339e3ac0dc64c70b4c9f9ae1949e3ba8dece1" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown", + "objc2 0.5.2", + "objc2-app-kit", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "accesskit_unix" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcee751cc20d88678c33edaf9c07e8b693cd02819fe89053776f5313492273f5" +dependencies = [ + "accesskit", + "accesskit_atspi_common", + "async-channel", + "async-executor", + "async-task", + "atspi", + "futures-lite", + "futures-util", + "serde", + "zbus", +] + +[[package]] +name = "accesskit_windows" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24fcd5d23d70670992b823e735e859374d694a3d12bfd8dd32bd3bd8bedb5d81" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown", + "paste", + "static_assertions", + "windows 0.58.0", + "windows-core 0.58.0", +] + +[[package]] +name = "accesskit_winit" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6a48dad5530b6deb9fc7a52cc6c3bf72cdd9eb8157ac9d32d69f2427a5e879" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_unix", + "accesskit_windows", + "raw-window-handle", + "winit", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom 0.2.15", + "once_cell", + "version_check", + "zerocopy 0.7.35", +] + +[[package]] +name = "android-activity" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +dependencies = [ + "android-properties", + "bitflags 2.9.0", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys 0.6.0+11769913", + "num_enum", + "thiserror 1.0.69", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "arboard" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df099ccb16cd014ff054ac1bf392c67feeef57164b05c42f037cd40f5d4357f4" +dependencies = [ + "clipboard-win", + "core-graphics", + "image", + "log", + "objc2 0.5.2", + "objc2-app-kit", + "objc2-foundation 0.2.2", + "parking_lot", + "windows-sys 0.48.0", + "x11rb", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + +[[package]] +name = "ash" +version = "0.38.0+1.3.281" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" +dependencies = [ + "libloading", +] + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-io" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix 0.38.44", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix 0.38.44", + "tracing", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "async-signal" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 0.38.44", + "signal-hook-registry", + "slab", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atspi" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be534b16650e35237bb1ed189ba2aab86ce65e88cc84c66f4935ba38575cecbf" +dependencies = [ + "atspi-common", + "atspi-connection", + "atspi-proxies", +] + +[[package]] +name = "atspi-common" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1909ed2dc01d0a17505d89311d192518507e8a056a48148e3598fef5e7bb6ba7" +dependencies = [ + "enumflags2", + "serde", + "static_assertions", + "zbus", + "zbus-lockstep", + "zbus-lockstep-macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "atspi-connection" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "430c5960624a4baaa511c9c0fcc2218e3b58f5dbcc47e6190cafee344b873333" +dependencies = [ + "atspi-common", + "atspi-proxies", + "futures-lite", + "zbus", +] + +[[package]] +name = "atspi-proxies" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e6c5de3e524cf967569722446bcd458d5032348554d9a17d7d72b041ab7496" +dependencies = [ + "atspi-common", + "serde", + "zbus", + "zvariant", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" +dependencies = [ + "serde", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2 0.5.2", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + +[[package]] +name = "bytemuck" +version = "1.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ff22c2722516255d1823ce3cc4bc0b154dbc9364be5c905d6baa6eccbbc8774" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "calloop" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" +dependencies = [ + "bitflags 2.9.0", + "log", + "polling", + "rustix 0.38.44", + "slab", + "thiserror 1.0.69", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" +dependencies = [ + "calloop", + "rustix 0.38.44", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "catppuccin-egui" +version = "5.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a93c74882fe7e6b16089cc70122af492e16b76016d3ed2af9b0c4b6a8bca0ab0" +dependencies = [ + "egui", +] + +[[package]] +name = "cc" +version = "1.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cgl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + +[[package]] +name = "clipboard-win" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" +dependencies = [ + "error-code", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[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 = "cursor-icon" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading", +] + +[[package]] +name = "document-features" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +dependencies = [ + "litrs", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" + +[[package]] +name = "ecolor" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc4feb366740ded31a004a0e4452fbf84e80ef432ecf8314c485210229672fd1" +dependencies = [ + "bytemuck", + "emath", +] + +[[package]] +name = "eframe" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0dfe0859f3fb1bc6424c57d41e10e9093fe938f426b691e42272c2f336d915c" +dependencies = [ + "ahash", + "bytemuck", + "document-features", + "egui", + "egui-wgpu", + "egui-winit", + "egui_glow", + "glow", + "glutin", + "glutin-winit", + "image", + "js-sys", + "log", + "objc2 0.5.2", + "objc2-app-kit", + "objc2-foundation 0.2.2", + "parking_lot", + "percent-encoding", + "profiling", + "raw-window-handle", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "web-time", + "winapi", + "windows-sys 0.59.0", + "winit", +] + +[[package]] +name = "egui" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25dd34cec49ab55d85ebf70139cb1ccd29c977ef6b6ba4fe85489d6877ee9ef3" +dependencies = [ + "accesskit", + "ahash", + "bitflags 2.9.0", + "emath", + "epaint", + "log", + "nohash-hasher", + "profiling", +] + +[[package]] +name = "egui-wgpu" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d319dfef570f699b6e9114e235e862a2ddcf75f0d1a061de9e1328d92146d820" +dependencies = [ + "ahash", + "bytemuck", + "document-features", + "egui", + "epaint", + "log", + "profiling", + "thiserror 1.0.69", + "type-map", + "web-time", + "wgpu", + "winit", +] + +[[package]] +name = "egui-winit" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d9dfbb78fe4eb9c3a39ad528b90ee5915c252e77bbab9d4ebc576541ab67e13" +dependencies = [ + "accesskit_winit", + "ahash", + "arboard", + "bytemuck", + "egui", + "log", + "profiling", + "raw-window-handle", + "smithay-clipboard", + "web-time", + "webbrowser", + "winit", +] + +[[package]] +name = "egui_glow" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "910906e3f042ea6d2378ec12a6fd07698e14ddae68aed2d819ffe944a73aab9e" +dependencies = [ + "ahash", + "bytemuck", + "egui", + "glow", + "log", + "memoffset", + "profiling", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "emath" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e4cadcff7a5353ba72b7fea76bf2122b5ebdbc68e8155aa56dfdea90083fe1b" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "epaint" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fcc0f5a7c613afd2dee5e4b30c3e6acafb8ad6f0edb06068811f708a67c562" +dependencies = [ + "ab_glyph", + "ahash", + "bytemuck", + "ecolor", + "emath", + "epaint_default_fonts", + "log", + "nohash-hasher", + "parking_lot", + "profiling", +] + +[[package]] +name = "epaint_default_fonts" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7e7a64c02cf7a5b51e745a9e45f60660a286f151c238b9d397b3e923f5082f" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "error-code" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" + +[[package]] +name = "event-listener" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +dependencies = [ + "libc", + "windows-targets 0.48.5", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "glow" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glutin" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03642b8b0cce622392deb0ee3e88511f75df2daac806102597905c3ea1974848" +dependencies = [ + "bitflags 2.9.0", + "cfg_aliases", + "cgl", + "core-foundation 0.9.4", + "dispatch", + "glutin_egl_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "libloading", + "objc2 0.5.2", + "objc2-app-kit", + "objc2-foundation 0.2.2", + "once_cell", + "raw-window-handle", + "wayland-sys", + "windows-sys 0.52.0", + "x11-dl", +] + +[[package]] +name = "glutin-winit" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" +dependencies = [ + "cfg_aliases", + "glutin", + "raw-window-handle", + "winit", +] + +[[package]] +name = "glutin_egl_sys" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" +dependencies = [ + "gl_generator", + "windows-sys 0.52.0", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" +dependencies = [ + "gl_generator", + "x11-dl", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "gpu-alloc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +dependencies = [ + "bitflags 2.9.0", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +dependencies = [ + "bitflags 2.9.0", +] + +[[package]] +name = "gpu-descriptor" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf29e94d6d243368b7a56caa16bc213e4f9f8ed38c4d9557069527b5d5281ca" +dependencies = [ + "bitflags 2.9.0", + "gpu-descriptor-types", + "hashbrown", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" +dependencies = [ + "bitflags 2.9.0", +] + +[[package]] +name = "gta-tools" +version = "0.1.0" +dependencies = [ + "catppuccin-egui", + "eframe", + "image", + "open", + "static_vcruntime", + "sysinfo", + "windows 0.61.1", + "winreg", + "winresource", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "foldhash", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "image" +version = "0.25.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" +dependencies = [ + "bytemuck", + "byteorder-lite", + "num-traits", + "png", + "tiff", +] + +[[package]] +name = "immutable-chunkmap" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f97096f508d54f8f8ab8957862eee2ccd628847b6217af1a335e1c44dee578" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "indexmap" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] +name = "jpeg-decoder" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "khronos-egl" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading", + "pkg-config", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "libc" +version = "0.2.171" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" + +[[package]] +name = "libloading" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.9.0", + "libc", + "redox_syscall 0.5.10", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413" + +[[package]] +name = "litemap" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" + +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memmap2" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metal" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" +dependencies = [ + "bitflags 2.9.0", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", + "paste", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "naga" +version = "24.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" +dependencies = [ + "arrayvec", + "bit-set", + "bitflags 2.9.0", + "cfg_aliases", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "rustc-hash", + "spirv", + "strum", + "termcolor", + "thiserror 2.0.12", + "unicode-xid", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.9.0", + "jni-sys", + "log", + "ndk-sys 0.6.0+11769913", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.9.0", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3531f65190d9cff863b77a99857e74c314dd16bf56c538c4b57c7cbc3f3a6e59" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.9.0", + "block2", + "libc", + "objc2 0.5.2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation 0.2.2", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.9.0", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.9.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-contacts", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.9.0", + "block2", + "dispatch", + "libc", + "objc2 0.5.2", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a21c6c9014b82c39515db5b396f91645182611c97d24637cf56ac01e5f8d998" +dependencies = [ + "bitflags 2.9.0", + "objc2 0.6.0", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-app-kit", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.9.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.9.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.9.0", + "block2", + "objc2 0.5.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation 0.2.2", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.9.0", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "once_cell" +version = "1.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" + +[[package]] +name = "open" +version = "5.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2483562e62ea94312f3576a7aca397306df7990b8d89033e18766744377ef95" +dependencies = [ + "is-wsl", + "libc", + "pathdiff", +] + +[[package]] +name = "orbclient" +version = "0.3.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" +dependencies = [ + "libredox", +] + +[[package]] +name = "ordered-float" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "num-traits", +] + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.10", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 0.38.44", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy 0.8.24", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" + +[[package]] +name = "quick-xml" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "quick-xml" +version = "0.37.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "165859e9e55f79d67b96c5d96f4e88b6f2695a1972849c15a6a3f5c59fc2c003" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" +dependencies = [ + "bitflags 2.9.0", +] + +[[package]] +name = "renderdoc-sys" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e56a18552996ac8d29ecc3b190b4fdbb2d91ca4ec396de7bbffaf43f3d637e96" +dependencies = [ + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.9.3", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustversion" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sctk-adwaita" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit", + "tiny-skia", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" + +[[package]] +name = "smithay-client-toolkit" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" +dependencies = [ + "bitflags 2.9.0", + "calloop", + "calloop-wayland-source", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 0.38.44", + "thiserror 1.0.69", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-clipboard" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846" +dependencies = [ + "libc", + "smithay-client-toolkit", + "wayland-backend", +] + +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + +[[package]] +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +dependencies = [ + "bitflags 2.9.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "static_vcruntime" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "954e3e877803def9dc46075bf4060147c55cd70db97873077232eae0269dc89b" + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "syn" +version = "2.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sysinfo" +version = "0.33.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01" +dependencies = [ + "core-foundation-sys", + "libc", + "memchr", + "ntapi", + "rayon", + "windows 0.57.0", +] + +[[package]] +name = "tempfile" +version = "3.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" +dependencies = [ + "fastrand", + "getrandom 0.3.2", + "once_cell", + "rustix 1.0.3", + "windows-sys 0.59.0", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tiff" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "toml" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", +] + +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" + +[[package]] +name = "type-map" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb68604048ff8fa93347f02441e4487594adc20bb8a084f9e564d2b827a0a9f" +dependencies = [ + "rustc-hash", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wayland-backend" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7208998eaa3870dad37ec8836979581506e0c5c64c20c9e79e9d2a10d6f47bf" +dependencies = [ + "cc", + "downcast-rs", + "rustix 0.38.44", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2120de3d33638aaef5b9f4472bff75f07c56379cf76ea320bd3a3d65ecaf73f" +dependencies = [ + "bitflags 2.9.0", + "rustix 0.38.44", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.9.0", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a93029cbb6650748881a00e4922b076092a6a08c11e7fbdb923f064b23968c5d" +dependencies = [ + "rustix 0.38.44", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0781cf46869b37e36928f7b432273c0995aa8aed9552c556fb18754420541efc" +dependencies = [ + "bitflags 2.9.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ccaacc76703fefd6763022ac565b590fcade92202492381c95b2edfdf7d46b3" +dependencies = [ + "bitflags 2.9.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248a02e6f595aad796561fa82d25601bd2c8c3b145b1c7453fc8f94c1a58f8b2" +dependencies = [ + "bitflags 2.9.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484" +dependencies = [ + "proc-macro2", + "quick-xml 0.37.2", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webbrowser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5df295f8451142f1856b1bd86a606dfe9587d439bc036e319c827700dbd555e" +dependencies = [ + "core-foundation 0.10.0", + "home", + "jni", + "log", + "ndk-context", + "objc2 0.6.0", + "objc2-foundation 0.3.0", + "url", + "web-sys", +] + +[[package]] +name = "weezl" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" + +[[package]] +name = "wgpu" +version = "24.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35904fb00ba2d2e0a4d002fcbbb6e1b89b574d272a50e5fc95f6e81cf281c245" +dependencies = [ + "arrayvec", + "bitflags 2.9.0", + "cfg_aliases", + "document-features", + "js-sys", + "log", + "parking_lot", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "24.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671c25545d479b47d3f0a8e373aceb2060b67c6eb841b24ac8c32348151c7a0c" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags 2.9.0", + "cfg_aliases", + "document-features", + "indexmap", + "log", + "naga", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle", + "rustc-hash", + "smallvec", + "thiserror 2.0.12", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-hal" +version = "24.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4317a17171dc20e6577bf606796794580accae0716a69edbc7388c86a3ec9f23" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bitflags 2.9.0", + "bytemuck", + "cfg_aliases", + "core-graphics-types", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-descriptor", + "js-sys", + "khronos-egl", + "libc", + "libloading", + "log", + "metal", + "naga", + "ndk-sys 0.5.0+25.2.9519653", + "objc", + "once_cell", + "ordered-float", + "parking_lot", + "profiling", + "raw-window-handle", + "renderdoc-sys", + "rustc-hash", + "smallvec", + "thiserror 2.0.12", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "windows 0.58.0", +] + +[[package]] +name = "wgpu-types" +version = "24.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" +dependencies = [ + "bitflags 2.9.0", + "js-sys", + "log", + "web-sys", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +dependencies = [ + "windows-core 0.57.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.61.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" +dependencies = [ + "windows-collections", + "windows-core 0.61.0", + "windows-future", + "windows-link", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.0", +] + +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement 0.57.0", + "windows-interface 0.57.0", + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +dependencies = [ + "windows-implement 0.60.0", + "windows-interface 0.59.1", + "windows-link", + "windows-result 0.3.2", + "windows-strings 0.4.0", +] + +[[package]] +name = "windows-future" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a1d6bbefcb7b60acd19828e1bc965da6fcf18a7e39490c5f8be71e54a19ba32" +dependencies = [ + "windows-core 0.61.0", + "windows-link", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.0", + "windows-link", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "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.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +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-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winit" +version = "0.30.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a809eacf18c8eca8b6635091543f02a5a06ddf3dad846398795460e6e0ae3cc0" +dependencies = [ + "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.9.0", + "block2", + "bytemuck", + "calloop", + "cfg_aliases", + "concurrent-queue", + "core-foundation 0.9.4", + "core-graphics", + "cursor-icon", + "dpi", + "js-sys", + "libc", + "memmap2", + "ndk", + "objc2 0.5.2", + "objc2-app-kit", + "objc2-foundation 0.2.2", + "objc2-ui-kit", + "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix 0.38.44", + "sctk-adwaita", + "smithay-client-toolkit", + "smol_str", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", + "web-sys", + "web-time", + "windows-sys 0.52.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", +] + +[[package]] +name = "winnow" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.55.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" +dependencies = [ + "cfg-if", + "windows-sys 0.59.0", +] + +[[package]] +name = "winresource" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba4a67c78ee5782c0c1cb41bebc7e12c6e79644daa1650ebbc1de5d5b08593f7" +dependencies = [ + "toml", + "version_check", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.0", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading", + "once_cell", + "rustix 0.38.44", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" + +[[package]] +name = "xcursor" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" + +[[package]] +name = "xdg-home" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.9.0", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" + +[[package]] +name = "xml-rs" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5b940ebc25896e71dd073bad2dbaa2abfe97b0a391415e22ad1326d9c54e3c4" + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zbus" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix", + "ordered-stream", + "rand", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "windows-sys 0.52.0", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus-lockstep" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca2c5dceb099bddaade154055c926bb8ae507a18756ba1d8963fd7b51d8ed1d" +dependencies = [ + "zbus_xml", + "zvariant", +] + +[[package]] +name = "zbus-lockstep-macros" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709ab20fc57cb22af85be7b360239563209258430bccf38d8b979c5a2ae3ecce" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "zbus-lockstep", + "zbus_xml", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" +dependencies = [ + "serde", + "static_assertions", + "zvariant", +] + +[[package]] +name = "zbus_xml" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3f374552b954f6abb4bd6ce979e6c9b38fb9d0cd7cc68a7d796e70c9f3a233" +dependencies = [ + "quick-xml 0.30.0", + "serde", + "static_assertions", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +dependencies = [ + "zerocopy-derive 0.8.24", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zvariant" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..d86049c --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "gta-tools" +version = "0.1.0" +edition = "2024" + +[dependencies] +catppuccin-egui = { version = "5.5.0", default-features = false, features = [ + "egui31", +] } +eframe = "0.31.1" +image = { version = "0.25.6", default-features = false } +open = "5.3.2" +sysinfo = "0.33.1" +windows = { version = "0.61.1", features = [ + "Win32_UI_Input_KeyboardAndMouse", + "Win32_System_Threading", +] } +winreg = "0.55.0" + +[build-dependencies] +static_vcruntime = "2.0.0" +winresource = "0.1.20" + +[profile.release] +strip = true +lto = true +codegen-units = 1 diff --git a/assets/icon.ico b/assets/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ab7946f4ab9775f84776764e772e95c2e7388565 GIT binary patch literal 202092 zcmeEP2Vhp!+5WN<_TD1_!rmK_kdQ$jKsFn~NPv)pECLy15dwj*_ZE<;h=QQFx7JZd zZEfwZR;;btYU{Sh^FPn|zMH1hg@T}R^lUiJN$<{N|$)=$Eo9waK#^*WPI`cQP;uHIGUTij& z#iOti~vvyHQ@!eCpjzqp^B-Un^ zzY{$nu3vn7yv^11n~6|RP+&WB=#VXSe%j>uv*vv<$0Z0wwlP={JRe0xMeDvRe{XMZ zTkF=X8x$26Ju=BR4EeTED6mB!xn3AngVM2zvKj9d;EzfY#CXZvs0!f zoty1E4Eau@kXvIk<_w>J^w>lc)N%etw)a@O$&>PemluG6pLKKk!cG; z;h^c*wR6|G3I1bHk-y}HenSSf>eZ{)g-O_yZgx&~MoPl$^9#IVP|zp}sda{9MS9V@ zb5oMH&Y3*(^X&1nk+U!-?azPyvw2^Mh@Jxm46qFuGNkq5!o`1>7d#Q`{8LfTE*1qL zGq9wjbib#UXY+#m{HG=i8HI|%vL{;jv~Jj@O`EDRDDRww3yafdr(omceC&wLN6C-` zR4yuge^SC!|DC&b*%sz5%1(%!fczJ<&w`a$IXwp}iC!jKi%Q=pD=K-bqN3t=DJdx@`2BmuIr(pu zEi8JgG`rxf@{+Q5R<2z6*KXaqwHq~RlyBIG5x!yJBYa0FjvDD39x=){V$A4{efsqA z@owwgdi3bgog-tTJB^Kv>J%9l-6<+Ms&n7IeLJ>q-`=M7{JPkilZ>ygudP+9R;G>A zPF5T^aG)LD|Dtg##XC3hYjx@zmc2mV~3z}y*)!8_magy-nzYLu7en@a} zaj`i&JKNf}ZEN~-GfkqGK6o(wA$|Jx32oT0VYf?_Jm(x+XlSU7?KOJSrcLkf-?#tY zix)3`lIb`7wmIh_^RLA;Z_i(phsmA7ad5}JuR=$JCFbPhn0fCa)2e!%bg)gFIML?k z=Qn=)&K;izwHv^>BNQ8Em!fp(k_Y)Bd&rLt^*ELuNJ~jYj8k8f+M=+y?L_R`dEMuO zhYXHm|F)_9FE$JvI@G56hlGU8*tTQ)zlXKzgGHP-i=85o$GLY~_DbXyvvb$Kx_0Xp!twaEbNjc|Y5)HHwup#` zlr7t~e&ye^C(Aw(i=9TJz$pT`ypMM2gDu6Y!8z}Grt{5<*VkmCKFQFca#iJX(C z1ls_Ub{^@IXB&yEMxznXWdLRkh{n$CJKk;Cs?`9kVc$1=`Q?|k*x1;G8#ix)e}isV z=oHQ}hqDeN*nfs&Bm2+6!-p`SPDkvn*o4G6NgKXz+I8xXNwV2|)~;Lo;^epqNbvGU zf%|CWIENwK7KqfQBd~w_p7Yo3z3$v7zYxp|nt&~vH~*EqM`!it?+RLTCQX`Dx^DeC zgtYF5vbK{@*eC{>ULlxc8-f)x7GcTKvL`t%j+QN1f44q4sfvAXwc6ne)ayJ0xyv|{B$n*(Q5Zzz^ zuHUxjd{j(y?gi~ogWuE*3k#dSW5-J6c$)bc$zmbVc*W)xvva+Xo_Uu_io^x+yW#zNi z@7?#w{E<_U*CHB=Tf|{Q$`b6`v-h7XR<3x0{PC$(t5&_XbLURXO`46RWb@W7U4fO0 z%TSS9g0hT!6wS>>!OZzciAliRgju-x=9@8o{P@FLwrqKE{rdHo9yJlO{GyQ-FcGOk zCLn1*3=(6eV(XTz;5#4BnlMEUUTrAC*Bzq6}5ZF(4pHsJUn`oK(#hE+q0QWL0)E_QKP`x;Ri?5!-z2=t*(-RP2>xd=J z(a3TO$C0i3z!=$97M~>fo9PR42M4EF5N}QrlNSQ>@@VPj3+i7qQ zwzhXIOYaig?)qgZCn6IrvhYp#y z-g@i#F=NIc%+?jf&SS|tljk>)d_Q^gdG$u%^zoBOOiFx+nO@4-whi|*FYLR1Kibu3 zjx6U9toIo13GDjdYApT-__irN7GtWF@qfBD)ZMWTq z(2!7!vh_fr^JvPVB4G9n+>_+m!jaH21m2BWBCe?)?mTq{<0p(i%{0HAY5k^5|ND6d z%4A;Nv2zF7do*L+DMynWjQK8d>@U)shhzV$?MO>cLl0XEtj}DEU3+$aL>?iG{KtQ% zb`ifcm-Oq`Z~2)!&cJ`DAI3WOLVypt7qv&Tis#t-b|+8$*Yz7Wpi_;O$g3Mk`Q>Q4EYE2;+k6;iIuFL) z)!VSFV);4BD!(ERh(5NK*jBOz8#ZoukLe9`?E9>wzwgzFV`%-IcixGC{RUuKv*9Rj zH3`Ly;*e7_9P`}*G0!#>DZQd`_g!~^@}`4x=gxiNz`+A(Eh>fWbkZ>05!!=`|AtnN1lMZV*a z+d2{{^@1>WKqT}Iy9_&!Y`@4+S=+PWpF&soH>KueR?nX=Rg0cI(=tw$ixH4 zU%y{mQj8%!y|6txA6vo~*!OfjCLzB=3}!U;bHuIY9}y^R7EFc<^A!J1!Jzx$~Jid^3MP zzn!9cY)mW`PD{bPn{L4EEB4_;$qpP{unq@OR$@a;78b`R<94<&Ww|AeZ}q*>)m)?d z7|M}8nVB#H{V z3DTw{;-Le#;-TwK;@-_HL*;&)DBXb@7j3|Gv&&E%H3zred;;6IZ+~a@?AZ^p&mC2s z9P2mn_kG+`zNLD^_Y1?q7GqJ?VgfRJqHtu#^*C|z#Fq z#RCsK0PSJPo91x-`|>pVT19C&rumIUQd{QVAr?72zsPA3g~ZmBMJ1$R`<88Z^2sN` zb^ZOBGiN^c=%bG!IXM|QS=l(_ChR5&&Iqt zbHR27prBc z;)ANVv)aAmIrr}$u*@G)R>PA+8&4ci6+h>CqWB?YY>H>?(c=Nm zL#6*a$NdkPxmKAVIfXjS3`QrLH~(emV82}Z_m@urjaBgtR{SAnK39-Rp3HkH;{wJk zN6g^$=hA~mjT|}h<2`%!fIJuW?c0a!>}*iBB|hb9pB!uQJouDkU}w*s#U13s#YepT z_S*;w3i>O{uQlmv4smnl%=zrS_ud1~_|e?G0pfi_@cZBY9$eGGaZswW`l~e5rHths z@lZTB0{7V%?ba8mlt)z-l;gF(zJ~t&`|I55KS~`}NktrM{)UVi0e@O+8Ooh{=B?wv1ZZ5xt@fAn|1`yI%~fpSSiy7e=1$Wo_h zNJnYYs`YsB&o4?AsB^Q%m$NVzleS}jI5$5(|J)mIyaDQ5ps7hA8KPvFiz&;T z)i)Zi|NU>`kN?f|6RsjYtvU6oo__Jg7qNcBdbm2fkoJ90N;#-xp~cRTl*dM5jzc$fQXeU-&?*7JY;>tE5OYZrJsHzw^P4DBsBuB9iD z95e}Uz4JCWM}5lgB7Z=Zm->^o)TMdhFMs(9C`W*clQYJ<4JO^Ge?=K^^{6@|)(pnU zX2@}X-^KkIW1z*Z8UjEzP{s!tq!qw)C$!xVy5c| zB)ASmZbCZV<~l*0yti1`K9{|~|C>P%@-wf$_10V9ngw^83#PgGRmuPDxdLyfL|15T1PMNl+dH%2ij19zS7l=K8sjXNBN70vb1Mg6=M@kVhH1%59w? zsO-A8;(WJIw6EU^bzN#;qRSvG$tb|z-}t-atbbwIe@dok0Quv$#3v-pPJ)Nc6*Jue zOxg2z{$Q0`I!+6zH*3PJz@-F2hG3e+25FqLHl@Cc6&8 z+R~Ny%d3Bpod0>2y~R&Z{(zX6nD@mWPntX#UN$$(BJFk7rE==*MdemIs2&>m zJ2z~_A71!_EPdc~;i?1lM_dA?dd9(mM1&v$3vaSlg@ zQxMOf0+8zD&vSS`jPn`Be*Py=etDjH0$+$vqK=eVFGe|c#k7HA@Wz{OfU^BBn8(D+ zRQ?(~qd#HkMtIfmLU6-gsPIleNwatqH;hGLohW2^hGM=e^#)mf)nSTLKhnMwuaoA~ zU;8u5ww`-{b1%L05?Z%y17EJ!v7UW#0;G*|OyszGDm!X)*E5z3BkK0e(hP!y?$TRLEeAn$#)WNaGm`oY^7n<+={Qc3aW&@P_&*9l$ z23GZ-jWvDeqS$u=^4dgUQOmK&Y&?Q|<{(7-+G$VyH&C8cN*9;CW#j^E4bQ=9zhsp5 znu6l4Y=aKbnA><5;=2zwbB;xO**IJfLK6}aK2jU_`TL=P%?sn4dLu6>18?yeb@czv z_su!P1>arF&lcPlKBM`Lx|48qaYah#WE`APf&EjKVq4TA?2IbF>YxB z^zcN{r1?0Jw+%d6s8c#j^xRyf=Uwh!d0Z?aDm1$v^(_576ccEt)jLb%kqj z*P25(UA_k=ig)06KJ~fhufn0!O6-}j1Z&33$BNK7m_1@V&QeZD`GVG=Vc(IR{v4E= zn)>OhufB@5-fa=&*$E4{hEJd##2vStF>3_(+0t?UrZaxYv#lt(eKgOjUw`G5SB%`d zZXL>@5>oKs&YN-1#-lh>c|C5c*o#|=w&SL}O*oXk3Ww8IW7GJBsHEQbY@R=hSD+sC zM@(xpqvk-9zK@TOO*}r&)%nN-@d+7}d;MGa`LyvyeBA-atw%np_Gruuh{a#dzKSD9 zj);Lf!NadPP{+*-B^hqKohz4zToORym>8*_)p4JbEehBmr zK=ANj#^DGW7HE$F!w~2ffFND{hhZ@Fzx)Rcf#1Nv7}|dj{00ohkiG*jq|X2h?9~@t zI(7#4$>!{3+O%n={M65WTyjR~2)Az43cWjb$G~oVs^XyT{V=FoUkvEl8-u&?zANuL z_eTGYJ<+p6SF~x}1{^QYc;VV=%CEiDC!c&`_C=cSwNFwW-xaIgHQ(sF*A2g;=T?+_ z<LbLJ;MCXybXaWDG^rYX70K*j-=IriavQHObmk<+>ma0#Nyd@Wp~z%>f| zOetUldPWgRcT!0DkV;Crp0%!2R?=@NE>*vl@|k{HS1K`?-;V2f8?8tAck6nNN=^DL z<)-Rap1{=AZ|i!N2TJ;FT^}Ixuiw_Sl+2)hTUQ%{emkzrjs+l=hvUj@Sr8j-!0cCM z&jQd6U-pRhYcpA0pS9WiFULvN|I*i@v;Eqc#R+08WvtTE(t~T^8U?OV;2H(4ECsxo z{iv^rl5aO-{3QoZ$_9>dkMR}v@n8D;`_F{bHYJV@EzM<0EJ;lqcUGw+|Wa6ds_3DhzDQs+AA>yl|v_=?FM0Y(>crb_^_ zX@8@zd-rbXNj}0dUCuM}pPcUQT8H~lb z`G!WsQxT1BW4s(^_CF;xTTrL!8J#&P%$qmQw7suuGc0k5GrBS5&hbV^sn8aQk)8bT z(km|;9eLVd>a5~>pYi;ZmAZ($7SQhUykzClGvJv8+&Je?a34r>rD*Dd5>JP^hh>g_ zFoXIL#Pc(>lI|k&Im~!TbOtV>%$Mp_Z=M(aQES>)Uwx&s0@L>0JUH%M#uz=`CC)LX z?Mq1q={M$5Un;hLINo^c4d}dxXBn~yA9AS*^b@C3#Iq&C*W7pCeW+WnE7l+MCWTyJI9iRXW>$ex@yYaou4Y5Rd5 zzNYQVOr1v?J#@9ZU9VVuVl1+q!!c=i3_keqLv#MivjLsAcfSI4_(56n3{l^$pdK{- zO`cACJ;woRIC~g8BWzV3^qn@_uf$l3#N!;LqXaYLLp(XRXl73Ru( z)RXhv>#}v$zJ~VgrtJrKv`4WEZ6;Vxjd#25vM@=c$IL!pFiJ+7c_7Uef~jN2;j_;_ zGnfQCkNq>N;(cYRb5Xf!oNl6>HqM_vZ*-14JUvm{#S5wKVWzHytf$7i+FE!ps=uXI zuRdV?4x=8R?8LM$BF3UC2b6h*5Yd}8YX;!J}m8sVE%GH%`?cw>QS-+*v z>+0r;2ClW)_Mv86+v{n^!BL;L+TV_iV{iKc;?;!L=!qHb{utY0C?0$KH~5fqp?FB9 zKl6K)F7=#D+Xs4dAqEe1iL14*=6toc^th!Ht*fQeoy5J6#>)`* z4w&XL6gl&=3_XcCAl;$+Sv8(4Ty?>NB|1XAv8u8(#OP^Zy z4;D@A?awj5wh#8|0j~CF=)!MZLou@5V53JZy%FlHea3uZuDaS&HDh2xY}f3|)yY zq~|9Xy{;k}2uSZFb@fddi30>4I-!|sJ!H9t|5ra(A5i-n+Y6^qhh2bOzh2KqH5*`f z9@*3?jTWx;F~>Oo5#0iC_O-J{KZA6Z&QS1GRR0+2?0hPHD@Dn*ST>CI=wtAwWN)Ij zR;*rcjREz4D<-m@8HuU*_qlT>olc!Q8yQKw`v8pd7=#V$)*JddTf2AwW{HIWN>I=kGn?=^>OWBTnKGT?2 zy;Xnpebrm`FRHU_Nzxf7QonY7;ykwfzl|NLblN2=Y1*u**)NZy&G0C$iL&`upv{5k zypB;ij8`f&q@3o79PMvhqr2DEs-7Ax356a4>I}gJ6&`A7?GE(u@)R8;O{5oB!$}?Z#7M{~u zuQk7AtCo;lYeFM`ENe0eCH3QwSBrh$lYE`~SUdJL+uC050Hn|kN46{zocbVbRx-Xi z|CO=BAWc6fp4nH@ofB4Q%~~~4%h?lCTn8Yuc6Z!z;uf>7BJQwgQ*?#u-;6qPzqR@! zv6)Oeb*|kSrL=ol)@llhno!rVK{QJ1kq$LSBhx(?^Ic@a<8Pwso?`PyXtV#cJ!M7W z@mACR`S-#~)&40wJlv!`$lV8%IZkH8O~w~reqroXxvzYI@3+1JG{_`o{dw{D!d0LR z6Wp9>Z|FS&Yr4!vxex6gT8=Zis>O|o!B>~IV>LsO?#VIl#y;ROjP37-I9pG){an-b z!lt5L`g5#HbH-BbdnGrL4ycQ(3;Cg1nBh7YA&q+CzWeVpx|OttkV;D0Ph9^tJfr!; zjW^zC_ITRsF@N-G)E+B)Ct-CDVqp7D!Ls(#u-s=F3YtYBr(p!L>V_E{z|0yU+z$-H zEaw3TY}&nQ+&k)$;iyXw;+X$kw3Y5LZFEc?!`(ZX@sgUDjPv|Y{g3t(kMo;GKOqek zYfrDfDII3nI(fRfBeh2iwhYZcC26p{YXVkxpN+Eilab#l8VjlGD;uf>4MrlpPB3PB z4#61LE=Zj<=fbwP&b?%tuq!Le&im63iK%}J@>H{kAsO1LFMj**LFGT_!wT$@C=K<2;4ho;9&>=v3?&nTstU*;qX!85{l6jSX4}Z2=3~ z+wHexhn7LV2ea!AMQknNRI(3i&KD*N_x2k1R@+-e7hipf`17Wov~@GIZs*z7it2mC0=`tTB82UD)~j^tX7@oL&Wx_>B+&RLD?=vL$U zspZ%jxd_|F=3>X#d{ojFvwYwTl+u2#wAW-T@{K}r^FRc*>-&A%-l{^j=G!m6_yV`w za*MHRwD_S2?vFQb+HCrOu(0^S^^BMLyhxaz*UL6SL2C|qG&HN<7#k7_aAV3^?3=z6 z2WPFo_P9LkieHRfv5Qd|IM>+U$?ry4{{-ZAib8DTen?HSulL_F?yY)T*Y?zld0F-p z;x{MfS$HG0k8Cy&J&Cv%A@%>9R57g({a<}X)6@(MPw9(b4 zBMvTFkDC{5!SS5UIFwR}8|JUWZrU#HO(?^@gr!&)k&czY>;v?RA{)lpox?G2)@;Mm zT}0cf?h1owqxGK71cfuevtj!_)2%0F*#=?kpisQ|_FHBikQ|Edk2YWZ_)b5EgpVBH$KZp{i}P_xh6&%ggz zp0F>^@LnZOtjW__e?tZa;3R#<+_n0U!TP~|^e%Sqn#gmI^I8X_OQQPs_3}ohXE2go12D2H z?b=`bld)rR@X|{tFE)dR?_O-sIl~6U%AZ{b(^Q}vFR`b3_`v$TxcDU7&Qrx z-*6}H-+dhSZa;?m7-jD%yH(kI-cq_9r*sCQpW4J&wpOB0ojd;_ZB`wJFlk5YQehG z7PO@KIFvP=fUJ5W5!}8%PTzi;p@C@4v2c#x|BmVGWR$!_=_>tMjGMH#q`w9b&j6Y` zgb^?PR%cGBlxwtX)*PABX5+CN&)}i!Z^fgBPUDdSr)jr)jF{UeaAw^B+`HvQoGjmo z(-qg@#F8C2n6(PW3$~bfVcWC<+9Bs4J9x6enwFiRbY8WG(tIYlne>8q&i^sXBb&Vf z$&j_)(f6czM|%zRd+oW_a=+8DaU0BT&GXc@)SqfQ4i)WaL)vNrikrq^QIlwlA1L_AHcE2n{af|I-H_y{DJh9 z*hW5S)1*a63XDNg!c54vRpqjR)))F~(Rdxem@j%%55(g)-=xe*hJV{$Nb5kofsPZ* z{&HoPnONDGcq=}XJGGsH6|JYSPsAXqZ2&Uo&Br6uv#p+&(ls&_7nf&Mf6eO(T9av4 zFTXSh9uk1nrOR;pp_}mZgOB0P!yNC7H*edITee+~8`lwMe*GRCUa=L&*I$Q2<(qMG z(*f+vS&qH=tFbq4H8!V|U`tA=@kd%YB^%{&sVIv|#>^pOF}&v>j0znA+I-@L7hb@H z^;f$qXbfwQ9Uc^l;avtIzI_1w(ZwLQ`#3D>8i%5uw1@693yX;plGh;~WnHGzck6iM zx8a_v^?2?zh9JaeAfiG?3quCNe$f0OeKf8O|5bnCm60B1eQ(mR5n48Fj^>S;7@2mP zmaWj9vTa@4`S_q!^Oo>w>us*yw2yDyq80zv8jb7JN0WLD(T2a9HE4{cyl+XI0p07l zV$-?}(YSVf)b#W+dnnnU%Wk)N`&;#w{6l5Z9=k=o#%Niu30l-`Toqf_Z-!QNo1#^{ zrf6QfAzIgU{I1g!&1y9;m@v(2G(>%`Iwl?RGG^?3UH#P#k~wNz>S{%;SGxb7>nX?c zYVXRAf%V-tUiFTNr_H$38uLx_e*Ch*-8FKlZ9L>C539=l`demw25(M(r7|bo67HB*RmgA{f8UM(9#L z^J5;@!Ziw9qrf!^T%*7>3jFFQV3@(L|K}`$85FGR1CHMh5S&4wwCY-7e%lDtpg?Xy z7mD|+Yg_&1vA%Vs3mXWq!CZ-$;Gy5v^{nGJuP%E2z<;i$0Hp$IVBpmhfS0OkiOJR! zMAAhSK-vV=uXdmYlf5Yrvo!^=u4na|1$vi61N(qi?YqPFxSpa3L ztFjB^|4KfvRF8}ygNv@0BZx8=6ND2XqwDpIRX7nbm!o9Y(!552YZSOffol}_B~pO< zc2CwzGIgE39=IUt*)qQKy$(D0?k_Qn;2Hi$lIiPAO>#{|-4jz)cClZu(ow&}ihqwf zNzdsP>DK6cv#!s!DNgtZHk76@} zer3eboN}jiUL>7)o_VUTpqE!W1a}!~d~2CAL%Y889?nCTjsLz1X+Md0BPdarNzLNhp&ApbMcvH9f$aWiLa1Mm`AbY6g&f^hOvnviBK4fU= z(C2=h^lAAErBQ3HLC?$Aj)HVEgz?Y1BE-EbDxD`88#&QMHlyWEahOe8sR^Uw@bM=f z8{0tP$MOAnzfk(*%YOFnfB(BVtF`pZo4eOXrrQW(OKkO>WzOTwI9u*K0bvdLQSaxp zp{YY3{87@U;V+Cv9e8g2XX$Y$NI!(<#ztpjq-Rg!Da9F^dJ9iR*c!4m7p6uc{U;?( znQ8Rngz4XwKA%XNNxv}qETvx@qfa57A;)?RZ}%oxQrKQgC z2x(3mRO%-yIP^WwkUkfyr+BrJv>Wv<&&uDBf^FwxVmYA%+2s%RpceBo7y zMvB7dnC9k>%v8G`yleqz_a>b+oyq^K1M%6UW4V^TZH(TZ)@k}LG;?xWx5l*P6&>tY zEgDmrmn|9z$3){zYgsAjHr!_bo+FN%cqZw0G2J7a@1?)|a}Ir_pCTJY1?iu19x^tM zaUKJR8SesT!}+n zbL}U$Q>WeNE4}&Vo1i}s(|5Xiv_+2VNGx@t4H)}}y${)OPedExf9a~RW%Z$4(rH-N z0rYGAN_9Ic`DOW`y4+Wqw0_hnepmW)3c|qTcz`?YWhc4QCotz2(>I8LSe+)Km7?fo z;e%+56_P$$>sGH?ZPJrpGxp8Dv64NmbVV;Vf5*IVKzgUrITn5dZTU>!=}MfqeEQlJ zO*Gfo`_I@adg!^;cP#qIr*)>s2qe=cV${H3;>f)Tt%Jjc4O5!SF1CDE!TX_-Ye^qj zLD;!06TDnJXhR!f<{9GyoBhJV77-1!#)~%AoGsd^?<{Z$N6(sVkmw$Ou{HY}8Jg0S zJ|Jzn{*P(5y9(<3eT(457mw4AjIj+A{se7*41M}|`WTK9tiMI+70nxpm1j=y8a zo)JEY-qGJj)1F8^>-;@B5_e@7qJu{p96I^iaoAwzeBZ)d1@DcOPQ7rJ7380YWkO9C zPt2nIx#kh|3Hy3393~5w$W9AuOo?WSi-_mZ-o2Sgqp@opEZ{yiuueA|qb-Vp_H#`C z8AjP^TRe6X1Kl-As0^%co8G{!WhL^u7`--PM0h%u%{ ze@qxR9u0}{=|mlg(Vo3A%f%m4VkQ_{dC3BZ{Vmmq#H*b+EZ+qBcKhtd_dM?3Bl-m4PsBc!{kYO<NL!wYn9Jx(Lyv5eKf!15Cg};!Lj!# zt?TwVI)*%?W#_IvtuO;!XlFRVeGn$O48+_SvkeZOaN{Y@{*3v@U9H4nxn|P#>`U1b zXlzNBozKwFtq$h62b!^C=V?S2I~JBj7dy@D>$>J;^`m6sq>Q4S_p4`LHT0H#zGVa4 z#l0nRTt*_OWgp|`STD?-J6HLgWYqd_wS^`u(Bq32+xdUl0TENc-gi7Zo4#X>C-oW8 zMN$1leZ_i~Nem(Rv(9iLpF`WvRSt{<$r=^pS6Mu!_=L&C8jhv^&jp#;=5LQY@(Ac3 zP__o4R~vCyo>c1Qemrr-F^k=}ev>CuKe76ZXd;@auZSj=e{%UK zH#iZ!{S9`SY$@c^UUqHr!6zGHrQO@34d!y54y0}N3x9mUoWasxrT(^`G<4&Bp@7UdQm^ttHDIoLVO^cm4g{Y5xiqKV}LT{uJ|C~vj; zj_h^FFBtnDbrcJKtd469BoKoy+_fvpXhWwUOk3`0-eKOdSG!umBHB=$mwyFe(?mx{ z8``w+YKR3*BZ)~h8O8Nt?3h$uoOeAUk;}Qm-e>+p7vWNgHnW@tA*`3Z?xW)VZ{HU7QJl_n1JFO}V+{4>Z_lD;oZx!cxm zijq!KQ0Y4pOWRI1K4i<9PefUh@mN$h0@<}V=XeDpjq92)tP~Vwu>yJ>=7tWf# zC>(I+A^Te$oZeya4zm3t-3-4ddQNv9h*3jBjGeUBIR}Pn3BS3Lp$p}Mf053Gg6u@y zJtQ}E#-w(^Sle?BD!V3PNxMl{>N6P?J_#sn7K??%yvnW@j*Qy$w@b{c4BF|Zx((yL zYA}XzyjVE*ns*#?$zVq%6S$B2x7GmJs#*AFt;sLWarMKn8lAEK`u(OXTIblW|H$v! zTnPfP|7vWnl6=9k8>D@i={p@8v_W~lS=i7&6)U(~O~+tC zLt-J;AA#(;BQU?_aLn--iV3bg5!`EtS+g|nIQq^m*3(*xboTnRg*j<(hKa}GN;&pe z_Z|i#E^ee9Cs4Ng^f{w>EB#8)hk5oUPSD>p))mx;gdHQF^Rv2-#%BKvY#N%5ie9u~ z?wN?Sz2>5{12Lo8(#DsVSvk#!nb>4BvKmmPQ#$}NJqIAbt9{j)C7Id(-Q5ntt%F-vuXbJ!#71kf}Vu4;xz_{}flYr{tzvHP>j)Q8`s+K126r z93O!x*b%k}>;2P+DVBuwgHo}YxMH&VUfeDgxox<9wTdLJ*ci-j7=onQgE5J?n<0Jt zs`}2DF=Le8F7h$Tt9t0jvyWG06RRM*fBw<kTBkkGbl`7>Op+Tzb8~r z;3v2rOnsbpv{or-?GjJx>F$B_p%bw)f|y&Q3$Sij8rJyDGuUe@`X!>I>qLXMmEVqj z6?|fl(`q#4H4G%~*bs!(>t5A&9Qr=uVXS$ls!ERYkPX6J*BBHH0a(}(;T zcf2y0xhGQR%p*$Sd4uUnUg=XN5P4xDm+5yX^-Vw2`l=wFnfaiG zhbIum}TAAkBHrt-ikiY8wVh) zanJwiJKr$xRIiROm~NEbkb*E-ti9e4w|1DTd5BmJPd{Uqu{d-*Z{atWd*5pGO(i## zzNv+4B>IH(7>XNH*H_`0?HN~$O%V&QGpYdFA{Jq#AF(~FFwLf5ao2H3Ck{tKlOYK0 z{~uo2>N{UE?^LIc?xQ4Ul3YV&vHXNIp?opXWe7&QbVqKE9aCNY?746K7rzO=Fp*3A zJC6FMpIZ8+mfW;%&DtoB&%h1y))3#S42Kd|V(;W7*b=o6qSLm>T&x^62g`@D4-xZh zDKXCqdyGeV+YtzA)TK(k^KJ9a*VIFDu!jl@3r!!gaQB=!4~}r_in+v49oC_**|!Q8 zNo~saZ(_V$dcx8fe89p?k-jPAQD$t#3=PN8^tHr8TaW#T%M6|NPcO$dV#4j4QidI| z`B)uFJS<{?Egdog%ZAKCac}B}wFyFS|F2!MEPjVserrhKnbB9;_i1l$@n7CNx1L8| z0^y{Sb>1qxQb!*e^{pxX@IR)KcReSaLG6DWvM97{+#G9X=Ho=(Hk?|#3kQ=|;z-JB z?4Pxam~o47{fuSUHK7ozN2H=6kYmhmCYCXl^qY*4t^1;Kr5yuPedl}3I~SI|Ezhd| zBuse);m0{SJHf-*4ddMUB8ga<0lxk42g*LG>6)KrBA0qC>&Ug_MN7^pY$Bd*nZ7eG zIstc95I1MhCY)Tn14q)=;D(HKhEBqiJCImmFa|e_C7#xZ6f6%+#EPKVC>%6}{El>- z|6Kj7SiJIu{LY0mx$yUL={|@LJA3wQ)j3k2M<=9nPdAd7tGPJ~4gDk&XP=ku(2NTc z`JumAUN?TbO}IqjStYBo^u9W`YKMb)>v7krL%5}I8*U-4l<>7~%Grb)vp821XY9b7 z3LGHj-1?|2tR9ty3gWE^dvAXK7|fbF-L$J?{rQ0T`2T=%_NT1rU5y_FONQUeqqV_v z);RNP-OKnY(ck3@fph=wnNNowkk{9JGLhr<<2&xSL&+PAFY;)pTc;cjNGlv!CzP zyx7bxcz+=K&r2mGC8i$YRV^P3Q%A=eT&g?P9Kd6Hh`U3)x;rWl;I?IZiBq;7r%HF@ zQ2HwDPhO7W3pZo;4C0l=Ex_tAX;?Kf1><{#RAJF)W@f5R2idL{Ezja7>fd)-zF)2V z#-N%Vu%ONeEU3jZw3?$3(x5kXJMi1oUy14ZZ+<7+sf*@`_>I<&K*ndLOqpWz03=Uv z=p>QkSH zc>0-jdFI+}5T1PMN%Nl81BV{tE~e3yb^fM#Pjo0|6#koH1>-Tw0N<8PminWD!H%R} zlW!|;99X^?Pu_SJ&TKe{yEY%e{o8NCsg>8^&UJ@ydnIweO1I%8$J~jM9XLe1x5HU$ zaLeND*fpyJn*b;r)4N<4S^A>6y`7=C;6 zefZ7cGsFbE5l`N5H%?dX#lw3};#9>R)0b{1KH?2|8*m`A61Nm>$C2!{1`lrI1n$Qo zQ!%1nK$RVn&WJS+sgG*@7w)foYOs7q7^R2#0LO&kaWsEu9@dx=uc|T%TQt8QA1!J% zLSifGhqR%8#n!PX_a+{F8}9p>#-gN2Jf=4aLENY)>goMXBr<%H`kw4#L<60#DH2at zc|XorN{n*z-i0=5+Ito(E|y)ZL!Jnr0g46pz0B|LKEH2!q|Q+ROS2|RY>c05e% zzzddHGkn+gPC_LG4uANF2~ks`PfX%yhY*DF>+W4 z{XU$)=U;qo%Bz3G@2V`-FmFYl`_+dnoGa^P?LnXa{qsoX*P()r-4v7%Gj4gCsVJu`d}fmn1o!sCPRgv_eeYc>DU+x81g+7I^XlJ-KE!7< zdvOatP#Aj)7cN9}1ocPh*Y%M*?#1(WKZ=(ge-8KUC9dA7`|;3$lX&#-X*_w;-MEi^ z>G30H%vck)8R6zVAG&>P{SE->F#HaRw?o%tS@oX{cy56{W4GBD`^5L&>UkU_SA|v#4h~YuprM%uU6V z(XmLIITuqRc%3l^GomLVZTehHq(78M>UqTs4P)P%gqR_r7~LlT)57Br*?&03^daxo zofyeo2V*$*NnM+IqhalOa3}9z$+N$SKAO*^<0B?3?JL zy|8R#w1(5p0iAi}nJ79ccI;@6j(h8Qr_PGJX?%G*4-M(ELPvY;*PD{r^TE^Q>Ka{mp*w!+ZO0`}b zR)yjEb^S+s6v^7fCtt~^zO3Nz`}05JOL~WvPpnIQ)%>F%KHC~!($|(Alg>@9mMGs9 z!ck=zweFhvr>v~Ztl`qBlg#^aM5Qf0!Qm@R>(^qQLww5q`YHR@RTa6f(q3{eqxisk zb*4;t#<`y&>b#$Mif5JHXUJ6=Ls_nFjN)yjCm+oyKJllB%4-pi)$h;Qgmr2Ew)*|&Hjk?3)$c#7_WVP^PCC9l zE9l9uxqqPA^HNhndtMjZmssEOuh#u}-Um9KSHCw1mX7Du?}cc|%J5$Z!?WuC!wc?N zG4sw@{#*T?l`+pB;J?-HSuyjxl>b)0XEx?J|529KKi0j9tjg%QimA$c+r5fxV=L($ z6pl^%PeYh4bEd@mTwT!=GeD+(S{+`ZwEnHd( z=sf8|`t~xqEYhp_y6Dg!mabr{OPl?#IyLF|-$YwXNM}>F)Up$~FzO6jb~V%=)K*;j zP}jnxp}<%s^O10wrKj|5LHbh;%p;w{Ho7#~|Eg1w-ui8{D}nq+Dtz$42gdiOe84WD z{y|A;38XtIojC>RB=8%Z!%zNIQ|{7Kegc#ERJhX8)lt~DZy%(u&F99(upj+a59rm; z*vjkg(hYUk*9mX(QrjI|np*ulQmM~k-sj`v17VyhNWaEmM{elfuSN%~^qh(TwK`(` zMmrvW#(~3z@gsg8@$;zaRawdzEY%klF1F||T|em&@;Pd|)j*=xaFjX47;K+megSyf zp?m$*Q%`|*XL|1lqj=YA;o>MDyZGNomr?p}3es_P;IqxDqTs1d+)s$v?dR~o1lJ4ps2Mrno z>HR8*pOj8IpPRlP;?>jO3kz?qoOBoNa5iz();do^hRX=FZ_*kMIBXlWS8&+o{h8ml zzZxrim6fSfyuF31E?&~16L08WkN9DkZX>bIIl8Pe<(1Rw{HtKU$(9a_uqei6~2%w)ho39`rVip#za1bLrdKx}o zG!`zoXe^#nYp~W|wSmTj^=!5C6vLb9I)Oeph6e^2e|1V*I1~>hl(D#p`STr8bdo9JPtYgRU9}T9f6cVS#HnI@fNE zBS(*z^tG-yaG>92-h&u_%|WvHf5~rwwO0~ugRp%093C$280R&pYOWXVv*s2%-n!if zk@~%8EuSjZc+g&~f^s>n!x|H#TzZ%@`;XYR3TMuov3&GxU_L)rKRiFS-^hOX))p;V z;J3g1t)Yu#1(uIB(Z7e6H_F{67`ht&Sd{OG_L_sl>u5Y^Jr><7$pcw?U|scG^p|{e zuIn&#Y}^KC?l@!ek-fLDD4EAu#;%ON#vmT>Q=L;;=ZeDEkPkOLhli^>;yn7BxkYn~ z_PCd3?{nZ}Un9v?zoL7I0tvi6eqQWr3s}E8s z&#=au@}!(w7)}|#BKiv#`VnET$j6j|e6w0U?nM7SUOrgiYWG{Kc}FzXRepiQ`|Bzi zi`MeHDV|64SJX4jJvtZ2bs2>&o-NSOqYnM-3@2WCD0;N(Y_N-zuP}Xd#=|_HV3aSB zUqeWi9L(~2Avy?qM)Dn29`)R7VTMaj|Iu&teeH84bJJefelOo4 z^oz!Eqd6&_c$gk8ZYJ#zudc>F#6ZgB78lv^SCzK|OZZCQVPA>1Zoy2S7Pho7Y!qI7 z^;JlxQ?%E);vg^5hyJoO?~9I_Tg30EE$sbT{o77&`NFj3ebHZYl-32kSLParUhdxZ zbeVPw`pPbHi^gQvf#}=47ha(}PC;YPakg_e%OIWVUvkK1KmW?Y>{9(LAAqbhbf!Mr zBgoKObBfkl@sMf@{Z@NuAEv8lZOu*U>v~qiF`=vGr)l(o+qHdX)N^36x^o;%s~L!F z*HEJ?w0i9tWp9E56Y3L|A@UbYd>_{B55nY^Pg4b9Yx?^7I{Lm70&8?brn6nALH${M zUVAIe-kDIZIR9ZEu1#d-@@W%!FZ-#1L+>&)TOfTV>OS6w%YTG zuMur^)!eUk(7dCy*1GCmf79F)?bZvS!-5TuDa?4wAHA2W2gY+xk;V4uQmZxgT(?KX zFne!@U$cL(EJ0VAP?sV9PE7M9VQC9vP2u_HpSSQJjZV)<`kGka%sGVfi|DKQMr*6x zpQLyjyU#ndgXpZki}pFByS3-id{pETg`Ty%t9+4auPY2n=5JzO`eT&OuL!pu7#S9B zba_=C>9srXqj&LL*ULbIE0v_q6)SYEX!%Xixnf2}MiosOd(@@RA@MAdn}wTsMSWc~ zR(puvqPzOI#)F<)^O5F$J8x>|K{dC85nt27fE8`!Q^wNQZQx!9Ngl(D5AZI;Fg$+q zalK+>-VVI}H(1`jSBhAdA>W=%^ELTpvCb9c&&u-kC4IIr^qsrVS$;q5Ypi&D&Er~Y zMSE*a)m3wn#)R6*J|@CUo21iMUApsdbmzRXYxizLQ|lkCH&y!!@>qeMU6AiQ3M1Wn zB0etO;Na?A;nO-~f2&w#^_!o2(7ED9VPsl(7`HwM4hX91`^wAO>sC}$RE@W$9`!NHZ3t3a zg5cY@HSVFFqJsK|a9>%jR~S1o{@jD)>u*X2P;z|*htC8<3+=ha*6ELYcj8gIM$^Zj z_Oo^#Qhi-f^N!9})FxV6O+Qy(XRPj11NN^pDF0DHdgZwGeKeTR0_m1!Uj`8Pg!xzZ%zc*>pB(t`ua%u;M zKCpS?vlq{^JbA|MO8(wC z#L)XczE0)4QgpZb_0;pR^08NK-mm7z=3hKd_)0zw6?Cp|`6Ocb(2?i*sr2(W-nB1! z`F6t}IY%i-Hsa8=euVEe{24aDNS67ZT4$|uMXkSDhgEO&y{RpOvD$||dz!}?to_19 zF(_(4p0iE_me=FiZcX}~<$f&PjlO1G?EPLepGVrKI>vy;Lb8h=x|zOj_a~{o@9-@l z-%k0AFAMkHT7RnPLqq$qSP#mi>5sIBM=O*O``!u;EM&n*O=SEz1>ydl5PvCbbOre_ zvix51Z|L5z9SYlxCyxJQZ17D+VRPd6Hy?-GhGVd@SpwUE{t|0PAgd;MOV1FbOLpuU zVCW>8i~jaDAWpeUHw+I5{I7Z6q2qIkc}bqOQEQNFF%*QgZTVDES^9W-n{;F8CvZTY zet3=cs|vC=)A#{r+t_9UwjTvHxDHE(9cJY6m030j>0x^ zSkiVP@|#CvRoj^;Ye9dNjiRuy9{ErDGRdT$>U7$8rBg09-;L2V(9kQ{X((pVziXEo zEvtB*YIb)YGp{HI!DM^%eqv%`mF=+jB1_&ancq~8LF7dP(6vS@Y}&lZ&|hge_K33K z8|6srYQNNF0q+!!ym0RoByW&ERX#VdZ_`d#-H-ly=!0Ns$Em33Gy}!nd+@|E%N$ohfJ>!%x62y<5^-7X&>t9OP=Q&`@Yp@wHDo^bAGK0 z3i1hM`P8v-|2MRTFXq!P)EMeX1o{V5`8&`)Q8xGd{xIXu!G>=N%lWzdSg8LfNZw}c z{cE~=VO}@-&hDOoZG*C~u6Ht)cAA2fUFZX%<8-X>osQx*oQIlm4W^&g1q~^Gs~=|k z{@U9i1Swv_kVF~7G@h+=tkvSbcpk^RU%l_MI3~pM-%l;ScPf|VkDSlx555j&k`I;N z_D;21;lQDTdd1)zBqSt={<7g4%6K)0Ml9Sz^cQF3$|}G1{qp_5=Ozwm)dOpXrec3s zk@5e!v>W?>_Zg-QHuOrtvQE>G-#Qxkt+*d(J_b2WBCwz_c~Q1Q7X1pR)eb_E*I>-> z=!X#Z@74D$dev9i#M4;kKC&xt$ehhw6ii>zxb z>sPmOZ-6BF$V_q_ijEE2;MD0;s)Er6cIe~1&Qy9h(z@C%vMG5=xEDH4R8T+b*|TR= z-w*CE5bJ{GV^dHj4va0s#$oi^MnA|K=`VVVUna`CPeWFg zc(z5q(WwoFBauFlXVs)n^;+Hki|5h#iRO2fK|GH&?_WrxwtVn{cpvdV3f0dB+?-tz z;ogm7AOL~1Uz#{^VwFCsbn+bh!?Ft#y-I#(>ReIh=vL6Vwq>i^s7?dq`A@^{F$LHc zMW1lPGf+8X4%YdnV$G0w*f5kn2K&rJDSZSLbsUF+_OZzGrd-*F*EUheYCaNk8w6lh zok2*d?~iWv|0C!5o_*gUQ@QAC0I$w`~;Cn}w3@LouhmAEFxe!|-AM;d#{e zg^j{8d|ThQ=+%oie~*ictCERSlefXk#ho(LUSB_*Bd|DYlo*{b67U^MiygZP&$_NC-2{T zDoVOfL}6$85|dADj)jHZW0Be{7>V_VU~bbObZ_KS#qVEa-xs-buC+%pAjyIhs@dk5 z^7eFZW#k)EsVC9RyAz&$?pgER8*jW}`MrOJX-JRbY6x9eh?g~|T0X+0PiXm8=id<3 zD+v3imgBk!rPw@%eShpCtPLgYM=rqT@NDcH^Z)E!2V51$))!Q&ND)LpL`Ccc#fA+# z_JWEXtbi3ny7Z7U&!|>g_RCbQ0}kZ5$IDqwvrFbTNG2$#b(R zzw~#wrYx4NZ&zf0)XCtgFEwzghb{A#V`p$K*7?U{YoP3VIU`s0N>4zZZy53g)(?+I zPS4pD_5vpjk_8fFEQB{0gpfKunCa95&F%kdzORoS>PHT-kG%5AD+;$fYPJEj9y4`U zJjlPA7d)G`k{G^M)pK08>GX1!@`Ev_~*9We@Gt_LGs~H3=#0CLzA1KO!0p#XQ%( z7+~KDJ$qE-`@cZu(Z{>~IoFBb&?d&haiEi5RljjGvBtD&-ZBPyptbA?oRhH**QI6f82`pm}S9y77H+YF?23RIBMN#von6AzkL4_ z?!&9)xj1#|l;*#oeE4I=&B5m2CD0mv z2V0&-1C!dK+ZJ1cKnwG_631FLR`{%L3~(Np{gZEgv_Dd(dx-jF#z(VIw?1;@NY!`b zp2Yq)M#1D5?2jwL#pU~OJY^F$&d9);@rzI#kc?HMqZLouI&BHI&sd5TgTt__uZ#g7 z>Hl2?|FTzonz!iXyv8G}*$_0V{hRRp%2=UK(rx+%Y5O12Mxo1<0yByK7$bTPuE$1* zZPTlD+ww8MwIzL6GN5q@}9o z_}|KvE4B4N;!nN&5&h;a?|q)MCm&>CK0I9$0+LWPL1dz!EUcFCkUu;eIRj)J+-oK>d(J>suOOkrG<2`m z8v1b>%!4R(_&Gh#uW7on4RB9QEw5-sMn?HKZf5SH>^{`XQ5I^`qy=7l=|$CU>eY35 zZQhm-QWkmCg>!B`W2Us+Fsw*+c6PZf!@=4PD`q9&Lg7AKS$_n37Zsv7C{^vZzCA1l zJHzv^Yhgat1|*NL|PW|G&jtUT}nKb>^01p-xESLDb2Gh`yUPpZV2#p`B@c%o9DIMk~fCGj3eo zLBHKco#%3leB)DpfB$lR$+ec27m0CmVdH1wXx2u7P1qTmkKKz_;qtn}xU}XVc1Fo{ zbOFxh?8JfiwJ4sJA~Zvi$=(`@3&m8rxFEVCGvujcA(d8FZUAvawqD_35z;9J1OW%2@?GH^ImZrOMGquM&Yw>3nJ9M~(_=1`DM?VYk z+w~n#?nlh$nXgDH^PvFkJim2ulNX-kJf-<@u%A$GrOmk>?v1cIG6P#8mST6}Dx59c zjbquH@tEwdes1M%JXLxOyW>`3XN>g!yj?h)wgJU6Q?M;GTg}ls!j@xQU?NtJi^1{{ zVTuMz2h2i9=Mm`BtGBY>^PBnk`D`cSB>Mb@jhx4^%RSy%$cMC;gm%^qvB0K37Fvs6 zs+IUhS`9;@&1kf>_K-DMdb$3Bxkh#N%(tXoe!tN;pnSl2K03i;l6A{2sMNA<4!Mf!5v8xNbunICwz) z4gWiP_N=Cx;5bMTs4wuJ_)%SX#$SLwE*eah^Du!80&jDE;d(>MjX`;b{xotAW~OEc z9N>q;%Qxb}#sk=&wH{ldvvG3OW4OHeD0U~U!v6GixLkS!2Q!PYH6j~Fmu|x2No!C# zCj;9fmSg>lWbBPwjU#ELD4ZOJl|qBO(c#D)5sD<=>EajFyj)jFnS(k1<=bBh92JNc z2o%uj&Lih3Eyo!7W^aLBI_M|I@dCup34u@Pqp11C6OXiE$nS8sazd!{KtwxAJel~3 z#nm2;6i4xysVz1lyAc>%vn@PZwZ>CA9~=HHWn@ljYgAsWm57AP9@ZrTC!Lx1pPp?!@yK8`=mo6J+G)m_@bcGF*k?Pb{|z`2q1 zB7Dtf$xCUgV{S7o_W|+8cqqmKGX8j?bB}Ucbeziw<(H9De>xKCh+RVbW8&;bz{jdN zygPY={6{Oyp+NbN{`Sn>CAxXm>1(|@sCvltPJxk9=dYRng7Xh!^0@}&dgR3yUo6js z#CNmb6Zcg`*Wa{JW5i9Lho|?Q!qt7Ju`_KY_GA>|%8uhWvHCG=PsqdNZAWo_gWx+R z7pGV6#EHCZ*b5I7Fv22Mi@ z_a@k?^C4tixb9<~f66T6Nv!wIojXAvA88Ng2hCsS0BtkO9m;;qHPiO(+tqlYK3`iu z@|~{<{~0uR5NeuOVr;!0Sk!P7;_CY$zW!+CqqL%FFjCz_C+<87@pVQb*>Mb(*9*c( z$8PZQY=?dO_m%fkzK=Qq@@dwuu&_|c>C|6yEu+&j?bq;MQc}V{`N_h331`lnQGW51 z%O(sRg@W*8ym00U?%(|oSNEUB3#YE&<6H0J(ql*PMCm@jQEW>S*@|}!#94UT#{_v~i4G*XK2wf1S@+oNZyqm$7$g5f0^*;@W{T zIKE~(4(68NrPEI<8XU;pfM*X~5E^X7uH=$rDOer(Qy{ zqtFKTQ~1~XpV^nVhNHfpIcSoSl9W!{qjo(EswZ=8i&0{O9*3mnzrqn#_SXP9~2To&iYCcYs?!`r!FY-bbp=41Ga%aR~ zTk1+|OIe9kbCQq~7>RWY7UQwx)yNn#7t5!_AZ_F}NFKHL#dXCl+TOJpMmFw-`EA7CsP$+>xA8|zYk$PG8Hb2w zBazW@hS=jKW4ZS{#EMOHQB&H3hKaAtJfydnf@t!mhVq+>=cEJzll6S${7Eba!@7Y<|$hnjH%|h(lHB8K4ZBYYGwd=?|Yt$6~ zpc>W9P}|lXHWpUud290;sA*~e9<9W8uBNFatmQc?6APHi{LgwaAH5b=_Mh<2eKWMS z)sXhowRME6fQwCSIMuXAT^nhS?&xGy3-xTBOFjKE4}xqYwcUQ-?iT=9r^bJ)|2razqJ3;?}V~G$3KBK$8u<>JFk4?Gum(3 zxm?%Rooh$+44=~j?K`wto;!E$KjNQ!lzoZg;LifA?=R*5)bn%v|1W`gUuidHE_@b# zyE6a(Ir&HZ(VyhMe<%NF{%(JSW>9Xfg#T}-MibA3}T|5HCp znV<3w=ilEGSO?Zq7yC^4lQ9aPiOlx3%n^Tjkalpbdtbm;faRe4rhGT4)91SW_XO5~ z_7mwNoR<#>I17vrpx*Sa0@O{@zk!AN9_n9cGyNk0>qI{=Lor~$fB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjeDF*)E`q*<-lFHwqf1a%OdvX<@@@J}4ICs;27Y7af zb8GE)32@LqH`RXsN^)WR)VV0$s%pRA5#Oi(bbd~-t38uk={!kyLw+uA49|Vaey2}K zg>$#E-=)gsjnO}sDwj7#|D3u)tuc2hpX(Z7OU_cU@!D>5tDYwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r{+bvtm1YG9qzEMc zLg2HSzp0!W%AXhmJ*4i;HLc=ie#P;MJX>49Q2x9aU@n-=0xGVEF$q5h%-zh`BV8;l zZ4ZpwHO5ON?^N0l<7A^0)sI_$~AD$m}>adAJs%O`39U*BjSrd^0ajQ`zIv-maF~7lqHUFa}z0AA=%!A9E!d z${!yC_EN>O0&1KyKZ#bDFG1TYlJ|{_jWE=v6EbQ{goo_;6*zSY^q=1%`9>I9D$m{( zXeVGOe|!uuCiQFP`qJ`~kpA5JX!!8qYRt=hb*wFUH5Qr=MuG8EjIr#Za;PxhyH=Rv zrc0MD+TSdZzcV;e{jurqB-Oi2`ZD*uwofMM$@QPMS0?W>hJ1L<&WNo#2+6YF`drh# zlAF{XVUq7jKZh6ddokCF{LO0ue}(;{r5S(OGEZ9eE%%|&_5~#EnRi9E2e>wt;bvI} zsTSjrV?0sq{~K3zFh*E;t6Vb7Q>PWZJ+J5?8}paN+@HT;ZqfwijtBQj)E~p#4?s7M zEBbTn54CKM6;%VV%y@#@6P4r4zyM|PQ~{MgPTNC*#ADv= z4jnpZbW_KM=5>%_G6wlVZ;tI1R3&B83fj23mGZ(IY;k8b7SF|^k{b$D2=n9Ve#l~aHkI`}+V>A%S#v@ce z7-!ZIHkLJ24q5Ge)C=hCMRh>FX=T9v?~Z}0QiE&(v~S&Vv8TWBA_ml5u7>_}aQDatk*4ji+&BO$j03U2s5c^v`l<7Dk^e%CdaC(= z^8oq7cr$O<+t^|Mf&JyLWlmB*KR>NM(XYVtcWSrcvt|1D)q)5m-|NrSl>fO7;5`kR zip(EWtt(QDMyfR*Y0UATXfzD5!uvTN#2F1jl*j=5ZL!G&G&Og{n6dulc}Ce0_UzfC z>5)E=cXtsml-~yf-Q=_Hb6v0P_ec70-5(npTTXX*M)E>iV4UnTo*{A`X-zplN#=U; zf`vwX6_6(^5&qA4fX95%36Hbr2FKd9E7*{jcePKSKHB>WF2_w-jDh}-cw*C>w+3?2&>jd$#%;`-#5#s3sQ~!6phIPC<~D9XNnxa^&rPTujiZe zg`0V8%#^(>=rf=d=J4nKKJxxM0^D=NQ2w_V=qI21C-wQ%>uZJje*Haf(g|8I=K;^)1~&vhU90N4JU>l1|Ma~>f5 zDJO7_;CgUr)d}b(I^ia=KQs4I(hAp?y8YR{mv4suZ<_wM{|bF^4+H` z4i4qC=brO@Wk0c`Y9q>NNg0ppJo0v)llEaU=CfoTpd3KiKiPPs;t!k;2-FeIw;X^v zmiB7DJnehjA0Z(jLHpiQQYYG;4du~dV643U3;O4C-%_p6zmNNt%e`{2H?u~p;OQw0p=(P5yLy!w=Y(!*+dC$bOFzgM?sucANgKpo8+V3F}qWQ)AdwLa&0(wqH& za$lHHFQK`wng>W{&i|YTwEn?!{!N6)2t1!-;R{>Q33ERnt;?GR*E#^*`TSmUy>uZ?Zell-3YUY^VYTmytk zf6({?=LGr%uut%B$QL5SHr&e86+L`3{pT))5Rm zDWJxizF!yjf70z=t!U4&-_NRz^6Mf!HMySh9_>4GjJheFz%?J~oF@Fgj4uonej)pk z3V%p69;WyJ`v~Pi$_11IrkM7CZH=00Z%C~Jk`GOqG)e1!d!&wBpBTz-i-9@vx^L>$ ztEcvZ)o{;!Ne2uVpy6H}T`e3j$E=T%^K!+mPhDQHk+-t(lK!M6X-wYEH37#rf8%)9 zWW#LfH?yUmP&S}!7-Cem7D%c#5^iD_8ZvBXg>@(AADv(E$5PKezire1_HT0)3|tpL zR8&+2zb^V`bN?OQBhc3CFZ(!WSDmQVc^tFU>yy5e0XWa|n(Kes{mCCV=Gh164?teQ zzQHvh^?;;5Wd-U2*gw*Y{A926W~g1up+Za%eT#<<9jeu%Sn6UTU?{&01|sD(-*b;Y zeZNflX8ZW~XgF6#CsSK2F!fb5BfT|Ue}c$?A!?yg;5ozQE_mGeS&yz}><1-wwY`)BpBwX(SkUfpdCt za&iUz8~4T2>EIRZ>DSf2MoUE_j(5s^)b(?0Q_iQ%r}28yTC@MhOW!D4AF#g+QoMnD zf;IrYgE~UeK3tCM59Aj^Exh3Dex`mB<(dE-|@otsplhqr*8-6Z;pS`m-M9Ur_q}IfO7)Z z0v!MB8sM{rP=a?t0 z$@@9Cv(J$Jlo>hqvma6R=ilXKhb}nu(8~abJv*@6jiiIv}mk-;jF;OT8H@ z5dYsd{cr!562I5nUkpJ?YN=GFRTgXV^!$Mr5DywP*ozQ#16kY9{aPC%j-397W!U z7ag#ES-g0$7Ax?q)UBR?q5OIbFxK)d`gN^ZwMrko$jr>t>~4zoX4OnF%+gcQm-d=6 zymXu3c4m$G%jK*cLmJc!VrJY;UQUg8H(W?N`j!wF#~ zvQ7}4QV;WHXwkBT@-@^dNgI)ehX?ESoxt2*-}JxzUsMwetQ1hOm-p`7(@?AIZ%xGx z$9o!h)og-rp$GMMwAWDPCw;kQ)7Ed~@tos12e1!NrYGGAq;J`Ju!rgov*qu2f1%tX zkDx8Mw@G7EGgdKxV1FBA*%}d5`eL5U1$O2&k(2v_-!bh%(b3Ub{Vqy9YYQ04FUJ6V z>h5t*UG8hF72-8MK3>DCI+7LvmOT{z=KM|Clh)MvCrL~vc{|s5l>5tQJwVO#>;shJ z%lboaHP@5woEs8pS34P0ac`5gi ze&pqp-#L$Se3Q=XALI$7E#(68ddhg@8|*J!<7=`a<$lTxl=A{>_JO6jg*KTcv*O$ci%qH_d}#Vf-aBTzobn= z{&Um+_D@&{2DS@e$dDlw;w~6_<>KP<1N{a6U96fbpH9+^z8vJ$9Pi}&9Pi`-9Pi`< zoW~PH?qmPpZ<>6d>3&Ib@&nSHyn)Y08u!Bpv-W7%prMK-&&tZGzyoZ|tPp6?Mdpbi z@VDp)duu!F*}F$$0m^6G-``)WGuvhUx2N#WBVe%HzF)IuO&mCIpd63nrF!}J6h19Y z%n)qRSFQ6&f6`3j>pY(;>o~3jI2Tlw_qjeKt@+#np*Q7x(w{Wv?|dKo&U6#W1t2j4 z3ncE7g)s%X7+_TgBhgFv)Q~=C+za8=`@`L&4*W*>sT@OE<@fL3uh}L)l(zNw`R4zv z?{a?JFMu&)#(;4)T463eoqfG*EQv0-vqfXfHtw#*Gi7|v;brvft#~_iKZ(Y}<-Wh- z{ThESqjA~zR&s)@;n*J%g=g@XDtZ9^E!X=#W*%^F=#HB=Z>p+r4yx>1Y;R(PAekd5 z2Mjc82}g(8IHl*8bpQT+`1<;4JfKk8$F+^2{1^kH<)_c>?CdJ!;Ck@j0VYqLtl>`` zYw7&DxMriQ&v{-O|K#nA>)`y(IX~HGgyI1|$o~Ts|L6LS_c;&Dm+{Vi!oI;Hc|o%2 z7}Pg&RAXOXzkA`r1uZY6sta|K{x!NG%D6w~ne>qyQgtzP+SCd;q&98Z1g>SIeeVc( z{1KtcZ}lQ)a5H$3r#7{vky?8 zM|yIM({5AtOlP⩔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 Self { + Self { + enabled: false, + interval: Instant::now(), + } + } +} + +pub fn send(vk_code: u8) { + unsafe { + keybd_event( + vk_code, + u8::try_from(MapVirtualKeyW(u32::from(vk_code), MAP_VIRTUAL_KEY_TYPE(0))).unwrap(), + KEYBD_EVENT_FLAGS(0), + 0, + ); + keybd_event( + vk_code, + u8::try_from(MapVirtualKeyW(u32::from(vk_code), MAP_VIRTUAL_KEY_TYPE(0))).unwrap(), + KEYBD_EVENT_FLAGS(2), + 0, + ); + } +} + +pub fn activate() { + send(VK_SHIFT); +} diff --git a/src/features/empty_session.rs b/src/features/empty_session.rs new file mode 100644 index 0000000..7b2e133 --- /dev/null +++ b/src/features/empty_session.rs @@ -0,0 +1,60 @@ +use crate::gui::App; +use std::time::{Duration, Instant}; +use sysinfo::System; +use windows::Win32::{ + Foundation::{HANDLE, NTSTATUS}, + System::Threading::{OpenProcess, PROCESS_SUSPEND_RESUME}, +}; + +pub const INTERVAL: Duration = Duration::from_secs(10); +const ENHANCED: &str = "GTA5_Enhanced.exe"; +const LEGACY: &str = "GTA5.exe"; + +pub struct EmptySession { + pub enabled: bool, + pub interval: Instant, +} + +impl Default for EmptySession { + fn default() -> Self { + Self { + enabled: true, + interval: Instant::now(), + } + } +} + +#[link(name = "ntdll")] +unsafe extern "system" { + pub unsafe fn NtSuspendProcess(ProcessHandle: HANDLE) -> NTSTATUS; + pub unsafe fn NtResumeProcess(ProcessHandle: HANDLE) -> NTSTATUS; +} + +fn get_gta_pid(sysinfo: &mut System) -> u32 { + sysinfo.refresh_all(); + if let Some((pid, _)) = sysinfo + .processes() + .iter() + .find(|(_, p)| p.name() == ENHANCED || p.name() == LEGACY) + { + return pid.as_u32(); + }; + u32::MAX +} + +pub fn activate(app: &mut App) { + let pid = get_gta_pid(&mut app.sysinfo); + if pid == u32::MAX { + return; + } + unsafe { + app.game_handle = OpenProcess(PROCESS_SUSPEND_RESUME, false, pid).unwrap(); + let _ = NtSuspendProcess(app.game_handle); + } +} + +pub fn deactivate(app: &mut App) { + unsafe { + let _ = NtResumeProcess(app.game_handle); + } +} diff --git a/src/features/force_close.rs b/src/features/force_close.rs new file mode 100644 index 0000000..b8f7c0f --- /dev/null +++ b/src/features/force_close.rs @@ -0,0 +1,32 @@ +use std::time::Instant; +use sysinfo::System; + +const ENHANCED: &str = "GTA5_Enhanced.exe"; +const LEGACY: &str = "GTA5.exe"; + +pub struct ForceClose { + pub button_text: String, + pub prompting: bool, + pub interval: Instant, +} + +impl Default for ForceClose { + fn default() -> Self { + Self { + button_text: "Force close game".to_string(), + prompting: false, + interval: Instant::now(), + } + } +} + +pub fn activate(sysinfo: &mut System) { + sysinfo.refresh_all(); + sysinfo + .processes() + .iter() + .filter(|(_, p)| p.name() == ENHANCED || p.name() == LEGACY) + .for_each(|(_, p)| { + p.kill(); + }); +} diff --git a/src/features/launch.rs b/src/features/launch.rs new file mode 100644 index 0000000..23da6c3 --- /dev/null +++ b/src/features/launch.rs @@ -0,0 +1,55 @@ +use std::{fmt::Display, path::PathBuf, process::Command}; +use winreg::{RegKey, enums::HKEY_LOCAL_MACHINE}; + +#[derive(Default, Debug, PartialEq, Eq)] +pub enum Platform { + #[default] + Steam, + Rockstar, + Epic, +} + +impl Display for Platform { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let x = match self { + Self::Steam => "Steam", + Self::Rockstar => "Rockstar Games", + Self::Epic => "Epic Games", + }; + write!(f, "{x}") + } +} + +#[derive(Default)] +pub struct Launch { + pub selected: Platform, +} + +pub fn launch(platform: &Platform) { + match platform { + Platform::Steam => { + let _ = open::that_detached("steam://run/3240220"); + } + Platform::Rockstar => { + let hklm = RegKey::predef(HKEY_LOCAL_MACHINE); + let Ok(gta_v_enhanced) = + hklm.open_subkey(r"SOFTWARE\WOW6432Node\Rockstar Games\GTA V Enhanced") + else { + return; + }; + let Ok(install_folder): Result = + gta_v_enhanced.get_value("InstallFolder") + else { + return; + }; + let mut play_gtav_path = PathBuf::from(install_folder); + play_gtav_path.push("PlayGTAV.exe"); + let _ = Command::new(play_gtav_path).spawn(); + } + Platform::Epic => { + let _ = open::that_detached( + "com.epicgames.launcher://apps/331226ba7c944720baa99103cb1fe80c?action=launch&silent=true", + ); + } + } +} diff --git a/src/features/mod.rs b/src/features/mod.rs new file mode 100644 index 0000000..ff161c0 --- /dev/null +++ b/src/features/mod.rs @@ -0,0 +1,4 @@ +pub mod anti_afk; +pub mod empty_session; +pub mod force_close; +pub mod launch; diff --git a/src/gui.rs b/src/gui.rs new file mode 100644 index 0000000..af3abc7 --- /dev/null +++ b/src/gui.rs @@ -0,0 +1,177 @@ +use crate::{ + features::{ + self, + anti_afk::AntiAfk, + empty_session::EmptySession, + force_close::ForceClose, + launch::{Launch, Platform}, + }, + util::Countdown, +}; +use eframe::egui; +use std::time::{Duration, Instant}; +use sysinfo::System; +use windows::Win32::Foundation::HANDLE; + +pub struct App { + pub current_frame: bool, + pub sysinfo: System, + pub game_handle: HANDLE, + pub launch: Launch, + pub force_close: ForceClose, + pub empty_session: EmptySession, + pub empty_session_countdown: Countdown, + pub anti_afk: AntiAfk, +} + +impl Default for App { + fn default() -> Self { + Self { + current_frame: false, + sysinfo: System::new_all(), + game_handle: HANDLE::default(), + launch: Launch::default(), + force_close: ForceClose::default(), + empty_session_countdown: Countdown::new( + features::empty_session::INTERVAL.as_secs() as usize + ), + empty_session: EmptySession::default(), + anti_afk: AntiAfk::default(), + } + } +} + +impl eframe::App for App { + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + catppuccin_egui::set_theme(ctx, catppuccin_egui::MOCHA); + ctx.request_repaint_after(Duration::from_millis(100)); + egui::CentralPanel::default().show(ctx, |ui| { + ui.horizontal(|ui| { + ui.label("Game"); + ui.add(egui::Separator::default().horizontal()); + }); + ui.horizontal(|ui| { + if ui.button("Launch").clicked() { + features::launch::launch(&self.launch.selected); + }; + egui::ComboBox::from_label("") + .selected_text(self.launch.selected.to_string()) + .width(125.0) + .show_ui(ui, |ui| { + ui.selectable_value( + &mut self.launch.selected, + Platform::Steam, + Platform::Steam.to_string(), + ); + ui.selectable_value( + &mut self.launch.selected, + Platform::Rockstar, + Platform::Rockstar.to_string(), + ); + ui.selectable_value( + &mut self.launch.selected, + Platform::Epic, + Platform::Epic.to_string(), + ); + }); + }); + let force_close_button = ui.button(&self.force_close.button_text); + if force_close_button.clicked() && !self.force_close.prompting { + self.force_close.button_text = "Are you sure?".to_string(); + self.force_close.prompting = true; + self.force_close.interval = Instant::now(); + self.current_frame = true; + }; + if self.force_close.prompting + && self.force_close.interval.elapsed() <= Duration::from_secs(3) + { + if force_close_button.clicked() && !self.current_frame { + features::force_close::activate(&mut self.sysinfo); + self.force_close = ForceClose::default(); + } + } else { + self.force_close = ForceClose::default(); + } + if self.current_frame { + self.current_frame = false; + } + ui.horizontal(|ui| { + ui.label("Session"); + ui.add(egui::Separator::default().horizontal()); + }); + ui.add_enabled_ui(self.empty_session.enabled, |ui| { + ui.horizontal(|ui| { + if ui.button("Empty current session").clicked() { + self.empty_session.interval = Instant::now(); + self.empty_session.enabled = false; + features::empty_session::activate(self); + } + if !self.empty_session.enabled { + self.empty_session_countdown.count(); + } else { + self.empty_session_countdown.reset(); + } + if self.empty_session.interval.elapsed() >= features::empty_session::INTERVAL { + features::empty_session::deactivate(self); + self.empty_session.enabled = true; + } + ui.label(&self.empty_session_countdown.i_string); + }); + }); + ui.checkbox(&mut self.anti_afk.enabled, "Anti AFK") + .on_hover_text("You should be tabbed in\nwhile this is enabled."); + if self.anti_afk.enabled + && self.anti_afk.interval.elapsed() >= features::anti_afk::INTERVAL + { + features::anti_afk::activate(); + self.anti_afk.interval = Instant::now(); + } + ui.with_layout(egui::Layout::bottom_up(egui::Align::Center), |ui| { + ui.horizontal(|ui| { + ui.horizontal(|ui| { + ui.spacing_mut().item_spacing.x = 0.0; + ui.label("with love from "); + ui.hyperlink_to("futile", "http://futile.eu"); + }); + ui.separator(); + ui.label(format!("v{}", env!("CARGO_PKG_VERSION"))); + }); + // ui.separator(); + }); + }); + } +} + +fn load_icon() -> eframe::egui::IconData { + let (icon_rgba, icon_width, icon_height) = { + let icon = include_bytes!("../assets/icon.png"); + let image = image::load_from_memory(icon).unwrap().into_rgba8(); + let (width, height) = image.dimensions(); + let rgba = image.into_raw(); + (rgba, width, height) + }; + + eframe::egui::IconData { + rgba: icon_rgba, + width: icon_width, + height: icon_height, + } +} + +pub fn run() { + let options = eframe::NativeOptions { + viewport: egui::ViewportBuilder::default() + .with_resizable(false) + .with_maximize_button(false) + .with_inner_size([250.0, 180.0]) + .with_icon(load_icon()), + centered: true, + ..Default::default() + }; + eframe::run_native( + "GTA Tools", + options, + Box::new(|_cc| Ok(Box::::default())), + ) + .unwrap(); +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..c244338 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,9 @@ +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +mod features; +mod gui; +mod util; + +fn main() { + gui::run(); +} diff --git a/src/util.rs b/src/util.rs new file mode 100644 index 0000000..a191888 --- /dev/null +++ b/src/util.rs @@ -0,0 +1,40 @@ +use std::time::{Duration, Instant}; + +pub struct Countdown { + pub i: usize, + pub i_original: usize, + pub i_string: String, + pub interval: Instant, + pub first_count: bool, +} + +impl Countdown { + pub fn new(i: usize) -> Self { + Self { + i, + i_original: i, + i_string: String::new(), + interval: Instant::now(), + first_count: true, + } + } + + pub fn reset(&mut self) { + *self = Self::new(self.i_original); + } + + pub fn count(&mut self) { + if self.first_count { + self.interval = Instant::now(); + self.first_count = false; + } + if self.interval.elapsed() >= Duration::from_secs(1) { + self.i -= 1; + self.interval = Instant::now(); + } + self.i_string = self.i.to_string(); + if self.i == 0 { + self.reset(); + }; + } +}