paavohtl Claude Sonnet 4.6 commited on
Commit
229ceef
·
1 Parent(s): cff7173

feat: add egui debug UI window with entity census, inspector, and log panel

Browse files

Spawns a floating egui/eframe window in the same process as WA.exe (DLL
injection) when OPENWA_DEBUG_UI=1. Shows a live entity census from the
SharedData hash table, a struct inspector with navigation history, and a
scrollable log stream.

- New crate: openwa-debugui (egui 0.28 + glow backend, winit any-thread)
- Entity type names resolved via vtable map with ClassType fallback
- Children tree reads sparse slot array (children_size = high-watermark)
- Add CTASK_MINE/OILDRUM/CLOUD_VTABLE constants to address.rs (derived
from runtime vtables: delta 0x6C0000)
- debug-ui feature gate in openwa-wormkit; deploy-debug.ps1 / start-debug.ps1

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Cargo.lock CHANGED
@@ -2,12 +2,250 @@
2
  # It is not intended for manual editing.
3
  version = 4
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  [[package]]
6
  name = "byteorder"
7
  version = "1.5.0"
8
  source = "registry+https://github.com/rust-lang/crates.io-index"
9
  checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  [[package]]
12
  name = "cc"
13
  version = "1.2.56"
@@ -15,180 +253,2211 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
15
  checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2"
16
  dependencies = [
17
  "find-msvc-tools",
 
 
18
  "shlex",
19
  ]
20
 
21
  [[package]]
22
- name = "find-msvc-tools"
23
- version = "0.1.9"
24
  source = "registry+https://github.com/rust-lang/crates.io-index"
25
- checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
26
 
27
  [[package]]
28
- name = "hash32"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  version = "0.3.1"
30
  source = "registry+https://github.com/rust-lang/crates.io-index"
31
- checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606"
32
  dependencies = [
33
- "byteorder",
 
34
  ]
35
 
36
  [[package]]
37
- name = "heapless"
38
- version = "0.9.2"
39
  source = "registry+https://github.com/rust-lang/crates.io-index"
40
- checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed"
41
  dependencies = [
42
- "hash32",
43
- "stable_deref_trait",
 
44
  ]
45
 
46
  [[package]]
47
- name = "libc"
48
- version = "0.2.182"
49
  source = "registry+https://github.com/rust-lang/crates.io-index"
50
- checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112"
 
 
 
51
 
52
  [[package]]
53
- name = "log"
54
- version = "0.4.29"
55
  source = "registry+https://github.com/rust-lang/crates.io-index"
56
- checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
 
58
  [[package]]
59
- name = "minhook"
60
- version = "0.9.0"
61
  source = "registry+https://github.com/rust-lang/crates.io-index"
62
- checksum = "455e088cb1600ffa5f1524c9702c9eeb0ba3604e0f4932efa165b99973272a8d"
63
  dependencies = [
64
- "cc",
65
- "tracing",
 
 
 
66
  ]
67
 
68
  [[package]]
69
- name = "once_cell"
70
- version = "1.21.3"
71
  source = "registry+https://github.com/rust-lang/crates.io-index"
72
- checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
 
 
 
 
 
73
 
74
  [[package]]
75
- name = "openwa-core"
76
- version = "0.1.0"
 
 
77
  dependencies = [
78
- "windows-sys",
 
 
 
79
  ]
80
 
81
  [[package]]
82
- name = "openwa-harness"
83
- version = "0.1.0"
 
 
84
  dependencies = [
85
- "libc",
86
- "openwa-core",
87
- "windows-sys",
88
  ]
89
 
90
  [[package]]
91
- name = "openwa-wormkit"
92
- version = "0.1.0"
 
 
93
  dependencies = [
94
- "heapless",
95
- "minhook",
96
- "openwa-core",
97
- "windows-sys",
98
  ]
99
 
100
  [[package]]
101
- name = "pin-project-lite"
102
- version = "0.2.17"
103
  source = "registry+https://github.com/rust-lang/crates.io-index"
104
- checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
 
 
 
 
 
 
 
 
 
 
105
 
106
  [[package]]
107
- name = "proc-macro2"
108
- version = "1.0.106"
109
  source = "registry+https://github.com/rust-lang/crates.io-index"
110
- checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
111
  dependencies = [
112
- "unicode-ident",
 
113
  ]
114
 
115
  [[package]]
116
- name = "quote"
117
- version = "1.0.45"
118
  source = "registry+https://github.com/rust-lang/crates.io-index"
119
- checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
 
 
 
 
 
 
120
  dependencies = [
121
- "proc-macro2",
122
  ]
123
 
124
  [[package]]
125
- name = "shlex"
126
- version = "1.3.0"
127
  source = "registry+https://github.com/rust-lang/crates.io-index"
128
- checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
129
 
130
  [[package]]
131
- name = "stable_deref_trait"
132
- version = "1.2.1"
133
  source = "registry+https://github.com/rust-lang/crates.io-index"
134
- checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
135
 
136
  [[package]]
137
- name = "syn"
138
- version = "2.0.117"
139
  source = "registry+https://github.com/rust-lang/crates.io-index"
140
- checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
141
  dependencies = [
142
- "proc-macro2",
143
- "quote",
144
- "unicode-ident",
145
  ]
146
 
147
  [[package]]
148
- name = "tracing"
149
- version = "0.1.44"
150
  source = "registry+https://github.com/rust-lang/crates.io-index"
151
- checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
152
  dependencies = [
153
- "log",
154
- "pin-project-lite",
155
- "tracing-attributes",
156
- "tracing-core",
157
  ]
158
 
159
  [[package]]
160
- name = "tracing-attributes"
161
- version = "0.1.31"
162
  source = "registry+https://github.com/rust-lang/crates.io-index"
163
- checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
164
  dependencies = [
165
- "proc-macro2",
166
- "quote",
167
- "syn",
168
  ]
169
 
170
  [[package]]
171
- name = "tracing-core"
172
- version = "0.1.36"
173
  source = "registry+https://github.com/rust-lang/crates.io-index"
174
- checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
175
  dependencies = [
176
- "once_cell",
177
  ]
178
 
179
  [[package]]
180
- name = "unicode-ident"
181
- version = "1.0.24"
182
  source = "registry+https://github.com/rust-lang/crates.io-index"
183
- checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
 
 
 
 
 
 
 
 
 
184
 
185
  [[package]]
186
- name = "windows-sys"
187
- version = "0.59.0"
188
  source = "registry+https://github.com/rust-lang/crates.io-index"
189
- checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
190
  dependencies = [
191
- "windows-targets",
 
 
 
 
 
 
192
  ]
193
 
194
  [[package]]
@@ -197,28 +2466,64 @@ version = "0.52.6"
197
  source = "registry+https://github.com/rust-lang/crates.io-index"
198
  checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
199
  dependencies = [
200
- "windows_aarch64_gnullvm",
201
- "windows_aarch64_msvc",
202
- "windows_i686_gnu",
203
  "windows_i686_gnullvm",
204
- "windows_i686_msvc",
205
- "windows_x86_64_gnu",
206
- "windows_x86_64_gnullvm",
207
- "windows_x86_64_msvc",
208
  ]
209
 
 
 
 
 
 
 
 
 
 
 
 
 
210
  [[package]]
211
  name = "windows_aarch64_gnullvm"
212
  version = "0.52.6"
213
  source = "registry+https://github.com/rust-lang/crates.io-index"
214
  checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
215
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  [[package]]
217
  name = "windows_aarch64_msvc"
218
  version = "0.52.6"
219
  source = "registry+https://github.com/rust-lang/crates.io-index"
220
  checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
221
 
 
 
 
 
 
 
 
 
 
 
 
 
222
  [[package]]
223
  name = "windows_i686_gnu"
224
  version = "0.52.6"
@@ -231,26 +2536,304 @@ version = "0.52.6"
231
  source = "registry+https://github.com/rust-lang/crates.io-index"
232
  checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
233
 
 
 
 
 
 
 
 
 
 
 
 
 
234
  [[package]]
235
  name = "windows_i686_msvc"
236
  version = "0.52.6"
237
  source = "registry+https://github.com/rust-lang/crates.io-index"
238
  checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
239
 
 
 
 
 
 
 
 
 
 
 
 
 
240
  [[package]]
241
  name = "windows_x86_64_gnu"
242
  version = "0.52.6"
243
  source = "registry+https://github.com/rust-lang/crates.io-index"
244
  checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
245
 
 
 
 
 
 
 
 
 
 
 
 
 
246
  [[package]]
247
  name = "windows_x86_64_gnullvm"
248
  version = "0.52.6"
249
  source = "registry+https://github.com/rust-lang/crates.io-index"
250
  checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
251
 
 
 
 
 
 
 
 
 
 
 
 
 
252
  [[package]]
253
  name = "windows_x86_64_msvc"
254
  version = "0.52.6"
255
  source = "registry+https://github.com/rust-lang/crates.io-index"
256
  checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  # It is not intended for manual editing.
3
  version = 4
4
 
5
+ [[package]]
6
+ name = "ab_glyph"
7
+ version = "0.2.32"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2"
10
+ dependencies = [
11
+ "ab_glyph_rasterizer",
12
+ "owned_ttf_parser",
13
+ ]
14
+
15
+ [[package]]
16
+ name = "ab_glyph_rasterizer"
17
+ version = "0.1.10"
18
+ source = "registry+https://github.com/rust-lang/crates.io-index"
19
+ checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618"
20
+
21
+ [[package]]
22
+ name = "adler2"
23
+ version = "2.0.1"
24
+ source = "registry+https://github.com/rust-lang/crates.io-index"
25
+ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
26
+
27
+ [[package]]
28
+ name = "ahash"
29
+ version = "0.8.12"
30
+ source = "registry+https://github.com/rust-lang/crates.io-index"
31
+ checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
32
+ dependencies = [
33
+ "cfg-if",
34
+ "getrandom",
35
+ "once_cell",
36
+ "version_check",
37
+ "zerocopy",
38
+ ]
39
+
40
+ [[package]]
41
+ name = "android-activity"
42
+ version = "0.5.2"
43
+ source = "registry+https://github.com/rust-lang/crates.io-index"
44
+ checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289"
45
+ dependencies = [
46
+ "android-properties",
47
+ "bitflags 2.11.0",
48
+ "cc",
49
+ "cesu8",
50
+ "jni 0.21.1",
51
+ "jni-sys 0.3.0",
52
+ "libc",
53
+ "log",
54
+ "ndk",
55
+ "ndk-context",
56
+ "ndk-sys",
57
+ "num_enum",
58
+ "thiserror 1.0.69",
59
+ ]
60
+
61
+ [[package]]
62
+ name = "android-properties"
63
+ version = "0.2.2"
64
+ source = "registry+https://github.com/rust-lang/crates.io-index"
65
+ checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04"
66
+
67
+ [[package]]
68
+ name = "arboard"
69
+ version = "3.6.1"
70
+ source = "registry+https://github.com/rust-lang/crates.io-index"
71
+ checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf"
72
+ dependencies = [
73
+ "clipboard-win",
74
+ "log",
75
+ "objc2 0.6.4",
76
+ "objc2-app-kit 0.3.2",
77
+ "objc2-foundation 0.3.2",
78
+ "parking_lot",
79
+ "percent-encoding",
80
+ "windows-sys 0.59.0",
81
+ "x11rb",
82
+ ]
83
+
84
+ [[package]]
85
+ name = "arrayref"
86
+ version = "0.3.9"
87
+ source = "registry+https://github.com/rust-lang/crates.io-index"
88
+ checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
89
+
90
+ [[package]]
91
+ name = "arrayvec"
92
+ version = "0.7.6"
93
+ source = "registry+https://github.com/rust-lang/crates.io-index"
94
+ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
95
+
96
+ [[package]]
97
+ name = "as-raw-xcb-connection"
98
+ version = "1.0.1"
99
+ source = "registry+https://github.com/rust-lang/crates.io-index"
100
+ checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b"
101
+
102
+ [[package]]
103
+ name = "atomic-waker"
104
+ version = "1.1.2"
105
+ source = "registry+https://github.com/rust-lang/crates.io-index"
106
+ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
107
+
108
+ [[package]]
109
+ name = "autocfg"
110
+ version = "1.5.0"
111
+ source = "registry+https://github.com/rust-lang/crates.io-index"
112
+ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
113
+
114
+ [[package]]
115
+ name = "bitflags"
116
+ version = "1.3.2"
117
+ source = "registry+https://github.com/rust-lang/crates.io-index"
118
+ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
119
+
120
+ [[package]]
121
+ name = "bitflags"
122
+ version = "2.11.0"
123
+ source = "registry+https://github.com/rust-lang/crates.io-index"
124
+ checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
125
+
126
+ [[package]]
127
+ name = "block-sys"
128
+ version = "0.2.1"
129
+ source = "registry+https://github.com/rust-lang/crates.io-index"
130
+ checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7"
131
+ dependencies = [
132
+ "objc-sys",
133
+ ]
134
+
135
+ [[package]]
136
+ name = "block2"
137
+ version = "0.3.0"
138
+ source = "registry+https://github.com/rust-lang/crates.io-index"
139
+ checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68"
140
+ dependencies = [
141
+ "block-sys",
142
+ "objc2 0.4.1",
143
+ ]
144
+
145
+ [[package]]
146
+ name = "block2"
147
+ version = "0.5.1"
148
+ source = "registry+https://github.com/rust-lang/crates.io-index"
149
+ checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f"
150
+ dependencies = [
151
+ "objc2 0.5.2",
152
+ ]
153
+
154
+ [[package]]
155
+ name = "bumpalo"
156
+ version = "3.20.2"
157
+ source = "registry+https://github.com/rust-lang/crates.io-index"
158
+ checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
159
+
160
+ [[package]]
161
+ name = "bytemuck"
162
+ version = "1.25.0"
163
+ source = "registry+https://github.com/rust-lang/crates.io-index"
164
+ checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"
165
+ dependencies = [
166
+ "bytemuck_derive",
167
+ ]
168
+
169
+ [[package]]
170
+ name = "bytemuck_derive"
171
+ version = "1.10.2"
172
+ source = "registry+https://github.com/rust-lang/crates.io-index"
173
+ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff"
174
+ dependencies = [
175
+ "proc-macro2",
176
+ "quote",
177
+ "syn",
178
+ ]
179
+
180
  [[package]]
181
  name = "byteorder"
182
  version = "1.5.0"
183
  source = "registry+https://github.com/rust-lang/crates.io-index"
184
  checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
185
 
186
+ [[package]]
187
+ name = "byteorder-lite"
188
+ version = "0.1.0"
189
+ source = "registry+https://github.com/rust-lang/crates.io-index"
190
+ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
191
+
192
+ [[package]]
193
+ name = "bytes"
194
+ version = "1.11.1"
195
+ source = "registry+https://github.com/rust-lang/crates.io-index"
196
+ checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
197
+
198
+ [[package]]
199
+ name = "calloop"
200
+ version = "0.12.4"
201
+ source = "registry+https://github.com/rust-lang/crates.io-index"
202
+ checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298"
203
+ dependencies = [
204
+ "bitflags 2.11.0",
205
+ "log",
206
+ "polling",
207
+ "rustix 0.38.44",
208
+ "slab",
209
+ "thiserror 1.0.69",
210
+ ]
211
+
212
+ [[package]]
213
+ name = "calloop"
214
+ version = "0.14.4"
215
+ source = "registry+https://github.com/rust-lang/crates.io-index"
216
+ checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7"
217
+ dependencies = [
218
+ "bitflags 2.11.0",
219
+ "polling",
220
+ "rustix 1.1.4",
221
+ "slab",
222
+ "tracing",
223
+ ]
224
+
225
+ [[package]]
226
+ name = "calloop-wayland-source"
227
+ version = "0.2.0"
228
+ source = "registry+https://github.com/rust-lang/crates.io-index"
229
+ checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02"
230
+ dependencies = [
231
+ "calloop 0.12.4",
232
+ "rustix 0.38.44",
233
+ "wayland-backend",
234
+ "wayland-client",
235
+ ]
236
+
237
+ [[package]]
238
+ name = "calloop-wayland-source"
239
+ version = "0.4.1"
240
+ source = "registry+https://github.com/rust-lang/crates.io-index"
241
+ checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa"
242
+ dependencies = [
243
+ "calloop 0.14.4",
244
+ "rustix 1.1.4",
245
+ "wayland-backend",
246
+ "wayland-client",
247
+ ]
248
+
249
  [[package]]
250
  name = "cc"
251
  version = "1.2.56"
 
253
  checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2"
254
  dependencies = [
255
  "find-msvc-tools",
256
+ "jobserver",
257
+ "libc",
258
  "shlex",
259
  ]
260
 
261
  [[package]]
262
+ name = "cesu8"
263
+ version = "1.1.0"
264
  source = "registry+https://github.com/rust-lang/crates.io-index"
265
+ checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
266
 
267
  [[package]]
268
+ name = "cfg-if"
269
+ version = "1.0.4"
270
+ source = "registry+https://github.com/rust-lang/crates.io-index"
271
+ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
272
+
273
+ [[package]]
274
+ name = "cfg_aliases"
275
+ version = "0.1.1"
276
+ source = "registry+https://github.com/rust-lang/crates.io-index"
277
+ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
278
+
279
+ [[package]]
280
+ name = "cgl"
281
+ version = "0.3.2"
282
+ source = "registry+https://github.com/rust-lang/crates.io-index"
283
+ checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff"
284
+ dependencies = [
285
+ "libc",
286
+ ]
287
+
288
+ [[package]]
289
+ name = "clipboard-win"
290
+ version = "5.4.1"
291
+ source = "registry+https://github.com/rust-lang/crates.io-index"
292
+ checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4"
293
+ dependencies = [
294
+ "error-code",
295
+ ]
296
+
297
+ [[package]]
298
+ name = "combine"
299
+ version = "4.6.7"
300
+ source = "registry+https://github.com/rust-lang/crates.io-index"
301
+ checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd"
302
+ dependencies = [
303
+ "bytes",
304
+ "memchr",
305
+ ]
306
+
307
+ [[package]]
308
+ name = "concurrent-queue"
309
+ version = "2.5.0"
310
+ source = "registry+https://github.com/rust-lang/crates.io-index"
311
+ checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
312
+ dependencies = [
313
+ "crossbeam-utils",
314
+ ]
315
+
316
+ [[package]]
317
+ name = "core-foundation"
318
+ version = "0.9.4"
319
+ source = "registry+https://github.com/rust-lang/crates.io-index"
320
+ checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
321
+ dependencies = [
322
+ "core-foundation-sys",
323
+ "libc",
324
+ ]
325
+
326
+ [[package]]
327
+ name = "core-foundation"
328
+ version = "0.10.1"
329
+ source = "registry+https://github.com/rust-lang/crates.io-index"
330
+ checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
331
+ dependencies = [
332
+ "core-foundation-sys",
333
+ "libc",
334
+ ]
335
+
336
+ [[package]]
337
+ name = "core-foundation-sys"
338
+ version = "0.8.7"
339
+ source = "registry+https://github.com/rust-lang/crates.io-index"
340
+ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
341
+
342
+ [[package]]
343
+ name = "core-graphics"
344
+ version = "0.23.2"
345
+ source = "registry+https://github.com/rust-lang/crates.io-index"
346
+ checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081"
347
+ dependencies = [
348
+ "bitflags 1.3.2",
349
+ "core-foundation 0.9.4",
350
+ "core-graphics-types",
351
+ "foreign-types",
352
+ "libc",
353
+ ]
354
+
355
+ [[package]]
356
+ name = "core-graphics-types"
357
+ version = "0.1.3"
358
+ source = "registry+https://github.com/rust-lang/crates.io-index"
359
+ checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf"
360
+ dependencies = [
361
+ "bitflags 1.3.2",
362
+ "core-foundation 0.9.4",
363
+ "libc",
364
+ ]
365
+
366
+ [[package]]
367
+ name = "crc32fast"
368
+ version = "1.5.0"
369
+ source = "registry+https://github.com/rust-lang/crates.io-index"
370
+ checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
371
+ dependencies = [
372
+ "cfg-if",
373
+ ]
374
+
375
+ [[package]]
376
+ name = "crossbeam-utils"
377
+ version = "0.8.21"
378
+ source = "registry+https://github.com/rust-lang/crates.io-index"
379
+ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
380
+
381
+ [[package]]
382
+ name = "cursor-icon"
383
+ version = "1.2.0"
384
+ source = "registry+https://github.com/rust-lang/crates.io-index"
385
+ checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f"
386
+
387
+ [[package]]
388
+ name = "dispatch"
389
+ version = "0.2.0"
390
+ source = "registry+https://github.com/rust-lang/crates.io-index"
391
+ checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
392
+
393
+ [[package]]
394
+ name = "dispatch2"
395
  version = "0.3.1"
396
  source = "registry+https://github.com/rust-lang/crates.io-index"
397
+ checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38"
398
  dependencies = [
399
+ "bitflags 2.11.0",
400
+ "objc2 0.6.4",
401
  ]
402
 
403
  [[package]]
404
+ name = "displaydoc"
405
+ version = "0.2.5"
406
  source = "registry+https://github.com/rust-lang/crates.io-index"
407
+ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
408
  dependencies = [
409
+ "proc-macro2",
410
+ "quote",
411
+ "syn",
412
  ]
413
 
414
  [[package]]
415
+ name = "dlib"
416
+ version = "0.5.3"
417
  source = "registry+https://github.com/rust-lang/crates.io-index"
418
+ checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a"
419
+ dependencies = [
420
+ "libloading",
421
+ ]
422
 
423
  [[package]]
424
+ name = "document-features"
425
+ version = "0.2.12"
426
  source = "registry+https://github.com/rust-lang/crates.io-index"
427
+ checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
428
+ dependencies = [
429
+ "litrs",
430
+ ]
431
+
432
+ [[package]]
433
+ name = "downcast-rs"
434
+ version = "1.2.1"
435
+ source = "registry+https://github.com/rust-lang/crates.io-index"
436
+ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
437
+
438
+ [[package]]
439
+ name = "ecolor"
440
+ version = "0.28.1"
441
+ source = "registry+https://github.com/rust-lang/crates.io-index"
442
+ checksum = "2e6b451ff1143f6de0f33fc7f1b68fecfd2c7de06e104de96c4514de3f5396f8"
443
+ dependencies = [
444
+ "bytemuck",
445
+ "emath",
446
+ ]
447
+
448
+ [[package]]
449
+ name = "eframe"
450
+ version = "0.28.1"
451
+ source = "registry+https://github.com/rust-lang/crates.io-index"
452
+ checksum = "6490ef800b2e41ee129b1f32f9ac15f713233fe3bc18e241a1afe1e4fb6811e0"
453
+ dependencies = [
454
+ "ahash",
455
+ "bytemuck",
456
+ "document-features",
457
+ "egui",
458
+ "egui-winit",
459
+ "egui_glow",
460
+ "glow",
461
+ "glutin",
462
+ "glutin-winit",
463
+ "image",
464
+ "js-sys",
465
+ "log",
466
+ "objc2 0.5.2",
467
+ "objc2-app-kit 0.2.2",
468
+ "objc2-foundation 0.2.2",
469
+ "parking_lot",
470
+ "percent-encoding",
471
+ "raw-window-handle 0.5.2",
472
+ "raw-window-handle 0.6.2",
473
+ "static_assertions",
474
+ "wasm-bindgen",
475
+ "wasm-bindgen-futures",
476
+ "web-sys",
477
+ "web-time",
478
+ "winapi",
479
+ "winit",
480
+ ]
481
+
482
+ [[package]]
483
+ name = "egui"
484
+ version = "0.28.1"
485
+ source = "registry+https://github.com/rust-lang/crates.io-index"
486
+ checksum = "20c97e70a2768de630f161bb5392cbd3874fcf72868f14df0e002e82e06cb798"
487
+ dependencies = [
488
+ "ahash",
489
+ "emath",
490
+ "epaint",
491
+ "log",
492
+ "nohash-hasher",
493
+ ]
494
+
495
+ [[package]]
496
+ name = "egui-winit"
497
+ version = "0.28.1"
498
+ source = "registry+https://github.com/rust-lang/crates.io-index"
499
+ checksum = "fac4e066af341bf92559f60dbdf2020b2a03c963415349af5f3f8d79ff7a4926"
500
+ dependencies = [
501
+ "ahash",
502
+ "arboard",
503
+ "egui",
504
+ "log",
505
+ "raw-window-handle 0.6.2",
506
+ "smithay-clipboard",
507
+ "web-time",
508
+ "webbrowser",
509
+ "winit",
510
+ ]
511
+
512
+ [[package]]
513
+ name = "egui_glow"
514
+ version = "0.28.1"
515
+ source = "registry+https://github.com/rust-lang/crates.io-index"
516
+ checksum = "4e2bdc8b38cfa17cc712c4ae079e30c71c00cd4c2763c9e16dc7860a02769103"
517
+ dependencies = [
518
+ "ahash",
519
+ "bytemuck",
520
+ "egui",
521
+ "glow",
522
+ "log",
523
+ "memoffset",
524
+ "wasm-bindgen",
525
+ "web-sys",
526
+ ]
527
+
528
+ [[package]]
529
+ name = "emath"
530
+ version = "0.28.1"
531
+ source = "registry+https://github.com/rust-lang/crates.io-index"
532
+ checksum = "0a6a21708405ea88f63d8309650b4d77431f4bc28fb9d8e6f77d3963b51249e6"
533
+ dependencies = [
534
+ "bytemuck",
535
+ ]
536
+
537
+ [[package]]
538
+ name = "epaint"
539
+ version = "0.28.1"
540
+ source = "registry+https://github.com/rust-lang/crates.io-index"
541
+ checksum = "3f0dcc0a0771e7500e94cd1cb797bd13c9f23b9409bdc3c824e2cbc562b7fa01"
542
+ dependencies = [
543
+ "ab_glyph",
544
+ "ahash",
545
+ "bytemuck",
546
+ "ecolor",
547
+ "emath",
548
+ "log",
549
+ "nohash-hasher",
550
+ "parking_lot",
551
+ ]
552
+
553
+ [[package]]
554
+ name = "equivalent"
555
+ version = "1.0.2"
556
+ source = "registry+https://github.com/rust-lang/crates.io-index"
557
+ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
558
+
559
+ [[package]]
560
+ name = "errno"
561
+ version = "0.3.14"
562
+ source = "registry+https://github.com/rust-lang/crates.io-index"
563
+ checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
564
+ dependencies = [
565
+ "libc",
566
+ "windows-sys 0.59.0",
567
+ ]
568
+
569
+ [[package]]
570
+ name = "error-code"
571
+ version = "3.3.2"
572
+ source = "registry+https://github.com/rust-lang/crates.io-index"
573
+ checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59"
574
+
575
+ [[package]]
576
+ name = "fdeflate"
577
+ version = "0.3.7"
578
+ source = "registry+https://github.com/rust-lang/crates.io-index"
579
+ checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c"
580
+ dependencies = [
581
+ "simd-adler32",
582
+ ]
583
+
584
+ [[package]]
585
+ name = "find-msvc-tools"
586
+ version = "0.1.9"
587
+ source = "registry+https://github.com/rust-lang/crates.io-index"
588
+ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
589
+
590
+ [[package]]
591
+ name = "flate2"
592
+ version = "1.1.9"
593
+ source = "registry+https://github.com/rust-lang/crates.io-index"
594
+ checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
595
+ dependencies = [
596
+ "crc32fast",
597
+ "miniz_oxide",
598
+ ]
599
+
600
+ [[package]]
601
+ name = "foreign-types"
602
+ version = "0.5.0"
603
+ source = "registry+https://github.com/rust-lang/crates.io-index"
604
+ checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
605
+ dependencies = [
606
+ "foreign-types-macros",
607
+ "foreign-types-shared",
608
+ ]
609
+
610
+ [[package]]
611
+ name = "foreign-types-macros"
612
+ version = "0.2.3"
613
+ source = "registry+https://github.com/rust-lang/crates.io-index"
614
+ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
615
+ dependencies = [
616
+ "proc-macro2",
617
+ "quote",
618
+ "syn",
619
+ ]
620
+
621
+ [[package]]
622
+ name = "foreign-types-shared"
623
+ version = "0.3.1"
624
+ source = "registry+https://github.com/rust-lang/crates.io-index"
625
+ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
626
+
627
+ [[package]]
628
+ name = "form_urlencoded"
629
+ version = "1.2.2"
630
+ source = "registry+https://github.com/rust-lang/crates.io-index"
631
+ checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
632
+ dependencies = [
633
+ "percent-encoding",
634
+ ]
635
+
636
+ [[package]]
637
+ name = "futures-core"
638
+ version = "0.3.32"
639
+ source = "registry+https://github.com/rust-lang/crates.io-index"
640
+ checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
641
+
642
+ [[package]]
643
+ name = "futures-task"
644
+ version = "0.3.32"
645
+ source = "registry+https://github.com/rust-lang/crates.io-index"
646
+ checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
647
+
648
+ [[package]]
649
+ name = "futures-util"
650
+ version = "0.3.32"
651
+ source = "registry+https://github.com/rust-lang/crates.io-index"
652
+ checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
653
+ dependencies = [
654
+ "futures-core",
655
+ "futures-task",
656
+ "pin-project-lite",
657
+ "slab",
658
+ ]
659
+
660
+ [[package]]
661
+ name = "gethostname"
662
+ version = "1.1.0"
663
+ source = "registry+https://github.com/rust-lang/crates.io-index"
664
+ checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8"
665
+ dependencies = [
666
+ "rustix 1.1.4",
667
+ "windows-link",
668
+ ]
669
+
670
+ [[package]]
671
+ name = "getrandom"
672
+ version = "0.3.4"
673
+ source = "registry+https://github.com/rust-lang/crates.io-index"
674
+ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
675
+ dependencies = [
676
+ "cfg-if",
677
+ "libc",
678
+ "r-efi",
679
+ "wasip2",
680
+ ]
681
+
682
+ [[package]]
683
+ name = "gl_generator"
684
+ version = "0.14.0"
685
+ source = "registry+https://github.com/rust-lang/crates.io-index"
686
+ checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d"
687
+ dependencies = [
688
+ "khronos_api",
689
+ "log",
690
+ "xml-rs",
691
+ ]
692
+
693
+ [[package]]
694
+ name = "glow"
695
+ version = "0.13.1"
696
+ source = "registry+https://github.com/rust-lang/crates.io-index"
697
+ checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1"
698
+ dependencies = [
699
+ "js-sys",
700
+ "slotmap",
701
+ "wasm-bindgen",
702
+ "web-sys",
703
+ ]
704
+
705
+ [[package]]
706
+ name = "glutin"
707
+ version = "0.31.3"
708
+ source = "registry+https://github.com/rust-lang/crates.io-index"
709
+ checksum = "18fcd4ae4e86d991ad1300b8f57166e5be0c95ef1f63f3f5b827f8a164548746"
710
+ dependencies = [
711
+ "bitflags 2.11.0",
712
+ "cfg_aliases",
713
+ "cgl",
714
+ "core-foundation 0.9.4",
715
+ "dispatch",
716
+ "glutin_egl_sys",
717
+ "glutin_glx_sys",
718
+ "glutin_wgl_sys",
719
+ "icrate",
720
+ "libloading",
721
+ "objc2 0.4.1",
722
+ "once_cell",
723
+ "raw-window-handle 0.5.2",
724
+ "wayland-sys",
725
+ "windows-sys 0.48.0",
726
+ "x11-dl",
727
+ ]
728
+
729
+ [[package]]
730
+ name = "glutin-winit"
731
+ version = "0.4.2"
732
+ source = "registry+https://github.com/rust-lang/crates.io-index"
733
+ checksum = "1ebcdfba24f73b8412c5181e56f092b5eff16671c514ce896b258a0a64bd7735"
734
+ dependencies = [
735
+ "cfg_aliases",
736
+ "glutin",
737
+ "raw-window-handle 0.5.2",
738
+ "winit",
739
+ ]
740
+
741
+ [[package]]
742
+ name = "glutin_egl_sys"
743
+ version = "0.6.0"
744
+ source = "registry+https://github.com/rust-lang/crates.io-index"
745
+ checksum = "77cc5623f5309ef433c3dd4ca1223195347fe62c413da8e2fdd0eb76db2d9bcd"
746
+ dependencies = [
747
+ "gl_generator",
748
+ "windows-sys 0.48.0",
749
+ ]
750
+
751
+ [[package]]
752
+ name = "glutin_glx_sys"
753
+ version = "0.5.0"
754
+ source = "registry+https://github.com/rust-lang/crates.io-index"
755
+ checksum = "a165fd686c10dcc2d45380b35796e577eacfd43d4660ee741ec8ebe2201b3b4f"
756
+ dependencies = [
757
+ "gl_generator",
758
+ "x11-dl",
759
+ ]
760
+
761
+ [[package]]
762
+ name = "glutin_wgl_sys"
763
+ version = "0.5.0"
764
+ source = "registry+https://github.com/rust-lang/crates.io-index"
765
+ checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead"
766
+ dependencies = [
767
+ "gl_generator",
768
+ ]
769
+
770
+ [[package]]
771
+ name = "hash32"
772
+ version = "0.3.1"
773
+ source = "registry+https://github.com/rust-lang/crates.io-index"
774
+ checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606"
775
+ dependencies = [
776
+ "byteorder",
777
+ ]
778
+
779
+ [[package]]
780
+ name = "hashbrown"
781
+ version = "0.16.1"
782
+ source = "registry+https://github.com/rust-lang/crates.io-index"
783
+ checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
784
+
785
+ [[package]]
786
+ name = "heapless"
787
+ version = "0.9.2"
788
+ source = "registry+https://github.com/rust-lang/crates.io-index"
789
+ checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed"
790
+ dependencies = [
791
+ "hash32",
792
+ "stable_deref_trait",
793
+ ]
794
+
795
+ [[package]]
796
+ name = "hermit-abi"
797
+ version = "0.5.2"
798
+ source = "registry+https://github.com/rust-lang/crates.io-index"
799
+ checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
800
+
801
+ [[package]]
802
+ name = "icrate"
803
+ version = "0.0.4"
804
+ source = "registry+https://github.com/rust-lang/crates.io-index"
805
+ checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319"
806
+ dependencies = [
807
+ "block2 0.3.0",
808
+ "dispatch",
809
+ "objc2 0.4.1",
810
+ ]
811
+
812
+ [[package]]
813
+ name = "icu_collections"
814
+ version = "2.1.1"
815
+ source = "registry+https://github.com/rust-lang/crates.io-index"
816
+ checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
817
+ dependencies = [
818
+ "displaydoc",
819
+ "potential_utf",
820
+ "yoke",
821
+ "zerofrom",
822
+ "zerovec",
823
+ ]
824
+
825
+ [[package]]
826
+ name = "icu_locale_core"
827
+ version = "2.1.1"
828
+ source = "registry+https://github.com/rust-lang/crates.io-index"
829
+ checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
830
+ dependencies = [
831
+ "displaydoc",
832
+ "litemap",
833
+ "tinystr",
834
+ "writeable",
835
+ "zerovec",
836
+ ]
837
+
838
+ [[package]]
839
+ name = "icu_normalizer"
840
+ version = "2.1.1"
841
+ source = "registry+https://github.com/rust-lang/crates.io-index"
842
+ checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
843
+ dependencies = [
844
+ "icu_collections",
845
+ "icu_normalizer_data",
846
+ "icu_properties",
847
+ "icu_provider",
848
+ "smallvec",
849
+ "zerovec",
850
+ ]
851
+
852
+ [[package]]
853
+ name = "icu_normalizer_data"
854
+ version = "2.1.1"
855
+ source = "registry+https://github.com/rust-lang/crates.io-index"
856
+ checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
857
+
858
+ [[package]]
859
+ name = "icu_properties"
860
+ version = "2.1.2"
861
+ source = "registry+https://github.com/rust-lang/crates.io-index"
862
+ checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec"
863
+ dependencies = [
864
+ "icu_collections",
865
+ "icu_locale_core",
866
+ "icu_properties_data",
867
+ "icu_provider",
868
+ "zerotrie",
869
+ "zerovec",
870
+ ]
871
+
872
+ [[package]]
873
+ name = "icu_properties_data"
874
+ version = "2.1.2"
875
+ source = "registry+https://github.com/rust-lang/crates.io-index"
876
+ checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af"
877
+
878
+ [[package]]
879
+ name = "icu_provider"
880
+ version = "2.1.1"
881
+ source = "registry+https://github.com/rust-lang/crates.io-index"
882
+ checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
883
+ dependencies = [
884
+ "displaydoc",
885
+ "icu_locale_core",
886
+ "writeable",
887
+ "yoke",
888
+ "zerofrom",
889
+ "zerotrie",
890
+ "zerovec",
891
+ ]
892
+
893
+ [[package]]
894
+ name = "idna"
895
+ version = "1.1.0"
896
+ source = "registry+https://github.com/rust-lang/crates.io-index"
897
+ checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
898
+ dependencies = [
899
+ "idna_adapter",
900
+ "smallvec",
901
+ "utf8_iter",
902
+ ]
903
+
904
+ [[package]]
905
+ name = "idna_adapter"
906
+ version = "1.2.1"
907
+ source = "registry+https://github.com/rust-lang/crates.io-index"
908
+ checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
909
+ dependencies = [
910
+ "icu_normalizer",
911
+ "icu_properties",
912
+ ]
913
+
914
+ [[package]]
915
+ name = "image"
916
+ version = "0.25.10"
917
+ source = "registry+https://github.com/rust-lang/crates.io-index"
918
+ checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104"
919
+ dependencies = [
920
+ "bytemuck",
921
+ "byteorder-lite",
922
+ "moxcms",
923
+ "num-traits",
924
+ "png",
925
+ ]
926
+
927
+ [[package]]
928
+ name = "indexmap"
929
+ version = "2.13.0"
930
+ source = "registry+https://github.com/rust-lang/crates.io-index"
931
+ checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
932
+ dependencies = [
933
+ "equivalent",
934
+ "hashbrown",
935
+ ]
936
+
937
+ [[package]]
938
+ name = "jni"
939
+ version = "0.21.1"
940
+ source = "registry+https://github.com/rust-lang/crates.io-index"
941
+ checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
942
+ dependencies = [
943
+ "cesu8",
944
+ "cfg-if",
945
+ "combine",
946
+ "jni-sys 0.3.0",
947
+ "log",
948
+ "thiserror 1.0.69",
949
+ "walkdir",
950
+ "windows-sys 0.45.0",
951
+ ]
952
+
953
+ [[package]]
954
+ name = "jni"
955
+ version = "0.22.3"
956
+ source = "registry+https://github.com/rust-lang/crates.io-index"
957
+ checksum = "295dc9997acda1562fdf8d299f56063c936443b60f078e63a5d8d3c34ef2642b"
958
+ dependencies = [
959
+ "cfg-if",
960
+ "combine",
961
+ "jni-macros",
962
+ "jni-sys 0.4.1",
963
+ "log",
964
+ "simd_cesu8",
965
+ "thiserror 2.0.18",
966
+ "walkdir",
967
+ "windows-link",
968
+ ]
969
+
970
+ [[package]]
971
+ name = "jni-macros"
972
+ version = "0.22.2"
973
+ source = "registry+https://github.com/rust-lang/crates.io-index"
974
+ checksum = "1c3d1da60c95c98847b26b9d45f4360fee718b31de746df016d9cd6de916a7ef"
975
+ dependencies = [
976
+ "proc-macro2",
977
+ "quote",
978
+ "rustc_version",
979
+ "simd_cesu8",
980
+ "syn",
981
+ ]
982
+
983
+ [[package]]
984
+ name = "jni-sys"
985
+ version = "0.3.0"
986
+ source = "registry+https://github.com/rust-lang/crates.io-index"
987
+ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
988
+
989
+ [[package]]
990
+ name = "jni-sys"
991
+ version = "0.4.1"
992
+ source = "registry+https://github.com/rust-lang/crates.io-index"
993
+ checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2"
994
+ dependencies = [
995
+ "jni-sys-macros",
996
+ ]
997
+
998
+ [[package]]
999
+ name = "jni-sys-macros"
1000
+ version = "0.4.1"
1001
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1002
+ checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264"
1003
+ dependencies = [
1004
+ "quote",
1005
+ "syn",
1006
+ ]
1007
+
1008
+ [[package]]
1009
+ name = "jobserver"
1010
+ version = "0.1.34"
1011
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1012
+ checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
1013
+ dependencies = [
1014
+ "getrandom",
1015
+ "libc",
1016
+ ]
1017
+
1018
+ [[package]]
1019
+ name = "js-sys"
1020
+ version = "0.3.91"
1021
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1022
+ checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c"
1023
+ dependencies = [
1024
+ "once_cell",
1025
+ "wasm-bindgen",
1026
+ ]
1027
+
1028
+ [[package]]
1029
+ name = "khronos_api"
1030
+ version = "3.1.0"
1031
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1032
+ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc"
1033
+
1034
+ [[package]]
1035
+ name = "libc"
1036
+ version = "0.2.182"
1037
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1038
+ checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112"
1039
+
1040
+ [[package]]
1041
+ name = "libloading"
1042
+ version = "0.8.9"
1043
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1044
+ checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
1045
+ dependencies = [
1046
+ "cfg-if",
1047
+ "windows-link",
1048
+ ]
1049
+
1050
+ [[package]]
1051
+ name = "libredox"
1052
+ version = "0.1.14"
1053
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1054
+ checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a"
1055
+ dependencies = [
1056
+ "bitflags 2.11.0",
1057
+ "libc",
1058
+ "plain",
1059
+ "redox_syscall 0.7.3",
1060
+ ]
1061
+
1062
+ [[package]]
1063
+ name = "linux-raw-sys"
1064
+ version = "0.4.15"
1065
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1066
+ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
1067
+
1068
+ [[package]]
1069
+ name = "linux-raw-sys"
1070
+ version = "0.12.1"
1071
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1072
+ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
1073
+
1074
+ [[package]]
1075
+ name = "litemap"
1076
+ version = "0.8.1"
1077
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1078
+ checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
1079
+
1080
+ [[package]]
1081
+ name = "litrs"
1082
+ version = "1.0.0"
1083
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1084
+ checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
1085
+
1086
+ [[package]]
1087
+ name = "lock_api"
1088
+ version = "0.4.14"
1089
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1090
+ checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
1091
+ dependencies = [
1092
+ "scopeguard",
1093
+ ]
1094
+
1095
+ [[package]]
1096
+ name = "log"
1097
+ version = "0.4.29"
1098
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1099
+ checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
1100
+
1101
+ [[package]]
1102
+ name = "memchr"
1103
+ version = "2.8.0"
1104
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1105
+ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
1106
+
1107
+ [[package]]
1108
+ name = "memmap2"
1109
+ version = "0.9.10"
1110
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1111
+ checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3"
1112
+ dependencies = [
1113
+ "libc",
1114
+ ]
1115
+
1116
+ [[package]]
1117
+ name = "memoffset"
1118
+ version = "0.9.1"
1119
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1120
+ checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
1121
+ dependencies = [
1122
+ "autocfg",
1123
+ ]
1124
+
1125
+ [[package]]
1126
+ name = "minhook"
1127
+ version = "0.9.0"
1128
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1129
+ checksum = "455e088cb1600ffa5f1524c9702c9eeb0ba3604e0f4932efa165b99973272a8d"
1130
+ dependencies = [
1131
+ "cc",
1132
+ "tracing",
1133
+ ]
1134
+
1135
+ [[package]]
1136
+ name = "miniz_oxide"
1137
+ version = "0.8.9"
1138
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1139
+ checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
1140
+ dependencies = [
1141
+ "adler2",
1142
+ "simd-adler32",
1143
+ ]
1144
+
1145
+ [[package]]
1146
+ name = "moxcms"
1147
+ version = "0.8.1"
1148
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1149
+ checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b"
1150
+ dependencies = [
1151
+ "num-traits",
1152
+ "pxfm",
1153
+ ]
1154
+
1155
+ [[package]]
1156
+ name = "ndk"
1157
+ version = "0.8.0"
1158
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1159
+ checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7"
1160
+ dependencies = [
1161
+ "bitflags 2.11.0",
1162
+ "jni-sys 0.3.0",
1163
+ "log",
1164
+ "ndk-sys",
1165
+ "num_enum",
1166
+ "raw-window-handle 0.5.2",
1167
+ "raw-window-handle 0.6.2",
1168
+ "thiserror 1.0.69",
1169
+ ]
1170
+
1171
+ [[package]]
1172
+ name = "ndk-context"
1173
+ version = "0.1.1"
1174
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1175
+ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b"
1176
+
1177
+ [[package]]
1178
+ name = "ndk-sys"
1179
+ version = "0.5.0+25.2.9519653"
1180
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1181
+ checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691"
1182
+ dependencies = [
1183
+ "jni-sys 0.3.0",
1184
+ ]
1185
+
1186
+ [[package]]
1187
+ name = "nohash-hasher"
1188
+ version = "0.2.0"
1189
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1190
+ checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451"
1191
+
1192
+ [[package]]
1193
+ name = "num-traits"
1194
+ version = "0.2.19"
1195
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1196
+ checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
1197
+ dependencies = [
1198
+ "autocfg",
1199
+ ]
1200
+
1201
+ [[package]]
1202
+ name = "num_enum"
1203
+ version = "0.7.5"
1204
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1205
+ checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c"
1206
+ dependencies = [
1207
+ "num_enum_derive",
1208
+ "rustversion",
1209
+ ]
1210
+
1211
+ [[package]]
1212
+ name = "num_enum_derive"
1213
+ version = "0.7.5"
1214
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1215
+ checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7"
1216
+ dependencies = [
1217
+ "proc-macro-crate",
1218
+ "proc-macro2",
1219
+ "quote",
1220
+ "syn",
1221
+ ]
1222
+
1223
+ [[package]]
1224
+ name = "objc-sys"
1225
+ version = "0.3.5"
1226
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1227
+ checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310"
1228
+
1229
+ [[package]]
1230
+ name = "objc2"
1231
+ version = "0.4.1"
1232
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1233
+ checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d"
1234
+ dependencies = [
1235
+ "objc-sys",
1236
+ "objc2-encode 3.0.0",
1237
+ ]
1238
+
1239
+ [[package]]
1240
+ name = "objc2"
1241
+ version = "0.5.2"
1242
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1243
+ checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804"
1244
+ dependencies = [
1245
+ "objc-sys",
1246
+ "objc2-encode 4.1.0",
1247
+ ]
1248
+
1249
+ [[package]]
1250
+ name = "objc2"
1251
+ version = "0.6.4"
1252
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1253
+ checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f"
1254
+ dependencies = [
1255
+ "objc2-encode 4.1.0",
1256
+ ]
1257
+
1258
+ [[package]]
1259
+ name = "objc2-app-kit"
1260
+ version = "0.2.2"
1261
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1262
+ checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff"
1263
+ dependencies = [
1264
+ "bitflags 2.11.0",
1265
+ "block2 0.5.1",
1266
+ "libc",
1267
+ "objc2 0.5.2",
1268
+ "objc2-core-data",
1269
+ "objc2-core-image",
1270
+ "objc2-foundation 0.2.2",
1271
+ "objc2-quartz-core",
1272
+ ]
1273
+
1274
+ [[package]]
1275
+ name = "objc2-app-kit"
1276
+ version = "0.3.2"
1277
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1278
+ checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c"
1279
+ dependencies = [
1280
+ "bitflags 2.11.0",
1281
+ "objc2 0.6.4",
1282
+ "objc2-core-graphics",
1283
+ "objc2-foundation 0.3.2",
1284
+ ]
1285
+
1286
+ [[package]]
1287
+ name = "objc2-core-data"
1288
+ version = "0.2.2"
1289
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1290
+ checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef"
1291
+ dependencies = [
1292
+ "bitflags 2.11.0",
1293
+ "block2 0.5.1",
1294
+ "objc2 0.5.2",
1295
+ "objc2-foundation 0.2.2",
1296
+ ]
1297
+
1298
+ [[package]]
1299
+ name = "objc2-core-foundation"
1300
+ version = "0.3.2"
1301
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1302
+ checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
1303
+ dependencies = [
1304
+ "bitflags 2.11.0",
1305
+ "dispatch2",
1306
+ "objc2 0.6.4",
1307
+ ]
1308
+
1309
+ [[package]]
1310
+ name = "objc2-core-graphics"
1311
+ version = "0.3.2"
1312
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1313
+ checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807"
1314
+ dependencies = [
1315
+ "bitflags 2.11.0",
1316
+ "dispatch2",
1317
+ "objc2 0.6.4",
1318
+ "objc2-core-foundation",
1319
+ "objc2-io-surface",
1320
+ ]
1321
+
1322
+ [[package]]
1323
+ name = "objc2-core-image"
1324
+ version = "0.2.2"
1325
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1326
+ checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80"
1327
+ dependencies = [
1328
+ "block2 0.5.1",
1329
+ "objc2 0.5.2",
1330
+ "objc2-foundation 0.2.2",
1331
+ "objc2-metal",
1332
+ ]
1333
+
1334
+ [[package]]
1335
+ name = "objc2-encode"
1336
+ version = "3.0.0"
1337
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1338
+ checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666"
1339
+
1340
+ [[package]]
1341
+ name = "objc2-encode"
1342
+ version = "4.1.0"
1343
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1344
+ checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33"
1345
+
1346
+ [[package]]
1347
+ name = "objc2-foundation"
1348
+ version = "0.2.2"
1349
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1350
+ checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
1351
+ dependencies = [
1352
+ "bitflags 2.11.0",
1353
+ "block2 0.5.1",
1354
+ "libc",
1355
+ "objc2 0.5.2",
1356
+ ]
1357
+
1358
+ [[package]]
1359
+ name = "objc2-foundation"
1360
+ version = "0.3.2"
1361
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1362
+ checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
1363
+ dependencies = [
1364
+ "bitflags 2.11.0",
1365
+ "objc2 0.6.4",
1366
+ "objc2-core-foundation",
1367
+ ]
1368
+
1369
+ [[package]]
1370
+ name = "objc2-io-surface"
1371
+ version = "0.3.2"
1372
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1373
+ checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d"
1374
+ dependencies = [
1375
+ "bitflags 2.11.0",
1376
+ "objc2 0.6.4",
1377
+ "objc2-core-foundation",
1378
+ ]
1379
+
1380
+ [[package]]
1381
+ name = "objc2-metal"
1382
+ version = "0.2.2"
1383
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1384
+ checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
1385
+ dependencies = [
1386
+ "bitflags 2.11.0",
1387
+ "block2 0.5.1",
1388
+ "objc2 0.5.2",
1389
+ "objc2-foundation 0.2.2",
1390
+ ]
1391
+
1392
+ [[package]]
1393
+ name = "objc2-quartz-core"
1394
+ version = "0.2.2"
1395
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1396
+ checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
1397
+ dependencies = [
1398
+ "bitflags 2.11.0",
1399
+ "block2 0.5.1",
1400
+ "objc2 0.5.2",
1401
+ "objc2-foundation 0.2.2",
1402
+ "objc2-metal",
1403
+ ]
1404
+
1405
+ [[package]]
1406
+ name = "once_cell"
1407
+ version = "1.21.3"
1408
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1409
+ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
1410
+
1411
+ [[package]]
1412
+ name = "openwa-core"
1413
+ version = "0.1.0"
1414
+ dependencies = [
1415
+ "windows-sys 0.59.0",
1416
+ ]
1417
+
1418
+ [[package]]
1419
+ name = "openwa-debugui"
1420
+ version = "0.1.0"
1421
+ dependencies = [
1422
+ "eframe",
1423
+ "openwa-core",
1424
+ "winit",
1425
+ ]
1426
+
1427
+ [[package]]
1428
+ name = "openwa-harness"
1429
+ version = "0.1.0"
1430
+ dependencies = [
1431
+ "libc",
1432
+ "openwa-core",
1433
+ "windows-sys 0.59.0",
1434
+ ]
1435
+
1436
+ [[package]]
1437
+ name = "openwa-wormkit"
1438
+ version = "0.1.0"
1439
+ dependencies = [
1440
+ "heapless",
1441
+ "minhook",
1442
+ "openwa-core",
1443
+ "openwa-debugui",
1444
+ "windows-sys 0.59.0",
1445
+ ]
1446
+
1447
+ [[package]]
1448
+ name = "orbclient"
1449
+ version = "0.3.50"
1450
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1451
+ checksum = "52ad2c6bae700b7aa5d1cc30c59bdd3a1c180b09dbaea51e2ae2b8e1cf211fdd"
1452
+ dependencies = [
1453
+ "libc",
1454
+ "libredox",
1455
+ ]
1456
+
1457
+ [[package]]
1458
+ name = "owned_ttf_parser"
1459
+ version = "0.25.1"
1460
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1461
+ checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b"
1462
+ dependencies = [
1463
+ "ttf-parser",
1464
+ ]
1465
+
1466
+ [[package]]
1467
+ name = "parking_lot"
1468
+ version = "0.12.5"
1469
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1470
+ checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
1471
+ dependencies = [
1472
+ "lock_api",
1473
+ "parking_lot_core",
1474
+ ]
1475
+
1476
+ [[package]]
1477
+ name = "parking_lot_core"
1478
+ version = "0.9.12"
1479
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1480
+ checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
1481
+ dependencies = [
1482
+ "cfg-if",
1483
+ "libc",
1484
+ "redox_syscall 0.5.18",
1485
+ "smallvec",
1486
+ "windows-link",
1487
+ ]
1488
+
1489
+ [[package]]
1490
+ name = "percent-encoding"
1491
+ version = "2.3.2"
1492
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1493
+ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
1494
+
1495
+ [[package]]
1496
+ name = "pin-project-lite"
1497
+ version = "0.2.17"
1498
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1499
+ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
1500
+
1501
+ [[package]]
1502
+ name = "pkg-config"
1503
+ version = "0.3.32"
1504
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1505
+ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
1506
+
1507
+ [[package]]
1508
+ name = "plain"
1509
+ version = "0.2.3"
1510
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1511
+ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
1512
+
1513
+ [[package]]
1514
+ name = "png"
1515
+ version = "0.18.1"
1516
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1517
+ checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61"
1518
+ dependencies = [
1519
+ "bitflags 2.11.0",
1520
+ "crc32fast",
1521
+ "fdeflate",
1522
+ "flate2",
1523
+ "miniz_oxide",
1524
+ ]
1525
+
1526
+ [[package]]
1527
+ name = "polling"
1528
+ version = "3.11.0"
1529
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1530
+ checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218"
1531
+ dependencies = [
1532
+ "cfg-if",
1533
+ "concurrent-queue",
1534
+ "hermit-abi",
1535
+ "pin-project-lite",
1536
+ "rustix 1.1.4",
1537
+ "windows-sys 0.61.2",
1538
+ ]
1539
+
1540
+ [[package]]
1541
+ name = "potential_utf"
1542
+ version = "0.1.4"
1543
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1544
+ checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
1545
+ dependencies = [
1546
+ "zerovec",
1547
+ ]
1548
+
1549
+ [[package]]
1550
+ name = "proc-macro-crate"
1551
+ version = "3.5.0"
1552
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1553
+ checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
1554
+ dependencies = [
1555
+ "toml_edit",
1556
+ ]
1557
+
1558
+ [[package]]
1559
+ name = "proc-macro2"
1560
+ version = "1.0.106"
1561
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1562
+ checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
1563
+ dependencies = [
1564
+ "unicode-ident",
1565
+ ]
1566
+
1567
+ [[package]]
1568
+ name = "pxfm"
1569
+ version = "0.1.28"
1570
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1571
+ checksum = "b5a041e753da8b807c9255f28de81879c78c876392ff2469cde94799b2896b9d"
1572
+
1573
+ [[package]]
1574
+ name = "quick-xml"
1575
+ version = "0.39.2"
1576
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1577
+ checksum = "958f21e8e7ceb5a1aa7fa87fab28e7c75976e0bfe7e23ff069e0a260f894067d"
1578
+ dependencies = [
1579
+ "memchr",
1580
+ ]
1581
+
1582
+ [[package]]
1583
+ name = "quote"
1584
+ version = "1.0.45"
1585
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1586
+ checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
1587
+ dependencies = [
1588
+ "proc-macro2",
1589
+ ]
1590
+
1591
+ [[package]]
1592
+ name = "r-efi"
1593
+ version = "5.3.0"
1594
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1595
+ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
1596
+
1597
+ [[package]]
1598
+ name = "raw-window-handle"
1599
+ version = "0.5.2"
1600
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1601
+ checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9"
1602
+
1603
+ [[package]]
1604
+ name = "raw-window-handle"
1605
+ version = "0.6.2"
1606
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1607
+ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539"
1608
+
1609
+ [[package]]
1610
+ name = "redox_syscall"
1611
+ version = "0.3.5"
1612
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1613
+ checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
1614
+ dependencies = [
1615
+ "bitflags 1.3.2",
1616
+ ]
1617
+
1618
+ [[package]]
1619
+ name = "redox_syscall"
1620
+ version = "0.5.18"
1621
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1622
+ checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
1623
+ dependencies = [
1624
+ "bitflags 2.11.0",
1625
+ ]
1626
+
1627
+ [[package]]
1628
+ name = "redox_syscall"
1629
+ version = "0.7.3"
1630
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1631
+ checksum = "6ce70a74e890531977d37e532c34d45e9055d2409ed08ddba14529471ed0be16"
1632
+ dependencies = [
1633
+ "bitflags 2.11.0",
1634
+ ]
1635
+
1636
+ [[package]]
1637
+ name = "rustc_version"
1638
+ version = "0.4.1"
1639
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1640
+ checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
1641
+ dependencies = [
1642
+ "semver",
1643
+ ]
1644
+
1645
+ [[package]]
1646
+ name = "rustix"
1647
+ version = "0.38.44"
1648
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1649
+ checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
1650
+ dependencies = [
1651
+ "bitflags 2.11.0",
1652
+ "errno",
1653
+ "libc",
1654
+ "linux-raw-sys 0.4.15",
1655
+ "windows-sys 0.59.0",
1656
+ ]
1657
+
1658
+ [[package]]
1659
+ name = "rustix"
1660
+ version = "1.1.4"
1661
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1662
+ checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
1663
+ dependencies = [
1664
+ "bitflags 2.11.0",
1665
+ "errno",
1666
+ "libc",
1667
+ "linux-raw-sys 0.12.1",
1668
+ "windows-sys 0.59.0",
1669
+ ]
1670
+
1671
+ [[package]]
1672
+ name = "rustversion"
1673
+ version = "1.0.22"
1674
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1675
+ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
1676
+
1677
+ [[package]]
1678
+ name = "same-file"
1679
+ version = "1.0.6"
1680
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1681
+ checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
1682
+ dependencies = [
1683
+ "winapi-util",
1684
+ ]
1685
+
1686
+ [[package]]
1687
+ name = "scoped-tls"
1688
+ version = "1.0.1"
1689
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1690
+ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
1691
+
1692
+ [[package]]
1693
+ name = "scopeguard"
1694
+ version = "1.2.0"
1695
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1696
+ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
1697
+
1698
+ [[package]]
1699
+ name = "sctk-adwaita"
1700
+ version = "0.8.3"
1701
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1702
+ checksum = "70b31447ca297092c5a9916fc3b955203157b37c19ca8edde4f52e9843e602c7"
1703
+ dependencies = [
1704
+ "ab_glyph",
1705
+ "log",
1706
+ "memmap2",
1707
+ "smithay-client-toolkit 0.18.1",
1708
+ "tiny-skia",
1709
+ ]
1710
+
1711
+ [[package]]
1712
+ name = "semver"
1713
+ version = "1.0.27"
1714
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1715
+ checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
1716
+
1717
+ [[package]]
1718
+ name = "serde"
1719
+ version = "1.0.228"
1720
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1721
+ checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
1722
+ dependencies = [
1723
+ "serde_core",
1724
+ ]
1725
+
1726
+ [[package]]
1727
+ name = "serde_core"
1728
+ version = "1.0.228"
1729
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1730
+ checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
1731
+ dependencies = [
1732
+ "serde_derive",
1733
+ ]
1734
+
1735
+ [[package]]
1736
+ name = "serde_derive"
1737
+ version = "1.0.228"
1738
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1739
+ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
1740
+ dependencies = [
1741
+ "proc-macro2",
1742
+ "quote",
1743
+ "syn",
1744
+ ]
1745
+
1746
+ [[package]]
1747
+ name = "shlex"
1748
+ version = "1.3.0"
1749
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1750
+ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
1751
+
1752
+ [[package]]
1753
+ name = "simd-adler32"
1754
+ version = "0.3.8"
1755
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1756
+ checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2"
1757
+
1758
+ [[package]]
1759
+ name = "simd_cesu8"
1760
+ version = "1.1.1"
1761
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1762
+ checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33"
1763
+ dependencies = [
1764
+ "rustc_version",
1765
+ "simdutf8",
1766
+ ]
1767
+
1768
+ [[package]]
1769
+ name = "simdutf8"
1770
+ version = "0.1.5"
1771
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1772
+ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
1773
+
1774
+ [[package]]
1775
+ name = "slab"
1776
+ version = "0.4.12"
1777
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1778
+ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
1779
+
1780
+ [[package]]
1781
+ name = "slotmap"
1782
+ version = "1.1.1"
1783
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1784
+ checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038"
1785
+ dependencies = [
1786
+ "version_check",
1787
+ ]
1788
+
1789
+ [[package]]
1790
+ name = "smallvec"
1791
+ version = "1.15.1"
1792
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1793
+ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
1794
+
1795
+ [[package]]
1796
+ name = "smithay-client-toolkit"
1797
+ version = "0.18.1"
1798
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1799
+ checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a"
1800
+ dependencies = [
1801
+ "bitflags 2.11.0",
1802
+ "calloop 0.12.4",
1803
+ "calloop-wayland-source 0.2.0",
1804
+ "cursor-icon",
1805
+ "libc",
1806
+ "log",
1807
+ "memmap2",
1808
+ "rustix 0.38.44",
1809
+ "thiserror 1.0.69",
1810
+ "wayland-backend",
1811
+ "wayland-client",
1812
+ "wayland-csd-frame",
1813
+ "wayland-cursor",
1814
+ "wayland-protocols 0.31.2",
1815
+ "wayland-protocols-wlr 0.2.0",
1816
+ "wayland-scanner",
1817
+ "xkeysym",
1818
+ ]
1819
+
1820
+ [[package]]
1821
+ name = "smithay-client-toolkit"
1822
+ version = "0.20.0"
1823
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1824
+ checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0"
1825
+ dependencies = [
1826
+ "bitflags 2.11.0",
1827
+ "calloop 0.14.4",
1828
+ "calloop-wayland-source 0.4.1",
1829
+ "cursor-icon",
1830
+ "libc",
1831
+ "log",
1832
+ "memmap2",
1833
+ "rustix 1.1.4",
1834
+ "thiserror 2.0.18",
1835
+ "wayland-backend",
1836
+ "wayland-client",
1837
+ "wayland-csd-frame",
1838
+ "wayland-cursor",
1839
+ "wayland-protocols 0.32.11",
1840
+ "wayland-protocols-experimental",
1841
+ "wayland-protocols-misc",
1842
+ "wayland-protocols-wlr 0.3.11",
1843
+ "wayland-scanner",
1844
+ "xkeysym",
1845
+ ]
1846
+
1847
+ [[package]]
1848
+ name = "smithay-clipboard"
1849
+ version = "0.7.3"
1850
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1851
+ checksum = "71704c03f739f7745053bde45fa203a46c58d25bc5c4efba1d9a60e9dba81226"
1852
+ dependencies = [
1853
+ "libc",
1854
+ "smithay-client-toolkit 0.20.0",
1855
+ "wayland-backend",
1856
+ ]
1857
+
1858
+ [[package]]
1859
+ name = "smol_str"
1860
+ version = "0.2.2"
1861
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1862
+ checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead"
1863
+ dependencies = [
1864
+ "serde",
1865
+ ]
1866
+
1867
+ [[package]]
1868
+ name = "stable_deref_trait"
1869
+ version = "1.2.1"
1870
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1871
+ checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
1872
+
1873
+ [[package]]
1874
+ name = "static_assertions"
1875
+ version = "1.1.0"
1876
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1877
+ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
1878
+
1879
+ [[package]]
1880
+ name = "strict-num"
1881
+ version = "0.1.1"
1882
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1883
+ checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731"
1884
+
1885
+ [[package]]
1886
+ name = "syn"
1887
+ version = "2.0.117"
1888
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1889
+ checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
1890
+ dependencies = [
1891
+ "proc-macro2",
1892
+ "quote",
1893
+ "unicode-ident",
1894
+ ]
1895
+
1896
+ [[package]]
1897
+ name = "synstructure"
1898
+ version = "0.13.2"
1899
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1900
+ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
1901
+ dependencies = [
1902
+ "proc-macro2",
1903
+ "quote",
1904
+ "syn",
1905
+ ]
1906
+
1907
+ [[package]]
1908
+ name = "thiserror"
1909
+ version = "1.0.69"
1910
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1911
+ checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
1912
+ dependencies = [
1913
+ "thiserror-impl 1.0.69",
1914
+ ]
1915
+
1916
+ [[package]]
1917
+ name = "thiserror"
1918
+ version = "2.0.18"
1919
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1920
+ checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
1921
+ dependencies = [
1922
+ "thiserror-impl 2.0.18",
1923
+ ]
1924
+
1925
+ [[package]]
1926
+ name = "thiserror-impl"
1927
+ version = "1.0.69"
1928
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1929
+ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
1930
+ dependencies = [
1931
+ "proc-macro2",
1932
+ "quote",
1933
+ "syn",
1934
+ ]
1935
+
1936
+ [[package]]
1937
+ name = "thiserror-impl"
1938
+ version = "2.0.18"
1939
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1940
+ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
1941
+ dependencies = [
1942
+ "proc-macro2",
1943
+ "quote",
1944
+ "syn",
1945
+ ]
1946
+
1947
+ [[package]]
1948
+ name = "tiny-skia"
1949
+ version = "0.11.4"
1950
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1951
+ checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab"
1952
+ dependencies = [
1953
+ "arrayref",
1954
+ "arrayvec",
1955
+ "bytemuck",
1956
+ "cfg-if",
1957
+ "log",
1958
+ "tiny-skia-path",
1959
+ ]
1960
+
1961
+ [[package]]
1962
+ name = "tiny-skia-path"
1963
+ version = "0.11.4"
1964
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1965
+ checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93"
1966
+ dependencies = [
1967
+ "arrayref",
1968
+ "bytemuck",
1969
+ "strict-num",
1970
+ ]
1971
+
1972
+ [[package]]
1973
+ name = "tinystr"
1974
+ version = "0.8.2"
1975
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1976
+ checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
1977
+ dependencies = [
1978
+ "displaydoc",
1979
+ "zerovec",
1980
+ ]
1981
+
1982
+ [[package]]
1983
+ name = "toml_datetime"
1984
+ version = "1.0.0+spec-1.1.0"
1985
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1986
+ checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e"
1987
+ dependencies = [
1988
+ "serde_core",
1989
+ ]
1990
+
1991
+ [[package]]
1992
+ name = "toml_edit"
1993
+ version = "0.25.4+spec-1.1.0"
1994
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1995
+ checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2"
1996
+ dependencies = [
1997
+ "indexmap",
1998
+ "toml_datetime",
1999
+ "toml_parser",
2000
+ "winnow",
2001
+ ]
2002
+
2003
+ [[package]]
2004
+ name = "toml_parser"
2005
+ version = "1.0.9+spec-1.1.0"
2006
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2007
+ checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4"
2008
+ dependencies = [
2009
+ "winnow",
2010
+ ]
2011
+
2012
+ [[package]]
2013
+ name = "tracing"
2014
+ version = "0.1.44"
2015
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2016
+ checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
2017
+ dependencies = [
2018
+ "log",
2019
+ "pin-project-lite",
2020
+ "tracing-attributes",
2021
+ "tracing-core",
2022
+ ]
2023
+
2024
+ [[package]]
2025
+ name = "tracing-attributes"
2026
+ version = "0.1.31"
2027
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2028
+ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
2029
+ dependencies = [
2030
+ "proc-macro2",
2031
+ "quote",
2032
+ "syn",
2033
+ ]
2034
+
2035
+ [[package]]
2036
+ name = "tracing-core"
2037
+ version = "0.1.36"
2038
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2039
+ checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
2040
+ dependencies = [
2041
+ "once_cell",
2042
+ ]
2043
+
2044
+ [[package]]
2045
+ name = "ttf-parser"
2046
+ version = "0.25.1"
2047
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2048
+ checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31"
2049
+
2050
+ [[package]]
2051
+ name = "unicode-ident"
2052
+ version = "1.0.24"
2053
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2054
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
2055
+
2056
+ [[package]]
2057
+ name = "unicode-segmentation"
2058
+ version = "1.12.0"
2059
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2060
+ checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
2061
+
2062
+ [[package]]
2063
+ name = "url"
2064
+ version = "2.5.8"
2065
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2066
+ checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
2067
+ dependencies = [
2068
+ "form_urlencoded",
2069
+ "idna",
2070
+ "percent-encoding",
2071
+ "serde",
2072
+ ]
2073
+
2074
+ [[package]]
2075
+ name = "utf8_iter"
2076
+ version = "1.0.4"
2077
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2078
+ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
2079
+
2080
+ [[package]]
2081
+ name = "version_check"
2082
+ version = "0.9.5"
2083
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2084
+ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
2085
+
2086
+ [[package]]
2087
+ name = "walkdir"
2088
+ version = "2.5.0"
2089
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2090
+ checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
2091
+ dependencies = [
2092
+ "same-file",
2093
+ "winapi-util",
2094
+ ]
2095
+
2096
+ [[package]]
2097
+ name = "wasip2"
2098
+ version = "1.0.2+wasi-0.2.9"
2099
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2100
+ checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
2101
+ dependencies = [
2102
+ "wit-bindgen",
2103
+ ]
2104
+
2105
+ [[package]]
2106
+ name = "wasm-bindgen"
2107
+ version = "0.2.114"
2108
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2109
+ checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e"
2110
+ dependencies = [
2111
+ "cfg-if",
2112
+ "once_cell",
2113
+ "rustversion",
2114
+ "wasm-bindgen-macro",
2115
+ "wasm-bindgen-shared",
2116
+ ]
2117
+
2118
+ [[package]]
2119
+ name = "wasm-bindgen-futures"
2120
+ version = "0.4.64"
2121
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2122
+ checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8"
2123
+ dependencies = [
2124
+ "cfg-if",
2125
+ "futures-util",
2126
+ "js-sys",
2127
+ "once_cell",
2128
+ "wasm-bindgen",
2129
+ "web-sys",
2130
+ ]
2131
+
2132
+ [[package]]
2133
+ name = "wasm-bindgen-macro"
2134
+ version = "0.2.114"
2135
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2136
+ checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6"
2137
+ dependencies = [
2138
+ "quote",
2139
+ "wasm-bindgen-macro-support",
2140
+ ]
2141
+
2142
+ [[package]]
2143
+ name = "wasm-bindgen-macro-support"
2144
+ version = "0.2.114"
2145
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2146
+ checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3"
2147
+ dependencies = [
2148
+ "bumpalo",
2149
+ "proc-macro2",
2150
+ "quote",
2151
+ "syn",
2152
+ "wasm-bindgen-shared",
2153
+ ]
2154
+
2155
+ [[package]]
2156
+ name = "wasm-bindgen-shared"
2157
+ version = "0.2.114"
2158
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2159
+ checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16"
2160
+ dependencies = [
2161
+ "unicode-ident",
2162
+ ]
2163
+
2164
+ [[package]]
2165
+ name = "wayland-backend"
2166
+ version = "0.3.14"
2167
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2168
+ checksum = "aa75f400b7f719bcd68b3f47cd939ba654cedeef690f486db71331eec4c6a406"
2169
+ dependencies = [
2170
+ "cc",
2171
+ "downcast-rs",
2172
+ "rustix 1.1.4",
2173
+ "scoped-tls",
2174
+ "smallvec",
2175
+ "wayland-sys",
2176
+ ]
2177
+
2178
+ [[package]]
2179
+ name = "wayland-client"
2180
+ version = "0.31.13"
2181
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2182
+ checksum = "ab51d9f7c071abeee76007e2b742499e535148035bb835f97aaed1338cf516c3"
2183
+ dependencies = [
2184
+ "bitflags 2.11.0",
2185
+ "rustix 1.1.4",
2186
+ "wayland-backend",
2187
+ "wayland-scanner",
2188
+ ]
2189
+
2190
+ [[package]]
2191
+ name = "wayland-csd-frame"
2192
+ version = "0.3.0"
2193
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2194
+ checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e"
2195
+ dependencies = [
2196
+ "bitflags 2.11.0",
2197
+ "cursor-icon",
2198
+ "wayland-backend",
2199
+ ]
2200
+
2201
+ [[package]]
2202
+ name = "wayland-cursor"
2203
+ version = "0.31.13"
2204
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2205
+ checksum = "4b3298683470fbdc6ca40151dfc48c8f2fd4c41a26e13042f801f85002384091"
2206
+ dependencies = [
2207
+ "rustix 1.1.4",
2208
+ "wayland-client",
2209
+ "xcursor",
2210
+ ]
2211
+
2212
+ [[package]]
2213
+ name = "wayland-protocols"
2214
+ version = "0.31.2"
2215
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2216
+ checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4"
2217
+ dependencies = [
2218
+ "bitflags 2.11.0",
2219
+ "wayland-backend",
2220
+ "wayland-client",
2221
+ "wayland-scanner",
2222
+ ]
2223
+
2224
+ [[package]]
2225
+ name = "wayland-protocols"
2226
+ version = "0.32.11"
2227
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2228
+ checksum = "b23b5df31ceff1328f06ac607591d5ba360cf58f90c8fad4ac8d3a55a3c4aec7"
2229
+ dependencies = [
2230
+ "bitflags 2.11.0",
2231
+ "wayland-backend",
2232
+ "wayland-client",
2233
+ "wayland-scanner",
2234
+ ]
2235
+
2236
+ [[package]]
2237
+ name = "wayland-protocols-experimental"
2238
+ version = "20250721.0.1"
2239
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2240
+ checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1"
2241
+ dependencies = [
2242
+ "bitflags 2.11.0",
2243
+ "wayland-backend",
2244
+ "wayland-client",
2245
+ "wayland-protocols 0.32.11",
2246
+ "wayland-scanner",
2247
+ ]
2248
+
2249
+ [[package]]
2250
+ name = "wayland-protocols-misc"
2251
+ version = "0.3.11"
2252
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2253
+ checksum = "429b99200febaf95d4f4e46deff6fe4382bcff3280ee16a41cf887b3c3364984"
2254
+ dependencies = [
2255
+ "bitflags 2.11.0",
2256
+ "wayland-backend",
2257
+ "wayland-client",
2258
+ "wayland-protocols 0.32.11",
2259
+ "wayland-scanner",
2260
+ ]
2261
+
2262
+ [[package]]
2263
+ name = "wayland-protocols-plasma"
2264
+ version = "0.2.0"
2265
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2266
+ checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479"
2267
+ dependencies = [
2268
+ "bitflags 2.11.0",
2269
+ "wayland-backend",
2270
+ "wayland-client",
2271
+ "wayland-protocols 0.31.2",
2272
+ "wayland-scanner",
2273
+ ]
2274
+
2275
+ [[package]]
2276
+ name = "wayland-protocols-wlr"
2277
+ version = "0.2.0"
2278
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2279
+ checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6"
2280
+ dependencies = [
2281
+ "bitflags 2.11.0",
2282
+ "wayland-backend",
2283
+ "wayland-client",
2284
+ "wayland-protocols 0.31.2",
2285
+ "wayland-scanner",
2286
+ ]
2287
 
2288
  [[package]]
2289
+ name = "wayland-protocols-wlr"
2290
+ version = "0.3.11"
2291
  source = "registry+https://github.com/rust-lang/crates.io-index"
2292
+ checksum = "78248e4cc0eff8163370ba5c158630dcae1f3497a586b826eca2ef5f348d6235"
2293
  dependencies = [
2294
+ "bitflags 2.11.0",
2295
+ "wayland-backend",
2296
+ "wayland-client",
2297
+ "wayland-protocols 0.32.11",
2298
+ "wayland-scanner",
2299
  ]
2300
 
2301
  [[package]]
2302
+ name = "wayland-scanner"
2303
+ version = "0.31.9"
2304
  source = "registry+https://github.com/rust-lang/crates.io-index"
2305
+ checksum = "c86287151a309799b821ca709b7345a048a2956af05957c89cb824ab919fa4e3"
2306
+ dependencies = [
2307
+ "proc-macro2",
2308
+ "quick-xml",
2309
+ "quote",
2310
+ ]
2311
 
2312
  [[package]]
2313
+ name = "wayland-sys"
2314
+ version = "0.31.10"
2315
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2316
+ checksum = "374f6b70e8e0d6bf9461a32988fd553b59ff630964924dad6e4a4eb6bd538d17"
2317
  dependencies = [
2318
+ "dlib",
2319
+ "log",
2320
+ "once_cell",
2321
+ "pkg-config",
2322
  ]
2323
 
2324
  [[package]]
2325
+ name = "web-sys"
2326
+ version = "0.3.91"
2327
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2328
+ checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9"
2329
  dependencies = [
2330
+ "js-sys",
2331
+ "wasm-bindgen",
 
2332
  ]
2333
 
2334
  [[package]]
2335
+ name = "web-time"
2336
+ version = "0.2.4"
2337
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2338
+ checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0"
2339
  dependencies = [
2340
+ "js-sys",
2341
+ "wasm-bindgen",
 
 
2342
  ]
2343
 
2344
  [[package]]
2345
+ name = "webbrowser"
2346
+ version = "1.2.0"
2347
  source = "registry+https://github.com/rust-lang/crates.io-index"
2348
+ checksum = "fe985f41e291eecef5e5c0770a18d28390addb03331c043964d9e916453d6f16"
2349
+ dependencies = [
2350
+ "core-foundation 0.10.1",
2351
+ "jni 0.22.3",
2352
+ "log",
2353
+ "ndk-context",
2354
+ "objc2 0.6.4",
2355
+ "objc2-foundation 0.3.2",
2356
+ "url",
2357
+ "web-sys",
2358
+ ]
2359
 
2360
  [[package]]
2361
+ name = "winapi"
2362
+ version = "0.3.9"
2363
  source = "registry+https://github.com/rust-lang/crates.io-index"
2364
+ checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
2365
  dependencies = [
2366
+ "winapi-i686-pc-windows-gnu",
2367
+ "winapi-x86_64-pc-windows-gnu",
2368
  ]
2369
 
2370
  [[package]]
2371
+ name = "winapi-i686-pc-windows-gnu"
2372
+ version = "0.4.0"
2373
  source = "registry+https://github.com/rust-lang/crates.io-index"
2374
+ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
2375
+
2376
+ [[package]]
2377
+ name = "winapi-util"
2378
+ version = "0.1.11"
2379
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2380
+ checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
2381
  dependencies = [
2382
+ "windows-sys 0.59.0",
2383
  ]
2384
 
2385
  [[package]]
2386
+ name = "winapi-x86_64-pc-windows-gnu"
2387
+ version = "0.4.0"
2388
  source = "registry+https://github.com/rust-lang/crates.io-index"
2389
+ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
2390
 
2391
  [[package]]
2392
+ name = "windows-link"
2393
+ version = "0.2.1"
2394
  source = "registry+https://github.com/rust-lang/crates.io-index"
2395
+ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
2396
 
2397
  [[package]]
2398
+ name = "windows-sys"
2399
+ version = "0.45.0"
2400
  source = "registry+https://github.com/rust-lang/crates.io-index"
2401
+ checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
2402
  dependencies = [
2403
+ "windows-targets 0.42.2",
 
 
2404
  ]
2405
 
2406
  [[package]]
2407
+ name = "windows-sys"
2408
+ version = "0.48.0"
2409
  source = "registry+https://github.com/rust-lang/crates.io-index"
2410
+ checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
2411
  dependencies = [
2412
+ "windows-targets 0.48.5",
 
 
 
2413
  ]
2414
 
2415
  [[package]]
2416
+ name = "windows-sys"
2417
+ version = "0.59.0"
2418
  source = "registry+https://github.com/rust-lang/crates.io-index"
2419
+ checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
2420
  dependencies = [
2421
+ "windows-targets 0.52.6",
 
 
2422
  ]
2423
 
2424
  [[package]]
2425
+ name = "windows-sys"
2426
+ version = "0.61.2"
2427
  source = "registry+https://github.com/rust-lang/crates.io-index"
2428
+ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
2429
  dependencies = [
2430
+ "windows-link",
2431
  ]
2432
 
2433
  [[package]]
2434
+ name = "windows-targets"
2435
+ version = "0.42.2"
2436
  source = "registry+https://github.com/rust-lang/crates.io-index"
2437
+ checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
2438
+ dependencies = [
2439
+ "windows_aarch64_gnullvm 0.42.2",
2440
+ "windows_aarch64_msvc 0.42.2",
2441
+ "windows_i686_gnu 0.42.2",
2442
+ "windows_i686_msvc 0.42.2",
2443
+ "windows_x86_64_gnu 0.42.2",
2444
+ "windows_x86_64_gnullvm 0.42.2",
2445
+ "windows_x86_64_msvc 0.42.2",
2446
+ ]
2447
 
2448
  [[package]]
2449
+ name = "windows-targets"
2450
+ version = "0.48.5"
2451
  source = "registry+https://github.com/rust-lang/crates.io-index"
2452
+ checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
2453
  dependencies = [
2454
+ "windows_aarch64_gnullvm 0.48.5",
2455
+ "windows_aarch64_msvc 0.48.5",
2456
+ "windows_i686_gnu 0.48.5",
2457
+ "windows_i686_msvc 0.48.5",
2458
+ "windows_x86_64_gnu 0.48.5",
2459
+ "windows_x86_64_gnullvm 0.48.5",
2460
+ "windows_x86_64_msvc 0.48.5",
2461
  ]
2462
 
2463
  [[package]]
 
2466
  source = "registry+https://github.com/rust-lang/crates.io-index"
2467
  checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
2468
  dependencies = [
2469
+ "windows_aarch64_gnullvm 0.52.6",
2470
+ "windows_aarch64_msvc 0.52.6",
2471
+ "windows_i686_gnu 0.52.6",
2472
  "windows_i686_gnullvm",
2473
+ "windows_i686_msvc 0.52.6",
2474
+ "windows_x86_64_gnu 0.52.6",
2475
+ "windows_x86_64_gnullvm 0.52.6",
2476
+ "windows_x86_64_msvc 0.52.6",
2477
  ]
2478
 
2479
+ [[package]]
2480
+ name = "windows_aarch64_gnullvm"
2481
+ version = "0.42.2"
2482
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2483
+ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
2484
+
2485
+ [[package]]
2486
+ name = "windows_aarch64_gnullvm"
2487
+ version = "0.48.5"
2488
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2489
+ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
2490
+
2491
  [[package]]
2492
  name = "windows_aarch64_gnullvm"
2493
  version = "0.52.6"
2494
  source = "registry+https://github.com/rust-lang/crates.io-index"
2495
  checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
2496
 
2497
+ [[package]]
2498
+ name = "windows_aarch64_msvc"
2499
+ version = "0.42.2"
2500
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2501
+ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
2502
+
2503
+ [[package]]
2504
+ name = "windows_aarch64_msvc"
2505
+ version = "0.48.5"
2506
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2507
+ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
2508
+
2509
  [[package]]
2510
  name = "windows_aarch64_msvc"
2511
  version = "0.52.6"
2512
  source = "registry+https://github.com/rust-lang/crates.io-index"
2513
  checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
2514
 
2515
+ [[package]]
2516
+ name = "windows_i686_gnu"
2517
+ version = "0.42.2"
2518
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2519
+ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
2520
+
2521
+ [[package]]
2522
+ name = "windows_i686_gnu"
2523
+ version = "0.48.5"
2524
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2525
+ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
2526
+
2527
  [[package]]
2528
  name = "windows_i686_gnu"
2529
  version = "0.52.6"
 
2536
  source = "registry+https://github.com/rust-lang/crates.io-index"
2537
  checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
2538
 
2539
+ [[package]]
2540
+ name = "windows_i686_msvc"
2541
+ version = "0.42.2"
2542
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2543
+ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
2544
+
2545
+ [[package]]
2546
+ name = "windows_i686_msvc"
2547
+ version = "0.48.5"
2548
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2549
+ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
2550
+
2551
  [[package]]
2552
  name = "windows_i686_msvc"
2553
  version = "0.52.6"
2554
  source = "registry+https://github.com/rust-lang/crates.io-index"
2555
  checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
2556
 
2557
+ [[package]]
2558
+ name = "windows_x86_64_gnu"
2559
+ version = "0.42.2"
2560
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2561
+ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
2562
+
2563
+ [[package]]
2564
+ name = "windows_x86_64_gnu"
2565
+ version = "0.48.5"
2566
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2567
+ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
2568
+
2569
  [[package]]
2570
  name = "windows_x86_64_gnu"
2571
  version = "0.52.6"
2572
  source = "registry+https://github.com/rust-lang/crates.io-index"
2573
  checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
2574
 
2575
+ [[package]]
2576
+ name = "windows_x86_64_gnullvm"
2577
+ version = "0.42.2"
2578
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2579
+ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
2580
+
2581
+ [[package]]
2582
+ name = "windows_x86_64_gnullvm"
2583
+ version = "0.48.5"
2584
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2585
+ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
2586
+
2587
  [[package]]
2588
  name = "windows_x86_64_gnullvm"
2589
  version = "0.52.6"
2590
  source = "registry+https://github.com/rust-lang/crates.io-index"
2591
  checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
2592
 
2593
+ [[package]]
2594
+ name = "windows_x86_64_msvc"
2595
+ version = "0.42.2"
2596
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2597
+ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
2598
+
2599
+ [[package]]
2600
+ name = "windows_x86_64_msvc"
2601
+ version = "0.48.5"
2602
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2603
+ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
2604
+
2605
  [[package]]
2606
  name = "windows_x86_64_msvc"
2607
  version = "0.52.6"
2608
  source = "registry+https://github.com/rust-lang/crates.io-index"
2609
  checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
2610
+
2611
+ [[package]]
2612
+ name = "winit"
2613
+ version = "0.29.15"
2614
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2615
+ checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca"
2616
+ dependencies = [
2617
+ "ahash",
2618
+ "android-activity",
2619
+ "atomic-waker",
2620
+ "bitflags 2.11.0",
2621
+ "bytemuck",
2622
+ "calloop 0.12.4",
2623
+ "cfg_aliases",
2624
+ "core-foundation 0.9.4",
2625
+ "core-graphics",
2626
+ "cursor-icon",
2627
+ "icrate",
2628
+ "js-sys",
2629
+ "libc",
2630
+ "log",
2631
+ "memmap2",
2632
+ "ndk",
2633
+ "ndk-sys",
2634
+ "objc2 0.4.1",
2635
+ "once_cell",
2636
+ "orbclient",
2637
+ "percent-encoding",
2638
+ "raw-window-handle 0.5.2",
2639
+ "raw-window-handle 0.6.2",
2640
+ "redox_syscall 0.3.5",
2641
+ "rustix 0.38.44",
2642
+ "sctk-adwaita",
2643
+ "smithay-client-toolkit 0.18.1",
2644
+ "smol_str",
2645
+ "unicode-segmentation",
2646
+ "wasm-bindgen",
2647
+ "wasm-bindgen-futures",
2648
+ "wayland-backend",
2649
+ "wayland-client",
2650
+ "wayland-protocols 0.31.2",
2651
+ "wayland-protocols-plasma",
2652
+ "web-sys",
2653
+ "web-time",
2654
+ "windows-sys 0.48.0",
2655
+ "x11-dl",
2656
+ "x11rb",
2657
+ "xkbcommon-dl",
2658
+ ]
2659
+
2660
+ [[package]]
2661
+ name = "winnow"
2662
+ version = "0.7.15"
2663
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2664
+ checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
2665
+ dependencies = [
2666
+ "memchr",
2667
+ ]
2668
+
2669
+ [[package]]
2670
+ name = "wit-bindgen"
2671
+ version = "0.51.0"
2672
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2673
+ checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
2674
+
2675
+ [[package]]
2676
+ name = "writeable"
2677
+ version = "0.6.2"
2678
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2679
+ checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
2680
+
2681
+ [[package]]
2682
+ name = "x11-dl"
2683
+ version = "2.21.0"
2684
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2685
+ checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f"
2686
+ dependencies = [
2687
+ "libc",
2688
+ "once_cell",
2689
+ "pkg-config",
2690
+ ]
2691
+
2692
+ [[package]]
2693
+ name = "x11rb"
2694
+ version = "0.13.2"
2695
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2696
+ checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414"
2697
+ dependencies = [
2698
+ "as-raw-xcb-connection",
2699
+ "gethostname",
2700
+ "libc",
2701
+ "libloading",
2702
+ "once_cell",
2703
+ "rustix 1.1.4",
2704
+ "x11rb-protocol",
2705
+ ]
2706
+
2707
+ [[package]]
2708
+ name = "x11rb-protocol"
2709
+ version = "0.13.2"
2710
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2711
+ checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd"
2712
+
2713
+ [[package]]
2714
+ name = "xcursor"
2715
+ version = "0.3.10"
2716
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2717
+ checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b"
2718
+
2719
+ [[package]]
2720
+ name = "xkbcommon-dl"
2721
+ version = "0.4.2"
2722
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2723
+ checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5"
2724
+ dependencies = [
2725
+ "bitflags 2.11.0",
2726
+ "dlib",
2727
+ "log",
2728
+ "once_cell",
2729
+ "xkeysym",
2730
+ ]
2731
+
2732
+ [[package]]
2733
+ name = "xkeysym"
2734
+ version = "0.2.1"
2735
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2736
+ checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56"
2737
+
2738
+ [[package]]
2739
+ name = "xml-rs"
2740
+ version = "0.8.28"
2741
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2742
+ checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f"
2743
+
2744
+ [[package]]
2745
+ name = "yoke"
2746
+ version = "0.8.1"
2747
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2748
+ checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
2749
+ dependencies = [
2750
+ "stable_deref_trait",
2751
+ "yoke-derive",
2752
+ "zerofrom",
2753
+ ]
2754
+
2755
+ [[package]]
2756
+ name = "yoke-derive"
2757
+ version = "0.8.1"
2758
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2759
+ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
2760
+ dependencies = [
2761
+ "proc-macro2",
2762
+ "quote",
2763
+ "syn",
2764
+ "synstructure",
2765
+ ]
2766
+
2767
+ [[package]]
2768
+ name = "zerocopy"
2769
+ version = "0.8.42"
2770
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2771
+ checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3"
2772
+ dependencies = [
2773
+ "zerocopy-derive",
2774
+ ]
2775
+
2776
+ [[package]]
2777
+ name = "zerocopy-derive"
2778
+ version = "0.8.42"
2779
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2780
+ checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f"
2781
+ dependencies = [
2782
+ "proc-macro2",
2783
+ "quote",
2784
+ "syn",
2785
+ ]
2786
+
2787
+ [[package]]
2788
+ name = "zerofrom"
2789
+ version = "0.1.6"
2790
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2791
+ checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
2792
+ dependencies = [
2793
+ "zerofrom-derive",
2794
+ ]
2795
+
2796
+ [[package]]
2797
+ name = "zerofrom-derive"
2798
+ version = "0.1.6"
2799
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2800
+ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
2801
+ dependencies = [
2802
+ "proc-macro2",
2803
+ "quote",
2804
+ "syn",
2805
+ "synstructure",
2806
+ ]
2807
+
2808
+ [[package]]
2809
+ name = "zerotrie"
2810
+ version = "0.2.3"
2811
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2812
+ checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
2813
+ dependencies = [
2814
+ "displaydoc",
2815
+ "yoke",
2816
+ "zerofrom",
2817
+ ]
2818
+
2819
+ [[package]]
2820
+ name = "zerovec"
2821
+ version = "0.11.5"
2822
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2823
+ checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
2824
+ dependencies = [
2825
+ "yoke",
2826
+ "zerofrom",
2827
+ "zerovec-derive",
2828
+ ]
2829
+
2830
+ [[package]]
2831
+ name = "zerovec-derive"
2832
+ version = "0.11.2"
2833
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2834
+ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
2835
+ dependencies = [
2836
+ "proc-macro2",
2837
+ "quote",
2838
+ "syn",
2839
+ ]
crates/openwa-core/src/address.rs CHANGED
@@ -63,6 +63,12 @@ pub mod va {
63
  pub const CTASK_SPRITE_ANIM_VTABLE: u32 = 0x0066_9D00;
64
  /// CTaskCPU vtable - AI/CPU bot controller (1 per game, constructor 0x548620)
65
  pub const CTASK_CPU_VTABLE: u32 = 0x0066_9D54;
 
 
 
 
 
 
66
  /// Sprite vtable (0x70-byte objects, 8 entries)
67
  pub const SPRITE_VTABLE: u32 = 0x0066_418C;
68
 
 
63
  pub const CTASK_SPRITE_ANIM_VTABLE: u32 = 0x0066_9D00;
64
  /// CTaskCPU vtable - AI/CPU bot controller (1 per game, constructor 0x548620)
65
  pub const CTASK_CPU_VTABLE: u32 = 0x0066_9D54;
66
+ /// CTaskMine vtable - mine entity (constructor 0x506660)
67
+ pub const CTASK_MINE_VTABLE: u32 = 0x0066_43E8;
68
+ /// CTaskOilDrum vtable - oil drum entity (constructor 0x504AF0)
69
+ pub const CTASK_OILDRUM_VTABLE: u32 = 0x0066_4338;
70
+ /// CTaskCloud vtable - cloud/airstrike entity (constructor 0x5482E0)
71
+ pub const CTASK_CLOUD_VTABLE: u32 = 0x0066_9D38;
72
  /// Sprite vtable (0x70-byte objects, 8 entries)
73
  pub const SPRITE_VTABLE: u32 = 0x0066_418C;
74
 
crates/openwa-debugui/Cargo.toml ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ [package]
2
+ name = "openwa-debugui"
3
+ version = "0.1.0"
4
+ edition = "2021"
5
+ description = "Immediate-mode debug UI for OpenWA (egui floating window)"
6
+
7
+ [dependencies]
8
+ openwa-core = { path = "../openwa-core" }
9
+ eframe = { version = "0.28", default-features = false, features = ["glow", "default_fonts"] }
10
+ winit = "0.29"
crates/openwa-debugui/src/app.rs ADDED
@@ -0,0 +1,403 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ use eframe::egui;
2
+ use openwa_core::address::va;
3
+ use openwa_core::ddgame::DDGame;
4
+ use openwa_core::ddgame_wrapper::DDGameWrapper;
5
+ use openwa_core::rebase::rb;
6
+ use openwa_core::task::{CTask, CTaskWorm, SharedDataTable};
7
+
8
+ use crate::log;
9
+
10
+ // ---------------------------------------------------------------------------
11
+ // Known task types for census display
12
+ // ---------------------------------------------------------------------------
13
+
14
+ const KNOWN_VTABLES: &[(u32, &str)] = &[
15
+ (va::CTASK_WORM_VTABLE, "CTaskWorm"),
16
+ (va::CTASK_LAND_VTABLE, "CTaskLand"),
17
+ (va::CTASK_TURN_GAME_VTABLE, "CTaskTurnGame"),
18
+ (va::CTASK_TEAM_VTABLE, "CTaskTeam"),
19
+ (va::CTASK_FILTER_VTABLE, "CTaskFilter"),
20
+ (va::CTASK_DIRT_VTABLE, "CTaskDirt"),
21
+ (va::CTASK_SPRITE_ANIM_VTABLE, "CTaskSpriteAnim"),
22
+ (va::CTASK_CPU_VTABLE, "CTaskCPU"),
23
+ (va::CTASK_MINE_VTABLE, "CTaskMine"),
24
+ (va::CTASK_OILDRUM_VTABLE, "CTaskOilDrum"),
25
+ (va::CTASK_CLOUD_VTABLE, "CTaskCloud"),
26
+ ];
27
+
28
+ fn vtable_name(runtime_vtable: u32) -> Option<&'static str> {
29
+ KNOWN_VTABLES.iter()
30
+ .find(|&&(ghidra_va, _)| rb(ghidra_va) == runtime_vtable)
31
+ .map(|&(_, name)| name)
32
+ }
33
+
34
+ /// Returns a display name for the entity at `addr`.
35
+ /// Tries the known-vtable map first; falls back to CTask.class_type.
36
+ unsafe fn entity_type_name(addr: u32) -> String {
37
+ if addr == 0 { return "(null)".to_owned(); }
38
+ let vtable = *(addr as *const u32);
39
+ if let Some(name) = vtable_name(vtable) {
40
+ return name.to_owned();
41
+ }
42
+ let task = addr as *const CTask;
43
+ format!("{:?}", (*task).class_type)
44
+ }
45
+
46
+ /// One-line label for a task: "TypeName @ 0xADDR"
47
+ unsafe fn entity_label(addr: u32) -> String {
48
+ if addr == 0 { return "(null)".to_owned(); }
49
+ format!("{} @ {:#010X}", entity_type_name(addr), addr)
50
+ }
51
+
52
+ // ---------------------------------------------------------------------------
53
+ // Game-memory helpers (all unsafe — call from the UI update function only)
54
+ // ---------------------------------------------------------------------------
55
+
56
+ /// Returns a pointer to DDGame, or None if not in-game.
57
+ unsafe fn get_ddgame() -> Option<*const DDGame> {
58
+ let session_ptr = *(rb(va::G_GAME_SESSION) as *const u32);
59
+ if session_ptr == 0 { return None; }
60
+ let wrapper_addr = *((session_ptr + 0xA0) as *const u32);
61
+ if wrapper_addr == 0 { return None; }
62
+ let ddgame_ptr = (*(wrapper_addr as *const DDGameWrapper)).ddgame;
63
+ if ddgame_ptr.is_null() { return None; }
64
+ Some(ddgame_ptr)
65
+ }
66
+
67
+ /// Returns a SharedDataTable via CTaskLand, or None if map not loaded.
68
+ unsafe fn get_shared_table(ddgame: *const DDGame) -> Option<SharedDataTable> {
69
+ let task_land = (*ddgame).task_land;
70
+ if task_land.is_null() { return None; }
71
+ let shared_data = (*(task_land as *const CTask)).shared_data;
72
+ if shared_data.is_null() { return None; }
73
+ Some(SharedDataTable::from_ptr(shared_data))
74
+ }
75
+
76
+ /// Read child task pointers from a CTask's children array.
77
+ ///
78
+ /// The array is **sparse**: slots are nulled when a child is removed rather than
79
+ /// compacted. `children_size` is the slot high-watermark (loop upper bound used
80
+ /// by CTask::HandleMessage), not the live-child count. We return all slots up to
81
+ /// that bound so the caller can filter nulls and display the live set.
82
+ unsafe fn read_children(task: *const CTask) -> Vec<u32> {
83
+ let slots = (*task).children_size as usize;
84
+ let data = (*task).children_data as *const u32;
85
+ if data.is_null() || slots == 0 { return Vec::new(); }
86
+ // Hard safety cap: 4096 slots × 4 bytes = 16 KB max read
87
+ let slots = slots.min(4096);
88
+ (0..slots).map(|i| *data.add(i)).collect()
89
+ }
90
+
91
+ // ---------------------------------------------------------------------------
92
+ // DebugApp
93
+ // ---------------------------------------------------------------------------
94
+
95
+ pub struct DebugApp {
96
+ /// Currently selected entity address for the struct inspector.
97
+ selected_entity: Option<u32>,
98
+ /// Navigation history — addresses we came from (supports ← Back).
99
+ nav_history: Vec<u32>,
100
+ /// Whether the log panel should auto-scroll to the bottom.
101
+ log_auto_scroll: bool,
102
+ }
103
+
104
+ impl Default for DebugApp {
105
+ fn default() -> Self {
106
+ Self { selected_entity: None, nav_history: Vec::new(), log_auto_scroll: true }
107
+ }
108
+ }
109
+
110
+ impl DebugApp {
111
+ /// Navigate to `addr`, pushing the current selection onto the history stack.
112
+ fn navigate_to(&mut self, addr: u32) {
113
+ if let Some(cur) = self.selected_entity {
114
+ if cur != addr {
115
+ self.nav_history.push(cur);
116
+ }
117
+ }
118
+ self.selected_entity = Some(addr);
119
+ }
120
+
121
+ /// Navigate back to the previous address, if any.
122
+ fn navigate_back(&mut self) {
123
+ if let Some(prev) = self.nav_history.pop() {
124
+ self.selected_entity = Some(prev);
125
+ }
126
+ }
127
+ }
128
+
129
+ impl eframe::App for DebugApp {
130
+ fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
131
+ // Repaint at ~30 fps so the display stays live.
132
+ ctx.request_repaint_after(std::time::Duration::from_millis(33));
133
+
134
+ egui::SidePanel::right("inspector_panel")
135
+ .min_width(260.0)
136
+ .default_width(300.0)
137
+ .show(ctx, |ui| {
138
+ // Collect navigation actions from the inspector into local vars
139
+ // to avoid borrowing `self` twice inside the closure.
140
+ let mut navigate_to: Option<u32> = None;
141
+ let mut go_back = false;
142
+ self.show_inspector(ui, &mut navigate_to, &mut go_back);
143
+ if go_back { self.navigate_back(); }
144
+ if let Some(addr) = navigate_to { self.navigate_to(addr); }
145
+ });
146
+
147
+ egui::TopBottomPanel::bottom("log_panel")
148
+ .min_height(140.0)
149
+ .default_height(160.0)
150
+ .show(ctx, |ui| {
151
+ self.show_log(ui);
152
+ });
153
+
154
+ egui::CentralPanel::default().show(ctx, |ui| {
155
+ let mut navigate_to: Option<u32> = None;
156
+ self.show_census(ui, &mut navigate_to);
157
+ if let Some(addr) = navigate_to { self.navigate_to(addr); }
158
+ });
159
+ }
160
+ }
161
+
162
+ // ---------------------------------------------------------------------------
163
+ // Panel: Entity Census
164
+ // ---------------------------------------------------------------------------
165
+
166
+ impl DebugApp {
167
+ fn show_census(&mut self, ui: &mut egui::Ui, navigate_to: &mut Option<u32>) {
168
+ ui.heading("Entity Census");
169
+
170
+ let ddgame = unsafe { get_ddgame() };
171
+ let Some(ddgame) = ddgame else {
172
+ ui.colored_label(egui::Color32::YELLOW, "No game session — waiting...");
173
+ return;
174
+ };
175
+
176
+ let table = unsafe { get_shared_table(ddgame) };
177
+ let Some(table) = table else {
178
+ ui.colored_label(egui::Color32::YELLOW, "Map not loaded yet.");
179
+ return;
180
+ };
181
+
182
+ let mut rows: Vec<(u32, u32)> = Vec::new();
183
+ unsafe {
184
+ for node in table.iter() {
185
+ let entity = (*node).entity as u32;
186
+ if entity == 0 { continue; }
187
+ let vtable = *(entity as *const u32);
188
+ rows.push((vtable, entity));
189
+ }
190
+ }
191
+
192
+ ui.label(format!("{} entities total", rows.len()));
193
+ ui.separator();
194
+
195
+ egui::ScrollArea::vertical().show(ui, |ui| {
196
+ egui::Grid::new("census_grid")
197
+ .striped(true)
198
+ .min_col_width(60.0)
199
+ .show(ui, |ui| {
200
+ ui.strong("Type");
201
+ ui.strong("Address");
202
+ ui.strong("Vtable");
203
+ ui.end_row();
204
+
205
+ for &(vtable, entity) in &rows {
206
+ let name = unsafe { entity_type_name(entity) };
207
+ let is_selected = self.selected_entity == Some(entity);
208
+ if ui.selectable_label(is_selected, name).clicked() {
209
+ *navigate_to = Some(entity);
210
+ }
211
+ ui.label(format!("{:#010X}", entity));
212
+ ui.label(format!("{:#010X}", vtable));
213
+ ui.end_row();
214
+ }
215
+ });
216
+ });
217
+ }
218
+ }
219
+
220
+ // ---------------------------------------------------------------------------
221
+ // Panel: Struct Inspector
222
+ // ---------------------------------------------------------------------------
223
+
224
+ impl DebugApp {
225
+ fn show_inspector(
226
+ &mut self,
227
+ ui: &mut egui::Ui,
228
+ navigate_to: &mut Option<u32>,
229
+ go_back: &mut bool,
230
+ ) {
231
+ // Navigation bar
232
+ ui.horizontal(|ui| {
233
+ ui.heading("Inspector");
234
+ ui.add_space(8.0);
235
+ if ui.add_enabled(!self.nav_history.is_empty(), egui::Button::new("← Back")).clicked() {
236
+ *go_back = true;
237
+ }
238
+ if !self.nav_history.is_empty() {
239
+ ui.weak(format!("({} deep)", self.nav_history.len()));
240
+ }
241
+ });
242
+
243
+ let Some(addr) = self.selected_entity else {
244
+ ui.colored_label(egui::Color32::GRAY, "Select an entity in the census.");
245
+ return;
246
+ };
247
+
248
+ if addr == 0 {
249
+ ui.label("(null entity)");
250
+ return;
251
+ }
252
+
253
+ unsafe {
254
+ let vtable = *(addr as *const u32);
255
+ let name = entity_type_name(addr);
256
+
257
+ ui.label(format!("Entity: {:#010X}", addr));
258
+ ui.label(format!("Type: {}", name));
259
+ ui.label(format!("Vtable: {:#010X}", vtable));
260
+ ui.separator();
261
+
262
+ let task = addr as *const CTask;
263
+
264
+ // --- CTask base ---
265
+ egui::CollapsingHeader::new("CTask base")
266
+ .default_open(true)
267
+ .show(ui, |ui| {
268
+ egui::Grid::new("ctask_grid").striped(true).show(ui, |ui| {
269
+ // Parent — clickable link
270
+ let parent = (*task).parent as u32;
271
+ ui.label("parent");
272
+ if parent != 0 {
273
+ if ui.link(entity_label(parent)).clicked() {
274
+ *navigate_to = Some(parent);
275
+ }
276
+ } else {
277
+ ui.label("(none)");
278
+ }
279
+ ui.end_row();
280
+
281
+ // children_size = slot high-watermark (sparse array); live = non-null slots
282
+ ui.label("child slots"); ui.label(format!("{} used / {} cap", (*task).children_size, (*task).children_max_size)); ui.end_row();
283
+ ui.label("class_type"); ui.label(format!("{:?}", (*task).class_type)); ui.end_row();
284
+ ui.label("shared_data"); ui.label(format!("{:#010X}", (*task).shared_data as u32)); ui.end_row();
285
+ ui.label("owns_data"); ui.label(format!("{}", (*task).owns_shared_data)); ui.end_row();
286
+ ui.label("ddgame"); ui.label(format!("{:#010X}", (*task).ddgame as u32)); ui.end_row();
287
+ });
288
+ });
289
+
290
+ // --- Children tree ---
291
+ // read_children returns all slots (sparse); filter nulls for live count.
292
+ let children = read_children(task);
293
+ let live_count = children.iter().filter(|&&a| a != 0).count();
294
+ let slot_count = (*task).children_size as usize;
295
+ if live_count > 0 || slot_count > 0 {
296
+ egui::CollapsingHeader::new(format!("Children ({} live / {} slots)", live_count, slot_count))
297
+ .default_open(true)
298
+ .show(ui, |ui| {
299
+ for child_addr in &children {
300
+ let child_addr = *child_addr;
301
+ if child_addr == 0 { continue; }
302
+ let child_name = entity_type_name(child_addr);
303
+
304
+ // Expand inline if the child itself has children
305
+ let child_task = child_addr as *const CTask;
306
+ let grandchild_count = (*child_task).children_size;
307
+
308
+ if grandchild_count > 0 {
309
+ // Show as a sub-collapsing header with its own children
310
+ let header_label = format!(
311
+ "{} @ {:#010X} ({} children)",
312
+ child_name, child_addr, grandchild_count
313
+ );
314
+ egui::CollapsingHeader::new(&header_label)
315
+ .id_source(child_addr)
316
+ .default_open(false)
317
+ .show(ui, |ui| {
318
+ // Link to inspect this child in detail
319
+ if ui.link("→ Inspect").clicked() {
320
+ *navigate_to = Some(child_addr);
321
+ }
322
+ // Show grandchildren
323
+ let grandchildren = read_children(child_task);
324
+ for gc_addr in &grandchildren {
325
+ let gc_addr = *gc_addr;
326
+ if gc_addr == 0 { continue; }
327
+ if ui.link(entity_label(gc_addr)).clicked() {
328
+ *navigate_to = Some(gc_addr);
329
+ }
330
+ }
331
+ });
332
+ } else {
333
+ // Leaf child — single clickable link
334
+ let label = format!(" {} @ {:#010X}", child_name, child_addr);
335
+ if ui.link(label).clicked() {
336
+ *navigate_to = Some(child_addr);
337
+ }
338
+ }
339
+ }
340
+ });
341
+ }
342
+
343
+ // --- CTaskWorm-specific fields ---
344
+ if name == "CTaskWorm" || (*task).class_type == openwa_core::class_type::ClassType::Worm {
345
+ let worm = addr as *const CTaskWorm;
346
+ egui::CollapsingHeader::new("CTaskWorm")
347
+ .default_open(true)
348
+ .show(ui, |ui| {
349
+ egui::Grid::new("worm_grid").striped(true).show(ui, |ui| {
350
+ ui.label("state"); ui.label(format!("{:#04X}", (*worm).state())); ui.end_row();
351
+ ui.label("team_index"); ui.label(format!("{}", (*worm).team_index)); ui.end_row();
352
+ ui.label("worm_index"); ui.label(format!("{}", (*worm).worm_index)); ui.end_row();
353
+ ui.label("pos_x"); ui.label(format!("{:.2}", (*worm).base.pos_x.to_f32())); ui.end_row();
354
+ ui.label("pos_y"); ui.label(format!("{:.2}", (*worm).base.pos_y.to_f32())); ui.end_row();
355
+ ui.label("speed_x"); ui.label(format!("{:.4}", (*worm).base.speed_x.to_f32())); ui.end_row();
356
+ ui.label("speed_y"); ui.label(format!("{:.4}", (*worm).base.speed_y.to_f32())); ui.end_row();
357
+ let name_bytes = &(*worm).worm_name;
358
+ let nul = name_bytes.iter().position(|&b| b == 0).unwrap_or(name_bytes.len());
359
+ let worm_name = std::str::from_utf8(&name_bytes[..nul]).unwrap_or("?");
360
+ ui.label("name"); ui.label(worm_name); ui.end_row();
361
+ });
362
+ });
363
+ }
364
+
365
+ }
366
+ }
367
+ }
368
+
369
+ // ---------------------------------------------------------------------------
370
+ // Panel: Log Stream
371
+ // ---------------------------------------------------------------------------
372
+
373
+ impl DebugApp {
374
+ fn show_log(&mut self, ui: &mut egui::Ui) {
375
+ ui.horizontal(|ui| {
376
+ ui.heading("Log");
377
+ ui.checkbox(&mut self.log_auto_scroll, "auto-scroll");
378
+ if ui.button("Clear").clicked() {
379
+ log::clear();
380
+ }
381
+ });
382
+ ui.separator();
383
+
384
+ let entries = log::snapshot(200);
385
+
386
+ egui::ScrollArea::vertical()
387
+ .auto_shrink([false; 2])
388
+ .stick_to_bottom(self.log_auto_scroll)
389
+ .show(ui, |ui| {
390
+ for (ts, text) in &entries {
391
+ let elapsed = ts.elapsed().as_secs_f32();
392
+ let color = if elapsed < 1.0 {
393
+ egui::Color32::WHITE
394
+ } else if elapsed < 5.0 {
395
+ egui::Color32::LIGHT_GRAY
396
+ } else {
397
+ egui::Color32::GRAY
398
+ };
399
+ ui.colored_label(color, text);
400
+ }
401
+ });
402
+ }
403
+ }
crates/openwa-debugui/src/lib.rs ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! OpenWA immediate-mode debug UI.
2
+ //!
3
+ //! Spawns a floating egui window (backed by OpenGL via eframe) in a background
4
+ //! thread. The window is in the same process as WA.exe, so it can read game
5
+ //! memory directly through the `openwa-core` typed structs.
6
+ //!
7
+ //! # Usage
8
+ //!
9
+ //! ```rust
10
+ //! // In openwa-wormkit lib.rs, after rebase::init() and hook installation:
11
+ //! if std::env::var("OPENWA_DEBUG_UI").is_ok() {
12
+ //! openwa_debugui::spawn();
13
+ //! }
14
+ //! ```
15
+ //!
16
+ //! # Log integration
17
+ //!
18
+ //! Any crate that depends on `openwa-debugui` can push events to the log panel:
19
+ //!
20
+ //! ```rust
21
+ //! openwa_debugui::log::push("some hook fired");
22
+ //! ```
23
+
24
+ mod app;
25
+ pub mod log;
26
+
27
+ use app::DebugApp;
28
+
29
+ /// Spawn the debug UI window in a background thread.
30
+ ///
31
+ /// Returns immediately. The window runs until closed by the user.
32
+ /// This must be called *after* `openwa_core::rebase::init()`.
33
+ pub fn spawn() {
34
+ std::thread::spawn(|| {
35
+ if let Err(e) = run_window() {
36
+ // Not much we can do here; the window just won't appear.
37
+ eprintln!("[openwa-debugui] fatal: {e:?}");
38
+ }
39
+ });
40
+ }
41
+
42
+ fn run_window() -> Result<(), eframe::Error> {
43
+ let mut options = eframe::NativeOptions {
44
+ viewport: eframe::egui::ViewportBuilder::default()
45
+ .with_title("OpenWA Debug")
46
+ .with_inner_size([760.0, 560.0]),
47
+ ..Default::default()
48
+ };
49
+
50
+ // On Windows we run in a background thread (DLL injection), so we need
51
+ // to allow the event loop to be created on a non-main thread.
52
+ #[cfg(target_os = "windows")]
53
+ {
54
+ options.event_loop_builder = Some(Box::new(|builder| {
55
+ use winit::platform::windows::EventLoopBuilderExtWindows;
56
+ builder.with_any_thread(true);
57
+ }));
58
+ }
59
+
60
+ eframe::run_native(
61
+ "OpenWA Debug",
62
+ options,
63
+ Box::new(|_cc| Ok(Box::new(DebugApp::default()))),
64
+ )
65
+ }
crates/openwa-debugui/src/log.rs ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ use std::collections::VecDeque;
2
+ use std::sync::{Mutex, OnceLock};
3
+ use std::time::Instant;
4
+
5
+ pub struct LogEntry {
6
+ pub ts: Instant,
7
+ pub text: String,
8
+ }
9
+
10
+ static LOG_BUF: OnceLock<Mutex<VecDeque<LogEntry>>> = OnceLock::new();
11
+
12
+ fn buf() -> &'static Mutex<VecDeque<LogEntry>> {
13
+ LOG_BUF.get_or_init(|| Mutex::new(VecDeque::with_capacity(500)))
14
+ }
15
+
16
+ /// Push a message to the debug log ring buffer (max 500 entries).
17
+ pub fn push(msg: impl Into<String>) {
18
+ if let Ok(mut b) = buf().lock() {
19
+ if b.len() >= 500 {
20
+ b.pop_front();
21
+ }
22
+ b.push_back(LogEntry { ts: Instant::now(), text: msg.into() });
23
+ }
24
+ }
25
+
26
+ /// Snapshot up to `max` of the most recent entries (cloned).
27
+ pub fn snapshot(max: usize) -> Vec<(Instant, String)> {
28
+ let Ok(b) = buf().lock() else { return Vec::new() };
29
+ let start = b.len().saturating_sub(max);
30
+ b.range(start..).map(|e| (e.ts, e.text.clone())).collect()
31
+ }
32
+
33
+ /// Clear all log entries.
34
+ pub fn clear() {
35
+ if let Ok(mut b) = buf().lock() {
36
+ b.clear();
37
+ }
38
+ }
crates/openwa-wormkit/Cargo.toml CHANGED
@@ -7,8 +7,12 @@ description = "WormKit DLL that replaces WA.exe functions with Rust reimplementa
7
  [lib]
8
  crate-type = ["cdylib"]
9
 
 
 
 
10
  [dependencies]
11
  openwa-core = { path = "../openwa-core" }
 
12
  heapless = "0.9"
13
  minhook = "0.9"
14
 
 
7
  [lib]
8
  crate-type = ["cdylib"]
9
 
10
+ [features]
11
+ debug-ui = ["dep:openwa-debugui"]
12
+
13
  [dependencies]
14
  openwa-core = { path = "../openwa-core" }
15
+ openwa-debugui = { path = "../openwa-debugui", optional = true }
16
  heapless = "0.9"
17
  minhook = "0.9"
18
 
crates/openwa-wormkit/src/debug_ui.rs ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //! Wrapper that spawns the openwa-debugui window when OPENWA_DEBUG_UI=1.
2
+ //!
3
+ //! Only compiled when the "debug-ui" feature is enabled.
4
+
5
+ #[cfg(feature = "debug-ui")]
6
+ pub fn maybe_spawn() {
7
+ if std::env::var("OPENWA_DEBUG_UI").is_ok() {
8
+ openwa_debugui::spawn();
9
+ }
10
+ }
11
+
12
+ #[cfg(not(feature = "debug-ui"))]
13
+ pub fn maybe_spawn() {}
crates/openwa-wormkit/src/lib.rs CHANGED
@@ -3,6 +3,7 @@
3
  use std::ffi::c_void;
4
 
5
  pub mod hook;
 
6
  mod replacements;
7
  mod validation;
8
 
@@ -74,5 +75,8 @@ fn run() -> Result<(), String> {
74
  // Debug hotkeys (F9/F10) are always available, even without OPENWA_VALIDATE
75
  validation::start_hotkeys();
76
 
 
 
 
77
  Ok(())
78
  }
 
3
  use std::ffi::c_void;
4
 
5
  pub mod hook;
6
+ mod debug_ui;
7
  mod replacements;
8
  mod validation;
9
 
 
75
  // Debug hotkeys (F9/F10) are always available, even without OPENWA_VALIDATE
76
  validation::start_hotkeys();
77
 
78
+ // Debug UI window (requires "debug-ui" feature + OPENWA_DEBUG_UI=1)
79
+ debug_ui::maybe_spawn();
80
+
81
  Ok(())
82
  }
deploy-debug.ps1 ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ $dest = "I:\games\SteamLibrary\steamapps\common\Worms Armageddon"
2
+
3
+ cargo build --release -p openwa-wormkit --features debug-ui
4
+ if ($LASTEXITCODE -ne 0) { exit 1 }
5
+
6
+ $src = "target\i686-pc-windows-msvc\release"
7
+ Copy-Item "$src\openwa_wormkit.dll" "$dest\wkOpenWA.dll"
8
+
9
+ Write-Host "Deployed debug-ui build to $dest"
10
+ Write-Host "Launch WA.exe with OPENWA_DEBUG_UI=1 to show the debug window."
11
+ Write-Host ""
12
+ Write-Host "Example:"
13
+ Write-Host ' $env:OPENWA_DEBUG_UI=1; & "I:\games\SteamLibrary\steamapps\common\Worms Armageddon\WA.exe"'
start-debug.ps1 ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ $wa = "I:\games\SteamLibrary\steamapps\common\Worms Armageddon\WA.exe"
2
+
3
+ $env:OPENWA_DEBUG_UI = "1"
4
+ & $wa