commit 0135974d08a35f8700a15bc6f27814f6863a1eb8 Author: reo Date: Sat Jun 28 14:20:46 2025 +0300 First Commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b5d2ef8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +.aider* diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..bfff70b --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,2721 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ab_glyph" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[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.3", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aligned-vec" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" +dependencies = [ + "equator", +] + +[[package]] +name = "android-activity" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +dependencies = [ + "android-properties", + "bitflags 2.9.1", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + +[[package]] +name = "anyhow" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" + +[[package]] +name = "arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" + +[[package]] +name = "arg_enum_proc_macro" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[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 = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "av1-grain" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f3efb2ca85bc610acfa917b5aaa36f3fcbebed5b3182d7f877b02531c4b80c8" +dependencies = [ + "anyhow", + "arrayvec", + "log", + "nom", + "num-rational", + "v_frame", +] + +[[package]] +name = "avif-serialize" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98922d6a4cfbcb08820c69d8eeccc05bb1f29bfa06b4f5b1dbfe9a868bd7608e" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "bitstream-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2 0.5.2", +] + +[[package]] +name = "built" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b" + +[[package]] +name = "bumpalo" +version = "3.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" + +[[package]] +name = "bytemuck" +version = "1.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "calloop" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" +dependencies = [ + "bitflags 2.9.1", + "log", + "polling", + "rustix 0.38.44", + "slab", + "thiserror", +] + +[[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 = "cc" +version = "1.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cgl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-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", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" + +[[package]] +name = "cursor-icon" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dispatch2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", +] + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.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 = "equator" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" +dependencies = [ + "equator-macro", +] + +[[package]] +name = "equator-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" +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 = "errno" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "exr" +version = "1.73.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" +dependencies = [ + "bit_field", + "half", + "lebe", + "miniz_oxide", + "rayon-core", + "smallvec", + "zune-inflate", +] + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +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 = "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 = "fps" +version = "0.1.0" +dependencies = [ + "glium", + "glutin", + "image", +] + +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +dependencies = [ + "libc", + "windows-targets 0.48.5", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gif" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[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 = "glium" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf52ce4f5ce1501bb056627f35484a819e812d1d93f0f3da413676421b1bbe0" +dependencies = [ + "backtrace", + "fnv", + "gl_generator", + "glutin", + "glutin-winit", + "memoffset", + "raw-window-handle", + "smallvec", + "winit", +] + +[[package]] +name = "glutin" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" +dependencies = [ + "bitflags 2.9.1", + "cfg_aliases", + "cgl", + "dispatch2", + "glutin_egl_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "libloading", + "objc2 0.6.1", + "objc2-app-kit 0.3.1", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "once_cell", + "raw-window-handle", + "wayland-sys", + "windows-sys 0.52.0", + "x11-dl", +] + +[[package]] +name = "glutin-winit" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" +dependencies = [ + "cfg_aliases", + "glutin", + "raw-window-handle", + "winit", +] + +[[package]] +name = "glutin_egl_sys" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" +dependencies = [ + "gl_generator", + "windows-sys 0.52.0", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" +dependencies = [ + "gl_generator", + "x11-dl", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "half" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "image" +version = "0.25.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" +dependencies = [ + "bytemuck", + "byteorder-lite", + "color_quant", + "exr", + "gif", + "image-webp", + "num-traits", + "png", + "qoi", + "ravif", + "rayon", + "rgb", + "tiff", + "zune-core", + "zune-jpeg", +] + +[[package]] +name = "image-webp" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6970fe7a5300b4b42e62c52efa0187540a5bef546c60edaf554ef595d2e6f0b" +dependencies = [ + "byteorder-lite", + "quick-error", +] + +[[package]] +name = "imgref" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "interpolate_name" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[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", + "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.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +dependencies = [ + "getrandom 0.3.3", + "libc", +] + +[[package]] +name = "jpeg-decoder" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + +[[package]] +name = "libc" +version = "0.2.174" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" + +[[package]] +name = "libfuzzer-sys" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf78f52d400cf2d84a3a973a78a592b4adc535739e0a5597a0da6f0c357adc75" +dependencies = [ + "arbitrary", + "cc", +] + +[[package]] +name = "libloading" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +dependencies = [ + "cfg-if", + "windows-targets 0.53.2", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.9.1", + "libc", + "redox_syscall 0.5.13", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "loop9" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" +dependencies = [ + "imgref", +] + +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", + "rayon", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "memmap2" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "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 = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.9.1", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror", +] + +[[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.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[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 = "noop_proc_macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" + +[[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-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", +] + +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.9.1", + "block2", + "libc", + "objc2 0.5.2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation 0.2.2", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", + "objc2-core-foundation", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.9.1", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.9.1", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" +dependencies = [ + "bitflags 2.9.1", + "dispatch2", + "objc2 0.6.1", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-contacts", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.9.1", + "block2", + "dispatch", + "libc", + "objc2 0.5.2", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", + "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 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.9.1", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.9.1", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.9.1", + "block2", + "objc2 0.5.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation 0.2.2", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.9.1", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[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 = "owned_ttf_parser" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" +dependencies = [ + "ttf-parser", +] + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 1.0.7", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" +dependencies = [ + "profiling-procmacros", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[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.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +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 = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rav1e" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" +dependencies = [ + "arbitrary", + "arg_enum_proc_macro", + "arrayvec", + "av1-grain", + "bitstream-io", + "built", + "cfg-if", + "interpolate_name", + "itertools", + "libc", + "libfuzzer-sys", + "log", + "maybe-rayon", + "new_debug_unreachable", + "noop_proc_macro", + "num-derive", + "num-traits", + "once_cell", + "paste", + "profiling", + "rand", + "rand_chacha", + "simd_helpers", + "system-deps", + "thiserror", + "v_frame", + "wasm-bindgen", +] + +[[package]] +name = "ravif" +version = "0.11.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5825c26fddd16ab9f515930d49028a630efec172e903483c94796cfe31893e6b" +dependencies = [ + "avif-serialize", + "imgref", + "loop9", + "quick-error", + "rav1e", + "rayon", + "rgb", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "rgb" +version = "0.8.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + +[[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 = "sctk-adwaita" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit", + "tiny-skia", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "simd_helpers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +dependencies = [ + "quote", +] + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[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.9.1", + "calloop", + "calloop-wayland-source", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 0.38.44", + "thiserror", + "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 = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" + +[[package]] +name = "syn" +version = "2.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl", +] + +[[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 = "tiff" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" + +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "v_frame" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" +dependencies = [ + "aligned-vec", + "num-traits", + "wasm-bindgen", +] + +[[package]] +name = "version-compare" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + +[[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 = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wayland-backend" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe770181423e5fc79d3e2a7f4410b7799d5aab1de4372853de3c6aa13ca24121" +dependencies = [ + "cc", + "downcast-rs", + "rustix 0.38.44", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978fa7c67b0847dbd6a9f350ca2569174974cd4082737054dbb7fbb79d7d9a61" +dependencies = [ + "bitflags 2.9.1", + "rustix 0.38.44", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.9.1", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65317158dec28d00416cb16705934070aef4f8393353d41126c54264ae0f182" +dependencies = [ + "rustix 0.38.44", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "779075454e1e9a521794fed15886323ea0feda3f8b0fc1390f5398141310422a" +dependencies = [ + "bitflags 2.9.1", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fd38cdad69b56ace413c6bcc1fbf5acc5e2ef4af9d5f8f1f9570c0c83eae175" +dependencies = [ + "bitflags 2.9.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cb6cdc73399c0e06504c437fe3cf886f25568dd5454473d565085b36d6a8bbf" +dependencies = [ + "bitflags 2.9.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "weezl" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "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.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "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-targets" +version = "0.53.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[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_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winit" +version = "0.30.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4409c10174df8779dc29a4788cac85ed84024ccbc1743b776b21a520ee1aaf4" +dependencies = [ + "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.9.1", + "block2", + "bytemuck", + "calloop", + "cfg_aliases", + "concurrent-queue", + "core-foundation", + "core-graphics", + "cursor-icon", + "dpi", + "js-sys", + "libc", + "memmap2", + "ndk", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit", + "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix 0.38.44", + "sctk-adwaita", + "smithay-client-toolkit", + "smol_str", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", + "web-sys", + "web-time", + "windows-sys 0.52.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", +] + +[[package]] +name = "winnow" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading", + "once_cell", + "rustix 0.38.44", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" + +[[package]] +name = "xcursor" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "635887f4315a33cb714eb059bdbd7c1c92bfa71bc5b9d5115460502f788c2ab5" + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.9.1", + "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.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" + +[[package]] +name = "zerocopy" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "zune-jpeg" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7384255a918371b5af158218d131530f694de9ad3815ebdd0453a940485cb0fa" +dependencies = [ + "zune-core", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..8b84c8b --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "fps" +version = "0.1.0" +edition = "2021" + +[dependencies] +glium = "0.36.0" +glutin = "0.32.3" +image = "0.25.6" diff --git a/justfile b/justfile new file mode 100644 index 0000000..a8ef99b --- /dev/null +++ b/justfile @@ -0,0 +1,10 @@ +default: + @just --list + +# Run 'cargo run' on the project +run *ARGS: + cargo run {{ARGS}} + +# Watch for changes and automatically restart +watch: + bacon diff --git a/opengl.png b/opengl.png new file mode 100644 index 0000000..f765a07 Binary files /dev/null and b/opengl.png differ diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..b31ae36 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,127 @@ +#[macro_use] +extern crate glium; +use glium::Surface; +mod teapot; + +fn main() { + let event_loop = glium::winit::event_loop::EventLoop::builder() + .build() + .expect("event loop building"); + let (window, display) = glium::backend::glutin::SimpleWindowBuilder::new() + .with_title("Glium tutorial #3") + .build(&event_loop); + + + let positions = glium::VertexBuffer::new(&display, &teapot::VERTICES).unwrap(); + let normals = glium::VertexBuffer::new(&display, &teapot::NORMALS).unwrap(); + let indices = glium::IndexBuffer::new(&display, glium::index::PrimitiveType::TrianglesList, + &teapot::INDICES).unwrap(); + + let vertex_shader_src = r#" + #version 140 + + in vec3 position; + in vec3 normal; + + out vec3 v_normal; + + uniform mat4 matrix; + uniform mat4 perspective; + + void main() { + v_normal = transpose(inverse(mat3(matrix))) * normal; + gl_Position = perspective * matrix * vec4(position, 1.0); + } + "#; + let fragment_shader_src = r#" + #version 140 + + in vec3 v_normal; + out vec4 color; + uniform vec3 u_light; + + void main() { + float brightness = dot(normalize(v_normal), normalize(u_light)); + vec3 dark_color = vec3(0.6, 0.0, 0.0); + vec3 regular_color = vec3(1.0, 0.0, 0.0); + color = vec4(mix(dark_color, regular_color, brightness), 1.0); + } + "#; + let program = glium::Program::from_source(&display, vertex_shader_src, fragment_shader_src, None).unwrap(); + + let light = [-1.0, 0.4, 0.9f32]; + let mut t: f32 = 0.0; + #[allow(deprecated)] + event_loop.run(move |ev, window_target| { + match ev { + glium::winit::event::Event::WindowEvent { event, .. } => match event { + glium::winit::event::WindowEvent::CloseRequested => { + window_target.exit(); + }, + // We now need to render everyting in response to a RedrawRequested event due to the animation + glium::winit::event::WindowEvent::RedrawRequested => { + let mut target = display.draw(); + target.clear_color_and_depth((0.0, 0.0, 0.0, 1.0), 1.0); + t += 0.01; + let x = t.sin() * 0.5; + let y = t.cos() * 0.5; + + let perspective = { + let (width, height) = target.get_dimensions(); + let aspect_ratio = height as f32 / width as f32; + + let fov: f32 = 3.141592 / 3.0; + let zfar = 1024.0; + let znear = 0.1; + + let f = 1.0 / (fov / 2.0).tan(); + + [ + [f * aspect_ratio , 0.0, 0.0 , 0.0], + [ 0.0 , f , 0.0 , 0.0], + [ 0.0 , 0.0, (zfar+znear)/(zfar-znear) , 1.0], + [ 0.0 , 0.0, -(2.0*zfar*znear)/(zfar-znear), 0.0], + ] + }; + + let uniforms = uniform! { + matrix: [ + [0.01, 0.0, 0.0, 0.0], + [0.0, 0.01, 0.0, 0.0], + [0.0, 0.0, 0.01, 0.0], + [x, y, 2.0, 1.0f32 ], + ], + u_light: light, + perspective: perspective + }; + + let params = glium::DrawParameters { + depth: glium::Depth { + test: glium::draw_parameters::DepthTest::IfLess, + write: true, + .. Default::default() + }, + .. Default::default() + }; + + target.draw((&positions, &normals), &indices, &program, &uniforms, + ¶ms).unwrap(); + target.finish().unwrap(); + }, + // Because glium doesn't know about windows we need to resize the display + // when the window's size has changed. + glium::winit::event::WindowEvent::Resized(window_size) => { + display.resize(window_size.into()); + }, + _ => (), + }, + // By requesting a redraw in response to a RedrawEventsCleared event we get continuous rendering. + // For applications that only change due to user input you could remove this handler. + glium::winit::event::Event::AboutToWait => { + window.request_redraw(); + }, + _ => (), + } + }) + .unwrap(); +} diff --git a/src/teapot.rs b/src/teapot.rs new file mode 100644 index 0000000..914a881 --- /dev/null +++ b/src/teapot.rs @@ -0,0 +1,2110 @@ +#[derive(Copy, Clone)] +pub struct Vertex { + position: (f32, f32, f32) +} + +implement_vertex!(Vertex, position); + +pub const VERTICES: [Vertex; 531] = [ + Vertex { position: (0.0, 0.0, 0.0) }, // dummy vector because in the original model indices + // start at 1 + Vertex { position: (40.6266, 28.3457, -1.10804) }, + Vertex { position: (40.0714, 30.4443, -1.10804) }, + Vertex { position: (40.7155, 31.1438, -1.10804) }, + Vertex { position: (42.0257, 30.4443, -1.10804) }, + Vertex { position: (43.4692, 28.3457, -1.10804) }, + Vertex { position: (37.5425, 28.3457, 14.5117) }, + Vertex { position: (37.0303, 30.4443, 14.2938) }, + Vertex { position: (37.6244, 31.1438, 14.5466) }, + Vertex { position: (38.8331, 30.4443, 15.0609) }, + Vertex { position: (40.1647, 28.3457, 15.6274) }, + Vertex { position: (29.0859, 28.3457, 27.1468) }, + Vertex { position: (28.6917, 30.4443, 26.7527) }, + Vertex { position: (29.149, 31.1438, 27.2099) }, + Vertex { position: (30.0792, 30.4443, 28.1402) }, + Vertex { position: (31.1041, 28.3457, 29.165) }, + Vertex { position: (16.4508, 28.3457, 35.6034) }, + Vertex { position: (16.2329, 30.4443, 35.0912) }, + Vertex { position: (16.4857, 31.1438, 35.6853) }, + Vertex { position: (16.9999, 30.4443, 36.894) }, + Vertex { position: (17.5665, 28.3457, 38.2256) }, + Vertex { position: (0.831025, 28.3457, 38.6876) }, + Vertex { position: (0.831025, 30.4443, 38.1324) }, + Vertex { position: (0.831025, 31.1438, 38.7764) }, + Vertex { position: (0.831025, 30.4443, 40.0866) }, + Vertex { position: (0.831025, 28.3457, 41.5301) }, + Vertex { position: (-15.868, 28.3457, 35.6034) }, + Vertex { position: (-15.0262, 30.4443, 35.0912) }, + Vertex { position: (-14.9585, 31.1438, 35.6853) }, + Vertex { position: (-15.3547, 30.4443, 36.894) }, + Vertex { position: (-15.9044, 28.3457, 38.2256) }, + Vertex { position: (-28.3832, 28.3457, 27.1468) }, + Vertex { position: (-27.4344, 30.4443, 26.7527) }, + Vertex { position: (-27.6068, 31.1438, 27.2099) }, + Vertex { position: (-28.4322, 30.4443, 28.1402) }, + Vertex { position: (-29.4421, 28.3457, 29.165) }, + Vertex { position: (-36.2402, 28.3457, 14.5117) }, + Vertex { position: (-35.52, 30.4443, 14.2938) }, + Vertex { position: (-36.0073, 31.1438, 14.5466) }, + Vertex { position: (-37.1767, 30.4443, 15.0609) }, + Vertex { position: (-38.5027, 28.3457, 15.6274) }, + Vertex { position: (-38.9646, 28.3457, -1.10804) }, + Vertex { position: (-38.4094, 30.4443, -1.10804) }, + Vertex { position: (-39.0534, 31.1438, -1.10804) }, + Vertex { position: (-40.3636, 30.4443, -1.10804) }, + Vertex { position: (-41.8071, 28.3457, -1.10804) }, + Vertex { position: (-35.8804, 28.3457, -16.7278) }, + Vertex { position: (-35.3683, 30.4443, -16.5099) }, + Vertex { position: (-35.9624, 31.1438, -16.7627) }, + Vertex { position: (-37.1711, 30.4443, -17.2769) }, + Vertex { position: (-38.5027, 28.3457, -17.8435) }, + Vertex { position: (-27.4238, 28.3457, -29.3629) }, + Vertex { position: (-27.0297, 30.4443, -28.9687) }, + Vertex { position: (-27.4869, 31.1438, -29.426) }, + Vertex { position: (-28.4172, 30.4443, -30.3562) }, + Vertex { position: (-29.4421, 28.3457, -31.3811) }, + Vertex { position: (-14.7887, 28.3457, -37.8195) }, + Vertex { position: (-14.5708, 30.4443, -37.3073) }, + Vertex { position: (-14.8236, 31.1438, -37.9014) }, + Vertex { position: (-15.3379, 30.4443, -39.1101) }, + Vertex { position: (-15.9044, 28.3457, -40.4417) }, + Vertex { position: (0.831025, 28.3457, -40.9036) }, + Vertex { position: (0.831025, 30.4443, -40.3484) }, + Vertex { position: (0.831025, 31.1438, -40.9925) }, + Vertex { position: (0.831025, 30.4443, -42.3027) }, + Vertex { position: (0.831025, 28.3457, -43.7462) }, + Vertex { position: (16.4508, 28.3457, -37.8195) }, + Vertex { position: (16.2329, 30.4443, -37.3073) }, + Vertex { position: (16.4857, 31.1438, -37.9014) }, + Vertex { position: (16.9999, 30.4443, -39.1101) }, + Vertex { position: (17.5665, 28.3457, -40.4417) }, + Vertex { position: (29.0859, 28.3457, -29.3629) }, + Vertex { position: (28.6917, 30.4443, -28.9687) }, + Vertex { position: (29.149, 31.1438, -29.426) }, + Vertex { position: (30.0792, 30.4443, -30.3562) }, + Vertex { position: (31.1041, 28.3457, -31.3811) }, + Vertex { position: (37.5425, 28.3457, -16.7278) }, + Vertex { position: (37.0303, 30.4443, -16.5099) }, + Vertex { position: (37.6244, 31.1438, -16.7627) }, + Vertex { position: (38.8331, 30.4443, -17.2769) }, + Vertex { position: (40.1647, 28.3457, -17.8435) }, + Vertex { position: (48.6879, 17.1865, -1.10804) }, + Vertex { position: (53.2404, 6.22714, -1.10804) }, + Vertex { position: (56.4605, -4.33246, -1.10804) }, + Vertex { position: (57.6819, -14.2925, -1.10804) }, + Vertex { position: (44.979, 17.1865, 17.6758) }, + Vertex { position: (49.1787, 6.22714, 19.4626) }, + Vertex { position: (52.1492, -4.33246, 20.7265) }, + Vertex { position: (53.2759, -14.2925, 21.2059) }, + Vertex { position: (34.8094, 17.1865, 32.8703) }, + Vertex { position: (38.0417, 6.22714, 36.1026) }, + Vertex { position: (40.3279, -4.33246, 38.3889) }, + Vertex { position: (41.1951, -14.2925, 39.2561) }, + Vertex { position: (19.6148, 17.1865, 43.0399) }, + Vertex { position: (21.4017, 6.22714, 47.2396) }, + Vertex { position: (22.6656, -4.33246, 50.2101) }, + Vertex { position: (23.145, -14.2925, 51.3369) }, + Vertex { position: (0.831025, 17.1865, 46.7488) }, + Vertex { position: (0.831025, 6.22714, 51.3013) }, + Vertex { position: (0.831025, -4.33246, 54.5214) }, + Vertex { position: (0.831025, -14.2925, 55.7428) }, + Vertex { position: (-17.9528, 17.1865, 43.0399) }, + Vertex { position: (-19.7397, 6.22714, 47.2396) }, + Vertex { position: (-21.0035, -4.33246, 50.2101) }, + Vertex { position: (-21.4829, -14.2925, 51.3369) }, + Vertex { position: (-33.1474, 17.1865, 32.8703) }, + Vertex { position: (-36.3796, 6.22714, 36.1026) }, + Vertex { position: (-38.6659, -4.33246, 38.3889) }, + Vertex { position: (-39.5331, -14.2925, 39.2561) }, + Vertex { position: (-43.3169, 17.1865, 17.6758) }, + Vertex { position: (-47.5166, 6.22714, 19.4626) }, + Vertex { position: (-50.4871, -4.33246, 20.7265) }, + Vertex { position: (-51.6139, -14.2925, 21.2059) }, + Vertex { position: (-47.0258, 17.1865, -1.10804) }, + Vertex { position: (-51.5784, 6.22714, -1.10804) }, + Vertex { position: (-54.7984, -4.33246, -1.10804) }, + Vertex { position: (-56.0198, -14.2925, -1.10804) }, + Vertex { position: (-43.3169, 17.1865, -19.8919) }, + Vertex { position: (-47.5166, 6.22714, -21.6787) }, + Vertex { position: (-50.4871, -4.33246, -22.9426) }, + Vertex { position: (-51.6139, -14.2925, -23.422) }, + Vertex { position: (-33.1474, 17.1865, -35.0864) }, + Vertex { position: (-36.3796, 6.22714, -38.3187) }, + Vertex { position: (-38.6659, -4.33246, -40.6049) }, + Vertex { position: (-39.5331, -14.2925, -41.4721) }, + Vertex { position: (-17.9528, 17.1865, -45.256) }, + Vertex { position: (-19.7397, 6.22714, -49.4557) }, + Vertex { position: (-21.0035, -4.33246, -52.4262) }, + Vertex { position: (-21.4829, -14.2925, -53.5529) }, + Vertex { position: (0.831025, 17.1865, -48.9649) }, + Vertex { position: (0.831025, 6.22714, -53.5174) }, + Vertex { position: (0.831025, -4.33246, -56.7375) }, + Vertex { position: (0.831025, -14.2925, -57.9589) }, + Vertex { position: (19.6148, 17.1865, -45.256) }, + Vertex { position: (21.4017, 6.22714, -49.4557) }, + Vertex { position: (22.6656, -4.33246, -52.4262) }, + Vertex { position: (23.145, -14.2925, -53.5529) }, + Vertex { position: (34.8094, 17.1865, -35.0864) }, + Vertex { position: (38.0417, 6.22714, -38.3187) }, + Vertex { position: (40.3279, -4.33246, -40.6049) }, + Vertex { position: (41.1951, -14.2925, -41.4721) }, + Vertex { position: (44.979, 17.1865, -19.8919) }, + Vertex { position: (49.1787, 6.22714, -21.6787) }, + Vertex { position: (52.1492, -4.33246, -22.9426) }, + Vertex { position: (53.2759, -14.2925, -23.422) }, + Vertex { position: (55.4611, -22.7202, -1.10804) }, + Vertex { position: (50.5755, -28.9493, -1.10804) }, + Vertex { position: (45.6899, -33.1798, -1.10804) }, + Vertex { position: (43.4692, -35.6115, -1.10804) }, + Vertex { position: (51.2273, -22.7202, 20.3343) }, + Vertex { position: (46.7203, -28.9493, 18.4167) }, + Vertex { position: (42.2133, -33.1798, 16.4991) }, + Vertex { position: (40.1647, -35.6115, 15.6274) }, + Vertex { position: (39.6184, -22.7202, 37.6793) }, + Vertex { position: (36.1496, -28.9493, 34.2106) }, + Vertex { position: (32.6808, -33.1798, 30.7418) }, + Vertex { position: (31.1041, -35.6115, 29.165) }, + Vertex { position: (22.2733, -22.7202, 49.2882) }, + Vertex { position: (20.3557, -28.9493, 44.7813) }, + Vertex { position: (18.4381, -33.1798, 40.2743) }, + Vertex { position: (17.5665, -35.6115, 38.2256) }, + Vertex { position: (0.831025, -22.7202, 53.5221) }, + Vertex { position: (0.831025, -28.9493, 48.6365) }, + Vertex { position: (0.831025, -33.1798, 43.7508) }, + Vertex { position: (0.831025, -35.6115, 41.5301) }, + Vertex { position: (-20.6113, -22.7202, 49.2882) }, + Vertex { position: (-18.6937, -28.9493, 44.7813) }, + Vertex { position: (-16.7761, -33.1798, 40.2743) }, + Vertex { position: (-15.9044, -35.6115, 38.2256) }, + Vertex { position: (-37.9564, -22.7202, 37.6793) }, + Vertex { position: (-34.4876, -28.9493, 34.2106) }, + Vertex { position: (-31.0188, -33.1798, 30.7418) }, + Vertex { position: (-29.4421, -35.6115, 29.165) }, + Vertex { position: (-49.5653, -22.7202, 20.3343) }, + Vertex { position: (-45.0583, -28.9493, 18.4167) }, + Vertex { position: (-40.5513, -33.1798, 16.4991) }, + Vertex { position: (-38.5027, -35.6115, 15.6274) }, + Vertex { position: (-53.7991, -22.7202, -1.10804) }, + Vertex { position: (-48.9135, -28.9493, -1.10804) }, + Vertex { position: (-44.0279, -33.1798, -1.10804) }, + Vertex { position: (-41.8071, -35.6115, -1.10804) }, + Vertex { position: (-49.5653, -22.7202, -22.5504) }, + Vertex { position: (-45.0583, -28.9493, -20.6327) }, + Vertex { position: (-40.5513, -33.1798, -18.7151) }, + Vertex { position: (-38.5027, -35.6115, -17.8435) }, + Vertex { position: (-37.9564, -22.7202, -39.8954) }, + Vertex { position: (-34.4876, -28.9493, -36.4266) }, + Vertex { position: (-31.0188, -33.1798, -32.9578) }, + Vertex { position: (-29.4421, -35.6115, -31.3811) }, + Vertex { position: (-20.6113, -22.7202, -51.5043) }, + Vertex { position: (-18.6937, -28.9493, -46.9973) }, + Vertex { position: (-16.7761, -33.1798, -42.4903) }, + Vertex { position: (-15.9044, -35.6115, -40.4417) }, + Vertex { position: (0.831025, -22.7202, -55.7382) }, + Vertex { position: (0.831025, -28.9493, -50.8525) }, + Vertex { position: (0.831025, -33.1798, -45.9669) }, + Vertex { position: (0.831025, -35.6115, -43.7462) }, + Vertex { position: (22.2733, -22.7202, -51.5043) }, + Vertex { position: (20.3557, -28.9493, -46.9973) }, + Vertex { position: (18.4381, -33.1798, -42.4903) }, + Vertex { position: (17.5665, -35.6115, -40.4417) }, + Vertex { position: (39.6184, -22.7202, -39.8954) }, + Vertex { position: (36.1496, -28.9493, -36.4266) }, + Vertex { position: (32.6808, -33.1798, -32.9578) }, + Vertex { position: (31.1041, -35.6115, -31.3811) }, + Vertex { position: (51.2273, -22.7202, -22.5504) }, + Vertex { position: (46.7203, -28.9493, -20.6327) }, + Vertex { position: (42.2133, -33.1798, -18.7151) }, + Vertex { position: (40.1647, -35.6115, -17.8435) }, + Vertex { position: (42.5031, -37.1772, -1.10804) }, + Vertex { position: (37.3399, -38.5429, -1.10804) }, + Vertex { position: (24.5818, -39.5089, -1.10804) }, + Vertex { position: (0.831025, -39.8754, -1.10804) }, + Vertex { position: (39.2736, -37.1772, 15.2483) }, + Vertex { position: (34.5105, -38.5429, 13.2217) }, + Vertex { position: (22.7411, -39.5089, 8.21414) }, + Vertex { position: (30.4182, -37.1772, 28.4792) }, + Vertex { position: (26.7523, -38.5429, 24.8133) }, + Vertex { position: (17.6941, -39.5089, 15.755) }, + Vertex { position: (17.1873, -37.1772, 37.3345) }, + Vertex { position: (15.1608, -38.5429, 32.5714) }, + Vertex { position: (10.1532, -39.5089, 20.8021) }, + Vertex { position: (0.831025, -37.1772, 40.5641) }, + Vertex { position: (0.831025, -38.5429, 35.4009) }, + Vertex { position: (0.831025, -39.5089, 22.6427) }, + Vertex { position: (-15.5253, -37.1772, 37.3345) }, + Vertex { position: (-13.4987, -38.5429, 32.5714) }, + Vertex { position: (-8.49115, -39.5089, 20.8021) }, + Vertex { position: (-28.7562, -37.1772, 28.4792) }, + Vertex { position: (-25.0903, -38.5429, 24.8133) }, + Vertex { position: (-16.032, -39.5089, 15.755) }, + Vertex { position: (-37.6115, -37.1772, 15.2483) }, + Vertex { position: (-32.8484, -38.5429, 13.2217) }, + Vertex { position: (-21.0791, -39.5089, 8.21414) }, + Vertex { position: (-40.8411, -37.1772, -1.10804) }, + Vertex { position: (-35.6779, -38.5429, -1.10804) }, + Vertex { position: (-22.9198, -39.5089, -1.10804) }, + Vertex { position: (-37.6115, -37.1772, -17.4643) }, + Vertex { position: (-32.8484, -38.5429, -15.4378) }, + Vertex { position: (-21.0791, -39.5089, -10.4302) }, + Vertex { position: (-28.7562, -37.1772, -30.6952) }, + Vertex { position: (-25.0903, -38.5429, -27.0294) }, + Vertex { position: (-16.032, -39.5089, -17.9711) }, + Vertex { position: (-15.5253, -37.1772, -39.5506) }, + Vertex { position: (-13.4987, -38.5429, -34.7875) }, + Vertex { position: (-8.49115, -39.5089, -23.0181) }, + Vertex { position: (0.831025, -37.1772, -42.7802) }, + Vertex { position: (0.831025, -38.5429, -37.6169) }, + Vertex { position: (0.831025, -39.5089, -24.8588) }, + Vertex { position: (17.1873, -37.1772, -39.5506) }, + Vertex { position: (15.1608, -38.5429, -34.7875) }, + Vertex { position: (10.1532, -39.5089, -23.0181) }, + Vertex { position: (30.4182, -37.1772, -30.6952) }, + Vertex { position: (26.7523, -38.5429, -27.0294) }, + Vertex { position: (17.6941, -39.5089, -17.9711) }, + Vertex { position: (39.2736, -37.1772, -17.4643) }, + Vertex { position: (34.5105, -38.5429, -15.4378) }, + Vertex { position: (22.7411, -39.5089, -10.4302) }, + Vertex { position: (-44.6497, 17.6861, -1.10804) }, + Vertex { position: (-57.9297, 17.5862, -1.10804) }, + Vertex { position: (-67.7453, 16.8867, -1.10804) }, + Vertex { position: (-73.8301, 14.9879, -1.10804) }, + Vertex { position: (-75.9176, 11.2904, -1.10804) }, + Vertex { position: (-44.2055, 18.6855, 3.68876) }, + Vertex { position: (-58.3252, 18.5699, 3.68876) }, + Vertex { position: (-68.6891, 17.7611, 3.68876) }, + Vertex { position: (-75.0724, 15.5657, 3.68876) }, + Vertex { position: (-77.2501, 11.2904, 3.68876) }, + Vertex { position: (-43.2284, 20.884, 5.28769) }, + Vertex { position: (-59.1955, 20.7341, 5.28769) }, + Vertex { position: (-70.7655, 19.6848, 5.28769) }, + Vertex { position: (-77.8053, 16.8367, 5.28769) }, + Vertex { position: (-80.1814, 11.2904, 5.28769) }, + Vertex { position: (-42.2513, 23.0825, 3.68876) }, + Vertex { position: (-60.0657, 22.8983, 3.68876) }, + Vertex { position: (-72.8419, 21.6085, 3.68876) }, + Vertex { position: (-80.5381, 18.1077, 3.68876) }, + Vertex { position: (-83.1128, 11.2904, 3.68876) }, + Vertex { position: (-41.8071, 24.0819, -1.10804) }, + Vertex { position: (-60.4613, 23.882, -1.10804) }, + Vertex { position: (-73.7857, 22.4829, -1.10804) }, + Vertex { position: (-81.7804, 18.6855, -1.10804) }, + Vertex { position: (-84.4453, 11.2904, -1.10804) }, + Vertex { position: (-42.2513, 23.0825, -5.90483) }, + Vertex { position: (-60.0657, 22.8983, -5.90483) }, + Vertex { position: (-72.8419, 21.6085, -5.90483) }, + Vertex { position: (-80.5381, 18.1077, -5.90483) }, + Vertex { position: (-83.1128, 11.2904, -5.90483) }, + Vertex { position: (-43.2284, 20.884, -7.50376) }, + Vertex { position: (-59.1955, 20.7341, -7.50376) }, + Vertex { position: (-70.7655, 19.6848, -7.50376) }, + Vertex { position: (-77.8053, 16.8367, -7.50376) }, + Vertex { position: (-80.1814, 11.2904, -7.50376) }, + Vertex { position: (-44.2055, 18.6855, -5.90483) }, + Vertex { position: (-58.3252, 18.5699, -5.90483) }, + Vertex { position: (-68.6891, 17.7611, -5.90483) }, + Vertex { position: (-75.0724, 15.5657, -5.90483) }, + Vertex { position: (-77.2501, 11.2904, -5.90483) }, + Vertex { position: (-74.8073, 5.4943, -1.10804) }, + Vertex { position: (-71.2985, -1.50103, -1.10804) }, + Vertex { position: (-65.1248, -8.49634, -1.10804) }, + Vertex { position: (-56.0198, -14.2925, -1.10804) }, + Vertex { position: (-76.0183, 4.93477, 3.68876) }, + Vertex { position: (-72.159, -2.35462, 3.68876) }, + Vertex { position: (-65.4267, -9.55033, 3.68876) }, + Vertex { position: (-55.5757, -15.6249, 3.68876) }, + Vertex { position: (-78.6824, 3.70383, 5.28769) }, + Vertex { position: (-74.0522, -4.23253, 5.28769) }, + Vertex { position: (-66.0909, -11.8691, 5.28769) }, + Vertex { position: (-54.5986, -18.5563, 5.28769) }, + Vertex { position: (-81.3466, 2.47288, 3.68876) }, + Vertex { position: (-75.9454, -6.11044, 3.68876) }, + Vertex { position: (-66.755, -14.1878, 3.68876) }, + Vertex { position: (-53.6214, -21.4877, 3.68876) }, + Vertex { position: (-82.5576, 1.91336, -1.10804) }, + Vertex { position: (-76.8059, -6.96404, -1.10804) }, + Vertex { position: (-67.0569, -15.2418, -1.10804) }, + Vertex { position: (-53.1773, -22.8201, -1.10804) }, + Vertex { position: (-81.3466, 2.47288, -5.90483) }, + Vertex { position: (-75.9454, -6.11044, -5.90483) }, + Vertex { position: (-66.755, -14.1878, -5.90483) }, + Vertex { position: (-53.6214, -21.4877, -5.90483) }, + Vertex { position: (-78.6824, 3.70383, -7.50376) }, + Vertex { position: (-74.0522, -4.23253, -7.50376) }, + Vertex { position: (-66.0909, -11.8691, -7.50376) }, + Vertex { position: (-54.5986, -18.5563, -7.50376) }, + Vertex { position: (-76.0183, 4.93477, -5.90483) }, + Vertex { position: (-72.159, -2.35462, -5.90483) }, + Vertex { position: (-65.4267, -9.55033, -5.90483) }, + Vertex { position: (-55.5757, -15.6249, -5.90483) }, + Vertex { position: (49.1543, 0.630882, -1.10804) }, + Vertex { position: (62.7896, 3.76212, -1.10804) }, + Vertex { position: (68.6967, 11.2904, -1.10804) }, + Vertex { position: (71.939, 20.4176, -1.10804) }, + Vertex { position: (77.5797, 28.3457, -1.10804) }, + Vertex { position: (49.1543, -3.03333, 9.4449) }, + Vertex { position: (63.8305, 1.04519, 8.42059) }, + Vertex { position: (70.0292, 9.70814, 6.1671) }, + Vertex { position: (73.5629, 19.8451, 3.91361) }, + Vertex { position: (80.2446, 28.3457, 2.88929) }, + Vertex { position: (49.1543, -11.0946, 12.9626) }, + Vertex { position: (66.1207, -4.93206, 11.5968) }, + Vertex { position: (72.9605, 6.22714, 8.59214) }, + Vertex { position: (77.1355, 18.5855, 5.58749) }, + Vertex { position: (86.1073, 28.3457, 4.22173) }, + Vertex { position: (49.1543, -19.1559, 9.4449) }, + Vertex { position: (68.4108, -10.9093, 8.42059) }, + Vertex { position: (75.8919, 2.74614, 6.1671) }, + Vertex { position: (80.7081, 17.326, 3.91361) }, + Vertex { position: (91.97, 28.3457, 2.88929) }, + Vertex { position: (49.1543, -22.8201, -1.10804) }, + Vertex { position: (69.4518, -13.6262, -1.10804) }, + Vertex { position: (77.2244, 1.16386, -1.10804) }, + Vertex { position: (82.3321, 16.7534, -1.10804) }, + Vertex { position: (94.6349, 28.3457, -1.10804) }, + Vertex { position: (49.1543, -19.1559, -11.661) }, + Vertex { position: (68.4108, -10.9093, -10.6367) }, + Vertex { position: (75.8919, 2.74614, -8.38317) }, + Vertex { position: (80.7081, 17.326, -6.12968) }, + Vertex { position: (91.97, 28.3457, -5.10536) }, + Vertex { position: (49.1543, -11.0946, -15.1786) }, + Vertex { position: (66.1207, -4.93206, -13.8129) }, + Vertex { position: (72.9605, 6.22714, -10.8082) }, + Vertex { position: (77.1355, 18.5855, -7.80356) }, + Vertex { position: (86.1073, 28.3457, -6.4378) }, + Vertex { position: (49.1543, -3.03333, -11.661) }, + Vertex { position: (63.8305, 1.04519, -10.6367) }, + Vertex { position: (70.0292, 9.70814, -8.38317) }, + Vertex { position: (73.5629, 19.8451, -6.12968) }, + Vertex { position: (80.2446, 28.3457, -5.10536) }, + Vertex { position: (79.6227, 29.5449, -1.10804) }, + Vertex { position: (81.1329, 29.9446, -1.10804) }, + Vertex { position: (81.577, 29.5449, -1.10804) }, + Vertex { position: (80.4222, 28.3457, -1.10804) }, + Vertex { position: (82.4767, 29.6034, 2.63946) }, + Vertex { position: (83.8116, 30.0383, 2.08983) }, + Vertex { position: (83.8515, 29.6268, 1.54019) }, + Vertex { position: (82.1988, 28.3457, 1.29036) }, + Vertex { position: (88.7555, 29.7322, 3.88862) }, + Vertex { position: (89.7049, 30.2444, 3.15578) }, + Vertex { position: (88.8555, 29.8072, 2.42294) }, + Vertex { position: (86.1073, 28.3457, 2.08983) }, + Vertex { position: (95.0343, 29.8611, 2.63946) }, + Vertex { position: (95.5982, 30.4505, 2.08983) }, + Vertex { position: (93.8594, 29.9875, 1.54019) }, + Vertex { position: (90.0158, 28.3457, 1.29036) }, + Vertex { position: (97.8883, 29.9196, -1.10804) }, + Vertex { position: (98.2769, 30.5442, -1.10804) }, + Vertex { position: (96.1339, 30.0695, -1.10804) }, + Vertex { position: (91.7924, 28.3457, -1.10804) }, + Vertex { position: (95.0343, 29.8611, -4.85553) }, + Vertex { position: (95.5982, 30.4505, -4.3059) }, + Vertex { position: (93.8594, 29.9875, -3.75626) }, + Vertex { position: (90.0158, 28.3457, -3.50643) }, + Vertex { position: (88.7555, 29.7322, -6.10469) }, + Vertex { position: (89.7049, 30.2444, -5.37185) }, + Vertex { position: (88.8555, 29.8072, -4.63901) }, + Vertex { position: (86.1073, 28.3457, -4.3059) }, + Vertex { position: (82.4767, 29.6034, -4.85553) }, + Vertex { position: (83.8116, 30.0383, -4.3059) }, + Vertex { position: (83.8515, 29.6268, -3.75626) }, + Vertex { position: (82.1988, 28.3457, -3.50643) }, + Vertex { position: (0.831025, 49.6647, -1.10804) }, + Vertex { position: (10.5134, 48.2657, -1.10804) }, + Vertex { position: (10.0693, 44.868, -1.10804) }, + Vertex { position: (6.42728, 40.6708, -1.10804) }, + Vertex { position: (6.51611, 36.8733, -1.10804) }, + Vertex { position: (9.76642, 48.2657, 2.70243) }, + Vertex { position: (9.35632, 44.868, 2.52698) }, + Vertex { position: (5.9947, 40.6708, 1.09187) }, + Vertex { position: (6.07552, 36.8733, 1.12336) }, + Vertex { position: (7.71453, 48.2657, 5.77547) }, + Vertex { position: (7.39819, 44.868, 5.45913) }, + Vertex { position: (4.80736, 40.6708, 2.8683) }, + Vertex { position: (4.86744, 36.8733, 2.92838) }, + Vertex { position: (4.64149, 48.2657, 7.82736) }, + Vertex { position: (4.46604, 44.868, 7.41726) }, + Vertex { position: (3.03093, 40.6708, 4.05564) }, + Vertex { position: (3.06242, 36.8733, 4.13646) }, + Vertex { position: (0.831025, 48.2657, 8.57438) }, + Vertex { position: (0.831025, 44.868, 8.13023) }, + Vertex { position: (0.831025, 40.6708, 4.48822) }, + Vertex { position: (0.831025, 36.8733, 4.57705) }, + Vertex { position: (-2.97944, 48.2657, 7.82736) }, + Vertex { position: (-2.80399, 44.868, 7.41726) }, + Vertex { position: (-1.36888, 40.6708, 4.05564) }, + Vertex { position: (-1.40037, 36.8733, 4.13646) }, + Vertex { position: (-6.05248, 48.2657, 5.77547) }, + Vertex { position: (-5.73614, 44.868, 5.45913) }, + Vertex { position: (-3.14531, 40.6708, 2.8683) }, + Vertex { position: (-3.20539, 36.8733, 2.92838) }, + Vertex { position: (-8.10437, 48.2657, 2.70243) }, + Vertex { position: (-7.69427, 44.868, 2.52698) }, + Vertex { position: (-4.33265, 40.6708, 1.09187) }, + Vertex { position: (-4.41347, 36.8733, 1.12336) }, + Vertex { position: (-8.85139, 48.2657, -1.10804) }, + Vertex { position: (-8.40724, 44.868, -1.10804) }, + Vertex { position: (-4.76523, 40.6708, -1.10804) }, + Vertex { position: (-4.85406, 36.8733, -1.10804) }, + Vertex { position: (-8.10437, 48.2657, -4.9185) }, + Vertex { position: (-7.69427, 44.868, -4.74305) }, + Vertex { position: (-4.33265, 40.6708, -3.30794) }, + Vertex { position: (-4.41347, 36.8733, -3.33943) }, + Vertex { position: (-6.05248, 48.2657, -7.99154) }, + Vertex { position: (-5.73614, 44.868, -7.6752) }, + Vertex { position: (-3.14531, 40.6708, -5.08437) }, + Vertex { position: (-3.20539, 36.8733, -5.14445) }, + Vertex { position: (-2.97944, 48.2657, -10.0434) }, + Vertex { position: (-2.80399, 44.868, -9.63333) }, + Vertex { position: (-1.36888, 40.6708, -6.27171) }, + Vertex { position: (-1.40037, 36.8733, -6.35253) }, + Vertex { position: (0.831025, 48.2657, -10.7904) }, + Vertex { position: (0.831025, 44.868, -10.3463) }, + Vertex { position: (0.831025, 40.6708, -6.70429) }, + Vertex { position: (0.831025, 36.8733, -6.79312) }, + Vertex { position: (4.64149, 48.2657, -10.0434) }, + Vertex { position: (4.46604, 44.868, -9.63333) }, + Vertex { position: (3.03093, 40.6708, -6.27171) }, + Vertex { position: (3.06242, 36.8733, -6.35253) }, + Vertex { position: (7.71453, 48.2657, -7.99154) }, + Vertex { position: (7.39819, 44.868, -7.6752) }, + Vertex { position: (4.80736, 40.6708, -5.08437) }, + Vertex { position: (4.86744, 36.8733, -5.14445) }, + Vertex { position: (9.76642, 48.2657, -4.9185) }, + Vertex { position: (9.35632, 44.868, -4.74305) }, + Vertex { position: (5.9947, 40.6708, -3.30794) }, + Vertex { position: (6.07552, 36.8733, -3.33943) }, + Vertex { position: (13.8001, 34.3417, -1.10804) }, + Vertex { position: (24.282, 32.6095, -1.10804) }, + Vertex { position: (33.6979, 30.8773, -1.10804) }, + Vertex { position: (37.7841, 28.3457, -1.10804) }, + Vertex { position: (12.795, 34.3417, 3.98234) }, + Vertex { position: (22.4646, 32.6095, 8.09647) }, + Vertex { position: (31.1507, 30.8773, 11.7922) }, + Vertex { position: (34.9202, 28.3457, 13.396) }, + Vertex { position: (10.0391, 34.3417, 8.10003) }, + Vertex { position: (17.4812, 32.6095, 15.5422) }, + Vertex { position: (24.1665, 30.8773, 22.2275) }, + Vertex { position: (27.0677, 28.3457, 25.1286) }, + Vertex { position: (5.9214, 34.3417, 10.856) }, + Vertex { position: (10.0355, 32.6095, 20.5255) }, + Vertex { position: (13.7313, 30.8773, 29.2117) }, + Vertex { position: (15.3351, 28.3457, 32.9812) }, + Vertex { position: (0.831025, 34.3417, 11.8611) }, + Vertex { position: (0.831025, 32.6095, 22.3429) }, + Vertex { position: (0.831025, 30.8773, 31.7589) }, + Vertex { position: (0.831025, 28.3457, 35.845) }, + Vertex { position: (-4.25935, 34.3417, 10.856) }, + Vertex { position: (-8.37348, 32.6095, 20.5255) }, + Vertex { position: (-12.0692, 30.8773, 29.2117) }, + Vertex { position: (-13.673, 28.3457, 32.9812) }, + Vertex { position: (-8.37704, 34.3417, 8.10003) }, + Vertex { position: (-15.8192, 32.6095, 15.5422) }, + Vertex { position: (-22.5045, 30.8773, 22.2275) }, + Vertex { position: (-25.4056, 28.3457, 25.1286) }, + Vertex { position: (-11.133, 34.3417, 3.98234) }, + Vertex { position: (-20.8025, 32.6095, 8.09647) }, + Vertex { position: (-29.4887, 30.8773, 11.7922) }, + Vertex { position: (-33.2582, 28.3457, 13.396) }, + Vertex { position: (-12.1381, 34.3417, -1.10804) }, + Vertex { position: (-22.62, 32.6095, -1.10804) }, + Vertex { position: (-32.0359, 30.8773, -1.10804) }, + Vertex { position: (-36.122, 28.3457, -1.10804) }, + Vertex { position: (-11.133, 34.3417, -6.19841) }, + Vertex { position: (-20.8025, 32.6095, -10.3125) }, + Vertex { position: (-29.4887, 30.8773, -14.0083) }, + Vertex { position: (-33.2582, 28.3457, -15.6121) }, + Vertex { position: (-8.37704, 34.3417, -10.3161) }, + Vertex { position: (-15.8192, 32.6095, -17.7582) }, + Vertex { position: (-22.5045, 30.8773, -24.4435) }, + Vertex { position: (-25.4056, 28.3457, -27.3447) }, + Vertex { position: (-4.25935, 34.3417, -13.072) }, + Vertex { position: (-8.37348, 32.6095, -22.7416) }, + Vertex { position: (-12.0692, 30.8773, -31.4277) }, + Vertex { position: (-13.673, 28.3457, -35.1972) }, + Vertex { position: (0.831025, 34.3417, -14.0771) }, + Vertex { position: (0.831025, 32.6095, -24.559) }, + Vertex { position: (0.831025, 30.8773, -33.9749) }, + Vertex { position: (0.831025, 28.3457, -38.0611) }, + Vertex { position: (5.9214, 34.3417, -13.072) }, + Vertex { position: (10.0355, 32.6095, -22.7416) }, + Vertex { position: (13.7313, 30.8773, -31.4277) }, + Vertex { position: (15.3351, 28.3457, -35.1972) }, + Vertex { position: (10.0391, 34.3417, -10.3161) }, + Vertex { position: (17.4812, 32.6095, -17.7582) }, + Vertex { position: (24.1665, 30.8773, -24.4435) }, + Vertex { position: (27.0677, 28.3457, -27.3447) }, + Vertex { position: (12.795, 34.3417, -6.19841) }, + Vertex { position: (22.4646, 32.6095, -10.3125) }, + Vertex { position: (31.1507, 30.8773, -14.0083) }, + Vertex { position: (34.9202, 28.3457, -15.6121) } +]; + +#[derive(Copy, Clone)] +pub struct Normal { + normal: (f32, f32, f32) +} + +implement_vertex!(Normal, normal); + +pub const NORMALS: [Normal; 531] = [ + Normal { normal: (0.0, 0.0, 0.0) }, // dummy vector because in the original model indices + // start at 1 + Normal { normal: (-0.966742, -0.255752, 0.0) }, + Normal { normal: (-0.966824, 0.255443, 0.0) }, + Normal { normal: (-0.092052, 0.995754, 0.0) }, + Normal { normal: (0.68205, 0.731305, 0.0) }, + Normal { normal: (0.870301, 0.492521, -0.0) }, + Normal { normal: (-0.893014, -0.256345, -0.369882) }, + Normal { normal: (-0.893437, 0.255997, -0.369102) }, + Normal { normal: (-0.0838771, 0.995843, -0.0355068) }, + Normal { normal: (0.629724, 0.73186, 0.260439) }, + Normal { normal: (0.803725, 0.49337, 0.332584) }, + Normal { normal: (-0.683407, -0.256729, -0.683407) }, + Normal { normal: (-0.683531, 0.256067, -0.683531) }, + Normal { normal: (-0.0649249, 0.995776, -0.0649248) }, + Normal { normal: (0.481398, 0.732469, 0.481398) }, + Normal { normal: (0.614804, 0.493997, 0.614804) }, + Normal { normal: (-0.369882, -0.256345, -0.893014) }, + Normal { normal: (-0.369102, 0.255997, -0.893437) }, + Normal { normal: (-0.0355067, 0.995843, -0.0838772) }, + Normal { normal: (0.260439, 0.73186, 0.629724) }, + Normal { normal: (0.332584, 0.49337, 0.803725) }, + Normal { normal: (-0.00284834, -0.257863, -0.966177) }, + Normal { normal: (-0.00192311, 0.254736, -0.967009) }, + Normal { normal: (-0.000266114, 0.995734, -0.0922702) }, + Normal { normal: (0.0, 0.731295, 0.682061) }, + Normal { normal: (0.0, 0.492521, 0.870301) }, + Normal { normal: (0.379058, -0.3593, -0.852771) }, + Normal { normal: (0.37711, 0.149086, -0.914091) }, + Normal { normal: (0.0275022, 0.992081, -0.122551) }, + Normal { normal: (-0.26101, 0.726762, 0.635367) }, + Normal { normal: (-0.332485, 0.492546, 0.804271) }, + Normal { normal: (0.663548, -0.410791, -0.625264) }, + Normal { normal: (0.712664, 0.0737216, -0.697621) }, + Normal { normal: (0.0997268, 0.987509, -0.121984) }, + Normal { normal: (-0.48732, 0.723754, 0.488568) }, + Normal { normal: (-0.615242, 0.492602, 0.615484) }, + Normal { normal: (0.880028, -0.332908, -0.338709) }, + Normal { normal: (0.917276, 0.167113, -0.361493) }, + Normal { normal: (0.113584, 0.992365, -0.0480695) }, + Normal { normal: (-0.63415, 0.727508, 0.261889) }, + Normal { normal: (-0.804126, 0.492634, 0.332705) }, + Normal { normal: (0.96669, -0.255738, 0.0104537) }, + Normal { normal: (0.967442, 0.252962, 0.00810329) }, + Normal { normal: (0.0934365, 0.995624, 0.00128063) }, + Normal { normal: (-0.682167, 0.731196, -0.00034353) }, + Normal { normal: (-0.870322, 0.492483, -0.0) }, + Normal { normal: (0.893014, -0.256345, 0.369882) }, + Normal { normal: (0.893437, 0.255997, 0.369102) }, + Normal { normal: (0.0838768, 0.995843, 0.0355066) }, + Normal { normal: (-0.629724, 0.73186, -0.260439) }, + Normal { normal: (-0.803725, 0.49337, -0.332584) }, + Normal { normal: (0.683407, -0.256729, 0.683407) }, + Normal { normal: (0.683531, 0.256067, 0.683531) }, + Normal { normal: (0.0649249, 0.995776, 0.0649249) }, + Normal { normal: (-0.481398, 0.732469, -0.481398) }, + Normal { normal: (-0.614804, 0.493997, -0.614804) }, + Normal { normal: (0.369882, -0.256345, 0.893014) }, + Normal { normal: (0.369102, 0.255997, 0.893437) }, + Normal { normal: (0.0355067, 0.995843, 0.083877) }, + Normal { normal: (-0.260439, 0.73186, -0.629724) }, + Normal { normal: (-0.332584, 0.49337, -0.803725) }, + Normal { normal: (0.0, -0.255752, 0.966742) }, + Normal { normal: (0.0, 0.255443, 0.966824) }, + Normal { normal: (0.0, 0.995754, 0.092052) }, + Normal { normal: (0.0, 0.731305, -0.68205) }, + Normal { normal: (-0.0, 0.492521, -0.870301) }, + Normal { normal: (-0.369882, -0.256345, 0.893014) }, + Normal { normal: (-0.369102, 0.255996, 0.893437) }, + Normal { normal: (-0.0355068, 0.995843, 0.0838771) }, + Normal { normal: (0.260439, 0.73186, -0.629724) }, + Normal { normal: (0.332584, 0.49337, -0.803725) }, + Normal { normal: (-0.683407, -0.256729, 0.683407) }, + Normal { normal: (-0.683531, 0.256067, 0.683531) }, + Normal { normal: (-0.0649249, 0.995776, 0.064925) }, + Normal { normal: (0.481398, 0.732469, -0.481398) }, + Normal { normal: (0.614804, 0.493997, -0.614804) }, + Normal { normal: (-0.893014, -0.256345, 0.369882) }, + Normal { normal: (-0.893437, 0.255997, 0.369102) }, + Normal { normal: (-0.0838767, 0.995843, 0.0355066) }, + Normal { normal: (0.629724, 0.73186, -0.260439) }, + Normal { normal: (0.803725, 0.49337, -0.332584) }, + Normal { normal: (0.915321, 0.402725, 0.0) }, + Normal { normal: (0.941808, 0.336151, -0.0) }, + Normal { normal: (0.97869, 0.205342, 0.0) }, + Normal { normal: (0.997804, -0.0662397, 0.0) }, + Normal { normal: (0.845438, 0.403546, 0.349835) }, + Normal { normal: (0.869996, 0.336859, 0.360047) }, + Normal { normal: (0.904193, 0.205791, 0.37428) }, + Normal { normal: (0.921879, -0.0663697, 0.381752) }, + Normal { normal: (0.646802, 0.404096, 0.646802) }, + Normal { normal: (0.665655, 0.337351, 0.665655) }, + Normal { normal: (0.691923, 0.20612, 0.691923) }, + Normal { normal: (0.705542, -0.0664796, 0.705543) }, + Normal { normal: (0.349835, 0.403546, 0.845438) }, + Normal { normal: (0.360047, 0.336859, 0.869996) }, + Normal { normal: (0.37428, 0.205791, 0.904193) }, + Normal { normal: (0.381752, -0.0663697, 0.921879) }, + Normal { normal: (-0.0, 0.402725, 0.915321) }, + Normal { normal: (0.0, 0.336151, 0.941808) }, + Normal { normal: (-0.0, 0.205342, 0.97869) }, + Normal { normal: (-0.0, -0.0662397, 0.997804) }, + Normal { normal: (-0.349835, 0.403546, 0.845438) }, + Normal { normal: (-0.360047, 0.336859, 0.869996) }, + Normal { normal: (-0.37428, 0.205791, 0.904193) }, + Normal { normal: (-0.381752, -0.0663697, 0.921879) }, + Normal { normal: (-0.646802, 0.404096, 0.646802) }, + Normal { normal: (-0.665655, 0.337351, 0.665655) }, + Normal { normal: (-0.691923, 0.20612, 0.691923) }, + Normal { normal: (-0.705543, -0.0664796, 0.705543) }, + Normal { normal: (-0.845438, 0.403546, 0.349835) }, + Normal { normal: (-0.869996, 0.336859, 0.360047) }, + Normal { normal: (-0.904193, 0.205791, 0.37428) }, + Normal { normal: (-0.921879, -0.0663697, 0.381752) }, + Normal { normal: (-0.915321, 0.402725, -0.0) }, + Normal { normal: (-0.941808, 0.336151, -0.0) }, + Normal { normal: (-0.97869, 0.205342, -0.0) }, + Normal { normal: (-0.997804, -0.0662397, -0.0) }, + Normal { normal: (-0.845438, 0.403546, -0.349835) }, + Normal { normal: (-0.869996, 0.336859, -0.360047) }, + Normal { normal: (-0.904193, 0.205791, -0.37428) }, + Normal { normal: (-0.921879, -0.0663697, -0.381752) }, + Normal { normal: (-0.646802, 0.404096, -0.646802) }, + Normal { normal: (-0.665655, 0.337351, -0.665655) }, + Normal { normal: (-0.691923, 0.20612, -0.691923) }, + Normal { normal: (-0.705542, -0.0664796, -0.705543) }, + Normal { normal: (-0.349835, 0.403546, -0.845438) }, + Normal { normal: (-0.360047, 0.336859, -0.869996) }, + Normal { normal: (-0.37428, 0.205791, -0.904193) }, + Normal { normal: (-0.381752, -0.0663697, -0.921879) }, + Normal { normal: (0.0, 0.402725, -0.915321) }, + Normal { normal: (-0.0, 0.336151, -0.941808) }, + Normal { normal: (0.0, 0.205342, -0.97869) }, + Normal { normal: (0.0, -0.0662397, -0.997804) }, + Normal { normal: (0.349835, 0.403546, -0.845438) }, + Normal { normal: (0.360047, 0.336859, -0.869996) }, + Normal { normal: (0.37428, 0.205791, -0.904193) }, + Normal { normal: (0.381752, -0.0663697, -0.921879) }, + Normal { normal: (0.646802, 0.404096, -0.646802) }, + Normal { normal: (0.665655, 0.337351, -0.665655) }, + Normal { normal: (0.691923, 0.20612, -0.691923) }, + Normal { normal: (0.705543, -0.0664796, -0.705542) }, + Normal { normal: (0.845438, 0.403546, -0.349835) }, + Normal { normal: (0.869996, 0.336859, -0.360047) }, + Normal { normal: (0.904193, 0.205791, -0.37428) }, + Normal { normal: (0.921879, -0.0663697, -0.381752) }, + Normal { normal: (0.900182, -0.435513, -0.0) }, + Normal { normal: (0.729611, -0.683863, -0.0) }, + Normal { normal: (0.693951, -0.720022, -0.0) }, + Normal { normal: (0.79395, -0.607984, 0.0) }, + Normal { normal: (0.831437, -0.43618, 0.344179) }, + Normal { normal: (0.673512, -0.684665, 0.278594) }, + Normal { normal: (0.640399, -0.720924, 0.264874) }, + Normal { normal: (0.732949, -0.608996, 0.303166) }, + Normal { normal: (0.636092, -0.436777, 0.636092) }, + Normal { normal: (0.514965, -0.685289, 0.514965) }, + Normal { normal: (0.489651, -0.721446, 0.489651) }, + Normal { normal: (0.560555, -0.609554, 0.560555) }, + Normal { normal: (0.344179, -0.43618, 0.831437) }, + Normal { normal: (0.278594, -0.684665, 0.673512) }, + Normal { normal: (0.264874, -0.720924, 0.640399) }, + Normal { normal: (0.303166, -0.608996, 0.732949) }, + Normal { normal: (0.0, -0.435513, 0.900182) }, + Normal { normal: (-0.0, -0.683863, 0.729611) }, + Normal { normal: (0.0, -0.720022, 0.693951) }, + Normal { normal: (-0.0, -0.607984, 0.79395) }, + Normal { normal: (-0.344179, -0.43618, 0.831437) }, + Normal { normal: (-0.278594, -0.684665, 0.673512) }, + Normal { normal: (-0.264874, -0.720924, 0.640399) }, + Normal { normal: (-0.303166, -0.608996, 0.732949) }, + Normal { normal: (-0.636092, -0.436777, 0.636092) }, + Normal { normal: (-0.514965, -0.685289, 0.514965) }, + Normal { normal: (-0.489651, -0.721446, 0.489651) }, + Normal { normal: (-0.560555, -0.609554, 0.560555) }, + Normal { normal: (-0.831437, -0.43618, 0.344179) }, + Normal { normal: (-0.673512, -0.684665, 0.278595) }, + Normal { normal: (-0.640399, -0.720924, 0.264874) }, + Normal { normal: (-0.732949, -0.608996, 0.303166) }, + Normal { normal: (-0.900182, -0.435513, -0.0) }, + Normal { normal: (-0.729611, -0.683863, -0.0) }, + Normal { normal: (-0.693951, -0.720022, 0.0) }, + Normal { normal: (-0.79395, -0.607983, -0.0) }, + Normal { normal: (-0.831437, -0.43618, -0.344179) }, + Normal { normal: (-0.673512, -0.684665, -0.278594) }, + Normal { normal: (-0.640399, -0.720924, -0.264874) }, + Normal { normal: (-0.732949, -0.608996, -0.303166) }, + Normal { normal: (-0.636092, -0.436777, -0.636092) }, + Normal { normal: (-0.514965, -0.685289, -0.514965) }, + Normal { normal: (-0.489651, -0.721446, -0.489651) }, + Normal { normal: (-0.560555, -0.609554, -0.560555) }, + Normal { normal: (-0.344179, -0.43618, -0.831437) }, + Normal { normal: (-0.278594, -0.684665, -0.673512) }, + Normal { normal: (-0.264874, -0.720924, -0.640399) }, + Normal { normal: (-0.303166, -0.608996, -0.732949) }, + Normal { normal: (-0.0, -0.435513, -0.900182) }, + Normal { normal: (0.0, -0.683863, -0.729611) }, + Normal { normal: (-0.0, -0.720022, -0.693951) }, + Normal { normal: (0.0, -0.607984, -0.79395) }, + Normal { normal: (0.344179, -0.43618, -0.831437) }, + Normal { normal: (0.278594, -0.684665, -0.673512) }, + Normal { normal: (0.264874, -0.720924, -0.640399) }, + Normal { normal: (0.303167, -0.608996, -0.732949) }, + Normal { normal: (0.636092, -0.436777, -0.636092) }, + Normal { normal: (0.514965, -0.685289, -0.514965) }, + Normal { normal: (0.489651, -0.721446, -0.489651) }, + Normal { normal: (0.560555, -0.609554, -0.560555) }, + Normal { normal: (0.831437, -0.43618, -0.344179) }, + Normal { normal: (0.673512, -0.684665, -0.278595) }, + Normal { normal: (0.640399, -0.720924, -0.264874) }, + Normal { normal: (0.732949, -0.608996, -0.303166) }, + Normal { normal: (0.62386, -0.781536, 0.0) }, + Normal { normal: (0.177291, -0.984159, -0.0) }, + Normal { normal: (0.0492072, -0.998789, 0.0) }, + Normal { normal: (0.0, -1.0, -0.0) }, + Normal { normal: (0.576229, -0.781801, 0.238217) }, + Normal { normal: (0.163629, -0.984208, 0.0675273) }, + Normal { normal: (0.0454217, -0.998792, 0.0187357) }, + Normal { normal: (0.440416, -0.782348, 0.440416) }, + Normal { normal: (0.124903, -0.984276, 0.124903) }, + Normal { normal: (0.0346621, -0.998798, 0.0346621) }, + Normal { normal: (0.238217, -0.781801, 0.576229) }, + Normal { normal: (0.0675273, -0.984208, 0.163629) }, + Normal { normal: (0.0187357, -0.998792, 0.0454217) }, + Normal { normal: (-0.0, -0.781536, 0.62386) }, + Normal { normal: (0.0, -0.984159, 0.177291) }, + Normal { normal: (-0.0, -0.998789, 0.0492072) }, + Normal { normal: (-0.238216, -0.781801, 0.576229) }, + Normal { normal: (-0.0675273, -0.984208, 0.163629) }, + Normal { normal: (-0.0187357, -0.998792, 0.0454217) }, + Normal { normal: (-0.440416, -0.782348, 0.440416) }, + Normal { normal: (-0.124903, -0.984276, 0.124903) }, + Normal { normal: (-0.0346621, -0.998798, 0.0346621) }, + Normal { normal: (-0.576229, -0.781801, 0.238217) }, + Normal { normal: (-0.163629, -0.984208, 0.0675273) }, + Normal { normal: (-0.0454217, -0.998792, 0.0187357) }, + Normal { normal: (-0.62386, -0.781536, -0.0) }, + Normal { normal: (-0.177291, -0.984159, 0.0) }, + Normal { normal: (-0.0492072, -0.998789, -0.0) }, + Normal { normal: (-0.576229, -0.781801, -0.238217) }, + Normal { normal: (-0.163629, -0.984208, -0.0675273) }, + Normal { normal: (-0.0454217, -0.998792, -0.0187357) }, + Normal { normal: (-0.440416, -0.782348, -0.440416) }, + Normal { normal: (-0.124903, -0.984276, -0.124903) }, + Normal { normal: (-0.0346621, -0.998798, -0.0346621) }, + Normal { normal: (-0.238217, -0.781801, -0.576229) }, + Normal { normal: (-0.0675273, -0.984208, -0.163629) }, + Normal { normal: (-0.0187357, -0.998792, -0.0454217) }, + Normal { normal: (0.0, -0.781536, -0.62386) }, + Normal { normal: (-0.0, -0.984159, -0.177291) }, + Normal { normal: (0.0, -0.998789, -0.0492072) }, + Normal { normal: (0.238217, -0.781801, -0.576229) }, + Normal { normal: (0.0675273, -0.984208, -0.163629) }, + Normal { normal: (0.0187357, -0.998792, -0.0454217) }, + Normal { normal: (0.440416, -0.782348, -0.440416) }, + Normal { normal: (0.124903, -0.984276, -0.124903) }, + Normal { normal: (0.0346621, -0.998798, -0.0346621) }, + Normal { normal: (0.576229, -0.781801, -0.238217) }, + Normal { normal: (0.163629, -0.984208, -0.0675273) }, + Normal { normal: (0.0454217, -0.998792, -0.0187357) }, + Normal { normal: (0.00778619, -0.99997, -0.000215809) }, + Normal { normal: (0.0391385, -0.999233, -0.000988567) }, + Normal { normal: (0.179511, -0.983746, -0.00436856) }, + Normal { normal: (0.6123, -0.790556, -0.0104598) }, + Normal { normal: (0.986152, -0.165707, -0.00666949) }, + Normal { normal: (0.00703893, -0.812495, 0.582926) }, + Normal { normal: (0.0361273, -0.837257, 0.545614) }, + Normal { normal: (0.161845, -0.810421, 0.563048) }, + Normal { normal: (0.482365, -0.595148, 0.642746) }, + Normal { normal: (0.73872, -0.114593, 0.664199) }, + Normal { normal: (-0.00190867, 0.162121, 0.986769) }, + Normal { normal: (0.0027616, 0.0171073, 0.99985) }, + Normal { normal: (0.0105326, 0.0733989, 0.997247) }, + Normal { normal: (-0.0660406, 0.130069, 0.989303) }, + Normal { normal: (-0.0944272, 0.0165946, 0.995393) }, + Normal { normal: (-0.009203, 0.871509, 0.490293) }, + Normal { normal: (-0.0486064, 0.840609, 0.539457) }, + Normal { normal: (-0.223298, 0.802881, 0.552739) }, + Normal { normal: (-0.596365, 0.559971, 0.575135) }, + Normal { normal: (-0.803337, 0.0682361, 0.591602) }, + Normal { normal: (-0.0105609, 0.999944, 0.000103364) }, + Normal { normal: (-0.0587986, 0.99827, 0.000709759) }, + Normal { normal: (-0.28071, 0.959787, 0.00326876) }, + Normal { normal: (-0.749723, 0.661738, 0.0042684) }, + Normal { normal: (-0.997351, 0.0727144, 0.00205923) }, + Normal { normal: (-0.00879197, 0.871493, -0.49033) }, + Normal { normal: (-0.0464937, 0.841178, -0.538756) }, + Normal { normal: (-0.217909, 0.806807, -0.549161) }, + Normal { normal: (-0.597291, 0.560026, -0.574121) }, + Normal { normal: (-0.804, 0.0629127, -0.591291) }, + Normal { normal: (-0.00180555, 0.161691, -0.98684) }, + Normal { normal: (0.00203087, 0.014555, -0.999892) }, + Normal { normal: (0.00921499, 0.0600698, -0.998152) }, + Normal { normal: (-0.0593333, 0.113865, -0.991723) }, + Normal { normal: (-0.0868992, 0.0122903, -0.996141) }, + Normal { normal: (0.00641779, -0.812379, -0.583094) }, + Normal { normal: (0.0337833, -0.837512, -0.545373) }, + Normal { normal: (0.157112, -0.811947, -0.56219) }, + Normal { normal: (0.484407, -0.589365, -0.646528) }, + Normal { normal: (0.73887, -0.10132, -0.666187) }, + Normal { normal: (0.946512, 0.32265, -0.0033571) }, + Normal { normal: (0.82583, 0.56387, -0.00745213) }, + Normal { normal: (0.650011, 0.759893, -0.00693681) }, + Normal { normal: (0.532429, 0.846458, -0.00524544) }, + Normal { normal: (0.725608, 0.259351, 0.637362) }, + Normal { normal: (0.645945, 0.461988, 0.607719) }, + Normal { normal: (0.531614, 0.63666, 0.558615) }, + Normal { normal: (0.424964, 0.681717, 0.59554) }, + Normal { normal: (-0.0495616, -0.019755, 0.998576) }, + Normal { normal: (-0.0378162, -0.0356243, 0.99865) }, + Normal { normal: (-0.0379139, -0.0365122, 0.998614) }, + Normal { normal: (-0.168854, -0.297946, 0.93953) }, + Normal { normal: (-0.742342, -0.299166, 0.599523) }, + Normal { normal: (-0.619602, -0.529406, 0.579503) }, + Normal { normal: (-0.483708, -0.685761, 0.543837) }, + Normal { normal: (-0.445293, -0.794355, 0.413176) }, + Normal { normal: (-0.926513, -0.376257, 0.00199587) }, + Normal { normal: (-0.75392, -0.656952, 0.00431723) }, + Normal { normal: (-0.566224, -0.824244, 0.00346105) }, + Normal { normal: (-0.481804, -0.876277, 0.00185047) }, + Normal { normal: (-0.744675, -0.294424, -0.598977) }, + Normal { normal: (-0.621949, -0.528114, -0.578165) }, + Normal { normal: (-0.481171, -0.68834, -0.542828) }, + Normal { normal: (-0.438055, -0.797035, -0.415744) }, + Normal { normal: (-0.0443368, -0.0170558, -0.998871) }, + Normal { normal: (-0.0261761, -0.0281665, -0.99926) }, + Normal { normal: (-0.0252939, -0.0283323, -0.999278) }, + Normal { normal: (-0.157482, -0.289392, -0.944167) }, + Normal { normal: (0.728244, 0.25241, -0.637142) }, + Normal { normal: (0.647055, 0.459725, -0.608254) }, + Normal { normal: (0.522994, 0.640657, -0.562171) }, + Normal { normal: (0.409978, 0.682857, -0.604669) }, + Normal { normal: (-0.230787, 0.972982, -0.00652338) }, + Normal { normal: (-0.548936, 0.835863, -0.00151111) }, + Normal { normal: (-0.875671, 0.482807, 0.00989278) }, + Normal { normal: (-0.877554, 0.479097, 0.0190923) }, + Normal { normal: (-0.69619, 0.717439, 0.024497) }, + Normal { normal: (-0.152878, 0.687211, 0.71019) }, + Normal { normal: (-0.316721, 0.63775, 0.702113) }, + Normal { normal: (-0.601067, 0.471452, 0.64533) }, + Normal { normal: (-0.635889, 0.44609, 0.6298) }, + Normal { normal: (-0.435746, 0.601008, 0.670011) }, + Normal { normal: (0.111112, -0.0850694, 0.99016) }, + Normal { normal: (0.22331, 0.00654036, 0.974726) }, + Normal { normal: (0.190097, 0.154964, 0.969458) }, + Normal { normal: (0.00527077, 0.189482, 0.98187) }, + Normal { normal: (-0.0117518, 0.246688, 0.969024) }, + Normal { normal: (0.343906, -0.722796, 0.599412) }, + Normal { normal: (0.572489, -0.567656, 0.591627) }, + Normal { normal: (0.787436, -0.256459, 0.560512) }, + Normal { normal: (0.647097, -0.306374, 0.698141) }, + Normal { normal: (0.427528, -0.499343, 0.753576) }, + Normal { normal: (0.410926, -0.911668, 0.00128446) }, + Normal { normal: (0.67152, -0.740986, -0.000899122) }, + Normal { normal: (0.922026, -0.38706, -0.00725269) }, + Normal { normal: (0.84691, -0.531556, -0.0138542) }, + Normal { normal: (0.535925, -0.8442, -0.0105045) }, + Normal { normal: (0.341188, -0.722822, -0.600931) }, + Normal { normal: (0.578664, -0.561139, -0.591838) }, + Normal { normal: (0.784869, -0.25102, -0.566542) }, + Normal { normal: (0.642681, -0.302257, -0.70399) }, + Normal { normal: (0.418589, -0.500042, -0.758117) }, + Normal { normal: (0.115806, -0.0791394, -0.990114) }, + Normal { normal: (0.232811, 0.0125652, -0.972441) }, + Normal { normal: (0.206662, 0.153601, -0.96628) }, + Normal { normal: (0.0244996, 0.161443, -0.986578) }, + Normal { normal: (0.00338193, 0.211115, -0.977455) }, + Normal { normal: (-0.134912, 0.687491, -0.713551) }, + Normal { normal: (-0.31954, 0.633073, -0.705062) }, + Normal { normal: (-0.603902, 0.461442, -0.649903) }, + Normal { normal: (-0.631816, 0.437169, -0.640072) }, + Normal { normal: (-0.424306, 0.612706, -0.66675) }, + Normal { normal: (-0.4258, 0.904753, 0.0108049) }, + Normal { normal: (0.0220472, 0.999756, 0.00162273) }, + Normal { normal: (0.999599, 0.0258705, 0.0115556) }, + Normal { normal: (0.709585, -0.704553, 0.00967183) }, + Normal { normal: (-0.259858, 0.791936, 0.552549) }, + Normal { normal: (0.00953916, 0.99972, -0.0216718) }, + Normal { normal: (0.410156, 0.332912, -0.849083) }, + Normal { normal: (0.541523, -0.54862, -0.637) }, + Normal { normal: (0.0463104, 0.455224, 0.889172) }, + Normal { normal: (-0.0106883, 0.988794, 0.148901) }, + Normal { normal: (-0.0443756, 0.682947, -0.729118) }, + Normal { normal: (0.122825, 0.00923214, -0.992385) }, + Normal { normal: (0.481839, -0.180439, 0.85748) }, + Normal { normal: (0.455272, 0.736752, 0.499925) }, + Normal { normal: (-0.220542, 0.907193, -0.358276) }, + Normal { normal: (-0.23592, 0.657249, -0.715797) }, + Normal { normal: (0.728092, -0.685302, -0.0155853) }, + Normal { normal: (0.888739, 0.45811, -0.0166791) }, + Normal { normal: (-0.260097, 0.965582, 0.000800195) }, + Normal { normal: (-0.371612, 0.928378, -0.00441745) }, + Normal { normal: (0.480166, -0.17836, -0.858853) }, + Normal { normal: (0.488103, 0.716801, -0.497947) }, + Normal { normal: (-0.222004, 0.905399, 0.361893) }, + Normal { normal: (-0.235405, 0.66318, 0.710477) }, + Normal { normal: (0.0587203, 0.437704, -0.8972) }, + Normal { normal: (0.00132612, 0.986459, -0.164003) }, + Normal { normal: (-0.0441901, 0.681677, 0.730317) }, + Normal { normal: (0.138801, -0.0341896, 0.98973) }, + Normal { normal: (-0.25889, 0.797206, -0.54538) }, + Normal { normal: (0.0122703, 0.999739, 0.0192865) }, + Normal { normal: (0.39863, 0.35489, 0.845663) }, + Normal { normal: (0.537564, -0.5814, 0.610737) }, + Normal { normal: (-0.0, 1.0, 0.0) }, + Normal { normal: (0.82454, 0.565804, 0.0) }, + Normal { normal: (0.917701, -0.397272, 0.0) }, + Normal { normal: (0.935269, -0.353939, 0.000112842) }, + Normal { normal: (0.780712, 0.624891, 0.0) }, + Normal { normal: (0.762641, 0.565035, 0.314825) }, + Normal { normal: (0.847982, -0.397998, 0.350034) }, + Normal { normal: (0.864141, -0.355261, 0.356441) }, + Normal { normal: (0.720991, 0.625625, 0.297933) }, + Normal { normal: (0.583357, 0.565165, 0.583338) }, + Normal { normal: (0.648485, -0.398726, 0.648448) }, + Normal { normal: (0.660872, -0.355894, 0.660748) }, + Normal { normal: (0.551862, 0.62529, 0.55178) }, + Normal { normal: (0.314824, 0.565051, 0.762629) }, + Normal { normal: (0.350045, -0.397976, 0.847988) }, + Normal { normal: (0.356474, -0.3552, 0.864153) }, + Normal { normal: (0.297983, 0.625515, 0.721067) }, + Normal { normal: (-0.0, 0.565804, 0.82454) }, + Normal { normal: (-0.0, -0.397272, 0.917701) }, + Normal { normal: (-0.000112839, -0.353939, 0.935269) }, + Normal { normal: (-0.0, 0.624891, 0.780712) }, + Normal { normal: (-0.314825, 0.565035, 0.762641) }, + Normal { normal: (-0.350034, -0.397998, 0.847982) }, + Normal { normal: (-0.356441, -0.355261, 0.864141) }, + Normal { normal: (-0.297933, 0.625625, 0.720991) }, + Normal { normal: (-0.583338, 0.565165, 0.583357) }, + Normal { normal: (-0.648448, -0.398726, 0.648485) }, + Normal { normal: (-0.660748, -0.355894, 0.660872) }, + Normal { normal: (-0.55178, 0.62529, 0.551862) }, + Normal { normal: (-0.762629, 0.565051, 0.314824) }, + Normal { normal: (-0.847988, -0.397976, 0.350045) }, + Normal { normal: (-0.864153, -0.3552, 0.356474) }, + Normal { normal: (-0.721067, 0.625515, 0.297983) }, + Normal { normal: (-0.82454, 0.565804, -0.0) }, + Normal { normal: (-0.917701, -0.397272, -0.0) }, + Normal { normal: (-0.935269, -0.353939, -0.000112839) }, + Normal { normal: (-0.780712, 0.624891, -0.0) }, + Normal { normal: (-0.76264, 0.565035, -0.314825) }, + Normal { normal: (-0.847982, -0.397998, -0.350034) }, + Normal { normal: (-0.864141, -0.355261, -0.356441) }, + Normal { normal: (-0.720991, 0.625625, -0.297933) }, + Normal { normal: (-0.583357, 0.565165, -0.583338) }, + Normal { normal: (-0.648485, -0.398726, -0.648448) }, + Normal { normal: (-0.660872, -0.355894, -0.660748) }, + Normal { normal: (-0.551862, 0.62529, -0.55178) }, + Normal { normal: (-0.314824, 0.565051, -0.762629) }, + Normal { normal: (-0.350045, -0.397976, -0.847988) }, + Normal { normal: (-0.356474, -0.3552, -0.864153) }, + Normal { normal: (-0.297983, 0.625515, -0.721067) }, + Normal { normal: (0.0, 0.565804, -0.82454) }, + Normal { normal: (0.0, -0.397272, -0.917701) }, + Normal { normal: (0.000112839, -0.353939, -0.935269) }, + Normal { normal: (0.0, 0.624891, -0.780712) }, + Normal { normal: (0.314825, 0.565035, -0.762641) }, + Normal { normal: (0.350034, -0.397998, -0.847982) }, + Normal { normal: (0.356441, -0.355261, -0.864141) }, + Normal { normal: (0.297933, 0.625625, -0.720991) }, + Normal { normal: (0.583338, 0.565165, -0.583357) }, + Normal { normal: (0.648448, -0.398726, -0.648485) }, + Normal { normal: (0.660748, -0.355894, -0.660872) }, + Normal { normal: (0.55178, 0.62529, -0.551862) }, + Normal { normal: (0.762629, 0.565051, -0.314824) }, + Normal { normal: (0.847988, -0.397976, -0.350045) }, + Normal { normal: (0.864153, -0.3552, -0.356474) }, + Normal { normal: (0.721067, 0.625515, -0.297983) }, + Normal { normal: (0.236584, 0.971611, 0.0) }, + Normal { normal: (0.173084, 0.984907, -0.0) }, + Normal { normal: (0.379703, 0.925108, 0.0) }, + Normal { normal: (0.526673, 0.850068, 0.0) }, + Normal { normal: (0.217978, 0.971775, 0.0902162) }, + Normal { normal: (0.15959, 0.984977, 0.0659615) }, + Normal { normal: (0.350498, 0.925312, 0.14474) }, + Normal { normal: (0.48559, 0.850653, 0.201474) }, + Normal { normal: (0.166631, 0.971838, 0.166631) }, + Normal { normal: (0.121908, 0.985026, 0.121908) }, + Normal { normal: (0.267668, 0.925585, 0.267668) }, + Normal { normal: (0.371315, 0.851029, 0.371315) }, + Normal { normal: (0.0902162, 0.971775, 0.217978) }, + Normal { normal: (0.0659615, 0.984977, 0.15959) }, + Normal { normal: (0.14474, 0.925312, 0.350498) }, + Normal { normal: (0.201474, 0.850653, 0.48559) }, + Normal { normal: (-0.0, 0.971611, 0.236584) }, + Normal { normal: (0.0, 0.984907, 0.173084) }, + Normal { normal: (0.0, 0.925108, 0.379703) }, + Normal { normal: (0.0, 0.850068, 0.526673) }, + Normal { normal: (-0.0902162, 0.971775, 0.217978) }, + Normal { normal: (-0.0659615, 0.984977, 0.15959) }, + Normal { normal: (-0.14474, 0.925312, 0.350498) }, + Normal { normal: (-0.201474, 0.850653, 0.48559) }, + Normal { normal: (-0.166631, 0.971838, 0.166631) }, + Normal { normal: (-0.121908, 0.985026, 0.121908) }, + Normal { normal: (-0.267668, 0.925585, 0.267668) }, + Normal { normal: (-0.371315, 0.851029, 0.371315) }, + Normal { normal: (-0.217978, 0.971775, 0.0902162) }, + Normal { normal: (-0.15959, 0.984977, 0.0659615) }, + Normal { normal: (-0.350498, 0.925312, 0.14474) }, + Normal { normal: (-0.48559, 0.850653, 0.201474) }, + Normal { normal: (-0.236583, 0.971611, -0.0) }, + Normal { normal: (-0.173084, 0.984907, 0.0) }, + Normal { normal: (-0.379703, 0.925108, -0.0) }, + Normal { normal: (-0.526673, 0.850068, 0.0) }, + Normal { normal: (-0.217978, 0.971775, -0.0902162) }, + Normal { normal: (-0.15959, 0.984977, -0.0659615) }, + Normal { normal: (-0.350498, 0.925312, -0.14474) }, + Normal { normal: (-0.48559, 0.850653, -0.201474) }, + Normal { normal: (-0.166631, 0.971838, -0.166631) }, + Normal { normal: (-0.121908, 0.985026, -0.121908) }, + Normal { normal: (-0.267668, 0.925585, -0.267668) }, + Normal { normal: (-0.371315, 0.851029, -0.371315) }, + Normal { normal: (-0.0902162, 0.971775, -0.217978) }, + Normal { normal: (-0.0659615, 0.984977, -0.15959) }, + Normal { normal: (-0.14474, 0.925312, -0.350498) }, + Normal { normal: (-0.201474, 0.850653, -0.485589) }, + Normal { normal: (0.0, 0.971611, -0.236584) }, + Normal { normal: (-0.0, 0.984907, -0.173084) }, + Normal { normal: (-0.0, 0.925108, -0.379703) }, + Normal { normal: (-0.0, 0.850068, -0.526673) }, + Normal { normal: (0.0902162, 0.971775, -0.217978) }, + Normal { normal: (0.0659615, 0.984977, -0.15959) }, + Normal { normal: (0.14474, 0.925312, -0.350498) }, + Normal { normal: (0.201474, 0.850653, -0.48559) }, + Normal { normal: (0.166631, 0.971838, -0.166631) }, + Normal { normal: (0.121908, 0.985026, -0.121908) }, + Normal { normal: (0.267668, 0.925585, -0.267668) }, + Normal { normal: (0.371315, 0.851029, -0.371315) }, + Normal { normal: (0.217978, 0.971775, -0.0902162) }, + Normal { normal: (0.15959, 0.984977, -0.0659615) }, + Normal { normal: (0.350498, 0.925312, -0.14474) }, + Normal { normal: (0.48559, 0.850653, -0.201474) }, +]; + +pub const INDICES: [u16; 3072] = [ + 7, 6, 1, + 1, 2, 7, + 8, 7, 2, + 2, 3, 8, + 9, 8, 3, + 3, 4, 9, + 10, 9, 4, + 4, 5, 10, + 12, 11, 6, + 6, 7, 12, + 13, 12, 7, + 7, 8, 13, + 14, 13, 8, + 8, 9, 14, + 15, 14, 9, + 9, 10, 15, + 17, 16, 11, + 11, 12, 17, + 18, 17, 12, + 12, 13, 18, + 19, 18, 13, + 13, 14, 19, + 20, 19, 14, + 14, 15, 20, + 22, 21, 16, + 16, 17, 22, + 23, 22, 17, + 17, 18, 23, + 24, 23, 18, + 18, 19, 24, + 25, 24, 19, + 19, 20, 25, + 27, 26, 21, + 21, 22, 27, + 28, 27, 22, + 22, 23, 28, + 29, 28, 23, + 23, 24, 29, + 30, 29, 24, + 24, 25, 30, + 32, 31, 26, + 26, 27, 32, + 33, 32, 27, + 27, 28, 33, + 34, 33, 28, + 28, 29, 34, + 35, 34, 29, + 29, 30, 35, + 37, 36, 31, + 31, 32, 37, + 38, 37, 32, + 32, 33, 38, + 39, 38, 33, + 33, 34, 39, + 40, 39, 34, + 34, 35, 40, + 42, 41, 36, + 36, 37, 42, + 43, 42, 37, + 37, 38, 43, + 44, 43, 38, + 38, 39, 44, + 45, 44, 39, + 39, 40, 45, + 47, 46, 41, + 41, 42, 47, + 48, 47, 42, + 42, 43, 48, + 49, 48, 43, + 43, 44, 49, + 50, 49, 44, + 44, 45, 50, + 52, 51, 46, + 46, 47, 52, + 53, 52, 47, + 47, 48, 53, + 54, 53, 48, + 48, 49, 54, + 55, 54, 49, + 49, 50, 55, + 57, 56, 51, + 51, 52, 57, + 58, 57, 52, + 52, 53, 58, + 59, 58, 53, + 53, 54, 59, + 60, 59, 54, + 54, 55, 60, + 62, 61, 56, + 56, 57, 62, + 63, 62, 57, + 57, 58, 63, + 64, 63, 58, + 58, 59, 64, + 65, 64, 59, + 59, 60, 65, + 67, 66, 61, + 61, 62, 67, + 68, 67, 62, + 62, 63, 68, + 69, 68, 63, + 63, 64, 69, + 70, 69, 64, + 64, 65, 70, + 72, 71, 66, + 66, 67, 72, + 73, 72, 67, + 67, 68, 73, + 74, 73, 68, + 68, 69, 74, + 75, 74, 69, + 69, 70, 75, + 77, 76, 71, + 71, 72, 77, + 78, 77, 72, + 72, 73, 78, + 79, 78, 73, + 73, 74, 79, + 80, 79, 74, + 74, 75, 80, + 2, 1, 76, + 76, 77, 2, + 3, 2, 77, + 77, 78, 3, + 4, 3, 78, + 78, 79, 4, + 5, 4, 79, + 79, 80, 5, + 85, 10, 5, + 5, 81, 85, + 86, 85, 81, + 81, 82, 86, + 87, 86, 82, + 82, 83, 87, + 88, 87, 83, + 83, 84, 88, + 89, 15, 10, + 10, 85, 89, + 90, 89, 85, + 85, 86, 90, + 91, 90, 86, + 86, 87, 91, + 92, 91, 87, + 87, 88, 92, + 93, 20, 15, + 15, 89, 93, + 94, 93, 89, + 89, 90, 94, + 95, 94, 90, + 90, 91, 95, + 96, 95, 91, + 91, 92, 96, + 97, 25, 20, + 20, 93, 97, + 98, 97, 93, + 93, 94, 98, + 99, 98, 94, + 94, 95, 99, + 100, 99, 95, + 95, 96, 100, + 101, 30, 25, + 25, 97, 101, + 102, 101, 97, + 97, 98, 102, + 103, 102, 98, + 98, 99, 103, + 104, 103, 99, + 99, 100, 104, + 105, 35, 30, + 30, 101, 105, + 106, 105, 101, + 101, 102, 106, + 107, 106, 102, + 102, 103, 107, + 108, 107, 103, + 103, 104, 108, + 109, 40, 35, + 35, 105, 109, + 110, 109, 105, + 105, 106, 110, + 111, 110, 106, + 106, 107, 111, + 112, 111, 107, + 107, 108, 112, + 113, 45, 40, + 40, 109, 113, + 114, 113, 109, + 109, 110, 114, + 115, 114, 110, + 110, 111, 115, + 116, 115, 111, + 111, 112, 116, + 117, 50, 45, + 45, 113, 117, + 118, 117, 113, + 113, 114, 118, + 119, 118, 114, + 114, 115, 119, + 120, 119, 115, + 115, 116, 120, + 121, 55, 50, + 50, 117, 121, + 122, 121, 117, + 117, 118, 122, + 123, 122, 118, + 118, 119, 123, + 124, 123, 119, + 119, 120, 124, + 125, 60, 55, + 55, 121, 125, + 126, 125, 121, + 121, 122, 126, + 127, 126, 122, + 122, 123, 127, + 128, 127, 123, + 123, 124, 128, + 129, 65, 60, + 60, 125, 129, + 130, 129, 125, + 125, 126, 130, + 131, 130, 126, + 126, 127, 131, + 132, 131, 127, + 127, 128, 132, + 133, 70, 65, + 65, 129, 133, + 134, 133, 129, + 129, 130, 134, + 135, 134, 130, + 130, 131, 135, + 136, 135, 131, + 131, 132, 136, + 137, 75, 70, + 70, 133, 137, + 138, 137, 133, + 133, 134, 138, + 139, 138, 134, + 134, 135, 139, + 140, 139, 135, + 135, 136, 140, + 141, 80, 75, + 75, 137, 141, + 142, 141, 137, + 137, 138, 142, + 143, 142, 138, + 138, 139, 143, + 144, 143, 139, + 139, 140, 144, + 81, 5, 80, + 80, 141, 81, + 82, 81, 141, + 141, 142, 82, + 83, 82, 142, + 142, 143, 83, + 84, 83, 143, + 143, 144, 84, + 149, 88, 84, + 84, 145, 149, + 150, 149, 145, + 145, 146, 150, + 151, 150, 146, + 146, 147, 151, + 152, 151, 147, + 147, 148, 152, + 153, 92, 88, + 88, 149, 153, + 154, 153, 149, + 149, 150, 154, + 155, 154, 150, + 150, 151, 155, + 156, 155, 151, + 151, 152, 156, + 157, 96, 92, + 92, 153, 157, + 158, 157, 153, + 153, 154, 158, + 159, 158, 154, + 154, 155, 159, + 160, 159, 155, + 155, 156, 160, + 161, 100, 96, + 96, 157, 161, + 162, 161, 157, + 157, 158, 162, + 163, 162, 158, + 158, 159, 163, + 164, 163, 159, + 159, 160, 164, + 165, 104, 100, + 100, 161, 165, + 166, 165, 161, + 161, 162, 166, + 167, 166, 162, + 162, 163, 167, + 168, 167, 163, + 163, 164, 168, + 169, 108, 104, + 104, 165, 169, + 170, 169, 165, + 165, 166, 170, + 171, 170, 166, + 166, 167, 171, + 172, 171, 167, + 167, 168, 172, + 173, 112, 108, + 108, 169, 173, + 174, 173, 169, + 169, 170, 174, + 175, 174, 170, + 170, 171, 175, + 176, 175, 171, + 171, 172, 176, + 177, 116, 112, + 112, 173, 177, + 178, 177, 173, + 173, 174, 178, + 179, 178, 174, + 174, 175, 179, + 180, 179, 175, + 175, 176, 180, + 181, 120, 116, + 116, 177, 181, + 182, 181, 177, + 177, 178, 182, + 183, 182, 178, + 178, 179, 183, + 184, 183, 179, + 179, 180, 184, + 185, 124, 120, + 120, 181, 185, + 186, 185, 181, + 181, 182, 186, + 187, 186, 182, + 182, 183, 187, + 188, 187, 183, + 183, 184, 188, + 189, 128, 124, + 124, 185, 189, + 190, 189, 185, + 185, 186, 190, + 191, 190, 186, + 186, 187, 191, + 192, 191, 187, + 187, 188, 192, + 193, 132, 128, + 128, 189, 193, + 194, 193, 189, + 189, 190, 194, + 195, 194, 190, + 190, 191, 195, + 196, 195, 191, + 191, 192, 196, + 197, 136, 132, + 132, 193, 197, + 198, 197, 193, + 193, 194, 198, + 199, 198, 194, + 194, 195, 199, + 200, 199, 195, + 195, 196, 200, + 201, 140, 136, + 136, 197, 201, + 202, 201, 197, + 197, 198, 202, + 203, 202, 198, + 198, 199, 203, + 204, 203, 199, + 199, 200, 204, + 205, 144, 140, + 140, 201, 205, + 206, 205, 201, + 201, 202, 206, + 207, 206, 202, + 202, 203, 207, + 208, 207, 203, + 203, 204, 208, + 145, 84, 144, + 144, 205, 145, + 146, 145, 205, + 205, 206, 146, + 147, 146, 206, + 206, 207, 147, + 148, 147, 207, + 207, 208, 148, + 213, 152, 148, + 148, 209, 213, + 214, 213, 209, + 209, 210, 214, + 215, 214, 210, + 210, 211, 215, + 212, 215, 211, + 211, 212, 212, + 216, 156, 152, + 152, 213, 216, + 217, 216, 213, + 213, 214, 217, + 218, 217, 214, + 214, 215, 218, + 212, 218, 215, + 215, 212, 212, + 219, 160, 156, + 156, 216, 219, + 220, 219, 216, + 216, 217, 220, + 221, 220, 217, + 217, 218, 221, + 212, 221, 218, + 218, 212, 212, + 222, 164, 160, + 160, 219, 222, + 223, 222, 219, + 219, 220, 223, + 224, 223, 220, + 220, 221, 224, + 212, 224, 221, + 221, 212, 212, + 225, 168, 164, + 164, 222, 225, + 226, 225, 222, + 222, 223, 226, + 227, 226, 223, + 223, 224, 227, + 212, 227, 224, + 224, 212, 212, + 228, 172, 168, + 168, 225, 228, + 229, 228, 225, + 225, 226, 229, + 230, 229, 226, + 226, 227, 230, + 212, 230, 227, + 227, 212, 212, + 231, 176, 172, + 172, 228, 231, + 232, 231, 228, + 228, 229, 232, + 233, 232, 229, + 229, 230, 233, + 212, 233, 230, + 230, 212, 212, + 234, 180, 176, + 176, 231, 234, + 235, 234, 231, + 231, 232, 235, + 236, 235, 232, + 232, 233, 236, + 212, 236, 233, + 233, 212, 212, + 237, 184, 180, + 180, 234, 237, + 238, 237, 234, + 234, 235, 238, + 239, 238, 235, + 235, 236, 239, + 212, 239, 236, + 236, 212, 212, + 240, 188, 184, + 184, 237, 240, + 241, 240, 237, + 237, 238, 241, + 242, 241, 238, + 238, 239, 242, + 212, 242, 239, + 239, 212, 212, + 243, 192, 188, + 188, 240, 243, + 244, 243, 240, + 240, 241, 244, + 245, 244, 241, + 241, 242, 245, + 212, 245, 242, + 242, 212, 212, + 246, 196, 192, + 192, 243, 246, + 247, 246, 243, + 243, 244, 247, + 248, 247, 244, + 244, 245, 248, + 212, 248, 245, + 245, 212, 212, + 249, 200, 196, + 196, 246, 249, + 250, 249, 246, + 246, 247, 250, + 251, 250, 247, + 247, 248, 251, + 212, 251, 248, + 248, 212, 212, + 252, 204, 200, + 200, 249, 252, + 253, 252, 249, + 249, 250, 253, + 254, 253, 250, + 250, 251, 254, + 212, 254, 251, + 251, 212, 212, + 255, 208, 204, + 204, 252, 255, + 256, 255, 252, + 252, 253, 256, + 257, 256, 253, + 253, 254, 257, + 212, 257, 254, + 254, 212, 212, + 209, 148, 208, + 208, 255, 209, + 210, 209, 255, + 255, 256, 210, + 211, 210, 256, + 256, 257, 211, + 212, 211, 257, + 257, 212, 212, + 264, 263, 258, + 258, 259, 264, + 265, 264, 259, + 259, 260, 265, + 266, 265, 260, + 260, 261, 266, + 267, 266, 261, + 261, 262, 267, + 269, 268, 263, + 263, 264, 269, + 270, 269, 264, + 264, 265, 270, + 271, 270, 265, + 265, 266, 271, + 272, 271, 266, + 266, 267, 272, + 274, 273, 268, + 268, 269, 274, + 275, 274, 269, + 269, 270, 275, + 276, 275, 270, + 270, 271, 276, + 277, 276, 271, + 271, 272, 277, + 279, 278, 273, + 273, 274, 279, + 280, 279, 274, + 274, 275, 280, + 281, 280, 275, + 275, 276, 281, + 282, 281, 276, + 276, 277, 282, + 284, 283, 278, + 278, 279, 284, + 285, 284, 279, + 279, 280, 285, + 286, 285, 280, + 280, 281, 286, + 287, 286, 281, + 281, 282, 287, + 289, 288, 283, + 283, 284, 289, + 290, 289, 284, + 284, 285, 290, + 291, 290, 285, + 285, 286, 291, + 292, 291, 286, + 286, 287, 292, + 294, 293, 288, + 288, 289, 294, + 295, 294, 289, + 289, 290, 295, + 296, 295, 290, + 290, 291, 296, + 297, 296, 291, + 291, 292, 297, + 259, 258, 293, + 293, 294, 259, + 260, 259, 294, + 294, 295, 260, + 261, 260, 295, + 295, 296, 261, + 262, 261, 296, + 296, 297, 262, + 302, 267, 262, + 262, 298, 302, + 303, 302, 298, + 298, 299, 303, + 304, 303, 299, + 299, 300, 304, + 305, 304, 300, + 300, 301, 305, + 306, 272, 267, + 267, 302, 306, + 307, 306, 302, + 302, 303, 307, + 308, 307, 303, + 303, 304, 308, + 309, 308, 304, + 304, 305, 309, + 310, 277, 272, + 272, 306, 310, + 311, 310, 306, + 306, 307, 311, + 312, 311, 307, + 307, 308, 312, + 313, 312, 308, + 308, 309, 313, + 314, 282, 277, + 277, 310, 314, + 315, 314, 310, + 310, 311, 315, + 316, 315, 311, + 311, 312, 316, + 317, 316, 312, + 312, 313, 317, + 318, 287, 282, + 282, 314, 318, + 319, 318, 314, + 314, 315, 319, + 320, 319, 315, + 315, 316, 320, + 321, 320, 316, + 316, 317, 321, + 322, 292, 287, + 287, 318, 322, + 323, 322, 318, + 318, 319, 323, + 324, 323, 319, + 319, 320, 324, + 325, 324, 320, + 320, 321, 325, + 326, 297, 292, + 292, 322, 326, + 327, 326, 322, + 322, 323, 327, + 328, 327, 323, + 323, 324, 328, + 329, 328, 324, + 324, 325, 329, + 298, 262, 297, + 297, 326, 298, + 299, 298, 326, + 326, 327, 299, + 300, 299, 327, + 327, 328, 300, + 301, 300, 328, + 328, 329, 301, + 336, 335, 330, + 330, 331, 336, + 337, 336, 331, + 331, 332, 337, + 338, 337, 332, + 332, 333, 338, + 339, 338, 333, + 333, 334, 339, + 341, 340, 335, + 335, 336, 341, + 342, 341, 336, + 336, 337, 342, + 343, 342, 337, + 337, 338, 343, + 344, 343, 338, + 338, 339, 344, + 346, 345, 340, + 340, 341, 346, + 347, 346, 341, + 341, 342, 347, + 348, 347, 342, + 342, 343, 348, + 349, 348, 343, + 343, 344, 349, + 351, 350, 345, + 345, 346, 351, + 352, 351, 346, + 346, 347, 352, + 353, 352, 347, + 347, 348, 353, + 354, 353, 348, + 348, 349, 354, + 356, 355, 350, + 350, 351, 356, + 357, 356, 351, + 351, 352, 357, + 358, 357, 352, + 352, 353, 358, + 359, 358, 353, + 353, 354, 359, + 361, 360, 355, + 355, 356, 361, + 362, 361, 356, + 356, 357, 362, + 363, 362, 357, + 357, 358, 363, + 364, 363, 358, + 358, 359, 364, + 366, 365, 360, + 360, 361, 366, + 367, 366, 361, + 361, 362, 367, + 368, 367, 362, + 362, 363, 368, + 369, 368, 363, + 363, 364, 369, + 331, 330, 365, + 365, 366, 331, + 332, 331, 366, + 366, 367, 332, + 333, 332, 367, + 367, 368, 333, + 334, 333, 368, + 368, 369, 334, + 374, 339, 334, + 334, 370, 374, + 375, 374, 370, + 370, 371, 375, + 376, 375, 371, + 371, 372, 376, + 377, 376, 372, + 372, 373, 377, + 378, 344, 339, + 339, 374, 378, + 379, 378, 374, + 374, 375, 379, + 380, 379, 375, + 375, 376, 380, + 381, 380, 376, + 376, 377, 381, + 382, 349, 344, + 344, 378, 382, + 383, 382, 378, + 378, 379, 383, + 384, 383, 379, + 379, 380, 384, + 385, 384, 380, + 380, 381, 385, + 386, 354, 349, + 349, 382, 386, + 387, 386, 382, + 382, 383, 387, + 388, 387, 383, + 383, 384, 388, + 389, 388, 384, + 384, 385, 389, + 390, 359, 354, + 354, 386, 390, + 391, 390, 386, + 386, 387, 391, + 392, 391, 387, + 387, 388, 392, + 393, 392, 388, + 388, 389, 393, + 394, 364, 359, + 359, 390, 394, + 395, 394, 390, + 390, 391, 395, + 396, 395, 391, + 391, 392, 396, + 397, 396, 392, + 392, 393, 397, + 398, 369, 364, + 364, 394, 398, + 399, 398, 394, + 394, 395, 399, + 400, 399, 395, + 395, 396, 400, + 401, 400, 396, + 396, 397, 401, + 370, 334, 369, + 369, 398, 370, + 371, 370, 398, + 398, 399, 371, + 372, 371, 399, + 399, 400, 372, + 373, 372, 400, + 400, 401, 373, + 407, 402, 402, + 402, 403, 407, + 408, 407, 403, + 403, 404, 408, + 409, 408, 404, + 404, 405, 409, + 410, 409, 405, + 405, 406, 410, + 411, 402, 402, + 402, 407, 411, + 412, 411, 407, + 407, 408, 412, + 413, 412, 408, + 408, 409, 413, + 414, 413, 409, + 409, 410, 414, + 415, 402, 402, + 402, 411, 415, + 416, 415, 411, + 411, 412, 416, + 417, 416, 412, + 412, 413, 417, + 418, 417, 413, + 413, 414, 418, + 419, 402, 402, + 402, 415, 419, + 420, 419, 415, + 415, 416, 420, + 421, 420, 416, + 416, 417, 421, + 422, 421, 417, + 417, 418, 422, + 423, 402, 402, + 402, 419, 423, + 424, 423, 419, + 419, 420, 424, + 425, 424, 420, + 420, 421, 425, + 426, 425, 421, + 421, 422, 426, + 427, 402, 402, + 402, 423, 427, + 428, 427, 423, + 423, 424, 428, + 429, 428, 424, + 424, 425, 429, + 430, 429, 425, + 425, 426, 430, + 431, 402, 402, + 402, 427, 431, + 432, 431, 427, + 427, 428, 432, + 433, 432, 428, + 428, 429, 433, + 434, 433, 429, + 429, 430, 434, + 435, 402, 402, + 402, 431, 435, + 436, 435, 431, + 431, 432, 436, + 437, 436, 432, + 432, 433, 437, + 438, 437, 433, + 433, 434, 438, + 439, 402, 402, + 402, 435, 439, + 440, 439, 435, + 435, 436, 440, + 441, 440, 436, + 436, 437, 441, + 442, 441, 437, + 437, 438, 442, + 443, 402, 402, + 402, 439, 443, + 444, 443, 439, + 439, 440, 444, + 445, 444, 440, + 440, 441, 445, + 446, 445, 441, + 441, 442, 446, + 447, 402, 402, + 402, 443, 447, + 448, 447, 443, + 443, 444, 448, + 449, 448, 444, + 444, 445, 449, + 450, 449, 445, + 445, 446, 450, + 451, 402, 402, + 402, 447, 451, + 452, 451, 447, + 447, 448, 452, + 453, 452, 448, + 448, 449, 453, + 454, 453, 449, + 449, 450, 454, + 455, 402, 402, + 402, 451, 455, + 456, 455, 451, + 451, 452, 456, + 457, 456, 452, + 452, 453, 457, + 458, 457, 453, + 453, 454, 458, + 459, 402, 402, + 402, 455, 459, + 460, 459, 455, + 455, 456, 460, + 461, 460, 456, + 456, 457, 461, + 462, 461, 457, + 457, 458, 462, + 463, 402, 402, + 402, 459, 463, + 464, 463, 459, + 459, 460, 464, + 465, 464, 460, + 460, 461, 465, + 466, 465, 461, + 461, 462, 466, + 403, 402, 402, + 402, 463, 403, + 404, 403, 463, + 463, 464, 404, + 405, 404, 464, + 464, 465, 405, + 406, 405, 465, + 465, 466, 406, + 471, 410, 406, + 406, 467, 471, + 472, 471, 467, + 467, 468, 472, + 473, 472, 468, + 468, 469, 473, + 474, 473, 469, + 469, 470, 474, + 475, 414, 410, + 410, 471, 475, + 476, 475, 471, + 471, 472, 476, + 477, 476, 472, + 472, 473, 477, + 478, 477, 473, + 473, 474, 478, + 479, 418, 414, + 414, 475, 479, + 480, 479, 475, + 475, 476, 480, + 481, 480, 476, + 476, 477, 481, + 482, 481, 477, + 477, 478, 482, + 483, 422, 418, + 418, 479, 483, + 484, 483, 479, + 479, 480, 484, + 485, 484, 480, + 480, 481, 485, + 486, 485, 481, + 481, 482, 486, + 487, 426, 422, + 422, 483, 487, + 488, 487, 483, + 483, 484, 488, + 489, 488, 484, + 484, 485, 489, + 490, 489, 485, + 485, 486, 490, + 491, 430, 426, + 426, 487, 491, + 492, 491, 487, + 487, 488, 492, + 493, 492, 488, + 488, 489, 493, + 494, 493, 489, + 489, 490, 494, + 495, 434, 430, + 430, 491, 495, + 496, 495, 491, + 491, 492, 496, + 497, 496, 492, + 492, 493, 497, + 498, 497, 493, + 493, 494, 498, + 499, 438, 434, + 434, 495, 499, + 500, 499, 495, + 495, 496, 500, + 501, 500, 496, + 496, 497, 501, + 502, 501, 497, + 497, 498, 502, + 503, 442, 438, + 438, 499, 503, + 504, 503, 499, + 499, 500, 504, + 505, 504, 500, + 500, 501, 505, + 506, 505, 501, + 501, 502, 506, + 507, 446, 442, + 442, 503, 507, + 508, 507, 503, + 503, 504, 508, + 509, 508, 504, + 504, 505, 509, + 510, 509, 505, + 505, 506, 510, + 511, 450, 446, + 446, 507, 511, + 512, 511, 507, + 507, 508, 512, + 513, 512, 508, + 508, 509, 513, + 514, 513, 509, + 509, 510, 514, + 515, 454, 450, + 450, 511, 515, + 516, 515, 511, + 511, 512, 516, + 517, 516, 512, + 512, 513, 517, + 518, 517, 513, + 513, 514, 518, + 519, 458, 454, + 454, 515, 519, + 520, 519, 515, + 515, 516, 520, + 521, 520, 516, + 516, 517, 521, + 522, 521, 517, + 517, 518, 522, + 523, 462, 458, + 458, 519, 523, + 524, 523, 519, + 519, 520, 524, + 525, 524, 520, + 520, 521, 525, + 526, 525, 521, + 521, 522, 526, + 527, 466, 462, + 462, 523, 527, + 528, 527, 523, + 523, 524, 528, + 529, 528, 524, + 524, 525, 529, + 530, 529, 525, + 525, 526, 530, + 467, 406, 466, + 466, 527, 467, + 468, 467, 527, + 527, 528, 468, + 469, 468, 528, + 528, 529, 469, + 470, 469, 529, + 529, 530, 470u16, +];