omegga 1.1.2 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/README.md +10 -1
  2. package/dist/brickadia/server.d.ts +17 -0
  3. package/dist/brickadia/server.js +81 -4
  4. package/dist/brickadia/server.js.map +1 -1
  5. package/dist/cli/auth.js +1 -1
  6. package/dist/cli/auth.js.map +1 -1
  7. package/dist/cli/terminal.js +106 -9
  8. package/dist/cli/terminal.js.map +1 -1
  9. package/dist/config/reader.js.map +1 -1
  10. package/dist/config/types.d.ts +5 -0
  11. package/dist/main.js +43 -47
  12. package/dist/main.js.map +1 -1
  13. package/dist/omegga/matchers/join.js +3 -2
  14. package/dist/omegga/matchers/join.js.map +1 -1
  15. package/dist/omegga/player.js +5 -3
  16. package/dist/omegga/player.js.map +1 -1
  17. package/dist/omegga/plugin/plugin_jsonrpc_stdio.js.map +1 -1
  18. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.d.ts +6 -5
  19. package/dist/omegga/plugin/plugin_node_safe/proxyOmegga.js.map +1 -1
  20. package/dist/omegga/plugin.d.ts +2 -2
  21. package/dist/omegga/server.d.ts +7 -5
  22. package/dist/omegga/server.js +130 -84
  23. package/dist/omegga/server.js.map +1 -1
  24. package/dist/omegga/wrapper.d.ts +11 -0
  25. package/dist/omegga/wrapper.js +16 -0
  26. package/dist/omegga/wrapper.js.map +1 -1
  27. package/dist/plugin.d.ts +8 -9
  28. package/dist/plugin.js.map +1 -1
  29. package/dist/softconfig.d.ts +1 -0
  30. package/dist/softconfig.js +2 -1
  31. package/dist/softconfig.js.map +1 -1
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/dist/updater/index.d.ts +1 -0
  34. package/dist/updater/index.js +10 -0
  35. package/dist/updater/index.js.map +1 -0
  36. package/dist/updater/steam.d.ts +52 -0
  37. package/dist/updater/steam.js +139 -0
  38. package/dist/updater/steam.js.map +1 -0
  39. package/dist/util/color.js +7 -7
  40. package/dist/util/color.js.map +1 -1
  41. package/dist/util/time.js +1 -1
  42. package/dist/util/time.js.map +1 -1
  43. package/dist/webserver/backend/api.d.ts +84 -1
  44. package/dist/webserver/backend/api.js +174 -15
  45. package/dist/webserver/backend/api.js.map +1 -1
  46. package/dist/webserver/backend/database.d.ts +2 -0
  47. package/dist/webserver/backend/database.js +31 -6
  48. package/dist/webserver/backend/database.js.map +1 -1
  49. package/dist/webserver/backend/index.js +5 -9
  50. package/dist/webserver/backend/index.js.map +1 -1
  51. package/dist/webserver/backend/metrics.js +63 -15
  52. package/dist/webserver/backend/metrics.js.map +1 -1
  53. package/eslint.config.mjs +53 -0
  54. package/package.json +37 -29
  55. package/public/app.html +1873 -0
  56. package/public/assets/IconArrowRight-CA5_cccJ.js +7 -0
  57. package/public/assets/IconArrowRight-CA5_cccJ.js.map +1 -0
  58. package/public/assets/IconCheck-Dyq5qyY1.js +17 -0
  59. package/public/assets/IconCheck-Dyq5qyY1.js.map +1 -0
  60. package/public/assets/IconLockOpen-D95XLORK.js +7 -0
  61. package/public/assets/IconLockOpen-D95XLORK.js.map +1 -0
  62. package/public/assets/IconWorld-DtARpBKX.js +72 -0
  63. package/public/assets/IconWorld-DtARpBKX.js.map +1 -0
  64. package/public/assets/IconWorldPlus-CMeE6oOX.js +182 -0
  65. package/public/assets/IconWorldPlus-CMeE6oOX.js.map +1 -0
  66. package/public/assets/IconX-SYtbnYKI.js +12 -0
  67. package/public/assets/IconX-SYtbnYKI.js.map +1 -0
  68. package/public/assets/_commonjsHelpers-CE1G-McA.js +2 -0
  69. package/public/assets/_commonjsHelpers-CE1G-McA.js.map +1 -0
  70. package/public/assets/app-CtCP4WJN.js +6 -0
  71. package/public/assets/app-CtCP4WJN.js.map +1 -0
  72. package/public/assets/auth-CvxEWAMc.js +2 -0
  73. package/public/assets/auth-CvxEWAMc.js.map +1 -0
  74. package/public/assets/client-C5T7_OK9.js +26 -0
  75. package/public/assets/client-C5T7_OK9.js.map +1 -0
  76. package/public/assets/index-BC_vZ56r.js +10 -0
  77. package/public/assets/index-BC_vZ56r.js.map +1 -0
  78. package/public/assets/index-CJ4e7_2M.js +2 -0
  79. package/public/assets/index-CJ4e7_2M.js.map +1 -0
  80. package/public/assets/index-CRRRLlCc.js +10 -0
  81. package/public/assets/index-CRRRLlCc.js.map +1 -0
  82. package/public/assets/index-CSV4ZXsq.js +2 -0
  83. package/public/assets/index-CSV4ZXsq.js.map +1 -0
  84. package/public/assets/index-DYcAgWjJ.js +2 -0
  85. package/public/assets/index-DYcAgWjJ.js.map +1 -0
  86. package/public/assets/index-DqHVrEeL.js +10 -0
  87. package/public/assets/index-DqHVrEeL.js.map +1 -0
  88. package/public/assets/index-c0qeY2gs.js +10 -0
  89. package/public/assets/index-c0qeY2gs.js.map +1 -0
  90. package/public/assets/index-i4mjW0og.js +2 -0
  91. package/public/assets/index-i4mjW0og.js.map +1 -0
  92. package/public/assets/jsx-runtime-Bw5QeaCk.js +10 -0
  93. package/public/assets/jsx-runtime-Bw5QeaCk.js.map +1 -0
  94. package/public/assets/jsx-runtime-DoEZbXM1.js +2 -0
  95. package/public/assets/jsx-runtime-DoEZbXM1.js.map +1 -0
  96. package/public/assets/shared/@components-B442wlEb.js +2 -0
  97. package/public/assets/shared/@components-B442wlEb.js.map +1 -0
  98. package/public/assets/shared/@hooks-DfTzYBIL.js +2 -0
  99. package/public/assets/shared/@hooks-DfTzYBIL.js.map +1 -0
  100. package/public/assets/shared/@nanostores_react-HTG3s0lp.js +2 -0
  101. package/public/assets/shared/@nanostores_react-HTG3s0lp.js.map +1 -0
  102. package/public/assets/shared/@tabler_icons-react-DwfGvIVr.js +29458 -0
  103. package/public/assets/shared/@tabler_icons-react-DwfGvIVr.js.map +1 -0
  104. package/public/assets/shared/@utils-BQyGUOvP.js +2 -0
  105. package/public/assets/shared/@utils-BQyGUOvP.js.map +1 -0
  106. package/public/assets/shared/nanostores-BFqqIY_c.js +2 -0
  107. package/public/assets/shared/nanostores-BFqqIY_c.js.map +1 -0
  108. package/public/assets/shared/react-CR6vSpIu.js +2 -0
  109. package/public/assets/shared/react-CR6vSpIu.js.map +1 -0
  110. package/public/assets/shared/react-dom-BznoGTRX.js +2 -0
  111. package/public/assets/shared/react-dom-BznoGTRX.js.map +1 -0
  112. package/public/assets/shared/react_jsx-runtime-C15Zu6_p.js +2 -0
  113. package/public/assets/shared/react_jsx-runtime-C15Zu6_p.js.map +1 -0
  114. package/public/assets/shared/wouter-DbmGxXTo.js +2 -0
  115. package/public/assets/shared/wouter-DbmGxXTo.js.map +1 -0
  116. package/public/auth.html +1210 -0
  117. package/templates/rust/src/main.rs +25 -0
  118. package/templates/safe-ts/omegga.d.ts +8 -9
  119. package/tools/install_steamcmd.sh +1 -1
  120. package/.prettierignore +0 -6
  121. package/frontend/app.html +0 -14
  122. package/frontend/auth.html +0 -14
  123. package/omegga-config.yml +0 -7
  124. package/public/app.bundle.js +0 -54537
  125. package/public/app.bundle.js.map +0 -1
  126. package/public/app.css +0 -6345
  127. package/public/app.css.map +0 -1
  128. package/public/auth.bundle.js +0 -17789
  129. package/public/auth.bundle.js.map +0 -1
  130. package/public/auth.css +0 -3313
  131. package/public/auth.css.map +0 -1
  132. /package/{frontend/assets/fonts/GlacialIndifferenceBold.ttf → public/assets/GlacialIndifferenceBold-DhenBmgZ.ttf} +0 -0
  133. /package/{frontend/assets/fonts/GlacialIndifferenceItalic.otf → public/assets/GlacialIndifferenceItalic-BApAEtVA.otf} +0 -0
  134. /package/{frontend/assets/fonts/GlacialIndifferenceMedium.otf → public/assets/GlacialIndifferenceMedium-CALcoUYm.otf} +0 -0
  135. /package/{frontend/assets/fonts/GlacialIndifferenceRegular.ttf → public/assets/GlacialIndifferenceRegular-DynFsoUc.ttf} +0 -0
  136. /package/{frontend/assets/fonts/RobotoBold.ttf → public/assets/RobotoBold-DB1hqCFM.ttf} +0 -0
  137. /package/{frontend/assets/fonts/RobotoItalic.ttf → public/assets/RobotoItalic-DIrf6xfk.ttf} +0 -0
  138. /package/{frontend/assets/fonts/RobotoRegular.ttf → public/assets/RobotoRegular-CGSfnFoJ.ttf} +0 -0
  139. /package/{frontend/assets/img/auth_bg.webp → public/assets/auth_bg-DJZN1T-H.webp} +0 -0
  140. /package/{frontend/assets/img/dark_bg.webp → public/assets/dark_bg-uu5tZDxN.webp} +0 -0
  141. /package/{frontend/assets/img/turkey.webp → public/assets/turkey-BW4gu-4u.webp} +0 -0
@@ -0,0 +1,1210 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+
5
+
6
+ <meta charset="utf-8">
7
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
8
+ <title>Omegga Login</title>
9
+ <style lang="scss">@font-face {
10
+ font-family: "Glacial Indifference";
11
+ src: url("/assets/GlacialIndifferenceBold-DhenBmgZ.ttf") format("truetype");
12
+ font-weight: bold;
13
+ font-style: normal;
14
+ }
15
+ @font-face {
16
+ font-family: "Glacial Indifference";
17
+ src: url("/assets/GlacialIndifferenceItalic-BApAEtVA.otf") format("opentype");
18
+ font-weight: normal;
19
+ font-style: italic;
20
+ }
21
+ @font-face {
22
+ font-family: "Glacial Indifference";
23
+ src: url("/assets/GlacialIndifferenceMedium-CALcoUYm.otf") format("opentype");
24
+ font-weight: normal;
25
+ font-style: normal;
26
+ }
27
+ @font-face {
28
+ font-family: "Glacial Indifference";
29
+ src: url("/assets/GlacialIndifferenceRegular-DynFsoUc.ttf") format("truetype");
30
+ font-weight: normal;
31
+ font-style: normal;
32
+ }
33
+ @font-face {
34
+ font-family: "Roboto";
35
+ src: url("/assets/RobotoBold-DB1hqCFM.ttf") format("truetype");
36
+ font-weight: bold;
37
+ font-style: normal;
38
+ }
39
+ @font-face {
40
+ font-family: "Roboto";
41
+ src: url("/assets/RobotoItalic-DIrf6xfk.ttf") format("truetype");
42
+ font-weight: normal;
43
+ font-style: italic;
44
+ }
45
+ @font-face {
46
+ font-family: "Roboto";
47
+ src: url("/assets/RobotoRegular-CGSfnFoJ.ttf") format("truetype");
48
+ font-weight: normal;
49
+ font-style: normal;
50
+ }
51
+ body {
52
+ font-family: "Glacial Indifference";
53
+ }
54
+ /* Background & Panel */
55
+ /* Text & Icon */
56
+ /* Buttons & Colored Elements */
57
+ /* Main */
58
+ /* Info */
59
+ /* Error */
60
+ /* Warning */
61
+ /* Button */
62
+ /* Element */
63
+ :root {
64
+ --br-bg-primary: theme.$br-bg-primary;
65
+ --br-bg-primary-alt: theme.$br-bg-primary-alt;
66
+ --br-bg-secondary: theme.$br-bg-secondary;
67
+ --br-bg-secondary-alt: theme.$br-bg-secondary-alt;
68
+ --br-bg-footer: theme.$br-bg-footer;
69
+ --br-bg-header: theme.$br-bg-header;
70
+ --br-fg-footer: theme.$br-fg-footer;
71
+ --br-fg-header: theme.$br-fg-header;
72
+ --br-header-font: theme.$br-header-font;
73
+ --br-header-height: theme.$br-header-height;
74
+ --br-footer-font: theme.$br-footer-font;
75
+ --br-footer-height: theme.$br-footer-height;
76
+ --br-radius-sm: theme.$br-radius-sm;
77
+ --br-radius-md: theme.$br-radius-md;
78
+ --br-radius-lg: theme.$br-radius-lg;
79
+ --br-boring-button-fg: theme.$br-boring-button-fg;
80
+ --br-button-fg: theme.$br-button-fg;
81
+ --br-inverted-fg: theme.$br-inverted-fg;
82
+ --br-main-normal: theme.$br-main-normal;
83
+ --br-main-hover: theme.$br-main-hover;
84
+ --br-main-pressed: theme.$br-main-pressed;
85
+ --br-main-disabled: theme.$br-main-disabled;
86
+ --br-info-normal: theme.$br-info-normal;
87
+ --br-info-hover: theme.$br-info-hover;
88
+ --br-info-pressed: theme.$br-info-pressed;
89
+ --br-info-disabled: theme.$br-info-disabled;
90
+ --br-error-normal: theme.$br-error-normal;
91
+ --br-error-hover: theme.$br-error-hover;
92
+ --br-error-pressed: theme.$br-error-pressed;
93
+ --br-error-disabled: theme.$br-error-disabled;
94
+ --br-warn-normal: theme.$br-warn-normal;
95
+ --br-warn-hover: theme.$br-warn-hover;
96
+ --br-warn-pressed: theme.$br-warn-pressed;
97
+ --br-warn-disabled: theme.$br-warn-disabled;
98
+ --br-button-normal: theme.$br-button-normal;
99
+ --br-button-hover: theme.$br-button-hover;
100
+ --br-button-pressed: theme.$br-button-pressed;
101
+ --br-button-disabled: theme.$br-button-disabled;
102
+ --br-element-normal: theme.$br-element-normal;
103
+ --br-element-fg: theme.$br-element-fg;
104
+ --br-element-pressed: theme.$br-element-pressed;
105
+ --br-element-overlay: theme.$br-element-overlay;
106
+ --br-element-hover: theme.$br-element-hover;
107
+ --br-element-bg: theme.$br-element-bg;
108
+ --br-element-popout-bg: theme.$br-element-popout-bg;
109
+ --br-element-header-bg: theme.$br-element-header-bg;
110
+ --br-element-footer-bg: theme.$br-element-footer-bg;
111
+ --br-element-height: theme.$br-element-height;
112
+ --br-element-font: theme.$br-element-font;
113
+ }
114
+ html,
115
+ body {
116
+ margin: 0;
117
+ padding: 0;
118
+ }
119
+ html {
120
+ width: 100%;
121
+ height: 100%;
122
+ display: table;
123
+ }
124
+ body {
125
+ width: 100%;
126
+ display: table-cell;
127
+ position: relative;
128
+ overflow: hidden;
129
+ font-family: "Glacial Indifference";
130
+ }
131
+ @media screen and (max-width: 600px) {
132
+ body {
133
+ overflow-y: auto;
134
+ }
135
+ }
136
+ ::-webkit-scrollbar {
137
+ width: 16px;
138
+ }
139
+ ::-webkit-scrollbar-track {
140
+ background-color: #162841;
141
+ }
142
+ ::-webkit-scrollbar-thumb {
143
+ background: #224c7b;
144
+ }
145
+ ::-webkit-scrollbar-thumb:hover {
146
+ background: #fff;
147
+ }
148
+ .generic-container {
149
+ flex: 1;
150
+ position: relative;
151
+ margin-left: 8px;
152
+ }
153
+ .stat {
154
+ color: white;
155
+ font-weight: bold;
156
+ }
157
+ .stats {
158
+ padding: 8px;
159
+ font-size: 24px;
160
+ word-break: break-all;
161
+ background-color: #263f61;
162
+ }
163
+ .stat b {
164
+ color: #a7bbce;
165
+ }
166
+ .log-entry {
167
+ font-size: 24px;
168
+ text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
169
+ word-break: break-all;
170
+ }
171
+ .log-entry .user {
172
+ font-weight: bold;
173
+ }
174
+ .log-entry .join-message,
175
+ .log-entry .join-message .user {
176
+ color: #3477e3 !important;
177
+ }
178
+ .log-entry .chat-message {
179
+ color: #ffffff;
180
+ }
181
+ .log-entry .server-message {
182
+ color: #ff00ff;
183
+ }
184
+ table.br-table {
185
+ font-weight: bold;
186
+ border-collapse: collapse;
187
+ font-size: 24px;
188
+ }
189
+ table.br-table thead th {
190
+ color: white;
191
+ height: 50px;
192
+ background-color: #1b2f4a;
193
+ white-space: nowrap;
194
+ }
195
+ table.br-table th,
196
+ table.br-table td {
197
+ padding: 0 10px;
198
+ }
199
+ table.br-table tr td:first-child,
200
+ table.br-table tr th:first-child {
201
+ padding-left: 20px;
202
+ }
203
+ table.br-table tr td:last-child,
204
+ table.br-table tr th:last-child {
205
+ padding-right: 20px;
206
+ }
207
+ table.br-table tbody tr {
208
+ background-color: #131d30;
209
+ }
210
+ table.br-table tbody tr:nth-child(even) {
211
+ background-color: #111a2b;
212
+ }
213
+ table.br-table tbody tr td {
214
+ font-size: 20px;
215
+ color: #a7bbce;
216
+ height: 50px;
217
+ overflow: hidden;
218
+ white-space: nowrap;
219
+ }
220
+ a,
221
+ :visited {
222
+ color: #0ff;
223
+ }
224
+ .inputs-list {
225
+ background-color: #162841;
226
+ }
227
+ .inputs-list .inputs-item {
228
+ background-color: #1b2f4a;
229
+ display: flex;
230
+ align-items: center;
231
+ justify-content: space-between;
232
+ height: 50px;
233
+ padding: 0 10px;
234
+ }
235
+ .inputs-list .inputs-item:nth-child(even) {
236
+ background-color: #182b44;
237
+ }
238
+ .inputs-list .inputs-item label,
239
+ .inputs-list .inputs-item .inputs {
240
+ display: flex;
241
+ align-items: center;
242
+ }
243
+ .inputs-list .inputs-item .inputs {
244
+ flex: 1;
245
+ }
246
+ .inputs-list .inputs-item .inputs .toggle,
247
+ .inputs-list .inputs-item .inputs .br-input {
248
+ margin-right: 8px;
249
+ }
250
+ .inputs-list .inputs-item label {
251
+ color: #a7bbce;
252
+ min-width: 300px;
253
+ flex: 0.5;
254
+ font-size: 18px;
255
+ font-weight: bold;
256
+ overflow: hidden;
257
+ white-space: nowrap;
258
+ }
259
+ .widgets-container {
260
+ z-index: 100;
261
+ display: flex;
262
+ flex-direction: column;
263
+ align-items: flex-end;
264
+ }
265
+ .widgets-container .widgets-list {
266
+ background-color: #162841;
267
+ margin-right: 8px;
268
+ min-width: 200px;
269
+ border-radius: 12px;
270
+ }
271
+ .widgets-container .widgets-list .widget-item {
272
+ border-radius: 12px;
273
+ background-color: #1b2f4a;
274
+ display: flex;
275
+ align-items: center;
276
+ justify-content: space-between;
277
+ height: 50px;
278
+ padding: 0 10px;
279
+ }
280
+ .widgets-container .widgets-list .widget-item:nth-child(even) {
281
+ background-color: #182b44;
282
+ }
283
+ .widgets-container .widgets-list .widget-item .name {
284
+ text-transform: uppercase;
285
+ display: flex;
286
+ align-items: center;
287
+ }
288
+ .widgets-container .widgets-list .widget-item .name .tabler-icon {
289
+ margin-right: 10px;
290
+ }
291
+ .background {
292
+ position: fixed;
293
+ left: 0;
294
+ top: 0;
295
+ width: 100%;
296
+ height: 100%;
297
+ overflow: visible;
298
+ background-image: url("/assets/auth_bg-DJZN1T-H.webp");
299
+ background-repeat: no-repeat;
300
+ background-attachment: fixed;
301
+ background-size: cover;
302
+ background-position: 50% 50%;
303
+ }
304
+ .bg-img {
305
+ position: absolute;
306
+ filter: blur(20px);
307
+ left: -40px;
308
+ top: -40px;
309
+ width: calc(100% + 80px);
310
+ height: calc(100% + 80px);
311
+ object-fit: cover;
312
+ }
313
+ .version {
314
+ position: absolute;
315
+ top: 5px;
316
+ right: 5px;
317
+ font-weight: 200;
318
+ font-size: 12px;
319
+ color: rgba(255, 255, 255, 0.5);
320
+ text-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
321
+ }
322
+ @media (prefers-color-scheme: dark) {
323
+ .background {
324
+ background-image: url("/assets/dark_bg-uu5tZDxN.webp");
325
+ }
326
+ .background .light {
327
+ display: none;
328
+ }
329
+ }
330
+ @media (prefers-color-scheme: light) {
331
+ .dark {
332
+ display: none;
333
+ }
334
+ }
335
+ .button {
336
+ display: flex;
337
+ align-items: center;
338
+ justify-content: center;
339
+ text-transform: uppercase;
340
+ height: 32px;
341
+ font-size: 24px;
342
+ border-radius: 16px;
343
+ box-sizing: border-box;
344
+ color: #ffffff;
345
+ font-weight: bold;
346
+ padding: 0 16px;
347
+ cursor: pointer;
348
+ user-select: none;
349
+ }
350
+ .button.boxy {
351
+ border-radius: 8px;
352
+ padding: 0 8px;
353
+ }
354
+ .button:not(:last-child) {
355
+ margin-right: 8px;
356
+ }
357
+ .button:not(.icon) .tabler-icon {
358
+ margin-right: 8px;
359
+ }
360
+ .button.icon {
361
+ border-radius: 8px;
362
+ padding: 0;
363
+ width: 32px;
364
+ min-width: 32px;
365
+ }
366
+ .button.disabled {
367
+ opacity: 50%;
368
+ cursor: default;
369
+ pointer-events: none;
370
+ }
371
+ .button .button-content {
372
+ display: flex;
373
+ text-align: center;
374
+ align-items: center;
375
+ justify-content: center;
376
+ }
377
+ .button:not(.disabled):active .button-content {
378
+ padding-top: 4px;
379
+ }
380
+ .button.warn {
381
+ background-color: #ffa10b;
382
+ }
383
+ .button.warn:hover {
384
+ background-color: #ffbd54;
385
+ }
386
+ .button.warn:active, .button.warn.disabled {
387
+ background-color: #b37108;
388
+ }
389
+ .button.main {
390
+ background-color: #5da93d;
391
+ }
392
+ .button.main:hover {
393
+ background-color: #8dc377;
394
+ }
395
+ .button.main:active, .button.main.disabled {
396
+ background-color: #41772b;
397
+ }
398
+ .button.info {
399
+ background-color: #009bee;
400
+ }
401
+ .button.info:hover {
402
+ background-color: #4cb9f3;
403
+ }
404
+ .button.info:active, .button.info.disabled {
405
+ background-color: #007da7;
406
+ }
407
+ .button.error {
408
+ background-color: #e02d2d;
409
+ }
410
+ .button.error:hover {
411
+ background-color: #e96c6c;
412
+ }
413
+ .button.error:active, .button.error.disabled {
414
+ background-color: #9d2020;
415
+ }
416
+ .button.normal {
417
+ background-color: #455a7e;
418
+ color: #a7bbce;
419
+ }
420
+ .button.normal:hover {
421
+ background-color: #5e7190;
422
+ }
423
+ .button.normal:active, .button.normal.disabled {
424
+ background-color: #263f61;
425
+ }
426
+ .log-entry {
427
+ text-decoration: none;
428
+ font-family: "Roboto";
429
+ }
430
+ .log-entry .log-row {
431
+ display: flex;
432
+ align-items: center;
433
+ }
434
+ .log-entry .log-row .user,
435
+ .log-entry .log-row .time-link {
436
+ text-decoration: none;
437
+ }
438
+ .log-entry .log-row .time-link {
439
+ display: flex;
440
+ align-items: center;
441
+ }
442
+ .log-entry .log-row .time-link .tabler-icon {
443
+ opacity: 0;
444
+ color: white;
445
+ }
446
+ .log-entry .log-row .message {
447
+ flex: 1;
448
+ }
449
+ .log-entry:hover .log-row {
450
+ background: rgba(255, 255, 255, 0.2);
451
+ border-radius: 8px;
452
+ }
453
+ .log-entry:hover .log-row .tabler-icon {
454
+ opacity: 1;
455
+ }
456
+ .log-entry.focused .log-row {
457
+ border-radius: 8px;
458
+ background: #5da93d;
459
+ }
460
+ .chat-timestamp {
461
+ align-self: center;
462
+ font-size: 16px;
463
+ margin-right: 8px;
464
+ font-weight: bold;
465
+ text-align: right;
466
+ display: inline-block;
467
+ width: 75px;
468
+ min-width: 75px;
469
+ color: #ccc;
470
+ }
471
+ .dimmer {
472
+ background-color: #1b2f4a;
473
+ width: 100%;
474
+ height: 100%;
475
+ position: absolute;
476
+ top: 0;
477
+ left: 0;
478
+ background-color: rgba(0, 0, 0, 0.7);
479
+ display: none;
480
+ align-items: stretch;
481
+ z-index: 200;
482
+ }
483
+ .dimmer.visible {
484
+ display: flex;
485
+ }
486
+ .dimmer .dimmer-content {
487
+ position: relative;
488
+ flex: 1;
489
+ }
490
+ .dropdown {
491
+ display: flex;
492
+ flex-direction: column;
493
+ align-items: stretch;
494
+ font-weight: bold;
495
+ cursor: pointer;
496
+ user-select: none;
497
+ position: relative;
498
+ width: 100%;
499
+ }
500
+ .dropdown:not(:last-child) {
501
+ margin-bottom: 0;
502
+ }
503
+ .dropdown.disabled {
504
+ pointer-events: none;
505
+ opacity: 50%;
506
+ cursor: default;
507
+ }
508
+ .dropdown .options {
509
+ position: absolute;
510
+ bottom: 100%;
511
+ left: 0;
512
+ width: 100%;
513
+ max-height: 200px;
514
+ overflow-y: auto;
515
+ overflow-x: hidden;
516
+ z-index: 10;
517
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4);
518
+ border-radius: 8px;
519
+ }
520
+ .dropdown .options .green {
521
+ background-color: #5da93d;
522
+ }
523
+ .dropdown .options .green:hover {
524
+ background: #8dc377;
525
+ outline: none;
526
+ }
527
+ .dropdown .options .green:active {
528
+ background: #41772b;
529
+ outline: none;
530
+ }
531
+ .dropdown .option,
532
+ .dropdown .selected {
533
+ font-family: "Glacial Indifference";
534
+ background: #455a7e;
535
+ color: #1a2848;
536
+ height: 32px;
537
+ padding: 2px 12px;
538
+ padding-right: 0;
539
+ box-sizing: border-box;
540
+ font-weight: bold;
541
+ font-size: 24px;
542
+ }
543
+ .dropdown .option:hover,
544
+ .dropdown .selected:hover {
545
+ background: #5e7190;
546
+ outline: none;
547
+ }
548
+ .dropdown .option:active,
549
+ .dropdown .selected:active {
550
+ background: #263f61;
551
+ outline: none;
552
+ }
553
+ .dropdown .selected {
554
+ display: flex;
555
+ border: none;
556
+ align-items: center;
557
+ border-radius: 8px;
558
+ }
559
+ .dropdown .selected .value {
560
+ flex: 1;
561
+ }
562
+ .dropdown .icon {
563
+ margin-right: 8px;
564
+ }
565
+ .footer {
566
+ background-color: #091021;
567
+ color: #ffffff;
568
+ display: flex;
569
+ font-size: 24px;
570
+ font-weight: bold;
571
+ height: 30px;
572
+ padding: 10px;
573
+ text-transform: uppercase;
574
+ }
575
+ .footer.attached {
576
+ border-bottom-left-radius: 12px;
577
+ border-bottom-right-radius: 12px;
578
+ }
579
+ .header {
580
+ align-items: center;
581
+ background-color: #091021;
582
+ color: #ffffff;
583
+ display: flex;
584
+ font-size: 24px;
585
+ font-weight: bold;
586
+ height: 50px;
587
+ padding-left: 20px;
588
+ padding-right: 10px;
589
+ text-transform: uppercase;
590
+ }
591
+ .header.attached {
592
+ border-top-left-radius: 12px;
593
+ border-top-right-radius: 12px;
594
+ }
595
+ .input {
596
+ display: flex;
597
+ flex-direction: column;
598
+ align-items: stretch;
599
+ font-weight: bold;
600
+ cursor: pointer;
601
+ user-select: none;
602
+ }
603
+ .input:not(:last-child) {
604
+ margin-bottom: 0;
605
+ }
606
+ .input.icon {
607
+ border-radius: 0;
608
+ padding: 0;
609
+ width: 32px;
610
+ }
611
+ .input.disabled {
612
+ pointer-events: none;
613
+ opacity: 50%;
614
+ cursor: default;
615
+ }
616
+ .input input {
617
+ height: 32px;
618
+ font-family: "Glacial Indifference";
619
+ padding: 2px 12px;
620
+ box-sizing: border-box;
621
+ font-weight: bold;
622
+ font-size: 24px;
623
+ background: #455a7e;
624
+ color: #1a2848;
625
+ border: none;
626
+ border-radius: 8px;
627
+ }
628
+ .input input::placeholder {
629
+ color: #224c7b;
630
+ }
631
+ .input input:focus {
632
+ background: #5e7190;
633
+ outline: none;
634
+ }
635
+ .input.roboto > input {
636
+ font-family: "Roboto";
637
+ font-weight: 400;
638
+ }
639
+ .input .icon {
640
+ margin-right: 8px;
641
+ }
642
+ .header > .input input {
643
+ height: 32px !important;
644
+ }
645
+ .br-list-input {
646
+ display: flex;
647
+ flex-direction: column;
648
+ align-items: stretch;
649
+ user-select: none;
650
+ width: 100%;
651
+ }
652
+ .br-list-input.disabled {
653
+ pointer-events: none;
654
+ opacity: 50%;
655
+ cursor: default;
656
+ }
657
+ .br-list-input .br-list-item {
658
+ display: flex;
659
+ margin-bottom: 8px;
660
+ width: 100%;
661
+ }
662
+ .br-list-input .br-list-item .button {
663
+ margin-left: 8px;
664
+ }
665
+ .br-list-input > .button {
666
+ margin-bottom: 8px;
667
+ }
668
+ .loader {
669
+ position: absolute;
670
+ left: 0;
671
+ top: 0;
672
+ width: 100%;
673
+ height: 100%;
674
+ display: none;
675
+ align-items: stretch;
676
+ flex-direction: column;
677
+ }
678
+ .loader.active {
679
+ display: flex;
680
+ }
681
+ .loader-container {
682
+ flex: 1;
683
+ }
684
+ .loader-container.blur {
685
+ backdrop-filter: blur(5px);
686
+ }
687
+ .loader.inline {
688
+ position: relative;
689
+ display: inline-block;
690
+ left: auto;
691
+ right: auto;
692
+ width: auto;
693
+ height: auto;
694
+ }
695
+ .loader-container {
696
+ display: flex;
697
+ align-items: center;
698
+ justify-content: center;
699
+ flex-direction: column;
700
+ color: white;
701
+ }
702
+ .inline .loader-container {
703
+ display: block;
704
+ color: inherit;
705
+ }
706
+ .loader-icon {
707
+ color: white;
708
+ animation: rotating 2s infinite linear;
709
+ }
710
+ @keyframes rotating {
711
+ 0% {
712
+ transform: rotate(0);
713
+ }
714
+ 50% {
715
+ transform: rotate(180deg);
716
+ }
717
+ 100% {
718
+ transform: rotate(360deg);
719
+ }
720
+ }
721
+ .modal {
722
+ position: absolute;
723
+ top: 50%;
724
+ left: 50%;
725
+ transform: translate(-50%, -50%);
726
+ background-color: #1b2f4a;
727
+ width: 500px;
728
+ opacity: 0;
729
+ border-radius: 12px;
730
+ }
731
+ .modal.visible {
732
+ opacity: 1;
733
+ animation: fadeIn 0.4s ease 1;
734
+ }
735
+ .modal .modal-content {
736
+ position: relative;
737
+ }
738
+ .modal .popout-inputs .dropdown,
739
+ .modal .popout-inputs .input {
740
+ margin: 8px;
741
+ }
742
+ .nav-header {
743
+ color: white;
744
+ font-weight: bold;
745
+ font-size: 50px;
746
+ text-transform: uppercase;
747
+ }
748
+ .main-nav {
749
+ margin-bottom: 16px;
750
+ }
751
+ .navbar {
752
+ display: flex;
753
+ height: 32px;
754
+ font-size: 24px;
755
+ color: #ffffff;
756
+ background-color: #091021;
757
+ font-weight: bold;
758
+ padding: 10px;
759
+ border-radius: 12px;
760
+ }
761
+ .navbar.attached {
762
+ border-bottom-left-radius: 0;
763
+ border-bottom-right-radius: 0;
764
+ }
765
+ .main-content {
766
+ display: flex;
767
+ flex: 1;
768
+ position: relative;
769
+ }
770
+ @media screen and (max-width: 600px) {
771
+ .main-content {
772
+ flex-direction: column;
773
+ margin-bottom: 24px;
774
+ }
775
+ }
776
+ .content-parent {
777
+ position: absolute;
778
+ left: 0;
779
+ top: 0;
780
+ width: 100%;
781
+ height: 100%;
782
+ display: grid;
783
+ grid-template-rows: 100%;
784
+ }
785
+ .content {
786
+ position: relative;
787
+ display: flex;
788
+ flex-direction: column;
789
+ padding: 24px;
790
+ }
791
+ .br-player-list {
792
+ display: flex;
793
+ flex-direction: column;
794
+ align-items: stretch;
795
+ user-select: none;
796
+ width: 100%;
797
+ }
798
+ .br-player-list.disabled {
799
+ pointer-events: none;
800
+ opacity: 50%;
801
+ cursor: default;
802
+ }
803
+ .br-player-list .br-player-item {
804
+ display: flex;
805
+ margin-bottom: 8px;
806
+ width: 100%;
807
+ }
808
+ .br-player-list .br-player-item .button {
809
+ margin-left: 8px;
810
+ }
811
+ .br-player-list > .button {
812
+ margin-bottom: 8px;
813
+ }
814
+ .br-player-list .player-search {
815
+ position: relative;
816
+ }
817
+ .br-player-list .player-search .options {
818
+ position: absolute;
819
+ bottom: 100%;
820
+ left: 0;
821
+ width: 100%;
822
+ max-height: 200px;
823
+ overflow-y: auto;
824
+ z-index: 10;
825
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4);
826
+ border-radius: 8px;
827
+ }
828
+ .br-player-list .player-search .options .green {
829
+ background-color: #5da93d;
830
+ }
831
+ .br-player-list .player-search .options .green:hover {
832
+ background: #8dc377;
833
+ outline: none;
834
+ }
835
+ .br-player-list .player-search .options .green:active {
836
+ background: #41772b;
837
+ outline: none;
838
+ }
839
+ .br-player-list .selected {
840
+ border-radius: 8px;
841
+ }
842
+ .br-player-list .option,
843
+ .br-player-list .selected {
844
+ font-family: "Glacial Indifference";
845
+ background: #455a7e;
846
+ color: #1a2848;
847
+ height: 32px;
848
+ padding: 2px 12px;
849
+ padding-right: 0;
850
+ box-sizing: border-box;
851
+ font-weight: bold;
852
+ font-size: 24px;
853
+ width: 100%;
854
+ text-decoration: none;
855
+ }
856
+ .br-player-list .option:not(.search):hover,
857
+ .br-player-list .selected:not(.search):hover {
858
+ background: #5e7190;
859
+ outline: none;
860
+ }
861
+ .br-player-list .option:not(.search):active,
862
+ .br-player-list .selected:not(.search):active {
863
+ background: #263f61;
864
+ outline: none;
865
+ }
866
+ .popout-content {
867
+ background-color: #1b2f4a;
868
+ color: #a7bbce;
869
+ font-weight: bold;
870
+ font-size: 24px;
871
+ padding: 20px;
872
+ }
873
+ .popout-content > p {
874
+ margin: 20px 0;
875
+ }
876
+ .popout-content > p:first-child {
877
+ margin-top: 0;
878
+ }
879
+ .popout-content > p:last-child {
880
+ margin-bottom: 0;
881
+ }
882
+ .role-dropdown {
883
+ display: flex;
884
+ flex-direction: column;
885
+ align-items: stretch;
886
+ font-weight: bold;
887
+ cursor: pointer;
888
+ user-select: none;
889
+ position: relative;
890
+ width: 100%;
891
+ }
892
+ .role-dropdown:not(:last-child) {
893
+ margin-bottom: 0;
894
+ }
895
+ .role-dropdown.disabled {
896
+ pointer-events: none;
897
+ opacity: 50%;
898
+ cursor: default;
899
+ }
900
+ .role-dropdown .options {
901
+ position: absolute;
902
+ bottom: 100%;
903
+ left: 0;
904
+ width: 100%;
905
+ max-height: 200px;
906
+ overflow-y: auto;
907
+ z-index: 10;
908
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4);
909
+ border-radius: 8px;
910
+ }
911
+ .role-dropdown .options .green {
912
+ background-color: #5da93d;
913
+ }
914
+ .role-dropdown .options .green:hover {
915
+ background: #8dc377;
916
+ outline: none;
917
+ }
918
+ .role-dropdown .options .green:active {
919
+ background: #41772b;
920
+ outline: none;
921
+ }
922
+ .role-dropdown .option,
923
+ .role-dropdown .selected {
924
+ font-family: "Glacial Indifference";
925
+ background: #455a7e;
926
+ color: #1a2848;
927
+ height: 32px;
928
+ padding: 2px 12px;
929
+ padding-right: 0;
930
+ box-sizing: border-box;
931
+ font-weight: bold;
932
+ font-size: 24px;
933
+ width: 100%;
934
+ text-decoration: none;
935
+ }
936
+ .role-dropdown .option:not(.search):hover,
937
+ .role-dropdown .selected:not(.search):hover {
938
+ background: #5e7190;
939
+ outline: none;
940
+ }
941
+ .role-dropdown .option:not(.search):active,
942
+ .role-dropdown .selected:not(.search):active {
943
+ background: #263f61;
944
+ outline: none;
945
+ }
946
+ .role-dropdown .selected {
947
+ display: flex;
948
+ border: none;
949
+ align-items: center;
950
+ border-radius: 8px;
951
+ }
952
+ .role-dropdown .selected .value {
953
+ flex: 1;
954
+ }
955
+ .role-dropdown .icon {
956
+ margin-right: 8px;
957
+ }
958
+ .scroll-container {
959
+ flex: 1;
960
+ position: relative;
961
+ }
962
+ .scroll-scroller {
963
+ position: absolute;
964
+ top: 0;
965
+ left: 0;
966
+ width: 100%;
967
+ height: 100%;
968
+ overflow-y: scroll;
969
+ }
970
+ .main-menu-buttons {
971
+ width: 350px;
972
+ margin-top: -8px;
973
+ margin-right: 8px;
974
+ }
975
+ @media screen and (max-width: 600px) {
976
+ .main-menu-buttons {
977
+ margin-right: 0;
978
+ width: 100%;
979
+ min-width: 100%;
980
+ }
981
+ }
982
+ .menu-button {
983
+ display: flex;
984
+ align-items: center;
985
+ justify-content: flex-start;
986
+ text-transform: uppercase;
987
+ height: 60px;
988
+ font-size: 30px;
989
+ color: #ffffff;
990
+ background-color: #131d30;
991
+ font-weight: bold;
992
+ padding: 0;
993
+ cursor: pointer;
994
+ user-select: none;
995
+ margin: 8px 0;
996
+ text-decoration: none;
997
+ width: 350px;
998
+ border-radius: 12px;
999
+ }
1000
+ .menu-button:visited {
1001
+ color: #ffffff;
1002
+ }
1003
+ .menu-button .menu-button-content {
1004
+ display: flex;
1005
+ text-align: center;
1006
+ align-items: center;
1007
+ justify-content: center;
1008
+ }
1009
+ .menu-button .ti,
1010
+ .menu-button .tabler-icon {
1011
+ display: flex;
1012
+ width: 44px;
1013
+ height: 44px;
1014
+ margin-left: 8px;
1015
+ align-items: center;
1016
+ justify-content: center;
1017
+ margin-right: 24px;
1018
+ border-radius: 8px;
1019
+ }
1020
+ .menu-button:hover {
1021
+ background-color: #5e7190;
1022
+ }
1023
+ .menu-button:active {
1024
+ background-color: #091021;
1025
+ }
1026
+ .menu-button.active {
1027
+ background-color: #455a7e;
1028
+ }
1029
+ .menu-button.disabled {
1030
+ opacity: 50%;
1031
+ cursor: default;
1032
+ pointer-events: none;
1033
+ }
1034
+ .menu-button:not(.disabled):active .menu-button-content {
1035
+ padding-top: 4px;
1036
+ }
1037
+ .toggle {
1038
+ display: flex;
1039
+ font-weight: bold;
1040
+ cursor: pointer;
1041
+ user-select: none;
1042
+ height: 32px;
1043
+ width: 40px;
1044
+ background: #455a7e;
1045
+ border-radius: 8px;
1046
+ }
1047
+ .toggle:not(:last-child) {
1048
+ margin-bottom: 0;
1049
+ }
1050
+ .toggle.icon {
1051
+ border-radius: 0;
1052
+ padding: 0;
1053
+ width: 32px;
1054
+ }
1055
+ .toggle.disabled {
1056
+ pointer-events: none;
1057
+ opacity: 50%;
1058
+ cursor: default;
1059
+ }
1060
+ .toggle .toggle-slider {
1061
+ display: flex;
1062
+ align-items: center;
1063
+ justify-content: center;
1064
+ width: 32px;
1065
+ height: 32px;
1066
+ border-radius: 8px;
1067
+ }
1068
+ .toggle .toggle-slider:focus {
1069
+ background: #5e7190;
1070
+ outline: none;
1071
+ }
1072
+ .toggle .toggle-slider:not(.on) {
1073
+ background-color: #e02d2d;
1074
+ }
1075
+ .toggle .toggle-slider:not(.on):hover {
1076
+ background-color: #e96c6c;
1077
+ }
1078
+ .toggle .toggle-slider:not(.on):active, .toggle .toggle-slider:not(.on).disabled {
1079
+ background-color: #9d2020;
1080
+ }
1081
+ .toggle .toggle-slider:not(.on) .symbol {
1082
+ background-color: transparent;
1083
+ width: 10px;
1084
+ height: 10px;
1085
+ border: 4px solid white;
1086
+ border-radius: 50%;
1087
+ }
1088
+ .toggle .toggle-slider.on {
1089
+ margin-left: 8px;
1090
+ background-color: #5da93d;
1091
+ }
1092
+ .toggle .toggle-slider.on:hover {
1093
+ background-color: #8dc377;
1094
+ }
1095
+ .toggle .toggle-slider.on:active, .toggle .toggle-slider.on.disabled {
1096
+ background-color: #41772b;
1097
+ }
1098
+ .toggle .toggle-slider.on .symbol {
1099
+ width: 4px;
1100
+ height: 16px;
1101
+ background-color: white;
1102
+ border-radius: 2px;
1103
+ }
1104
+ html {
1105
+ width: 100%;
1106
+ height: 100%;
1107
+ display: table;
1108
+ }
1109
+ body {
1110
+ width: 100%;
1111
+ display: table-cell;
1112
+ position: relative;
1113
+ overflow: hidden;
1114
+ }
1115
+ .modal {
1116
+ position: absolute;
1117
+ top: 50%;
1118
+ left: 50%;
1119
+ transform: translate(-50%, -50%);
1120
+ background-color: #1b2f4a;
1121
+ width: 500px;
1122
+ opacity: 0;
1123
+ }
1124
+ .modal.visible {
1125
+ opacity: 1;
1126
+ animation: fadeIn 0.4s ease 1;
1127
+ }
1128
+ .modal .modal-content {
1129
+ position: relative;
1130
+ }
1131
+ @keyframes fadeIn {
1132
+ 0% {
1133
+ opacity: 0;
1134
+ transform: translate(-50%, calc(-50% + 40px));
1135
+ }
1136
+ 100% {
1137
+ opacity: 1;
1138
+ top: 50%;
1139
+ transform: translate(-50%, -50%);
1140
+ }
1141
+ }
1142
+ .turkey {
1143
+ filter: blur(10px);
1144
+ position: absolute;
1145
+ left: -20vw;
1146
+ top: 30%;
1147
+ animation: turkeyBob 5s infinite ease-in-out, turkeyMove 20s infinite alternate linear;
1148
+ }
1149
+ .turkey img {
1150
+ animation: turkeyRotate 7s infinite ease-in-out;
1151
+ }
1152
+ @keyframes turkeyBob {
1153
+ 0% {
1154
+ transform: translateY(0);
1155
+ }
1156
+ 33% {
1157
+ transform: translateY(-20px);
1158
+ }
1159
+ 67% {
1160
+ transform: translateY(20px);
1161
+ }
1162
+ 100% {
1163
+ transform: translateY(0);
1164
+ }
1165
+ }
1166
+ @keyframes turkeyRotate {
1167
+ 0% {
1168
+ transform: rotate(0);
1169
+ }
1170
+ 33% {
1171
+ transform: rotate(-20deg);
1172
+ }
1173
+ 67% {
1174
+ transform: rotate(20deg);
1175
+ }
1176
+ 100% {
1177
+ transform: rotate(0);
1178
+ }
1179
+ }
1180
+ @keyframes turkeyMove {
1181
+ 0% {
1182
+ left: -30vw;
1183
+ }
1184
+ 100% {
1185
+ left: calc(100% + 30vw);
1186
+ }
1187
+ }
1188
+ </style>
1189
+ <script type="importmap">{"imports":{"react":"./assets/shared/react-CR6vSpIu.js","react-dom":"./assets/shared/react-dom-BznoGTRX.js","react/jsx-runtime":"./assets/shared/react_jsx-runtime-C15Zu6_p.js","@nanostores/react":"./assets/shared/@nanostores_react-HTG3s0lp.js","nanostores":"./assets/shared/nanostores-BFqqIY_c.js","@utils":"./assets/shared/@utils-BQyGUOvP.js","@tabler/icons-react":"./assets/shared/@tabler_icons-react-DwfGvIVr.js","@hooks":"./assets/shared/@hooks-DfTzYBIL.js","wouter":"./assets/shared/wouter-DbmGxXTo.js","@components":"./assets/shared/@components-B442wlEb.js"}}</script>
1190
+ <script type="module" crossorigin src="/assets/auth-CvxEWAMc.js"></script>
1191
+ <link rel="modulepreload" crossorigin href="/assets/index-c0qeY2gs.js">
1192
+ <link rel="modulepreload" crossorigin href="/assets/index-DqHVrEeL.js">
1193
+ <link rel="modulepreload" crossorigin href="/assets/client-C5T7_OK9.js">
1194
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-Bw5QeaCk.js">
1195
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-DoEZbXM1.js">
1196
+ <link rel="modulepreload" crossorigin href="/assets/_commonjsHelpers-CE1G-McA.js">
1197
+ <link rel="modulepreload" crossorigin href="/assets/index-i4mjW0og.js">
1198
+ <link rel="modulepreload" crossorigin href="/assets/index-CJ4e7_2M.js">
1199
+ <link rel="modulepreload" crossorigin href="/assets/shared/@nanostores_react-HTG3s0lp.js">
1200
+ <link rel="modulepreload" crossorigin href="/assets/index-CSV4ZXsq.js">
1201
+ <link rel="modulepreload" crossorigin href="/assets/IconCheck-Dyq5qyY1.js">
1202
+ <link rel="modulepreload" crossorigin href="/assets/IconX-SYtbnYKI.js">
1203
+ <link rel="modulepreload" crossorigin href="/assets/index-DYcAgWjJ.js">
1204
+ <link rel="modulepreload" crossorigin href="/assets/IconArrowRight-CA5_cccJ.js">
1205
+ <link rel="modulepreload" crossorigin href="/assets/IconLockOpen-D95XLORK.js">
1206
+ </head>
1207
+ <body>
1208
+ <div id="root"></div>
1209
+ </body>
1210
+ </html>