From 8caddafdaa19faf8379ba4a8f1a7394c8c3dce5a Mon Sep 17 00:00:00 2001 From: Iaphetes Date: Fri, 24 Oct 2025 21:02:35 +0200 Subject: [PATCH] initial commit --- .gitignore | 2 + Cargo.lock | 5725 +++++++++++++++++ Cargo.toml | 12 + cargo-client/Cargo.toml | 6 + cargo-client/src/main.rs | 3 + orthros-network/Cargo.toml | 6 + orthros-network/src/lib.rs | 2 + orthros-network/src/starchart/mod.rs | 1 + orthros-network/src/starchart/star.rs | 127 + orthros-server/Cargo.toml | 14 + .../assets/fonts/quantum/quantfh.ttf | Bin 0 -> 17136 bytes .../assets/fonts/quantum/quantflt.ttf | Bin 0 -> 12636 bytes .../assets/fonts/quantum/quantrh.ttf | Bin 0 -> 24568 bytes .../assets/fonts/quantum/quantrnd.ttf | Bin 0 -> 17224 bytes .../assets/fonts/quantum/quanttap.ttf | Bin 0 -> 18764 bytes .../assets/fonts/quantum/quantum.txt | 74 + .../assets/shaders/g-type-star.wgsl | 12 + orthros-server/src/main.rs | 300 + orthros-server/src/temporal_management.rs | 1 + src/main.rs | 3 + 20 files changed, 6288 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 cargo-client/Cargo.toml create mode 100644 cargo-client/src/main.rs create mode 100644 orthros-network/Cargo.toml create mode 100644 orthros-network/src/lib.rs create mode 100644 orthros-network/src/starchart/mod.rs create mode 100644 orthros-network/src/starchart/star.rs create mode 100644 orthros-server/Cargo.toml create mode 100644 orthros-server/assets/fonts/quantum/quantfh.ttf create mode 100644 orthros-server/assets/fonts/quantum/quantflt.ttf create mode 100644 orthros-server/assets/fonts/quantum/quantrh.ttf create mode 100644 orthros-server/assets/fonts/quantum/quantrnd.ttf create mode 100644 orthros-server/assets/fonts/quantum/quanttap.ttf create mode 100644 orthros-server/assets/fonts/quantum/quantum.txt create mode 100644 orthros-server/assets/shaders/g-type-star.wgsl create mode 100644 orthros-server/src/main.rs create mode 100644 orthros-server/src/temporal_management.rs create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..56ce728 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +*/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..ef6a1ef --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,5725 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ab_glyph" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" + +[[package]] +name = "accesskit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf203f9d3bd8f29f98833d1fbef628df18f759248a547e7e01cfbf63cda36a99" + +[[package]] +name = "accesskit_consumer" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdd06f5fea9819250fffd4debf926709f3593ac22f8c1541a2573e5ee0ca01cd" +dependencies = [ + "accesskit", + "hashbrown 0.15.5", +] + +[[package]] +name = "accesskit_macos" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fbaf15815f39084e0cb24950c232f0e3634702c2dfbf182ae3b4919a4a1d45" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.15.5", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + +[[package]] +name = "accesskit_windows" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "792991159fa9ba57459de59e12e918bb90c5346fea7d40ac1a11f8632b41e63a" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.15.5", + "static_assertions", + "windows 0.61.3", + "windows-core 0.61.2", +] + +[[package]] +name = "accesskit_winit" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd9db0ea66997e3f4eae4a5f2c6b6486cf206642639ee629dbbb860ace1dec87" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_windows", + "raw-window-handle", + "winit", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.4", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "alsa" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" +dependencies = [ + "alsa-sys", + "bitflags 2.10.0", + "cfg-if", + "libc", +] + +[[package]] +name = "alsa-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" +dependencies = [ + "libc", + "pkg-config", +] + +[[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.10.0", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk 0.9.0", + "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_log-sys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84521a3cf562bc62942e294181d9eef17eb38ceb8c68677bc49f144e4c3d4f8d" + +[[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 = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[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 = "assert_type_match" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f548ad2c4031f2902e3edc1f29c29e835829437de49562d8eb5dc5584d3a1043" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[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.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-lock" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "atomicow" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52e8890bb9844440d0c412fa74b67fd2f14e85248b6e00708059b6da9e5f8bf" +dependencies = [ + "portable-atomic", + "portable-atomic-util", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bevy" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "342f7e9335416dc98642d5747c4ed8a6ad9f7244a36d5b2b7a1b7910e4d8f524" +dependencies = [ + "bevy_internal", +] + +[[package]] +name = "bevy_a11y" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3917cd35096fb2fe176632740b68a4b53cb61006cfff13d66ef47ee2c2478d53" +dependencies = [ + "accesskit", + "bevy_app", + "bevy_derive", + "bevy_ecs", + "bevy_reflect", +] + +[[package]] +name = "bevy_android" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a9dd9488c77fa2ea31b5da2f978aab7f1cc82e6d2c3be0adf637d9fd7cb6c8" +dependencies = [ + "android-activity", +] + +[[package]] +name = "bevy_animation" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00d2eadb9c20d87ab3a5528a8df483492d5b8102d3f2d61c7b1ed23f40a79166" +dependencies = [ + "bevy_animation_macros", + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_mesh", + "bevy_platform", + "bevy_reflect", + "bevy_time", + "bevy_transform", + "bevy_utils", + "blake3", + "derive_more", + "downcast-rs 2.0.2", + "either", + "petgraph", + "ron", + "serde", + "smallvec", + "thiserror 2.0.17", + "thread_local", + "tracing", + "uuid", +] + +[[package]] +name = "bevy_animation_macros" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aec80b84926f730f6df81b9bc07255c120f57aaf7ac577f38d12dd8e1a0268ad" +dependencies = [ + "bevy_macro_utils", + "quote", + "syn", +] + +[[package]] +name = "bevy_anti_alias" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c1adb85fe0956d6c3b6f90777b829785bb7e29a48f58febeeefd2bad317713" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_core_pipeline", + "bevy_derive", + "bevy_diagnostic", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_shader", + "bevy_utils", + "tracing", +] + +[[package]] +name = "bevy_app" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f582409b4ed3850d9b66ee94e71a0e2c20e7068121d372530060c4dfcba66fa" +dependencies = [ + "bevy_derive", + "bevy_ecs", + "bevy_platform", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "cfg-if", + "console_error_panic_hook", + "ctrlc", + "downcast-rs 2.0.2", + "log", + "thiserror 2.0.17", + "variadics_please", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "bevy_asset" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e6ee42e74a64a46ab91bd1c0155f8abe5b732bdb948a9b26e541456cc7940e5" +dependencies = [ + "async-broadcast", + "async-fs", + "async-lock", + "atomicow", + "bevy_android", + "bevy_app", + "bevy_asset_macros", + "bevy_ecs", + "bevy_platform", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bitflags 2.10.0", + "blake3", + "crossbeam-channel", + "derive_more", + "disqualified", + "downcast-rs 2.0.2", + "either", + "futures-io", + "futures-lite", + "js-sys", + "parking_lot", + "ron", + "serde", + "stackfuture", + "thiserror 2.0.17", + "tracing", + "uuid", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "bevy_asset_macros" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d03711d2c087227f64ba85dd38a99d4d6893f80d2475c2e77fb90a883760a055" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_audio" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83620c82f281848c02ed4b65133a0364512b4eca2b39cd21a171e50e2986d89" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_transform", + "coreaudio-sys", + "cpal", + "rodio", + "tracing", +] + +[[package]] +name = "bevy_camera" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b70d79ccbd8bfefc79f33a104dfd82ae2f5276ce04d6df75787bfa3edc4c4c1a" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_mesh", + "bevy_reflect", + "bevy_transform", + "bevy_utils", + "bevy_window", + "derive_more", + "downcast-rs 2.0.2", + "serde", + "smallvec", + "thiserror 2.0.17", + "wgpu-types", +] + +[[package]] +name = "bevy_color" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94dc78477c1c208c0cd221c64e907aba8ba165f39bebb72adc6180e1a13e8938" +dependencies = [ + "bevy_math", + "bevy_reflect", + "bytemuck", + "derive_more", + "encase", + "serde", + "thiserror 2.0.17", + "wgpu-types", +] + +[[package]] +name = "bevy_core_pipeline" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c866a2fe33ec27a612d883223d30f1857aa852766b21a9603628735dace632f" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_platform", + "bevy_reflect", + "bevy_render", + "bevy_shader", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags 2.10.0", + "nonmax", + "radsort", + "smallvec", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "bevy_derive" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8c733807158f8fcac68e23222e69ed91a6492ae9410fc2c145b9bb182cfd63e" +dependencies = [ + "bevy_macro_utils", + "quote", + "syn", +] + +[[package]] +name = "bevy_diagnostic" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f12fa32312818c08aa4035bebe9fb3f62aaf7efae33688e718dd6ee6c0147493" +dependencies = [ + "atomic-waker", + "bevy_app", + "bevy_ecs", + "bevy_platform", + "bevy_tasks", + "bevy_time", + "const-fnv1a-hash", + "log", + "serde", + "sysinfo", +] + +[[package]] +name = "bevy_ecs" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d929d32190cfcde6efd2df493601c4dbc18a691fd9775a544c951c3c112e1a" +dependencies = [ + "arrayvec", + "bevy_ecs_macros", + "bevy_platform", + "bevy_ptr", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "bitflags 2.10.0", + "bumpalo", + "concurrent-queue", + "derive_more", + "fixedbitset", + "indexmap", + "log", + "nonmax", + "serde", + "slotmap", + "smallvec", + "thiserror 2.0.17", + "variadics_please", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eeddfb80a2e000663e87be9229c26b4da92bddbc06c8776bc0d1f4a7f679079" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_encase_derive" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7449e5903594a00f007732ba232af0c527ad4e6e3d29bc3e195ec78dbd20c8b2" +dependencies = [ + "bevy_macro_utils", + "encase_derive_impl", +] + +[[package]] +name = "bevy_gilrs" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28ff35087f25406006338e6d57f31f313a60f3a5e09990ab7c7b5203b0b55077" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_platform", + "bevy_time", + "gilrs", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "bevy_gizmos" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d3f174faa13041634060dd99f6f59c29997fd62f40252f0466c2ebea8603d4d" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_gizmos_macros", + "bevy_image", + "bevy_light", + "bevy_math", + "bevy_mesh", + "bevy_pbr", + "bevy_reflect", + "bevy_render", + "bevy_shader", + "bevy_sprite_render", + "bevy_time", + "bevy_transform", + "bevy_utils", + "bytemuck", + "tracing", +] + +[[package]] +name = "bevy_gizmos_macros" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "714273aa7f285c0aaa874b7fbe37fe4e6e45355e3e6f3321aefa1b78cda259e0" +dependencies = [ + "bevy_macro_utils", + "quote", + "syn", +] + +[[package]] +name = "bevy_gltf" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d67e954b20551818f7cdb33f169ab4db64506ada66eb4d60d3cb8861103411" +dependencies = [ + "base64", + "bevy_animation", + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_ecs", + "bevy_image", + "bevy_light", + "bevy_math", + "bevy_mesh", + "bevy_pbr", + "bevy_platform", + "bevy_reflect", + "bevy_render", + "bevy_scene", + "bevy_tasks", + "bevy_transform", + "fixedbitset", + "gltf", + "itertools 0.14.0", + "percent-encoding", + "serde", + "serde_json", + "smallvec", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "bevy_image" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168de8239b2aedd2eeef9f76ae1909b2fdf859b11dcdb4d4d01b93f5f2c771be" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_ecs", + "bevy_math", + "bevy_platform", + "bevy_reflect", + "bevy_utils", + "bitflags 2.10.0", + "bytemuck", + "futures-lite", + "guillotiere", + "half", + "image", + "ktx2", + "rectangle-pack", + "ruzstd", + "serde", + "thiserror 2.0.17", + "tracing", + "wgpu-types", +] + +[[package]] +name = "bevy_input" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cf4074b2d0d6680b4deb308ded7b4e8b1b99181c0502e2632e78af815b26f01" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_math", + "bevy_platform", + "bevy_reflect", + "derive_more", + "log", + "smol_str", + "thiserror 2.0.17", +] + +[[package]] +name = "bevy_input_focus" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70761eba0f616a1caa761457bff2b8ae80c9916f39d167fab8c2d5c98d2b8951" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_input", + "bevy_math", + "bevy_picking", + "bevy_reflect", + "bevy_window", + "log", + "thiserror 2.0.17", +] + +[[package]] +name = "bevy_internal" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43985739584f3a5d43026aa1edd772f064830be46c497518f05f7dfbc886bba" +dependencies = [ + "bevy_a11y", + "bevy_android", + "bevy_animation", + "bevy_anti_alias", + "bevy_app", + "bevy_asset", + "bevy_audio", + "bevy_camera", + "bevy_color", + "bevy_core_pipeline", + "bevy_derive", + "bevy_diagnostic", + "bevy_ecs", + "bevy_gilrs", + "bevy_gizmos", + "bevy_gltf", + "bevy_image", + "bevy_input", + "bevy_input_focus", + "bevy_light", + "bevy_log", + "bevy_math", + "bevy_mesh", + "bevy_pbr", + "bevy_picking", + "bevy_platform", + "bevy_post_process", + "bevy_ptr", + "bevy_reflect", + "bevy_render", + "bevy_scene", + "bevy_shader", + "bevy_sprite", + "bevy_sprite_render", + "bevy_state", + "bevy_tasks", + "bevy_text", + "bevy_time", + "bevy_transform", + "bevy_ui", + "bevy_ui_render", + "bevy_utils", + "bevy_window", + "bevy_winit", +] + +[[package]] +name = "bevy_light" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cad00ab66d1e93edb928be66606a71066f3b1cbc9f414720e290ef5361eb6237" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_mesh", + "bevy_platform", + "bevy_reflect", + "bevy_transform", + "bevy_utils", + "tracing", +] + +[[package]] +name = "bevy_log" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae217a035714a37b779487f82edc4c7c1223f7088d7ad94054f29f524d61c51" +dependencies = [ + "android_log-sys", + "bevy_app", + "bevy_ecs", + "bevy_platform", + "bevy_utils", + "tracing", + "tracing-log", + "tracing-oslog", + "tracing-subscriber", + "tracing-wasm", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17dbc3f8948da58b3c17767d20fd3cd35fe4721ed19a9a3204a6f1d6c9951bdd" +dependencies = [ + "parking_lot", + "proc-macro2", + "quote", + "syn", + "toml_edit", +] + +[[package]] +name = "bevy_math" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7a41e368ffa95ae2a353197d1ae3993f4d3d471444d80b65c932db667ea7b9e" +dependencies = [ + "approx", + "bevy_reflect", + "derive_more", + "glam", + "itertools 0.14.0", + "libm", + "rand 0.9.2", + "rand_distr 0.5.1", + "serde", + "smallvec", + "thiserror 2.0.17", + "variadics_please", +] + +[[package]] +name = "bevy_mesh" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6255244b71153b305fddb4e6f827cb97ed51f276b6e632f5fc46538647948f6" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_mikktspace", + "bevy_platform", + "bevy_reflect", + "bevy_transform", + "bitflags 2.10.0", + "bytemuck", + "derive_more", + "hexasphere", + "thiserror 2.0.17", + "tracing", + "wgpu-types", +] + +[[package]] +name = "bevy_mikktspace" +version = "0.17.0-dev" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef8e4b7e61dfe7719bb03c884dc270cd46a82efb40f93e9933b990c5c190c59" + +[[package]] +name = "bevy_pbr" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8c76337a6ae9d73d50be168aeee974d05fdeda9129a413eaff719e3b7b5fea" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_core_pipeline", + "bevy_derive", + "bevy_diagnostic", + "bevy_ecs", + "bevy_image", + "bevy_light", + "bevy_math", + "bevy_mesh", + "bevy_platform", + "bevy_reflect", + "bevy_render", + "bevy_shader", + "bevy_transform", + "bevy_utils", + "bitflags 2.10.0", + "bytemuck", + "derive_more", + "fixedbitset", + "nonmax", + "offset-allocator", + "smallvec", + "static_assertions", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "bevy_picking" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a232a8ea4dc9b83c08226f56b868acb1ead06946a95d8b9c8cbbcc860cd8090" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_derive", + "bevy_ecs", + "bevy_input", + "bevy_math", + "bevy_mesh", + "bevy_platform", + "bevy_reflect", + "bevy_time", + "bevy_transform", + "bevy_window", + "crossbeam-channel", + "tracing", + "uuid", +] + +[[package]] +name = "bevy_platform" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10cf8cda162688c95250e74cffaa1c3a04597f105d4ca35554106f107308ea57" +dependencies = [ + "critical-section", + "foldhash 0.2.0", + "futures-channel", + "getrandom 0.3.4", + "hashbrown 0.16.0", + "js-sys", + "portable-atomic", + "portable-atomic-util", + "serde", + "spin", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-time", +] + +[[package]] +name = "bevy_post_process" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26ee8ab6043f8bbe43e9c16bbdde0c5e7289b99e62cd8aad1a2a4166a7f2bce6" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_platform", + "bevy_reflect", + "bevy_render", + "bevy_shader", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags 2.10.0", + "nonmax", + "radsort", + "smallvec", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "bevy_ptr" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28ab4074e7b781bab84e9b0a41ede245d673d1f75646ce0db27643aedcfb3a85" + +[[package]] +name = "bevy_reflect" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "333df3f5947b7e62728eb5c0b51d679716b16c7c5283118fed4563f13230954e" +dependencies = [ + "assert_type_match", + "bevy_platform", + "bevy_ptr", + "bevy_reflect_derive", + "bevy_utils", + "derive_more", + "disqualified", + "downcast-rs 2.0.2", + "erased-serde", + "foldhash 0.2.0", + "glam", + "inventory", + "petgraph", + "serde", + "smallvec", + "smol_str", + "thiserror 2.0.17", + "uuid", + "variadics_please", + "wgpu-types", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0205dce9c5a4d8d041b263bcfd96e9d9d6f3d49416e12db347ab5778b3071fe1" +dependencies = [ + "bevy_macro_utils", + "indexmap", + "proc-macro2", + "quote", + "syn", + "uuid", +] + +[[package]] +name = "bevy_render" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d6a5d47ebb247e4ecaaf4a3b0310b7c518728ff2362c69f4220d0d3228e17d" +dependencies = [ + "async-channel", + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_derive", + "bevy_diagnostic", + "bevy_ecs", + "bevy_encase_derive", + "bevy_image", + "bevy_math", + "bevy_mesh", + "bevy_platform", + "bevy_reflect", + "bevy_render_macros", + "bevy_shader", + "bevy_tasks", + "bevy_time", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags 2.10.0", + "bytemuck", + "derive_more", + "downcast-rs 2.0.2", + "encase", + "fixedbitset", + "image", + "indexmap", + "js-sys", + "naga", + "nonmax", + "offset-allocator", + "send_wrapper", + "smallvec", + "thiserror 2.0.17", + "tracing", + "variadics_please", + "wasm-bindgen", + "web-sys", + "wgpu", +] + +[[package]] +name = "bevy_render_macros" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7e8b553adf0a4f9f059c5c2dcb52d9ac09abede1c322a92b43b9f4bb11c3843" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bevy_scene" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e601ffeebbdaba1193f823dbdc9fc8787a24cf83225a72fee4def5c27a18778a" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_derive", + "bevy_ecs", + "bevy_platform", + "bevy_reflect", + "bevy_transform", + "bevy_utils", + "derive_more", + "serde", + "thiserror 2.0.17", + "uuid", +] + +[[package]] +name = "bevy_shader" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cef8f8e53776d286eb62bb60164f30671f07005ff407e94ec1176e9426d1477" +dependencies = [ + "bevy_asset", + "bevy_platform", + "bevy_reflect", + "naga", + "naga_oil", + "serde", + "thiserror 2.0.17", + "tracing", + "wgpu-types", +] + +[[package]] +name = "bevy_sprite" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74bb52fa52caa1cc8d95acf45e52efc0c72b59755c2f0801a30fdab367921db0" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_mesh", + "bevy_picking", + "bevy_reflect", + "bevy_text", + "bevy_transform", + "bevy_window", + "radsort", + "tracing", + "wgpu-types", +] + +[[package]] +name = "bevy_sprite_render" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31bb90a9139b04568bd30b2492ba61234092d95a7f7e3c84b55369b16d7e261b" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_mesh", + "bevy_platform", + "bevy_reflect", + "bevy_render", + "bevy_shader", + "bevy_sprite", + "bevy_text", + "bevy_transform", + "bevy_utils", + "bitflags 2.10.0", + "bytemuck", + "derive_more", + "fixedbitset", + "nonmax", + "tracing", +] + +[[package]] +name = "bevy_state" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe4e955f36cdc7b31556e4619a653dcf65d46967d90d36fb788f746c8e89257e" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_platform", + "bevy_reflect", + "bevy_state_macros", + "bevy_utils", + "log", + "variadics_please", +] + +[[package]] +name = "bevy_state_macros" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c3e4e32b1b96585740a2b447661af7db1b9d688db5e4d96da50461cd8f5ce63" +dependencies = [ + "bevy_macro_utils", + "quote", + "syn", +] + +[[package]] +name = "bevy_tasks" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18839182775f30d26f0f84d9de85d25361bb593c99517a80b64ede6cbaf41adc" +dependencies = [ + "async-channel", + "async-executor", + "async-task", + "atomic-waker", + "bevy_platform", + "concurrent-queue", + "crossbeam-queue", + "derive_more", + "futures-lite", + "heapless", + "pin-project", +] + +[[package]] +name = "bevy_text" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc1b759cf2ed8992132bd541ebb9ffcfa777d2faf3596d418fb25984bc6677d8" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_log", + "bevy_math", + "bevy_platform", + "bevy_reflect", + "bevy_utils", + "cosmic-text", + "serde", + "smallvec", + "sys-locale", + "thiserror 2.0.17", + "tracing", + "wgpu-types", +] + +[[package]] +name = "bevy_time" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a52edd3d30ed94074f646ba1c9914e407af9abe5b6fb7a4322c855341a536cc" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_platform", + "bevy_reflect", + "crossbeam-channel", + "log", + "serde", +] + +[[package]] +name = "bevy_transform" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7995ae14430b1a268d1e4f098ab770e8af880d2df5e4e37161b47d8d9e9625bd" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_tasks", + "bevy_utils", + "derive_more", + "serde", + "thiserror 2.0.17", +] + +[[package]] +name = "bevy_ui" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc999815a67a6b2fc911df9eea27af703ff656aed6fd31d8606dced701f07fd6" +dependencies = [ + "accesskit", + "bevy_a11y", + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_input", + "bevy_math", + "bevy_picking", + "bevy_platform", + "bevy_reflect", + "bevy_sprite", + "bevy_text", + "bevy_transform", + "bevy_utils", + "bevy_window", + "derive_more", + "smallvec", + "taffy", + "thiserror 2.0.17", + "tracing", + "uuid", +] + +[[package]] +name = "bevy_ui_render" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adae9770089e04339d003afe7abe7153fe71600d81c828f964c7ac329b04d5b9" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_mesh", + "bevy_platform", + "bevy_reflect", + "bevy_render", + "bevy_shader", + "bevy_sprite", + "bevy_sprite_render", + "bevy_text", + "bevy_transform", + "bevy_ui", + "bevy_utils", + "bytemuck", + "derive_more", + "tracing", +] + +[[package]] +name = "bevy_utils" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "080254083c74d5f6eb0649d7cd6181bda277e8fe3c509ec68990a5d56ec23f24" +dependencies = [ + "bevy_platform", + "disqualified", + "thread_local", +] + +[[package]] +name = "bevy_window" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f582478606d6b6e5c53befbe7612f038fdfb73f8a27f7aae644406637347acd4" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_ecs", + "bevy_image", + "bevy_input", + "bevy_math", + "bevy_platform", + "bevy_reflect", + "log", + "raw-window-handle", + "serde", +] + +[[package]] +name = "bevy_winit" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb0ccf2faca4b4c156a26284d1bbf90a8cac8568a273adcd6c1a270c1342f3df" +dependencies = [ + "accesskit", + "accesskit_winit", + "approx", + "bevy_a11y", + "bevy_android", + "bevy_app", + "bevy_asset", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_input", + "bevy_input_focus", + "bevy_log", + "bevy_math", + "bevy_platform", + "bevy_reflect", + "bevy_tasks", + "bevy_window", + "bytemuck", + "cfg-if", + "tracing", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "winit", +] + +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.10.0", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "proc-macro2", + "quote", + "regex", + "rustc-hash 2.1.1", + "shlex", + "syn", +] + +[[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.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +dependencies = [ + "bytemuck", + "serde_core", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + +[[package]] +name = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[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.10.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 = "cargo-client" +version = "0.1.0" + +[[package]] +name = "cc" +version = "1.2.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81bbf3b3619004ad9bd139f62a9ab5cfe467f307455a0d307b0cf58bf070feaa" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "codespan-reporting" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" +dependencies = [ + "serde", + "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", + "portable-atomic", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "const-fnv1a-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" + +[[package]] +name = "const_panic" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e262cdaac42494e3ae34c43969f9cdeb7da178bdb4b66fa6a1ea2edb4c8ae652" +dependencies = [ + "typewit", +] + +[[package]] +name = "const_soft_float" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ca1caa64ef4ed453e68bb3db612e51cf1b2f5b871337f0fcab1c8f87cc3dff" + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "constgebra" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1aaf9b65849a68662ac6c0810c8893a765c960b907dd7cfab9c4a50bf764fbc" +dependencies = [ + "const_soft_float", +] + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +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 0.1.3", + "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 = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.10.0", + "core-foundation 0.10.1", + "libc", +] + +[[package]] +name = "coreaudio-rs" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" +dependencies = [ + "bitflags 1.3.2", + "core-foundation-sys", + "coreaudio-sys", +] + +[[package]] +name = "coreaudio-sys" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ceec7a6067e62d6f931a2baf6f3a751f4a892595bcec1461a3c94ef9949864b6" +dependencies = [ + "bindgen", +] + +[[package]] +name = "cosmic-text" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da46a9d5a8905cc538a4a5bceb6a4510de7a51049c5588c0114efce102bcbbe8" +dependencies = [ + "bitflags 2.10.0", + "fontdb", + "log", + "rangemap", + "rustc-hash 1.1.0", + "rustybuzz", + "self_cell", + "smol_str", + "swash", + "sys-locale", + "ttf-parser 0.21.1", + "unicode-bidi", + "unicode-linebreak", + "unicode-script", + "unicode-segmentation", +] + +[[package]] +name = "cpal" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" +dependencies = [ + "alsa", + "core-foundation-sys", + "coreaudio-rs", + "dasp_sample", + "jni", + "js-sys", + "libc", + "mach2", + "ndk 0.8.0", + "ndk-context", + "oboe", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows 0.54.0", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +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 = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "ctrlc" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881c5d0a13b2f1498e2306e82cbada78390e152d4b1378fb28a84f4dcd0dc4f3" +dependencies = [ + "dispatch", + "nix", + "windows-sys 0.61.2", +] + +[[package]] +name = "cursor-icon" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" + +[[package]] +name = "dasp_sample" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" + +[[package]] +name = "data-encoding" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "disqualified" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9c272297e804878a2a4b707cfcfc6d2328b5bb936944613b4fdf2b9269afdfd" + +[[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.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +dependencies = [ + "litrs", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "downcast-rs" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "117240f60069e65410b3ae1bb213295bd828f707b5bec6596a1afc8793ce0cbc" + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "encase" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02ba239319a4f60905966390f5e52799d868103a533bb7e27822792332504ddd" +dependencies = [ + "const_panic", + "encase_derive", + "glam", + "thiserror 2.0.17", +] + +[[package]] +name = "encase_derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5223d6c647f09870553224f6e37261fe5567bc5a4f4cf13ed337476e79990f2f" +dependencies = [ + "encase_derive_impl", +] + +[[package]] +name = "encase_derive_impl" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1796db3d892515842ca2dfb11124c4bb4a9e58d9f2c5c1072e5bca1b2334507b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "erased-serde" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b" +dependencies = [ + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "euclid" +version = "0.22.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" +dependencies = [ + "num-traits", +] + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +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 = "find-msvc-tools" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + +[[package]] +name = "flate2" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "font-types" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "511e2c18a516c666d27867d2f9821f76e7d591f762e9fc41dd6cc5c90fe54b0b" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "fontconfig-parser" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646" +dependencies = [ + "roxmltree", +] + +[[package]] +name = "fontdb" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0299020c3ef3f60f526a4f64ab4a3d4ce116b1acbf24cdd22da0068e5d81dc3" +dependencies = [ + "fontconfig-parser", + "log", + "memmap2", + "slotmap", + "tinyvec", + "ttf-parser 0.20.0", +] + +[[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 = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "gethostname" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +dependencies = [ + "rustix 1.1.2", + "windows-link 0.2.1", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "gilrs" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb2c998745a3c1ac90f64f4f7b3a54219fd3612d7705e7798212935641ed18f" +dependencies = [ + "fnv", + "gilrs-core", + "log", + "uuid", + "vec_map", +] + +[[package]] +name = "gilrs-core" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be11a71ac3564f6965839e2ed275bf4fcf5ce16d80d396e1dfdb7b2d80bd587e" +dependencies = [ + "core-foundation 0.10.1", + "inotify", + "io-kit-sys", + "js-sys", + "libc", + "libudev-sys", + "log", + "nix", + "uuid", + "vec_map", + "wasm-bindgen", + "web-sys", + "windows 0.62.2", +] + +[[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 = "glam" +version = "0.30.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e12d847aeb25f41be4c0ec9587d624e9cd631bc007a8fd7ce3f5851e064c6460" +dependencies = [ + "bytemuck", + "libm", + "rand 0.9.2", + "serde_core", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[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 = "gltf" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ce1918195723ce6ac74e80542c5a96a40c2b26162c1957a5cd70799b8cacf7" +dependencies = [ + "byteorder", + "gltf-json", + "lazy_static", + "serde_json", +] + +[[package]] +name = "gltf-derive" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14070e711538afba5d6c807edb74bcb84e5dbb9211a3bf5dea0dfab5b24f4c51" +dependencies = [ + "inflections", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "gltf-json" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6176f9d60a7eab0a877e8e96548605dedbde9190a7ae1e80bbcc1c9af03ab14" +dependencies = [ + "gltf-derive", + "serde", + "serde_derive", + "serde_json", +] + +[[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.10.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.10.0", +] + +[[package]] +name = "gpu-allocator" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" +dependencies = [ + "log", + "presser", + "thiserror 1.0.69", + "windows 0.58.0", +] + +[[package]] +name = "gpu-descriptor" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" +dependencies = [ + "bitflags 2.10.0", + "gpu-descriptor-types", + "hashbrown 0.15.5", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "grid" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36119f3a540b086b4e436bb2b588cf98a68863470e0e880f4d0842f112a3183a" + +[[package]] +name = "guillotiere" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" +dependencies = [ + "euclid", + "svg_fmt", +] + +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "num-traits", + "zerocopy", +] + +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +dependencies = [ + "equivalent", + "serde", +] + +[[package]] +name = "heapless" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" +dependencies = [ + "hash32", + "portable-atomic", + "stable_deref_trait", +] + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hexasphere" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29a164ceff4500f2a72b1d21beaa8aa8ad83aec2b641844c659b190cb3ea2e0b" +dependencies = [ + "constgebra", + "glam", + "tinyvec", +] + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "image" +version = "0.25.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7" +dependencies = [ + "bytemuck", + "byteorder-lite", + "moxcms", + "num-traits", + "png", +] + +[[package]] +name = "indexmap" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +dependencies = [ + "equivalent", + "hashbrown 0.16.0", + "serde", + "serde_core", +] + +[[package]] +name = "inflections" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" + +[[package]] +name = "inotify" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" +dependencies = [ + "bitflags 2.10.0", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "inventory" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" +dependencies = [ + "rustversion", +] + +[[package]] +name = "io-kit-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b" +dependencies = [ + "core-foundation-sys", + "mach2", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[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.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +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 = "ktx2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff7f53bdf698e7aa7ec916411bbdc8078135da11b66db5182675b2227f6c0d07" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "lewton" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030" +dependencies = [ + "byteorder", + "ogg", + "tinyvec", +] + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link 0.2.1", +] + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libredox" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +dependencies = [ + "bitflags 2.10.0", + "libc", + "redox_syscall 0.5.18", +] + +[[package]] +name = "libudev-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" +dependencies = [ + "libc", + "pkg-config", +] + +[[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.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litrs" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "mach2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" +dependencies = [ + "libc", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matrixmultiply" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "memmap2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" +dependencies = [ + "libc", +] + +[[package]] +name = "metal" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" +dependencies = [ + "bitflags 2.10.0", + "block", + "core-graphics-types 0.2.0", + "foreign-types", + "log", + "objc", + "paste", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "moxcms" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c588e11a3082784af229e23e8e4ecf5bcc6fbe4f69101e0421ce8d79da7f0b40" +dependencies = [ + "num-traits", + "pxfm", +] + +[[package]] +name = "naga" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "916cbc7cb27db60be930a4e2da243cf4bc39569195f22fd8ee419cd31d5b662c" +dependencies = [ + "arrayvec", + "bit-set", + "bitflags 2.10.0", + "cfg-if", + "cfg_aliases", + "codespan-reporting", + "half", + "hashbrown 0.15.5", + "hexf-parse", + "indexmap", + "libm", + "log", + "num-traits", + "once_cell", + "pp-rs", + "rustc-hash 1.1.0", + "spirv", + "thiserror 2.0.17", + "unicode-ident", +] + +[[package]] +name = "naga_oil" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b586d3cf5c9b7e13fe2af6e114406ff70773fd80881960378933b63e76f37dd" +dependencies = [ + "codespan-reporting", + "data-encoding", + "indexmap", + "naga", + "regex", + "rustc-hash 1.1.0", + "thiserror 2.0.17", + "tracing", + "unicode-ident", +] + +[[package]] +name = "nalgebra" +version = "0.33.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26aecdf64b707efd1310e3544d709c5c0ac61c13756046aaaba41be5c4f66a3b" +dependencies = [ + "approx", + "matrixmultiply", + "num-complex", + "num-rational", + "num-traits", + "rand 0.8.5", + "rand_distr 0.4.3", + "simba", + "typenum", +] + +[[package]] +name = "ndk" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" +dependencies = [ + "bitflags 2.10.0", + "jni-sys", + "log", + "ndk-sys 0.5.0+25.2.9519653", + "num_enum", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.10.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.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags 2.10.0", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nonmax" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_enum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +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-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.10.0", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "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.10.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "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", + "objc2-contacts", + "objc2-foundation", +] + +[[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.10.0", + "block2", + "dispatch", + "libc", + "objc2", +] + +[[package]] +name = "objc2-io-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" +dependencies = [ + "libc", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation", + "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", + "objc2-foundation", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "oboe" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" +dependencies = [ + "jni", + "ndk 0.8.0", + "ndk-context", + "num-derive", + "num-traits", + "oboe-sys", +] + +[[package]] +name = "oboe-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d" +dependencies = [ + "cc", +] + +[[package]] +name = "offset-allocator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e234d535da3521eb95106f40f0b73483d80bfb3aacf27c40d7e2b72f1a3e00a2" +dependencies = [ + "log", + "nonmax", +] + +[[package]] +name = "ogg" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e" +dependencies = [ + "byteorder", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[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 = "orthros" +version = "0.1.0" +dependencies = [ + "orthros_network", +] + +[[package]] +name = "orthros-server" +version = "0.1.0" +dependencies = [ + "bevy", + "orthros_network", + "rand 0.9.2", + "statrs", +] + +[[package]] +name = "orthros_network" +version = "0.1.0" + +[[package]] +name = "owned_ttf_parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" +dependencies = [ + "ttf-parser 0.25.1", +] + +[[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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.18", + "smallvec", + "windows-link 0.2.1", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "petgraph" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" +dependencies = [ + "fixedbitset", + "hashbrown 0.15.5", + "indexmap", + "serde", + "serde_derive", +] + +[[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 = "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.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" +dependencies = [ + "bitflags 2.10.0", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 1.1.2", + "windows-sys 0.61.2", +] + +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "pp-rs" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb458bb7f6e250e6eb79d5026badc10a3ebb8f9a15d1fff0f13d17c71f4d6dee" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" + +[[package]] +name = "pxfm" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3cbdf373972bf78df4d3b518d07003938e2c7d1fb5891e55f9cb6df57009d84" +dependencies = [ + "num-traits", +] + +[[package]] +name = "quick-xml" +version = "0.37.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radsort" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "019b4b213425016d7d84a153c4c73afb0946fbb4840e4eece7ba8848b9d6da22" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + +[[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 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "rand_distr" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "rand_distr" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8615d50dcf34fa31f7ab52692afec947c4dd0ab803cc87cb3b0b4570ff7463" +dependencies = [ + "num-traits", + "rand 0.9.2", +] + +[[package]] +name = "range-alloc" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" + +[[package]] +name = "rangemap" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93e7e49bb0bf967717f7bd674458b3d6b0c5f48ec7e3038166026a69fc22223" + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "read-fonts" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717cf23b488adf64b9d711329542ba34de147df262370221940dfabc2c91358" +dependencies = [ + "bytemuck", + "font-types", +] + +[[package]] +name = "rectangle-pack" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb" + +[[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.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" + +[[package]] +name = "renderdoc-sys" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" + +[[package]] +name = "rodio" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ceb6607dd738c99bc8cb28eff249b7cd5c8ec88b9db96c0608c1480d140fb1" +dependencies = [ + "cpal", + "lewton", +] + +[[package]] +name = "ron" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beceb6f7bf81c73e73aeef6dd1356d9a1b2b4909e1f0fc3e59b034f9572d7b7f" +dependencies = [ + "base64", + "bitflags 2.10.0", + "serde", + "serde_derive", + "unicode-ident", +] + +[[package]] +name = "roxmltree" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.10.0", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags 2.10.0", + "errno", + "libc", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "rustybuzz" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" +dependencies = [ + "bitflags 2.10.0", + "bytemuck", + "libm", + "smallvec", + "ttf-parser 0.21.1", + "unicode-bidi-mirroring", + "unicode-ccc", + "unicode-properties", + "unicode-script", +] + +[[package]] +name = "ruzstd" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3640bec8aad418d7d03c72ea2de10d5c646a598f9883c7babc160d91e3c1b26c" +dependencies = [ + "twox-hash", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "safe_arch" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" +dependencies = [ + "bytemuck", +] + +[[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 = "self_cell" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16c2f82143577edb4921b71ede051dac62ca3c16084e918bf7b40c96ae10eb33" + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "simba" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c99284beb21666094ba2b75bbceda012e610f5479dfcc2d6e2426f53197ffd95" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "skrifa" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c31071dedf532758ecf3fed987cdb4bd9509f900e026ab684b4ecb81ea49841" +dependencies = [ + "bytemuck", + "read-fonts", +] + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[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.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "smithay-client-toolkit" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" +dependencies = [ + "bitflags 2.10.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 = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + +[[package]] +name = "spin" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" +dependencies = [ + "portable-atomic", +] + +[[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.10.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "stackfuture" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eae92052b72ef70dafa16eddbabffc77e5ca3574be2f7bc1127b36f0a7ad7f2" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "statrs" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a3fe7c28c6512e766b0874335db33c94ad7b8f9054228ae1c2abd47ce7d335e" +dependencies = [ + "approx", + "nalgebra", + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" + +[[package]] +name = "svg_fmt" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0193cc4331cfd2f3d2011ef287590868599a2f33c3e69bc22c1a3d3acf9e02fb" + +[[package]] +name = "swash" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47846491253e976bdd07d0f9cc24b7daf24720d11309302ccbbc6e6b6e53550a" +dependencies = [ + "skrifa", + "yazi", + "zeno", +] + +[[package]] +name = "syn" +version = "2.0.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sys-locale" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" +dependencies = [ + "libc", +] + +[[package]] +name = "sysinfo" +version = "0.37.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16607d5caffd1c07ce073528f9ed972d88db15dd44023fa57142963be3feb11f" +dependencies = [ + "libc", + "memchr", + "ntapi", + "objc2-core-foundation", + "objc2-io-kit", + "windows 0.61.3", +] + +[[package]] +name = "taffy" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab4f4d046dd956a47a7e1a2947083d7ac3e6aa3cfaaead36173ceaa5ab11878c" +dependencies = [ + "arrayvec", + "grid", + "serde", + "slotmap", +] + +[[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.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl 2.0.17", +] + +[[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.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[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 = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "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.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-oslog" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76902d2a8d5f9f55a81155c08971734071968c90f2d9bfe645fe700579b2950" +dependencies = [ + "cc", + "cfg-if", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "tracing-wasm" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" +dependencies = [ + "tracing", + "tracing-subscriber", + "wasm-bindgen", +] + +[[package]] +name = "ttf-parser" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" + +[[package]] +name = "ttf-parser" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" + +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" + +[[package]] +name = "twox-hash" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" + +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "typewit" +version = "1.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8c1ae7cc0fdb8b842d65d127cb981574b0d2b249b74d1c7a2986863dc134f71" + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + +[[package]] +name = "unicode-bidi-mirroring" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" + +[[package]] +name = "unicode-ccc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" + +[[package]] +name = "unicode-ident" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06" + +[[package]] +name = "unicode-linebreak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" + +[[package]] +name = "unicode-properties" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" + +[[package]] +name = "unicode-script" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" + +[[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 = "uuid" +version = "1.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +dependencies = [ + "getrandom 0.3.4", + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "variadics_please" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41b6d82be61465f97d42bd1d15bf20f3b0a3a0905018f38f9d6f6962055b0b5c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[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.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wayland-backend" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" +dependencies = [ + "cc", + "downcast-rs 1.2.1", + "rustix 1.1.2", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" +dependencies = [ + "bitflags 2.10.0", + "rustix 1.1.2", + "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.10.0", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29" +dependencies = [ + "rustix 1.1.2", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142" +dependencies = [ + "dlib", + "log", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" +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 = "wgpu" +version = "26.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70b6ff82bbf6e9206828e1a3178e851f8c20f1c9028e74dd3a8090741ccd5798" +dependencies = [ + "arrayvec", + "bitflags 2.10.0", + "cfg-if", + "cfg_aliases", + "document-features", + "hashbrown 0.15.5", + "js-sys", + "log", + "naga", + "portable-atomic", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "26.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f62f1053bd28c2268f42916f31588f81f64796e2ff91b81293515017ca8bd9" +dependencies = [ + "arrayvec", + "bit-set", + "bit-vec", + "bitflags 2.10.0", + "cfg_aliases", + "document-features", + "hashbrown 0.15.5", + "indexmap", + "log", + "naga", + "once_cell", + "parking_lot", + "portable-atomic", + "profiling", + "raw-window-handle", + "rustc-hash 1.1.0", + "smallvec", + "thiserror 2.0.17", + "wgpu-core-deps-apple", + "wgpu-core-deps-wasm", + "wgpu-core-deps-windows-linux-android", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core-deps-apple" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18ae5fbde6a4cbebae38358aa73fcd6e0f15c6144b67ef5dc91ded0db125dbdf" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-wasm" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c03b9f9e1a50686d315fc6debe4980cc45cd37b0e919351917df494e8fdc8885" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-windows-linux-android" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "720a5cb9d12b3d337c15ff0e24d3e97ed11490ff3f7506e7f3d98c68fa5d6f14" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-hal" +version = "26.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d0e67224cc7305b3b4eb2cc57ca4c4c3afc665c1d1bee162ea806e19c47bdd" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set", + "bitflags 2.10.0", + "block", + "bytemuck", + "cfg-if", + "cfg_aliases", + "core-graphics-types 0.2.0", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator", + "gpu-descriptor", + "hashbrown 0.15.5", + "js-sys", + "khronos-egl", + "libc", + "libloading", + "log", + "metal", + "naga", + "ndk-sys 0.6.0+11769913", + "objc", + "ordered-float", + "parking_lot", + "portable-atomic", + "portable-atomic-util", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "smallvec", + "thiserror 2.0.17", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "windows 0.58.0", + "windows-core 0.58.0", +] + +[[package]] +name = "wgpu-types" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca7a8d8af57c18f57d393601a1fb159ace8b2328f1b6b5f80893f7d672c9ae2" +dependencies = [ + "bitflags 2.10.0", + "bytemuck", + "js-sys", + "log", + "serde", + "thiserror 2.0.17", + "web-sys", +] + +[[package]] +name = "wide" +version = "0.7.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[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.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[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.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +dependencies = [ + "windows-core 0.54.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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections 0.2.0", + "windows-core 0.61.2", + "windows-future 0.2.1", + "windows-link 0.1.3", + "windows-numerics 0.2.0", +] + +[[package]] +name = "windows" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" +dependencies = [ + "windows-collections 0.3.2", + "windows-core 0.62.2", + "windows-future 0.3.2", + "windows-numerics 0.3.1", +] + +[[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.2", +] + +[[package]] +name = "windows-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" +dependencies = [ + "windows-core 0.62.2", +] + +[[package]] +name = "windows-core" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +dependencies = [ + "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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading 0.1.0", +] + +[[package]] +name = "windows-future" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", + "windows-threading 0.2.1", +] + +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[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.2", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-numerics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", +] + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", +] + +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", +] + +[[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.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-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + +[[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.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-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-threading" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +dependencies = [ + "windows-link 0.2.1", +] + +[[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.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.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.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.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.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.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.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winit" +version = "0.30.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" +dependencies = [ + "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.10.0", + "block2", + "bytemuck", + "calloop", + "cfg_aliases", + "concurrent-queue", + "core-foundation 0.9.4", + "core-graphics", + "cursor-icon", + "dpi", + "js-sys", + "libc", + "memmap2", + "ndk 0.9.0", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "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.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading", + "once_cell", + "rustix 1.1.2", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + +[[package]] +name = "xcursor" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.10.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.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" + +[[package]] +name = "yazi" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5" + +[[package]] +name = "zeno" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..fb05e94 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "orthros" +version = "0.1.0" +edition = "2024" + +[workspace] +resolver="3" +members = ["cargo-client","orthros-network","orthros-server"] + +[dependencies] +orthros_network = {path = "./orthros-network"} + diff --git a/cargo-client/Cargo.toml b/cargo-client/Cargo.toml new file mode 100644 index 0000000..d17eb7b --- /dev/null +++ b/cargo-client/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "cargo-client" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/cargo-client/src/main.rs b/cargo-client/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/cargo-client/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/orthros-network/Cargo.toml b/orthros-network/Cargo.toml new file mode 100644 index 0000000..a816cb0 --- /dev/null +++ b/orthros-network/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "orthros_network" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/orthros-network/src/lib.rs b/orthros-network/src/lib.rs new file mode 100644 index 0000000..22b7d4a --- /dev/null +++ b/orthros-network/src/lib.rs @@ -0,0 +1,2 @@ +pub mod starchart; +pub const SCALEAU: f32 = 1.0; diff --git a/orthros-network/src/starchart/mod.rs b/orthros-network/src/starchart/mod.rs new file mode 100644 index 0000000..a04c28b --- /dev/null +++ b/orthros-network/src/starchart/mod.rs @@ -0,0 +1 @@ +pub mod star; diff --git a/orthros-network/src/starchart/star.rs b/orthros-network/src/starchart/star.rs new file mode 100644 index 0000000..9b3f957 --- /dev/null +++ b/orthros-network/src/starchart/star.rs @@ -0,0 +1,127 @@ +use crate::SCALEAU; + +const SOLARRADIUSTOLY: f32 = 7.35355e-8; + +fn solar_radius_to_ly_scaled(r: f32) -> f32 { + r * SOLARRADIUSTOLY * SCALEAU +} +pub enum StarClass { + MType, + BType, + GType, +} +pub struct StarInfo { + pub name: String, + pub class: StarClass, + pub diameter: f32, +} +pub fn star_diameter_range(class: &StarClass) -> std::ops::Range { + match class { + StarClass::MType => solar_radius_to_ly_scaled(0.102)..solar_radius_to_ly_scaled(0.7), + StarClass::BType => solar_radius_to_ly_scaled(1.8)..solar_radius_to_ly_scaled(6.6), + StarClass::GType => solar_radius_to_ly_scaled(0.96)..solar_radius_to_ly_scaled(1.15), + } +} +// const STARSIZES: & +pub const STARS: &[&str] = &[ + "Sun", + "Sirius", + "Canopus", + "Alpha Centauri", + "Arcturus", + "Vega", + "Capella", + "Rigel", + "Procyon", + "Achernar", + "Betelgeuse", + "Hadar", + "Altair", + "Acrux", + "Aldebaran", + "Antares", + "Spica", + "Pollux", + "Fomalhaut", + "Deneb", + "Mimosa", + "Regulus", + "Adhara", + "Shaula", + "Castor", + "Gacrux", + "Bellatrix", + "Elnath", + "Miaplacidus", + "Alnilam", + "Alnair", + "Alioth", + "Dubhe", + "Alkaid", + "Alhena", + "Suhail", + "Mirfak", + "Wezen", + "Sargas", + "Avior", + "Kaus Australis", + "Alphard", + "Hamal", + "Diphda", + "Peacock", + "Menkalinan", + "Rasalhague", + "Algieba", + "Markab", + "Polaris", + "Almach", + "Zubenelgenubi", + "Alpherg", + "Rasalgethi", + "Mira", + "Alsephina", + "Caph", + "Nunki", + "Sadalmelik", + "Merak", + "Ankaa", + "Eltanin", + "Aludra", + "Kochab", + "Zosma", + "Menkent", + "Muhlifain", + "Nashira", + "Algol", + "Denebola", + "Scheat", + "Alnitak", + "Mintaka", + "Izar", + "Saiph", + "Phecda", + "Tureis", + "Alcor", + "Meissa", + "Sadr", + "Atlas", + "Pleione", + "Electra", + "Taygeta", + "Maia", + "Celaeno", + "Sterope", + "Merope", + "Alrakis", + "Tarf", + "Rukbat", + "Wasat", + "Thuban", + "Zubeneschamali", + "Vindemiatrix", + "Lesath", + "Gienah", + "Tarazed", + "Tiaki", + "Teegarden's Star", +]; diff --git a/orthros-server/Cargo.toml b/orthros-server/Cargo.toml new file mode 100644 index 0000000..d5c491f --- /dev/null +++ b/orthros-server/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "orthros-server" +version = "0.1.0" +edition = "2024" + +[dependencies] +bevy = "0.17" +rand = "0.9.1" +# rusqlite = "0.37.0" +statrs = "0.18.0" +orthros_network = {path = "../orthros-network"} + +[[bin]] +name = "orthros-server" diff --git a/orthros-server/assets/fonts/quantum/quantfh.ttf b/orthros-server/assets/fonts/quantum/quantfh.ttf new file mode 100644 index 0000000000000000000000000000000000000000..009a18611aedc2e467307183a46d9013968ba3d6 GIT binary patch literal 17136 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 IIQ{<&07N=axBvhE literal 0 HcmV?d00001 diff --git a/orthros-server/assets/fonts/quantum/quantrnd.ttf b/orthros-server/assets/fonts/quantum/quantrnd.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9a3b3ce3be3d79d61fcaaebed159415dd7fa3385 GIT binary patch literal 17224 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 literal 0 HcmV?d00001 diff --git a/orthros-server/assets/fonts/quantum/quanttap.ttf b/orthros-server/assets/fonts/quantum/quanttap.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c7de65984efcf3d2f504724bdb861363fd6e6cd1 GIT binary patch literal 18764 zcmZQzWME+6W@unwW-#y%);CIY*8Rf3z-Yn1z>pB;;v12?A={dP!8wP4f%QRhZel@O ziuV}?2Br-R42(VLIhAQGj%VW;7+7o=7%b0Zq$Z|Zi!yu1z`(GFfq}s+BO^7D&7ScY z0|Ubs1_lO|jNFonZD+r&U|?XJ!N9;Mk&~aCsJl&3f`P$~gMopeFE_EGfWeFLCrFNg zfk7cJF*mhI$MqWngWU`U1{T?Z{Nj?*IhD5=7@T%6FfeQZyPc7N!FFF=Q#`-TR|Zbz z7Yqyx44bF$w}I#bi=Nc}-}LV>a~QKWh!4k%3=GWL{~j}NGV}c3^nU|$7}zAZGy?;J z8(74R@dpDlSQr#aUva_!oa}L1E-A`e!*2i7$~}3gF>Ad92gWH zFfzUSAI2cZtj#FPzyP+7fvJ>P9prNc2BrrLT#TSl+w*@10|+l-;9|PNzy)G6-Gi{1 zzWm<-X2bY*pyD9<%m3|6kNw|6Y(C zOd#=>3|wFuWHtzY`M(1cT3|atX1{})4YCWQ9;D_S0~gr**Z+5b&G`axJ7W$57f2t& zq5pe9G#G>Qf!qhO=N-g-jG6y8F}?V|iJ9mBUZ$5|H|+qs=^g_YC?LV%!2pgCW(EdE z6G)gb$S^R2S$7!N7!H6#FPedofeEAo1A}6dg@J*Am4S_coq>aalYxtYn}LUcmw^vS zEk6STg8+jdgAju-g9w8tgBXK2g9L*lgA{`_gA9W#gB*iAg93vhgA#)>g9?KxgBpW6 zg9d{pk_ik9S`69@It;oDdJOsu1`LJ_MhwObCJd$wW(?*G77UgQRt(k*HVn25b`16m z4h)VAP7KZrEDRA03=BdH0u0OyObm()It+RYmJId`Q4CcN82|qV`wb*!z+lhd$dLGe z;s5{t5C32Pf9?O({}=wB|9?`!1soD64q;%RnYqlMcwxH6berK4<0Z!L3=HOajHb$Z zjM|KRjLIfv=1OYnN@~icCT8XkWXEV~qNc9LXli0=Vs6K5Zf0tt29mX9)ML_TG&Qkf z0tx6bs)Lx;j7DPO){I7WOvZMM=0;}5MsiHDAg;Nwk(f239V19UTvUWjR76xnj!|4h z49w%Y9uBuW^4qp8th(WB{p_8WhIanB|Ro(B{gLeJw|mCHFY&Jb&&tSt}`<> zvSTt=Gc~bgG%+(#Gu2~MS5{JESLS0>RswlXk6GQ+9O`O0Mr%epW?PWOCVC)GLv2t~ zR$>D?2gC=thMAoW;wpANMp;IX7x|dj*~G-<7)3?EGGc7Xe2nZOY|3C?n~95oLPN~h z$jq8ij#1o5929n-Ahu&PH??Clw_~(s6k!t=0U01JCN9Tp&1i0{ZenH%iW*Qf*)p1_ znHq~3i;9@Bi-2sAWdeCXZ6zZkA0sy}lZdFEn@dDQgj-ZnUy_$g zghxPLUQUpgiIt6!k(rs9k%g0&2?W?Vm{^o~I5qh>IoVi6*%?_F8M*oRnAs&**(G^I z)K%3)xLNr)nAlmFIHcKG1vwZsxp}y_*x0$nSi~j8SXr1@xmcN5nVDEvn7H`4nI&W- znVGnl*w|Rv8CjTESlKw))kH;AIoL$SMA(>^m>8KE<+)Y4Tv)j{SeaRPm^j&(nV8ww zM6{*Z*xA`x1*P~onE3d(nV1KZ_mFmw+G(6B8RJhYj0FMkWqMMiw?f7Ir>HMn)DfP7ZDkMph_;D+i0PFpsK|6fYB(pr9}} zHzOkx4-+$skPxph6B8pN3qKblGYbooJSR6d69*dyCl5Cxzm&ct3p+bM56EfEyo_wp z3es#Ge4O0E+)M&O0!*ADY`o$;9O^8RdJ^2+0)lL;Y>dp@T^OGBGi7a&s}VF|zWrvaxZnGcqzVv$F7VaBy=naxif* zG4V4oa&yotc%131SEnD+enxHxDNxvlt5xFOQ%GKa(I66AQ1R027NSlOQJt6EhPd z2yim8GBPo7F`6*4GBNQmiL(f>vam35FflSSu`s4Hu`sc*vhaRpWMu?}lo&G;Clf0N z9|wmZ3lkeNzW@h2Gdnw*pg02q1JnN<42+B{Ovf3x8B`e<%uURUjX(UG8R`9*N~Ib0O43Jd0A0WIR!38A8rLXF)=xLE~bB5+~qViK?_&D>wu~?vWEmkgxM4Lo z24rBDfG`&e3zx7!7t}ZgMg}ehMuuq&y$sx_uIB=|5ro|#&edRGU;?RSy1;atL5;x@ zTmz_si&H@pJ0?(Zr)VSx@+P=g29>UgN^0gtV#bO_W~PEBYRZaAY@&i9V!Z|qyo{h& z5K+_-XBA>)TqbF(E-9jkttbCko|Ek#dS(!QQ^g)uGj0>c6 zRixONSfsU0CI7`q>8MDtfz4v!6YJk4oT5V9 z+#Di7maIZTe2k2~j7)k;tU|2+(m^g_Vr1qP=4V{OB+KraDZ+%tQOT4F%9NpWC53OyliaDs(M^ZEMjtsT#P{Qp9x3(V>aS`1MP48rK10s8}7eSzYa zosU^mP#Ba9LH7 zw-68GB2g6?0TFo(;eY8oLfmX%u@w;Sf@17n1W1%w73!rZS8he_w@f0e3O2?XJfLET ziJ6I=iCt7el8d?R?|M#2QGQ`Lb&=bmD$@M?ViH^+0ZY54l$uRJxfzsa zK?3H`*b)V0ZCOT0JA{uJ9@Wq&oXIJ{At}wv{Er2kdWA$enPQl@nYeh_n3=%&>F;;O zzaS|_MxF#eRslgi#(y!;*nQ0{FC)sv!X>GwApuIUjK-jZ$i~PfA|b)e1dWb9kW4Eh zFSB2+2q-N>W0KJals*|4nJzJ_F?cYfF)%Pf9jwI04k~j+`s1 z+_ynd$;hnsZwnKrf}9vLBQrA#BP%y2I}4L&N0Pd?y#XHwue`B~8Y34E4>J=F;~Pd^ zX3q=>CN?HUR%jsoXW-Hozb2}#Ak47;9Sa*Huc#0oE7KHEdIR+x7{T?10fPfW0Jxq3 z7nqFpjNmQ;D5Rl9q^JlxJhGG(K@E3ib4cL<>Op`K9=IL_)hUoFg^QhwiItI+mxYm0 zOwz-ZQ<Y@QQF+%T z^u(CBnK%SF85tE_G(9rKnK?L^#dAFT>=oQJ!Q}`WHwP=XmYJOrkCYgnmaL4H1|t)Q zsVOU~1*soFWhK)I1_y=&c+LX#bo7`Y2~Uq1(m=OnG?HV2)CSZvPB)RW^N)P7OpymQI3mX#)4<|blGYccPzEhxXV1qmdub_;o zsI;%r8*W8zhX_HGjOWHEEGfwWPIc_8d=@GiMuMztpaK-sCW5pRnAI4#8GIQSRFT?5 zp!&m_(FhdbkgSDKNivIyfO0CcG9R-xqY|ik5fx-q2Q@@M7?K!kI3+k#6~Gw?qh2)h zHjx%qw^C!~;^t%o2SPivq=7Z980#TL4!?z(3M8)}Rfb%8P9cWsUiOB(j4Uk7C|+h@ z{J))nf!UVn1gItiwJFT)7)=FDKt(60TL|iKfvS0CaXDsDK~Rs&SX9vz+(bjpaFF@} zT%aHoOzg5cRw^tqY|Ok&uQ`=D<*f{qI6#hIVq_DQl;Qoig-c#e z?B8|)VQywfP%wHh^GJzvNpN2mRh1SHlULySw}pv`jhCB=n~8B5qZq5QlbHr5J0l}I z6Q{hEnIfwYsPGM9W#Z%KWP%jVZ{V!~Sy2gfIZ19-c42u9k${-N^S$KK582{-(^n3`qCY_-3O`b)nOG0v$-8JtQJ9P z<;a4@C5%DMAyC@~+RXbG46f`QV}w8rU1knuP8B0-c@{oC9!79&!Og=CjhugJA{q+9 zEF5N>I$HC88eo;9v(~Pg6hn$#wfU<28kw^kSHvL+A%R*VCLlK zWn%po%)>9hs%WXF$N{V61Dsh!nOFq{c_A?eY4b3#aSL+)O9R!(Am=hJ;SuC!1&c)> zs#L}mAkkPJ8A#)enTe52+0a@6R@1*`;$?PCmjtC&7I3VB8$^Gqn3#e%B*geZ=3WPf zq?jZpNB~+9gUU7mF-cIp3ofsi?lG$~I503E$}4b=1r=JR#)8UNJZlOTgTyYpXaeO+ zaHEc!7c_(dX>ubKLtwwKatreO{SJy$L?Of!18vWN66N3NTnh4HNaYQ`m;@)MggF1- z@8HA@&TG*2TsWvT2X`MVe!!&#a&ZbOaTy_X2B^mc8ui1PCE<-Xc%-mEiV&m-5n+<& z@b(9_8U$1Y|2=2oWp>FDXXoK!=TgKFJE;Oz@K$Qd1hytWCumXvqR2iNaYCzG+l*TUt861FiE5MCiSmgjJ4PT)t0HrY| zcwa(;!5Px#v1UYaJZPlU6xNLZyA{*~fMhfjVMyEN6~bw6z$pUkh`+NCk;IgSE)MQN zFnYoq_isD2s{`)HL1V-Mlr2PM!9y%iaZsfX87E+5y34G_;K#tg3<_R$Hqhv+IIPhn z2oi%A1>gY=P@{w$G_uU7%?NIxf@%WL@V1(%96!=JJsO-|4_ z6{uc@Hc&xL8CgbXQ-&GblmQnGN}!q?)GQZObO9wVM65wGKRD5WS`oKFZhDd-jc-vwXyvR7o&bRMf%TaDAmegOoRIX!2OFK?5tCD3IstanPjIce zRmz-)kr5OrOi`dNHv<#Aov6nU3kh{dTM1O?BDWMlHLa)|BfPN)%H!ai4{7-_LfVI* zraw}S5|LwqwHH~L*yVIAl@RSkhXi3p7Esdw+*sBgBq0x?~Aapi?BgU zHfLz-kd=uq&Vxyu6>swxlq#KZWSiI;ko%Az-YA1wVCN3rwV^G}eU|;~Z0bP*e2HY+H4O4MzaKo5g z88pGA&nO7V&!8DOQ2DF}8frj97-|Xxm2jZU2OhWs`I?^*G!_EtsoH|{f#&Fx%|*ep zjq;4lhX3BKXXRrTQxRZ##mFnov5A>al8LR8k%y0u#U))3G=Ig&&LkY_#4O9k#LM(r zP)R`ELRTI%M8^o}$^HAp&dVn3dXvEGXdi(ZbfeUWI<3Tf{}xjQ%T=Sk%gCs3t9%Uv-9w= zcY?C3iJHh&F;y7>c|K+(R#s`=*GvK`V(h%ED&YAGNLsLGh{T&3K&>lK=MG*Mf|_EW zkxxZvQh)~_xK9shu%RW86MPDMZjN3~%wjC8B8>muAf*pR4tXUpDP~^Af779-pf{>OB<4h?FUPe~Ne~g+O z6596aXk&qpuJ^w*UKuGdHYQd^#{ZfeVw%>ftYVPP1nT&xtT?DU&$yabTUgWEPM?>F zjS)17iZVvZ!7I!IQN^b%tnL9)#m)#CJ3tJUg4&u4Tnr50ISeTVQw9ce%*w@BT+x&n zGAL}vgzRTg!4p^`WDmIKjoB^(hdFZ10I5ism66+Gpixgq(*{y5F*4gR9cQqG*UgX- zT*O2gBn3hTqQS*0EORr1s}2uHtqm{tAT=E*=PxB zX)`K;k_M>YR~6-B78MbfW`yJuW_?CbC1K2}44N!pV~4I$VANw|Vq|9*5@r-&0!^DT zYH^7R^D@17#w5wh$icx5p50<$WK?3|lN02YWc_!8Q%OWbiSyqL76GOJ%nc zJ|R(F7PfzejHlT+1Z6oGSy@4~++=ocPVT>(goK2InEW_6LGcfouLOs&5%=OgPMR4aqx^LyxR6)Zi5CiU#bhYEbnU(4Iu?%HAyxm&}0Uq z7MFw=KNBM}mx=mC5e<1^eo;wIkPtMxgVGkis3g;INWcd($#A$P2{E&AvvF&h+A6S$ zFfxKe9XuWMFN2YjiHVmu#DW$I?)mtikWo- z3oo0f8XprAzlsI$X+lu~3F!K1UF*%fH>2A==G z%FctL5t8YUX0`u4#+@y}%~d5s8`Oahl>7;bO|-%r(gLpmr6W)ZXoct4es0hRjg_7P zY_6X>zzJ5UwnK6)qTDxP0L|E&gZ&Gy*I-Q`MtHwKk4ark9XuJq$i>dVc<5gO$T~>7 z20Agq#`({VaSyqF zsi?%pY7817&}QT^G+^RpVwYiLbYXINB_??ec?&H`Zb4D5f1KR%oCbz{ zoLr0v?A-k9|4wmpG1lpD@bI%UEj95MV`O1uV&mlFV`Bo9n%v;FnVcva6Ni$4jpDzL zT%v;9oGc;%CLH|i0(_jjiksO51-QXwaa z!=~S$8Ap~8l5zN$K#hHP+%SrWiJS5M$ot+(|u-j27lC+ zJ7~cr@?->j6ct{^K_(@^g+64EK@{GTV`64zWLGk(MI_DnBI@$O zEKIy+I-o2IpGyVBF?0=zHzbx#Q3r#JVPnIPkU<;4gAOsl2l4QX5rbmj31YbJGb0xt zAFE5G5YmX!zb)WKJ@%pE`y%Rc!bn9asA3mPc4QJ^ViRM00UeeD$1TWD(6w2rxcnrH zG;562(ea@9U=Rj7iE#y}TmZM@p-sR>&`LU4O-=Cp(7z{)TbWKU7%=rR6-~(FO0-C=eDds^#Yw&2tK6Z;WT$u*(*zH~h21ZVB+Z8;Y1r85rg9tJj z?Tps^giL{es!=RU`ao+pLGvzL462~o5ER0oN)WmL3RxD-#)phW6@|eg9k8K1 zaOnwdC4(k8z^z|p)Zs901ulm~MhnGSn!}MXfy~mxWNdXxMpV(jBsEUW@eRO z`~b~Aj5YtZf<{ z^#Ei` zG#3Fy2dtR_9;gQm)3Nh0a*3$hXozTuJQ33sQMXiwHT#~3XbT7U_kkN9XAwh>XThsq z7+E#F?F{%ixOqAF3?Z#O&^jv~cG<>YH48o#HpF-%J1d_#sLW#gzv;g-({&~;(Ap1n z(DHxq+7HmeS7y*4iZN{U2XrnHv3`XSQt6_*9aK(((yX|mA9M(nk%^fRJf6?U&BM*i z%**&jOjpF;TSVPT6|$H`P=F8DkSchd3EGj~4INcwTnZjURx`NKx!bgJR&N`3|+lr4qK=M&irTtnzJN~#k4FyJr`Md zo_||-8A(AYQ8_+FF3@=2rvHl= zW0_7cSV7zApb-~P5>nS=hSbX7iAGTI3iY%$Xul75Py)1`HX5=jqnlBjP0gAUwD<+F zXtozz%z(?CUQV_;FfRtOP?nLEiPKt*g@>DyiGg332fV<(3pP2-DK9T}la&wB^4`k8 z2p-?FVB&<2NrFp!uoIx=Cb(OKSTF;b69&y1nCdZul|W|_LG3H>Tnwb)0PY7dGx3Hw z!Nw%Pt6i8OLz0}Ja{U%;MDhu!qz89;-ZF`^IVX#;LdPSeSwL&0nZQeZ85sZXWng3u zVTxxkXJ8OkVq>>uG%;2+GP7m^jYNuxOM?fj^qAB^MXWKakt`D^yx}8}YOEs4f-H;- z;2}p2AptHXmJjb)n79OlK>IM57#SH@1XM)Cc>Z1ElH(VU;-MLV_<@ZrvigFeEbpI69cV? z=L5|$=s~tkK*k+7ZS=o+J z)fhAaiG2i7R2aJ?baawwlF;8Jth_v;!u)JZTbUUdIRx0anPONuSiwTfJDE6y|EhsT z5CypES(!m&gP;i{t~yRBzK?KW=p2v$R~=}INlB8MaWV_HfG{T`KMNzHpu7mT5c|Je zW=4?Ezc)gP2l=G9>REZ&Mb-G3-tbCu)p81ms`4{2v7w8z^09*kCqZfP-xFqMCN73V zXp0-tzXo?wK)p9+b!hHDG^4I-{MK(nZ_%@+rayb&x7v`e-{4}0V9DPfhU4-f=`6fgtiFF z3AYG85eX4FC2AqMM@&sDPHcy`lX#Z+H3=<=28lnC8IoJ1w4`dJE=j9M_sK}e%#nEp zf}jkU!$bgD7F|adKLfOm=3JeWUHVcCw!vZLqm4Sz0Bb3d? zz|XK3%I09;VK@V2b23OW+<>xq7-Seef_4UB=TIwk{=Hw`V<%<=HQj1fI%2HGG6cnNha#9nEQx%F* z6H^pQGEx;X^OAE)Q&LkDN>VFI6w)$tQWetjixhJ6i$HQ|`LTheiFqZZxe6hP1*t^} zPC?#5sp+LTiA9dCNS0bDU?{^72um$0&dkqKFw!$Hg-U|WbPDoDc0V#(L07@4C^Ion z!8d!|KL$?*cLrYuM+OB3HwJ$OKZX#7UkU6fu-Bq%x#1fK)0lL^BjHZw&%tp8q)co|u8UDE9MS($=0pvqaJc9fWs^n9_;Q)%$5{3c>D+YZA zeTH%{)MH3w0Lg;lJeMI69HO8wD`wDRNM^`q$Ysz66$GI6Is*g4|2YgsAT9=W1J9eV zFz_=7V%^2BgtBv=*xmXr46Y1r4DJjb44w>L4BiYr489D04E_uO41o+m48aT`4518R z4B-qB43P{`4ABfR46%$%3{0$gd8Iiy;4%!fnvaozhv5gue+CW)_WyqwI2kzp|7GA} z;QarWft!Kz{~rb(2Cn~q77g_y2DO0Wc}Z!1w<*gAfD%|6dHk z3Fb7?c=f{(oaoW{~~=jX{M$ z?*CT?RR;P0Um4WEq&kDb|1S(042u81FlaI;{r|$C#i0EE3xhU;^8e2aIt(iRKQrhu zsQ&-VpvR#0{}Y2ggZlqZ3}cu=)R*!HdE6|0@P>FzLf!_x}}xFN6L6R}6j(4*y>=_%k^Ef5{L4CIcCq z{=Z-dVsQTdf+3i}<^KzY5C+%(FBn1@T>n332xD;j|C}M5!TtYph6o0a|IZjA89e_# zV~7Hi(F|VypE1NRc>jOO5X<26|0zQpgYW;R4Dk$p|DP}kz;A%!96|6_(!Fqy^>{QnU{Iz!0+M+_MZq5mH-WHN;Pf5ec*5cdBeLpDSB|A!1Y z3=#hyGUPHu{(r!b#}M`Z0Yg4R^#2D81z@s}A?E*mh9ZX8|MwY+8RGumXDDHa|9_96 z6ik*eB>ca}P|lF}{~kjHL(>1d43!MY|L-zXfyruyl>c`aY8X=g-(jd_Nc(?>p^hQ_ z{~d;UhV=ip85$Te{@-S3WXSw~o1uvz>;El=W`^wlw-{O&a{k|9Xa$pP47vYrGPE<~ z{lCf3!I1y|CPODf!T%c!U0|}Cq456=h8~8Z|2G(V8H)d3XXs-n`G1|EA52bQDE)tp zVIo7>|7#4B7|Q=&W0=fP@&6jb6o$(GR~e>)$!QE#|F1GkXQ=*vg<%Fm&HpP5GZ||C zUtyR9CTBC${lCmGhoS!eWrn#74gW7Q%wuT$e~Do}m|Vcn^#2mWLWbu5mlzf?wEVxw zu$ZCs|3!u+3~m1}GAw0i`+tF98AJR33k=H{I{sf^Si#Ww{{q8GhOYnT8CHSG)ePPL z&oiuH==pz+VJ$=N|8orM82bL7V^|L+H!$@7Kg+O@VZ#5j44W7x{y)pGnPJlZGYnh6 z;)48wMYssB$i>|mJo|1`r+hUx!LGwfoR{{IxiZiX5EPciIanEC${ z!(N72|4%XOW0?K_B*T6%d4OTg|C0;{8Rq^!!ElIS-v1K}hZ*MoKf!PWOde%e@c%f& zF@}Zzk24%+SoHrm!wH7P|Bo}AWLWb57{e(rd75GA|6>ei7?%A%%5aup`TwH~=NMM} zKgw_(OkQAE`Tq#RMTS-Xk1$+fSpEM9!)1mw{|_@<0h3o5*8V@taE)Qz|HBN|8P@+l z#BhUQ!~a7JH^JmBhK>IZGTdg^^#35k9fr;S4>H_k*z*4%!##$r{|_+S2a^vNw*5cA z@Q`8q|NRV)7sL-_7uW;qd?63?CVe{NK&+ ziQ(w~-3*@@j{V=o@C8hMWjOwS7sEG(6aRNId}lcMe<#BahExA{GW-OSzZg#c-@)*k f;mrRX41XBT{@=mym*L$1?F|3G at +http://www.aenigmafonts.com/ + +____________ +!!! NOTE !!! +ŻŻŻŻŻŻŻŻŻŻŻŻ +This font has been updated! I've edited the (BRK) in the font name +to just BRK. It seems that Adobe Illustrator and web pages with CSS +don't like fonts with ( and ) in their name. + +________________ +INSTALLING FONTS +ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ + There's a couple of ways to install Fonts. The 'easy' way to +install fonts is to just Unzip/place the font file [.ttf] into your +Windows\Fonts directory (I always use this method). If you're unable +to do it the 'easy' way, then try to do it this way (for Windows +95/98/NT): + +1] Unzip the Font(s) to a folder (or somewhere, just remember where +you unzipped it) on your Computer. + +2] Next, click on the START button, then select SETTINGS then +CONTROL PANEL. + +3] When the Control Panel Window pops up, Double Click on FONTS. + +4] When the FONTS window pops up, select File then Install New Font... + +5] A Add Fonts window will pop up, just go to the folder that you +unzipped the Font(s) to, select the Font(s) and then click on OK. +Now the Font(s) are installed. + + Now you can use the Font(s) in programs the utilize Fonts. Make +sure that you install the font(s) first, then open up your apps +(so the app will recognize the font). Sometimes you'll have to +wait until you computer 'auto-refreshes' for programs to recognize +fonts (Windows is sometimes slow to do that). You can refresh your +computer quicker by going into Windows Explorer -or- My Computer and +press F5 (or in the menubar select VIEW then REFRESH). + + +__________ +DISCLAIMER +ŻŻŻŻŻŻŻŻŻŻ +-The font(s) in this zip file were created by me (Brian Kent). All +of my Fonts are Freeware, you can use them any way you want to +(Personal use, Commercial use, or whatever). + +-If you have a Font related site and would like to offer my fonts on +your site, go right ahead. All I ask is that you keep this text file +intact with the Font. + +-You may not Sell or Distribute my Fonts for profit or alter the font +file(s) [.ttf .fon] in any way without asking me first. I can be +reached at: +aefonts[AT]frontiernet[DOT]net + +(make sure you replace the [AT] and [DOT] with the proper characters) . diff --git a/orthros-server/assets/shaders/g-type-star.wgsl b/orthros-server/assets/shaders/g-type-star.wgsl new file mode 100644 index 0000000..981e5e1 --- /dev/null +++ b/orthros-server/assets/shaders/g-type-star.wgsl @@ -0,0 +1,12 @@ +#import bevy_pbr::forward_io::VertexOutput + +struct WireframeMaterial { + color: vec4, +}; + +@group(2) @binding(0) +var material: WireframeMaterial; +@fragment +fn fragment(in: VertexOutput) -> @location(0) vec4 { + return material.color; +} diff --git a/orthros-server/src/main.rs b/orthros-server/src/main.rs new file mode 100644 index 0000000..3078f96 --- /dev/null +++ b/orthros-server/src/main.rs @@ -0,0 +1,300 @@ +pub mod temporal_management; +use bevy::{ + asset::RenderAssetUsages, + camera::RenderTarget, + color::palettes::css::*, + core_pipeline::tonemapping::Tonemapping, + math::ops, + pbr::wireframe::{Wireframe, WireframeMaterial, WireframePlugin}, + post_process::bloom::{Bloom, BloomCompositeMode}, + prelude::*, + render::{render_resource::*, view::Hdr}, +}; +use orthros_network::starchart::star::{STARS, StarClass, StarInfo, star_diameter_range}; +use rand::{ + Rng, + distr::{Distribution, Uniform}, + rng, +}; +use std::{ + collections::hash_map::DefaultHasher, + f32::consts::PI, + hash::{Hash, Hasher}, +}; +// use temporal_management::database::{ObjectState, TemporalVector}; +// const SHADER_ASSET_PATH: &str = "shaders/g-type-star.wgsl"; + +// #[derive(Asset, TypePath, AsBindGroup, Debug, Clone)] +// struct WireframeMaterial {} + +// impl Material for WireframeMaterial { +// fn fragment_shader() -> ShaderRef { +// SHADER_ASSET_PATH.into() +// } +// } + +#[derive(Component)] +struct StarInfoComp(StarInfo); +fn main() { + App::new() + .add_plugins((DefaultPlugins, WireframePlugin::default())) + .add_systems(Startup, setup_scene) + // .add_systems(Update, (update_bloom_settings)) + .run(); +} +fn create_star_system_annotation( + commands: &mut Commands, + asset_server: &Res, + images: &mut ResMut>, + meshes: &mut ResMut>, + materials: &mut ResMut>, + star_info: &StarInfo, +) -> (Handle, Handle) { + let size = Extent3d { + width: 1024, + height: 1024, + ..default() + }; + + // This is the texture that will be rendered to. + let mut image = Image::new_fill( + size, + TextureDimension::D2, + &[0, 0, 0, 0], + TextureFormat::Bgra8UnormSrgb, + RenderAssetUsages::default(), + ); + // You need to set these texture usage flags in order to use the image as a render target + image.texture_descriptor.usage = + TextureUsages::TEXTURE_BINDING | TextureUsages::COPY_DST | TextureUsages::RENDER_ATTACHMENT; + + let image_handle = images.add(image); + + // Light + + let texture_camera = commands + .spawn(( + Camera2d, + Camera { + target: RenderTarget::Image(image_handle.clone().into()), + clear_color: ClearColorConfig::None, + ..default() + }, + )) + .id(); + let border = UiRect::all(Val::Px(40.)); + let non_zero = |x, y| x != Val::Px(0.) && y != Val::Px(0.); + let border_size = |x, y| if non_zero(x, y) { f32::MAX } else { 0. }; + commands + .spawn(( + Node { + // Cover the whole image + width: Val::Percent(100.), + height: Val::Percent(100.), + flex_direction: FlexDirection::Column, + justify_content: JustifyContent::Center, + align_items: AlignItems::Center, + ..default() + }, + BackgroundColor(Color::Srgba(Srgba { + red: 0.0, + green: 0.0, + blue: 0.0, + alpha: 0.0, + })), + Text::new(format!("{}", star_info.name)), + TextFont { + font: asset_server.load("fonts/quantum/quantflt.ttf"), + // This font is loaded and will be used instead of the default font. + font_size: 60.0, + ..default() + }, + TextShadow::default(), + // Set the justification of the Text + TextLayout::new_with_justify(Justify::Center), + UiTargetCamera(texture_camera), + )) + .with_children(|parent| { + // parent.spawn(( + // // Accepts a `String` or any type that converts into a `String`, such as `&str` + // Text::new("hello\nbevy!"), + // TextFont { + // // This font is loaded and will be used instead of the default font. + // font_size: 60.0, + // ..default() + // }, + // TextShadow::default(), + // // Set the justification of the Text + // TextLayout::new_with_justify(JustifyText::Center), + // // Set the style of the Node itself. + // Node { + // // position_type: PositionType::Relative, + // align_self: AlignSelf::FlexStart, + + // // top: Val::Px(5.0), + // // right: Val::Px(5.0), + // ..default() + // }, + // )); + parent.spawn(( + Node { + width: Val::Px(400.), + height: Val::Px(400.), + border, + margin: UiRect::AUTO, + align_self: AlignSelf::Center, + // align_items: AlignItems::Center, + // justify_content: JustifyContent::Center, + // align_content: AlignContent::Center, + ..default() + }, + BackgroundColor(Color::Srgba(Srgba { + red: 0.0, + green: 0.0, + blue: 0.0, + alpha: 0.0, + })), + BorderColor::all(RED), + BorderRadius::px( + border_size(border.left, border.top), + border_size(border.right, border.top), + border_size(border.right, border.bottom), + border_size(border.left, border.bottom), + ), + // Outline { + // width: Val::Px(6.), + // offset: Val::Px(6.), + // color: Color::WHITE, + // }, + )); + }); + let material_handle = materials.add(StandardMaterial { + // base_color: Color::srgba(1.0, 1.0, 1.0, 0.0), + base_color_texture: Some(image_handle), + unlit: true, + alpha_mode: AlphaMode::Blend, + + ..default() + }); + let aspect = 1.0; + + // create a new quad mesh. this is what we will apply the texture to + let quad_width = 10.0; + let quad_handle = meshes.add(Rectangle::new(quad_width, quad_width * aspect)); + return (quad_handle, material_handle); +} +fn setup_scene( + mut commands: Commands, + mut asset_server: Res, + mut meshes: ResMut>, + mut materials: ResMut>, + mut custom_materials: ResMut>, + mut images: ResMut>, + mut time: ResMut>, +) { + commands.spawn(( + Camera3d::default(), + Camera { + clear_color: ClearColorConfig::Custom(Color::from(BLACK)), + ..default() + }, + Hdr, + Tonemapping::TonyMcMapface, // 2. Using a tonemapper that desaturates to white is recommended + Transform::from_xyz(0.0, 100.0, 0.0).looking_at(Vec3::ZERO, Vec3::Y), + Bloom::OLD_SCHOOL, // 3. Enable bloom for the camera + )); + + let material_emissive1 = materials.add(StandardMaterial { + base_color: Color::srgba(0.0, 0.0, 1.0, 1.0), + emissive: LinearRgba::rgb(0.0, 0.0, 2000.0), // 4. Put something bright in a dark environment to see the effect + ..default() + }); + let material_emissive2 = materials.add(StandardMaterial { + emissive: LinearRgba::rgb(1000.0, 1000.0, 1000.0), + ..default() + }); + let material_emissive3 = materials.add(StandardMaterial { + base_color: Color::srgba(1.0, 0.0, 0.0, 1.0), + emissive: LinearRgba::rgb(2000.0, 0.0, 0.0), + ..default() + }); + let material_non_emissive = materials.add(StandardMaterial { + base_color: Color::BLACK, + emissive: LinearRgba::rgb(500.0, 0.0, 2000.0), + ..default() + }); + + let mesh = meshes.add(Sphere::new(0.4).mesh().ico(5).unwrap()); + for _ in 0..4 { + let x = Uniform::try_from(-2000..2000).unwrap().sample(&mut rng()); + let z = Uniform::try_from(-8000..8000).unwrap().sample(&mut rng()); + let mut rand = rng().random::() % 6; + if rand < 0 { + rand *= -1; + } + // println!("{rand}"); + + let (material, scale) = match rand { + 0 => (material_emissive1.clone(), 1.5), + 1 => (material_emissive2.clone(), 1.8), + 2 => (material_emissive3.clone(), 3.0), + 3..=5 => (material_non_emissive.clone(), 1.5), + _ => unreachable!(), + }; + let star_class: StarClass = match rng().random_range(0..2) { + 0 => StarClass::MType, + 1 => StarClass::BType, + 2 => StarClass::GType, + _ => todo!(), + }; + info!("{:?}", star_diameter_range(&star_class)); + let star_info = StarInfo { + name: STARS[(rng().random_range(0..100)) as usize].to_string(), + diameter: rng().random_range(star_diameter_range(&star_class)), + class: star_class, + }; + let (quad_handle, material_handle) = create_star_system_annotation( + &mut commands, + &asset_server, + &mut images, + &mut meshes, + &mut materials, + &star_info, + ); + + commands + .spawn(( + Mesh3d(mesh.clone()), + MeshMaterial3d(material.clone()), + Transform::from_xyz(x as f32 / 100.0, z as f32 / 20000.0, z as f32 / 100.0) + .with_scale(Vec3::splat(scale)), + StarInfoComp(star_info), + Wireframe, + // TemporalVector(vec![ObjectState { + // object_id: rng().random::(), + // time: time.elapsed_secs(), + // }]), + )) + .with_children(|parent| { + parent.spawn(( + Mesh3d(quad_handle), + MeshMaterial3d(material_handle.clone()), + Transform::from_xyz(0.0, 0.0, 0.0) + // .with_scale(Vec3::splat(scale)) + .with_rotation(Quat::from_euler(EulerRot::XYZ, -PI / 2.0, 0.0, PI / 2.0)), + // Wireframe, + )); + }); + } + + // example instructions + commands.spawn(( + Text::default(), + Node { + position_type: PositionType::Absolute, + bottom: Val::Px(12.0), + left: Val::Px(12.0), + ..default() + }, + )); +} diff --git a/orthros-server/src/temporal_management.rs b/orthros-server/src/temporal_management.rs new file mode 100644 index 0000000..6ecfc8e --- /dev/null +++ b/orthros-server/src/temporal_management.rs @@ -0,0 +1 @@ +// pub mod database; diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +}