@serfab/cadre-host 1.13.0 → 1.15.0

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 (352) hide show
  1. package/README.md +347 -423
  2. package/dist/bin/host.d.ts +6 -3
  3. package/dist/bin/host.js +332 -524
  4. package/dist/bin/host.js.map +1 -1
  5. package/dist/bin/join-output.d.ts +56 -0
  6. package/dist/bin/join-output.js +92 -0
  7. package/dist/bin/join-output.js.map +1 -0
  8. package/dist/bin/nat-output.d.ts +54 -0
  9. package/dist/bin/nat-output.js +138 -0
  10. package/dist/bin/nat-output.js.map +1 -0
  11. package/dist/bin/ui-access.d.ts +22 -0
  12. package/dist/bin/ui-access.js +44 -0
  13. package/dist/bin/ui-access.js.map +1 -0
  14. package/dist/hosted/claim-details.d.ts +66 -0
  15. package/dist/hosted/claim-details.js +60 -0
  16. package/dist/hosted/claim-details.js.map +1 -0
  17. package/dist/hosted/hosted-node-service.d.ts +325 -0
  18. package/dist/hosted/hosted-node-service.js +678 -0
  19. package/dist/hosted/hosted-node-service.js.map +1 -0
  20. package/dist/hosted/hosted-node-store.d.ts +40 -0
  21. package/dist/hosted/hosted-node-store.js +126 -0
  22. package/dist/hosted/hosted-node-store.js.map +1 -0
  23. package/dist/{donation/donation-supervisor.d.ts → hosted/hosted-node-supervisor.d.ts} +70 -53
  24. package/dist/hosted/hosted-node-supervisor.js +396 -0
  25. package/dist/hosted/hosted-node-supervisor.js.map +1 -0
  26. package/dist/hosted/hosted-node-watcher.d.ts +95 -0
  27. package/dist/hosted/hosted-node-watcher.js +260 -0
  28. package/dist/hosted/hosted-node-watcher.js.map +1 -0
  29. package/dist/hosted/index.d.ts +16 -0
  30. package/dist/hosted/index.js +13 -0
  31. package/dist/hosted/index.js.map +1 -0
  32. package/dist/hosted/node-status.d.ts +51 -0
  33. package/dist/hosted/node-status.js +77 -0
  34. package/dist/hosted/node-status.js.map +1 -0
  35. package/dist/hosted/types.d.ts +141 -0
  36. package/dist/hosted/types.js +22 -0
  37. package/dist/hosted/types.js.map +1 -0
  38. package/dist/index.d.ts +12 -24
  39. package/dist/index.js +9 -19
  40. package/dist/index.js.map +1 -1
  41. package/dist/installer/config.d.ts +27 -34
  42. package/dist/installer/config.js +46 -15
  43. package/dist/installer/config.js.map +1 -1
  44. package/dist/installer/index.d.ts +9 -19
  45. package/dist/installer/index.js +21 -85
  46. package/dist/installer/index.js.map +1 -1
  47. package/dist/installer/paths.d.ts +0 -2
  48. package/dist/installer/paths.js +0 -4
  49. package/dist/installer/paths.js.map +1 -1
  50. package/dist/installer/wizard.d.ts +12 -9
  51. package/dist/installer/wizard.js +15 -14
  52. package/dist/installer/wizard.js.map +1 -1
  53. package/dist/nat/address-resolver.d.ts +18 -17
  54. package/dist/nat/address-resolver.js +79 -25
  55. package/dist/nat/address-resolver.js.map +1 -1
  56. package/dist/nat/address-watch.d.ts +37 -0
  57. package/dist/nat/address-watch.js +84 -0
  58. package/dist/nat/address-watch.js.map +1 -0
  59. package/dist/nat/ddns/duckdns.d.ts +2 -1
  60. package/dist/nat/ddns/duckdns.js +5 -1
  61. package/dist/nat/ddns/duckdns.js.map +1 -1
  62. package/dist/nat/ddns/index.d.ts +6 -0
  63. package/dist/nat/ddns/index.js.map +1 -1
  64. package/dist/nat/index.d.ts +13 -9
  65. package/dist/nat/index.js +7 -5
  66. package/dist/nat/index.js.map +1 -1
  67. package/dist/nat/nat-service.d.ts +220 -77
  68. package/dist/nat/nat-service.js +653 -239
  69. package/dist/nat/nat-service.js.map +1 -1
  70. package/dist/nat/nat-store.d.ts +12 -5
  71. package/dist/nat/nat-store.js +124 -29
  72. package/dist/nat/nat-store.js.map +1 -1
  73. package/dist/nat/network-mode.d.ts +19 -0
  74. package/dist/nat/network-mode.js +32 -0
  75. package/dist/nat/network-mode.js.map +1 -0
  76. package/dist/nat/port-mapper.d.ts +83 -79
  77. package/dist/nat/port-mapper.js +148 -189
  78. package/dist/nat/port-mapper.js.map +1 -1
  79. package/dist/nat/reachability.d.ts +32 -15
  80. package/dist/nat/reachability.js +110 -22
  81. package/dist/nat/reachability.js.map +1 -1
  82. package/dist/nat/types.d.ts +98 -27
  83. package/dist/nat/types.js +8 -5
  84. package/dist/nat/types.js.map +1 -1
  85. package/dist/orchestrator/host-process-orchestrator.d.ts +32 -74
  86. package/dist/orchestrator/host-process-orchestrator.js +84 -233
  87. package/dist/orchestrator/host-process-orchestrator.js.map +1 -1
  88. package/dist/{installer/identity.d.ts → orchestrator/identity-file.d.ts} +5 -5
  89. package/dist/{installer/identity.js → orchestrator/identity-file.js} +6 -6
  90. package/dist/orchestrator/identity-file.js.map +1 -0
  91. package/dist/orchestrator/index.d.ts +2 -3
  92. package/dist/orchestrator/index.js +1 -1
  93. package/dist/orchestrator/index.js.map +1 -1
  94. package/dist/orchestrator/node-identity.d.ts +6 -6
  95. package/dist/orchestrator/node-identity.js +7 -7
  96. package/dist/orchestrator/node-identity.js.map +1 -1
  97. package/dist/orchestrator/port-allocator.d.ts +5 -6
  98. package/dist/orchestrator/port-allocator.js +9 -11
  99. package/dist/orchestrator/port-allocator.js.map +1 -1
  100. package/dist/orchestrator/state-store.d.ts +3 -5
  101. package/dist/orchestrator/state-store.js +2 -10
  102. package/dist/orchestrator/state-store.js.map +1 -1
  103. package/dist/orchestrator/types.d.ts +33 -22
  104. package/dist/orchestrator/types.js.map +1 -1
  105. package/dist/package-version.d.ts +1 -0
  106. package/dist/package-version.js +4 -0
  107. package/dist/package-version.js.map +1 -0
  108. package/dist/server/error-handler.d.ts +5 -25
  109. package/dist/server/error-handler.js +11 -74
  110. package/dist/server/error-handler.js.map +1 -1
  111. package/dist/server/events/types.d.ts +7 -11
  112. package/dist/server/events/types.js +2 -1
  113. package/dist/server/events/types.js.map +1 -1
  114. package/dist/server/index.d.ts +11 -37
  115. package/dist/server/index.js +30 -48
  116. package/dist/server/index.js.map +1 -1
  117. package/dist/server/routes/hosted-nodes.d.ts +28 -0
  118. package/dist/server/routes/hosted-nodes.js +68 -0
  119. package/dist/server/routes/hosted-nodes.js.map +1 -0
  120. package/dist/server/routes/nat.d.ts +4 -1
  121. package/dist/server/routes/nat.js +13 -2
  122. package/dist/server/routes/nat.js.map +1 -1
  123. package/dist/server/routes/nodes.d.ts +6 -20
  124. package/dist/server/routes/nodes.js +7 -86
  125. package/dist/server/routes/nodes.js.map +1 -1
  126. package/dist/server/routes/settings.d.ts +3 -7
  127. package/dist/server/routes/settings.js +18 -8
  128. package/dist/server/routes/settings.js.map +1 -1
  129. package/dist/server/routes/status.d.ts +2 -25
  130. package/dist/server/routes/status.js +3 -43
  131. package/dist/server/routes/status.js.map +1 -1
  132. package/dist/server/server.js +8 -8
  133. package/dist/server/settings-store.d.ts +2 -2
  134. package/dist/server/settings-store.js +2 -2
  135. package/dist/server/static.js +1 -2
  136. package/dist/server/static.js.map +1 -1
  137. package/dist/ui/assets/index-BHd8CWZA.css +1 -0
  138. package/dist/ui/assets/index-Ccr2GjPT.js +23 -0
  139. package/dist/ui/assets/index-Ccr2GjPT.js.map +1 -0
  140. package/dist/ui/index.html +2 -2
  141. package/dist/update/index.d.ts +2 -2
  142. package/dist/update/index.js +2 -2
  143. package/dist/update/store.d.ts +1 -1
  144. package/dist/update/store.js +1 -1
  145. package/dist/update/types.d.ts +1 -1
  146. package/dist/update/types.js +1 -1
  147. package/package.json +5 -7
  148. package/src/__tests__/cli-nat.smoke.test.ts +219 -212
  149. package/src/__tests__/cli.smoke.test.ts +2 -2
  150. package/src/__tests__/global-setup.ts +2 -3
  151. package/src/__tests__/orchestrator-claim-secret.test.ts +111 -0
  152. package/src/__tests__/orchestrator-env-scrub.test.ts +160 -163
  153. package/src/__tests__/orchestrator-handle-contract.ts +134 -134
  154. package/src/__tests__/orchestrator-node-identity.test.ts +177 -203
  155. package/src/__tests__/orchestrator-ports.test.ts +124 -143
  156. package/src/__tests__/orchestrator-push.test.ts +138 -146
  157. package/src/__tests__/orchestrator.test.ts +1017 -1063
  158. package/src/__tests__/ui-access.test.ts +30 -0
  159. package/src/bin/host.ts +397 -572
  160. package/src/bin/join-output.ts +120 -0
  161. package/src/bin/nat-output.ts +188 -0
  162. package/src/bin/ui-access.ts +50 -0
  163. package/src/{donation → hosted}/__tests__/fake-orchestrator.test.ts +172 -173
  164. package/src/{donation → hosted}/__tests__/fake-orchestrator.ts +43 -23
  165. package/src/hosted/__tests__/hosted-node-service.test.ts +708 -0
  166. package/src/hosted/__tests__/hosted-node-supervisor.test.ts +475 -0
  167. package/src/hosted/__tests__/test-invitation.ts +33 -0
  168. package/src/hosted/claim-details.ts +103 -0
  169. package/src/hosted/hosted-node-service.ts +814 -0
  170. package/src/hosted/hosted-node-store.ts +144 -0
  171. package/src/hosted/hosted-node-supervisor.ts +439 -0
  172. package/src/hosted/hosted-node-watcher.ts +288 -0
  173. package/src/hosted/index.ts +53 -0
  174. package/src/hosted/node-status.ts +97 -0
  175. package/src/hosted/types.ts +160 -0
  176. package/src/index.ts +72 -91
  177. package/src/installer/__tests__/config.test.ts +15 -40
  178. package/src/installer/__tests__/installer.smoke.test.ts +184 -263
  179. package/src/installer/__tests__/wizard.test.ts +25 -13
  180. package/src/installer/config.ts +201 -175
  181. package/src/installer/index.ts +252 -327
  182. package/src/installer/paths.ts +104 -109
  183. package/src/installer/wizard.ts +24 -26
  184. package/src/nat/__tests__/address-resolver.test.ts +107 -82
  185. package/src/nat/__tests__/nat-service.test.ts +608 -515
  186. package/src/nat/__tests__/nat-store.test.ts +49 -12
  187. package/src/nat/__tests__/network-mode.test.ts +38 -0
  188. package/src/nat/__tests__/port-mapper.test.ts +30 -191
  189. package/src/nat/__tests__/reachability.test.ts +96 -13
  190. package/src/nat/address-resolver.ts +94 -52
  191. package/src/nat/address-watch.ts +92 -0
  192. package/src/nat/ddns/duckdns.ts +5 -1
  193. package/src/nat/ddns/index.ts +6 -0
  194. package/src/nat/index.ts +33 -13
  195. package/src/nat/nat-service.ts +942 -501
  196. package/src/nat/nat-store.ts +126 -31
  197. package/src/nat/network-mode.ts +36 -0
  198. package/src/nat/port-mapper.ts +241 -329
  199. package/src/nat/reachability.ts +155 -34
  200. package/src/nat/types.ts +110 -37
  201. package/src/{installer/__tests__/identity.test.ts → orchestrator/__tests__/identity-file.test.ts} +34 -34
  202. package/src/orchestrator/__tests__/node-identity.test.ts +62 -62
  203. package/src/orchestrator/host-process-orchestrator.ts +1089 -1260
  204. package/src/{installer/identity.ts → orchestrator/identity-file.ts} +56 -56
  205. package/src/orchestrator/index.ts +9 -10
  206. package/src/orchestrator/node-identity.ts +41 -41
  207. package/src/orchestrator/port-allocator.ts +71 -73
  208. package/src/orchestrator/state-store.ts +76 -90
  209. package/src/orchestrator/types.ts +34 -23
  210. package/src/package-version.ts +4 -0
  211. package/src/server/__tests__/bus.test.ts +38 -38
  212. package/src/server/__tests__/error-handler.test.ts +81 -118
  213. package/src/server/__tests__/fakes.ts +15 -18
  214. package/src/server/__tests__/hosted-nodes-route.test.ts +161 -0
  215. package/src/server/__tests__/nodes-route.test.ts +114 -283
  216. package/src/server/__tests__/publishers.test.ts +193 -180
  217. package/src/server/__tests__/server.smoke.test.ts +134 -223
  218. package/src/server/__tests__/settings-route.test.ts +210 -195
  219. package/src/server/__tests__/sse-route.test.ts +119 -119
  220. package/src/server/__tests__/status-route.test.ts +82 -121
  221. package/src/server/error-handler.ts +112 -178
  222. package/src/server/events/types.ts +20 -24
  223. package/src/server/index.ts +223 -267
  224. package/src/server/routes/hosted-nodes.ts +83 -0
  225. package/src/server/routes/nat.ts +75 -63
  226. package/src/server/routes/nodes.ts +96 -188
  227. package/src/server/routes/settings.ts +20 -15
  228. package/src/server/routes/status.ts +5 -67
  229. package/src/server/server.ts +8 -8
  230. package/src/server/settings-store.ts +2 -2
  231. package/src/server/static.ts +1 -2
  232. package/src/update/index.ts +2 -2
  233. package/src/update/store.ts +1 -1
  234. package/src/update/types.ts +1 -1
  235. package/dist/auth/duration.d.ts +0 -1
  236. package/dist/auth/duration.js +0 -32
  237. package/dist/auth/duration.js.map +0 -1
  238. package/dist/auth/index.d.ts +0 -11
  239. package/dist/auth/index.js +0 -9
  240. package/dist/auth/index.js.map +0 -1
  241. package/dist/auth/self-label.d.ts +0 -36
  242. package/dist/auth/self-label.js +0 -57
  243. package/dist/auth/self-label.js.map +0 -1
  244. package/dist/auth/trust-circle-store.d.ts +0 -26
  245. package/dist/auth/trust-circle-store.js +0 -129
  246. package/dist/auth/trust-circle-store.js.map +0 -1
  247. package/dist/auth/trust-circle.d.ts +0 -156
  248. package/dist/auth/trust-circle.js +0 -307
  249. package/dist/auth/trust-circle.js.map +0 -1
  250. package/dist/auth/types.d.ts +0 -84
  251. package/dist/auth/types.js +0 -24
  252. package/dist/auth/types.js.map +0 -1
  253. package/dist/donation/donation-service.d.ts +0 -389
  254. package/dist/donation/donation-service.js +0 -828
  255. package/dist/donation/donation-service.js.map +0 -1
  256. package/dist/donation/donation-store.d.ts +0 -51
  257. package/dist/donation/donation-store.js +0 -152
  258. package/dist/donation/donation-store.js.map +0 -1
  259. package/dist/donation/donation-supervisor.js +0 -364
  260. package/dist/donation/donation-supervisor.js.map +0 -1
  261. package/dist/donation/grant-service.d.ts +0 -80
  262. package/dist/donation/grant-service.js +0 -210
  263. package/dist/donation/grant-service.js.map +0 -1
  264. package/dist/donation/grant-store.d.ts +0 -38
  265. package/dist/donation/grant-store.js +0 -135
  266. package/dist/donation/grant-store.js.map +0 -1
  267. package/dist/donation/index.d.ts +0 -20
  268. package/dist/donation/index.js +0 -17
  269. package/dist/donation/index.js.map +0 -1
  270. package/dist/donation/types.d.ts +0 -224
  271. package/dist/donation/types.js +0 -40
  272. package/dist/donation/types.js.map +0 -1
  273. package/dist/installer/identity.js.map +0 -1
  274. package/dist/owner/index.d.ts +0 -11
  275. package/dist/owner/index.js +0 -11
  276. package/dist/owner/index.js.map +0 -1
  277. package/dist/owner/owner-node-client.d.ts +0 -110
  278. package/dist/owner/owner-node-client.js +0 -184
  279. package/dist/owner/owner-node-client.js.map +0 -1
  280. package/dist/server/routes/bootstrap-node-validation.d.ts +0 -115
  281. package/dist/server/routes/bootstrap-node-validation.js +0 -197
  282. package/dist/server/routes/bootstrap-node-validation.js.map +0 -1
  283. package/dist/server/routes/grants-admin.d.ts +0 -29
  284. package/dist/server/routes/grants-admin.js +0 -58
  285. package/dist/server/routes/grants-admin.js.map +0 -1
  286. package/dist/server/routes/grants.d.ts +0 -28
  287. package/dist/server/routes/grants.js +0 -165
  288. package/dist/server/routes/grants.js.map +0 -1
  289. package/dist/server/routes/provision-request-validation.d.ts +0 -45
  290. package/dist/server/routes/provision-request-validation.js +0 -97
  291. package/dist/server/routes/provision-request-validation.js.map +0 -1
  292. package/dist/server/routes/strands.d.ts +0 -20
  293. package/dist/server/routes/strands.js +0 -38
  294. package/dist/server/routes/strands.js.map +0 -1
  295. package/dist/server/routes/trust-circle.d.ts +0 -17
  296. package/dist/server/routes/trust-circle.js +0 -35
  297. package/dist/server/routes/trust-circle.js.map +0 -1
  298. package/dist/strands/index.d.ts +0 -7
  299. package/dist/strands/index.js +0 -6
  300. package/dist/strands/index.js.map +0 -1
  301. package/dist/strands/strand-service.d.ts +0 -50
  302. package/dist/strands/strand-service.js +0 -103
  303. package/dist/strands/strand-service.js.map +0 -1
  304. package/dist/strands/types.d.ts +0 -93
  305. package/dist/strands/types.js +0 -23
  306. package/dist/strands/types.js.map +0 -1
  307. package/dist/ui/assets/index-C6nELNfC.js +0 -23
  308. package/dist/ui/assets/index-C6nELNfC.js.map +0 -1
  309. package/dist/ui/assets/index-TtIYSeZO.css +0 -1
  310. package/src/__tests__/cli-invite.smoke.test.ts +0 -192
  311. package/src/__tests__/host-owner.smoke.test.ts +0 -123
  312. package/src/__tests__/orchestrator-owner.test.ts +0 -234
  313. package/src/__tests__/orchestrator-pin-keys.test.ts +0 -152
  314. package/src/auth/__tests__/duration.test.ts +0 -28
  315. package/src/auth/__tests__/self-label.test.ts +0 -85
  316. package/src/auth/__tests__/trust-circle-integration.test.ts +0 -152
  317. package/src/auth/__tests__/trust-circle-store.test.ts +0 -115
  318. package/src/auth/__tests__/trust-circle.test.ts +0 -445
  319. package/src/auth/duration.ts +0 -33
  320. package/src/auth/index.ts +0 -21
  321. package/src/auth/self-label.ts +0 -74
  322. package/src/auth/trust-circle-store.ts +0 -155
  323. package/src/auth/trust-circle.ts +0 -395
  324. package/src/auth/types.ts +0 -99
  325. package/src/donation/__tests__/donation-service.test.ts +0 -1193
  326. package/src/donation/__tests__/donation-supervisor.test.ts +0 -548
  327. package/src/donation/__tests__/grant-service.test.ts +0 -213
  328. package/src/donation/__tests__/grant-store.test.ts +0 -113
  329. package/src/donation/donation-service.ts +0 -1033
  330. package/src/donation/donation-store.ts +0 -176
  331. package/src/donation/donation-supervisor.ts +0 -411
  332. package/src/donation/grant-service.ts +0 -252
  333. package/src/donation/grant-store.ts +0 -152
  334. package/src/donation/index.ts +0 -65
  335. package/src/donation/types.ts +0 -260
  336. package/src/owner/__tests__/owner-node-client.test.ts +0 -194
  337. package/src/owner/index.ts +0 -12
  338. package/src/owner/owner-node-client.ts +0 -259
  339. package/src/server/__tests__/bootstrap-node-validation.test.ts +0 -138
  340. package/src/server/__tests__/grants-admin-route.test.ts +0 -171
  341. package/src/server/__tests__/grants-route.test.ts +0 -394
  342. package/src/server/__tests__/strands-route.test.ts +0 -234
  343. package/src/server/routes/bootstrap-node-validation.ts +0 -206
  344. package/src/server/routes/grants-admin.ts +0 -74
  345. package/src/server/routes/grants.ts +0 -193
  346. package/src/server/routes/provision-request-validation.ts +0 -105
  347. package/src/server/routes/strands.ts +0 -54
  348. package/src/server/routes/trust-circle.ts +0 -49
  349. package/src/strands/__tests__/strand-service.test.ts +0 -165
  350. package/src/strands/index.ts +0 -14
  351. package/src/strands/strand-service.ts +0 -135
  352. package/src/strands/types.ts +0 -102
@@ -1,23 +0,0 @@
1
- (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))n(a);new MutationObserver(a=>{for(const s of a)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function r(a){const s={};return a.integrity&&(s.integrity=a.integrity),a.referrerPolicy&&(s.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?s.credentials="include":a.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(a){if(a.ep)return;a.ep=!0;const s=r(a);fetch(a.href,s)}})();const ci=!1;var Pn=Array.isArray,ui=Array.prototype.indexOf,Wt=Array.prototype.includes,Lr=Array.from,di=Object.defineProperty,lr=Object.getOwnPropertyDescriptor,ja=Object.getOwnPropertyDescriptors,fi=Object.prototype,vi=Array.prototype,Ln=Object.getPrototypeOf,Jn=Object.isExtensible;const za=()=>{};function hi(e){return e()}function hn(e){for(var t=0;t<e.length;t++)e[t]()}function Ha(){var e,t,r=new Promise((n,a)=>{e=n,t=a});return{promise:r,resolve:e,reject:t}}const Pe=2,Qt=4,_r=8,Va=1<<24,ot=16,rt=32,St=64,pn=128,Ge=512,Te=1024,Re=2048,lt=4096,Be=8192,Ye=16384,Ot=32768,Wn=1<<25,Bt=65536,gn=1<<17,pi=1<<18,nr=1<<19,Ka=1<<20,at=1<<25,qt=65536,Ar=1<<21,fr=1<<22,Et=1<<23,Mt=Symbol("$state"),gi=Symbol(""),ht=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},_i=!!globalThis.document?.contentType&&globalThis.document.contentType.includes("xml");function Ga(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function mi(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function bi(e,t,r){throw new Error("https://svelte.dev/e/each_key_duplicate")}function yi(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function wi(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function ki(e){throw new Error("https://svelte.dev/e/effect_orphan")}function Ei(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function Ci(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Si(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Ti(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function xi(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const Ai=1,Ii=2,Ya=4,Ri=8,Ni=16,Mi=1,Pi=2,Ae=Symbol(),Ja="http://www.w3.org/1999/xhtml",Li="http://www.w3.org/2000/svg",Di="http://www.w3.org/1998/Math/MathML";function Bi(){console.warn("https://svelte.dev/e/derived_inert")}function qi(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function Ui(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function Wa(e){return e===this.v}function $i(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function Qa(e){return!$i(e,this.v)}let mr=!1,Fi=!1;function Oi(){mr=!0}let be=null;function Xt(e){be=e}function Ne(e,t=!1,r){be={p:be,i:!1,c:null,e:null,s:e,x:null,r:ee,l:mr&&!t?{s:null,u:null,$:[]}:null}}function Me(e){var t=be,r=t.e;if(r!==null){t.e=null;for(var n of r)_s(n)}return t.i=!0,be=t.p,{}}function br(){return!mr||be!==null&&be.l===null}let Rt=[];function Xa(){var e=Rt;Rt=[],hn(e)}function Ct(e){if(Rt.length===0&&!cr){var t=Rt;queueMicrotask(()=>{t===Rt&&Xa()})}Rt.push(e)}function ji(){for(;Rt.length>0;)Xa()}function Za(e){var t=ee;if(t===null)return ae.f|=Et,e;if((t.f&Ot)===0&&(t.f&Qt)===0)throw e;kt(e,t)}function kt(e,t){for(;t!==null;){if((t.f&pn)!==0){if((t.f&Ot)===0)throw e;try{t.b.error(e);return}catch(r){e=r}}t=t.parent}throw e}const zi=-7169;function ke(e,t){e.f=e.f&zi|t}function Dn(e){(e.f&Ge)!==0||e.deps===null?ke(e,Te):ke(e,lt)}function es(e){if(e!==null)for(const t of e)(t.f&Pe)===0||(t.f&qt)===0||(t.f^=qt,es(t.deps))}function ts(e,t,r){(e.f&Re)!==0?t.add(e):(e.f&lt)!==0&&r.add(e),es(e.deps),ke(e,Te)}const It=new Set;let Q=null,et=null,_n=null,cr=!1,Fr=!1,Gt=null,Tr=null;var Qn=0;let Hi=1;class Tt{id=Hi++;current=new Map;previous=new Map;#r=new Set;#l=new Set;#e=new Set;#a=new Map;#n=new Map;#s=null;#t=[];#i=[];#c=new Set;#u=new Set;#o=new Map;#f=new Set;is_fork=!1;#h=!1;#v=new Set;#d(){return this.is_fork||this.#n.size>0}#_(){for(const n of this.#v)for(const a of n.#n.keys()){for(var t=!1,r=a;r.parent!==null;){if(this.#o.has(r)){t=!0;break}r=r.parent}if(!t)return!0}return!1}skip_effect(t){this.#o.has(t)||this.#o.set(t,{d:[],m:[]}),this.#f.delete(t)}unskip_effect(t,r=n=>this.schedule(n)){var n=this.#o.get(t);if(n){this.#o.delete(t);for(var a of n.d)ke(a,Re),r(a);for(a of n.m)ke(a,lt),r(a)}this.#f.add(t)}#p(){if(Qn++>1e3&&(It.delete(this),Ki()),!this.#d()){for(const l of this.#c)this.#u.delete(l),ke(l,Re),this.schedule(l);for(const l of this.#u)ke(l,lt),this.schedule(l)}const t=this.#t;this.#t=[],this.apply();var r=Gt=[],n=[],a=Tr=[];for(const l of t)try{this.#m(l,r,n)}catch(o){throw as(l),o}if(Q=null,a.length>0){var s=Tt.ensure();for(const l of a)s.schedule(l)}if(Gt=null,Tr=null,this.#d()||this.#_()){this.#g(n),this.#g(r);for(const[l,o]of this.#o)ns(l,o)}else{this.#a.size===0&&It.delete(this),this.#c.clear(),this.#u.clear();for(const l of this.#r)l(this);this.#r.clear(),Xn(n),Xn(r),this.#s?.resolve()}var i=Q;if(this.#t.length>0){const l=i??=this;l.#t.push(...this.#t.filter(o=>!l.#t.includes(o)))}i!==null&&(It.add(i),i.#p())}#m(t,r,n){t.f^=Te;for(var a=t.first;a!==null;){var s=a.f,i=(s&(rt|St))!==0,l=i&&(s&Te)!==0,o=l||(s&Be)!==0||this.#o.has(a);if(!o&&a.fn!==null){i?a.f^=Te:(s&Qt)!==0?r.push(a):wr(a)&&((s&ot)!==0&&this.#u.add(a),er(a));var u=a.first;if(u!==null){a=u;continue}}for(;a!==null;){var f=a.next;if(f!==null){a=f;break}a=a.parent}}}#g(t){for(var r=0;r<t.length;r+=1)ts(t[r],this.#c,this.#u)}capture(t,r,n=!1){t.v!==Ae&&!this.previous.has(t)&&this.previous.set(t,t.v),(t.f&Et)===0&&(this.current.set(t,[r,n]),et?.set(t,r)),this.is_fork||(t.v=r)}activate(){Q=this}deactivate(){Q=null,et=null}flush(){try{Fr=!0,Q=this,this.#p()}finally{Qn=0,_n=null,Gt=null,Tr=null,Fr=!1,Q=null,et=null,Pt.clear()}}discard(){for(const t of this.#l)t(this);this.#l.clear(),this.#e.clear(),It.delete(this)}register_created_effect(t){this.#i.push(t)}#b(){for(const f of It){var t=f.id<this.id,r=[];for(const[g,[p,m]]of this.current){if(f.current.has(g)){var n=f.current.get(g)[0];if(t&&p!==n)f.current.set(g,[p,m]);else continue}r.push(g)}var a=[...f.current.keys()].filter(g=>!this.current.has(g));if(a.length===0)t&&f.discard();else if(r.length>0){if(t)for(const g of this.#f)f.unskip_effect(g,p=>{(p.f&(ot|fr))!==0?f.schedule(p):f.#g([p])});f.activate();var s=new Set,i=new Map;for(var l of r)rs(l,a,s,i);i=new Map;var o=[...f.current.keys()].filter(g=>this.current.has(g)?this.current.get(g)[0]!==g:!0);for(const g of this.#i)(g.f&(Ye|Be|gn))===0&&Bn(g,o,i)&&((g.f&(fr|ot))!==0?(ke(g,Re),f.schedule(g)):f.#c.add(g));if(f.#t.length>0){f.apply();for(var u of f.#t)f.#m(u,[],[]);f.#t=[]}f.deactivate()}}for(const f of It)f.#v.has(this)&&(f.#v.delete(this),f.#v.size===0&&!f.#d()&&(f.activate(),f.#p()))}increment(t,r){let n=this.#a.get(r)??0;if(this.#a.set(r,n+1),t){let a=this.#n.get(r)??0;this.#n.set(r,a+1)}}decrement(t,r,n){let a=this.#a.get(r)??0;if(a===1?this.#a.delete(r):this.#a.set(r,a-1),t){let s=this.#n.get(r)??0;s===1?this.#n.delete(r):this.#n.set(r,s-1)}this.#h||n||(this.#h=!0,Ct(()=>{this.#h=!1,this.flush()}))}transfer_effects(t,r){for(const n of t)this.#c.add(n);for(const n of r)this.#u.add(n);t.clear(),r.clear()}oncommit(t){this.#r.add(t)}ondiscard(t){this.#l.add(t)}on_fork_commit(t){this.#e.add(t)}run_fork_commit_callbacks(){for(const t of this.#e)t(this);this.#e.clear()}settled(){return(this.#s??=Ha()).promise}static ensure(){if(Q===null){const t=Q=new Tt;Fr||(It.add(Q),cr||Ct(()=>{Q===t&&t.flush()}))}return Q}apply(){{et=null;return}}schedule(t){if(_n=t,t.b?.is_pending&&(t.f&(Qt|_r|Va))!==0&&(t.f&Ot)===0){t.b.defer_effect(t);return}for(var r=t;r.parent!==null;){r=r.parent;var n=r.f;if(Gt!==null&&r===ee&&(ae===null||(ae.f&Pe)===0))return;if((n&(St|rt))!==0){if((n&Te)===0)return;r.f^=Te}}this.#t.push(r)}}function Vi(e){var t=cr;cr=!0;try{for(var r;;){if(ji(),Q===null)return r;Q.flush()}}finally{cr=t}}function Ki(){try{Ei()}catch(e){kt(e,_n)}}let vt=null;function Xn(e){var t=e.length;if(t!==0){for(var r=0;r<t;){var n=e[r++];if((n.f&(Ye|Be))===0&&wr(n)&&(vt=new Set,er(n),n.deps===null&&n.first===null&&n.nodes===null&&n.teardown===null&&n.ac===null&&ys(n),vt?.size>0)){Pt.clear();for(const a of vt){if((a.f&(Ye|Be))!==0)continue;const s=[a];let i=a.parent;for(;i!==null;)vt.has(i)&&(vt.delete(i),s.push(i)),i=i.parent;for(let l=s.length-1;l>=0;l--){const o=s[l];(o.f&(Ye|Be))===0&&er(o)}}vt.clear()}}vt=null}}function rs(e,t,r,n){if(!r.has(e)&&(r.add(e),e.reactions!==null))for(const a of e.reactions){const s=a.f;(s&Pe)!==0?rs(a,t,r,n):(s&(fr|ot))!==0&&(s&Re)===0&&Bn(a,t,n)&&(ke(a,Re),qn(a))}}function Bn(e,t,r){const n=r.get(e);if(n!==void 0)return n;if(e.deps!==null)for(const a of e.deps){if(Wt.call(t,a))return!0;if((a.f&Pe)!==0&&Bn(a,t,r))return r.set(a,!0),!0}return r.set(e,!1),!1}function qn(e){Q.schedule(e)}function ns(e,t){if(!((e.f&rt)!==0&&(e.f&Te)!==0)){(e.f&Re)!==0?t.d.push(e):(e.f&lt)!==0&&t.m.push(e),ke(e,Te);for(var r=e.first;r!==null;)ns(r,t),r=r.next}}function as(e){ke(e,Te);for(var t=e.first;t!==null;)as(t),t=t.next}function Gi(e){let t=0,r=Ut(0),n;return()=>{Fn()&&(c(r),jn(()=>(t===0&&(n=jt(()=>e(()=>ur(r)))),t+=1,()=>{Ct(()=>{t-=1,t===0&&(n?.(),n=void 0,ur(r))})})))}}var Yi=Bt|nr;function Ji(e,t,r,n){new Wi(e,t,r,n)}class Wi{parent;is_pending=!1;transform_error;#r;#l=null;#e;#a;#n;#s=null;#t=null;#i=null;#c=null;#u=0;#o=0;#f=!1;#h=new Set;#v=new Set;#d=null;#_=Gi(()=>(this.#d=Ut(this.#u),()=>{this.#d=null}));constructor(t,r,n,a){this.#r=t,this.#e=r,this.#a=s=>{var i=ee;i.b=this,i.f|=pn,n(s)},this.parent=ee.b,this.transform_error=a??this.parent?.transform_error??(s=>s),this.#n=qr(()=>{this.#b()},Yi)}#p(){try{this.#s=Ke(()=>this.#a(this.#r))}catch(t){this.error(t)}}#m(t){const r=this.#e.failed;r&&(this.#i=Ke(()=>{r(this.#r,()=>t,()=>()=>{})}))}#g(){const t=this.#e.pending;t&&(this.is_pending=!0,this.#t=Ke(()=>t(this.#r)),Ct(()=>{var r=this.#c=document.createDocumentFragment(),n=pt();r.append(n),this.#s=this.#w(()=>Ke(()=>this.#a(n))),this.#o===0&&(this.#r.before(r),this.#c=null,Lt(this.#t,()=>{this.#t=null}),this.#y(Q))}))}#b(){try{if(this.is_pending=this.has_pending_snippet(),this.#o=0,this.#u=0,this.#s=Ke(()=>{this.#a(this.#r)}),this.#o>0){var t=this.#c=document.createDocumentFragment();Vn(this.#s,t);const r=this.#e.pending;this.#t=Ke(()=>r(this.#r))}else this.#y(Q)}catch(r){this.error(r)}}#y(t){this.is_pending=!1,t.transfer_effects(this.#h,this.#v)}defer_effect(t){ts(t,this.#h,this.#v)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#e.pending}#w(t){var r=ee,n=ae,a=be;ct(this.#n),We(this.#n),Xt(this.#n.ctx);try{return Tt.ensure(),t()}catch(s){return Za(s),null}finally{ct(r),We(n),Xt(a)}}#k(t,r){if(!this.has_pending_snippet()){this.parent&&this.parent.#k(t,r);return}this.#o+=t,this.#o===0&&(this.#y(r),this.#t&&Lt(this.#t,()=>{this.#t=null}),this.#c&&(this.#r.before(this.#c),this.#c=null))}update_pending_count(t,r){this.#k(t,r),this.#u+=t,!(!this.#d||this.#f)&&(this.#f=!0,Ct(()=>{this.#f=!1,this.#d&&Zt(this.#d,this.#u)}))}get_effect_pending(){return this.#_(),c(this.#d)}error(t){if(!this.#e.onerror&&!this.#e.failed)throw t;Q?.is_fork?(this.#s&&Q.skip_effect(this.#s),this.#t&&Q.skip_effect(this.#t),this.#i&&Q.skip_effect(this.#i),Q.on_fork_commit(()=>{this.#E(t)})):this.#E(t)}#E(t){this.#s&&($e(this.#s),this.#s=null),this.#t&&($e(this.#t),this.#t=null),this.#i&&($e(this.#i),this.#i=null);var r=this.#e.onerror;let n=this.#e.failed;var a=!1,s=!1;const i=()=>{if(a){Ui();return}a=!0,s&&xi(),this.#i!==null&&Lt(this.#i,()=>{this.#i=null}),this.#w(()=>{this.#b()})},l=o=>{try{s=!0,r?.(o,i),s=!1}catch(u){kt(u,this.#n&&this.#n.parent)}n&&(this.#i=this.#w(()=>{try{return Ke(()=>{var u=ee;u.b=this,u.f|=pn,n(this.#r,()=>o,()=>i)})}catch(u){return kt(u,this.#n.parent),null}}))};Ct(()=>{var o;try{o=this.transform_error(t)}catch(u){kt(u,this.#n&&this.#n.parent);return}o!==null&&typeof o=="object"&&typeof o.then=="function"?o.then(l,u=>kt(u,this.#n&&this.#n.parent)):l(o)})}}function Qi(e,t,r,n){const a=br()?Dr:is;var s=e.filter(p=>!p.settled);if(r.length===0&&s.length===0){n(t.map(a));return}var i=ee,l=Xi(),o=s.length===1?s[0].promise:s.length>1?Promise.all(s.map(p=>p.promise)):null;function u(p){l();try{n(p)}catch(m){(i.f&Ye)===0&&kt(m,i)}Ir()}if(r.length===0){o.then(()=>u(t.map(a)));return}var f=ss();function g(){Promise.all(r.map(p=>Zi(p))).then(p=>u([...t.map(a),...p])).catch(p=>kt(p,i)).finally(()=>f())}o?o.then(()=>{l(),g(),Ir()}):g()}function Xi(){var e=ee,t=ae,r=be,n=Q;return function(s=!0){ct(e),We(t),Xt(r),s&&(e.f&Ye)===0&&(n?.activate(),n?.apply())}}function Ir(e=!0){ct(null),We(null),Xt(null),e&&Q?.deactivate()}function ss(){var e=ee,t=e.b,r=Q,n=t.is_rendered();return t.update_pending_count(1,r),r.increment(n,e),(a=!1)=>{t.update_pending_count(-1,r),r.decrement(n,e,a)}}function Dr(e){var t=Pe|Re;return ee!==null&&(ee.f|=nr),{ctx:be,deps:null,effects:null,equals:Wa,f:t,fn:e,reactions:null,rv:0,v:Ae,wv:0,parent:ee,ac:null}}function Zi(e,t,r){let n=ee;n===null&&mi();var a=void 0,s=Ut(Ae),i=!ae,l=new Map;return vo(()=>{var o=ee,u=Ha();a=u.promise;try{Promise.resolve(e()).then(u.resolve,u.reject).finally(Ir)}catch(m){u.reject(m),Ir()}var f=Q;if(i){if((o.f&Ot)!==0)var g=ss();if(n.b.is_rendered())l.get(f)?.reject(ht),l.delete(f);else{for(const m of l.values())m.reject(ht);l.clear()}l.set(f,u)}const p=(m,E=void 0)=>{if(g){var A=E===ht;g(A)}if(!(E===ht||(o.f&Ye)!==0)){if(f.activate(),E)s.f|=Et,Zt(s,E);else{(s.f&Et)!==0&&(s.f^=Et),Zt(s,m);for(const[k,C]of l){if(l.delete(k),k===f)break;C.reject(ht)}}f.deactivate()}};u.promise.then(p,m=>p(null,m||"unknown"))}),On(()=>{for(const o of l.values())o.reject(ht)}),new Promise(o=>{function u(f){function g(){f===a?o(s):u(a)}f.then(g,g)}u(a)})}function J(e){const t=Dr(e);return Es(t),t}function is(e){const t=Dr(e);return t.equals=Qa,t}function eo(e){var t=e.effects;if(t!==null){e.effects=null;for(var r=0;r<t.length;r+=1)$e(t[r])}}function Un(e){var t,r=ee,n=e.parent;if(!xt&&n!==null&&(n.f&(Ye|Be))!==0)return Bi(),e.v;ct(n);try{e.f&=~qt,eo(e),t=xs(e)}finally{ct(r)}return t}function os(e){var t=Un(e);if(!e.equals(t)&&(e.wv=Ss(),(!Q?.is_fork||e.deps===null)&&(Q!==null?Q.capture(e,t,!0):e.v=t,e.deps===null))){ke(e,Te);return}xt||(et!==null?(Fn()||Q?.is_fork)&&et.set(e,t):Dn(e))}function to(e){if(e.effects!==null)for(const t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac?.abort(ht),t.teardown=za,t.ac=null,vr(t,0),zn(t))}function ls(e){if(e.effects!==null)for(const t of e.effects)t.teardown&&er(t)}let mn=new Set;const Pt=new Map;let cs=!1;function Ut(e,t){var r={f:0,v:e,reactions:null,equals:Wa,rv:0,wv:0};return r}function z(e,t){const r=Ut(e);return Es(r),r}function ro(e,t=!1,r=!0){const n=Ut(e);return t||(n.equals=Qa),mr&&r&&be!==null&&be.l!==null&&(be.l.s??=[]).push(n),n}function M(e,t,r=!1){ae!==null&&(!tt||(ae.f&gn)!==0)&&br()&&(ae.f&(Pe|ot|fr|gn))!==0&&(Je===null||!Wt.call(Je,e))&&Ti();let n=r?st(t):t;return Zt(e,n,Tr)}function Zt(e,t,r=null){if(!e.equals(t)){Pt.set(e,xt?t:e.v);var n=Tt.ensure();if(n.capture(e,t),(e.f&Pe)!==0){const a=e;(e.f&Re)!==0&&Un(a),et===null&&Dn(a)}e.wv=Ss(),us(e,Re,r),br()&&ee!==null&&(ee.f&Te)!==0&&(ee.f&(rt|St))===0&&(Ve===null?po([e]):Ve.push(e)),!n.is_fork&&mn.size>0&&!cs&&no()}return t}function no(){cs=!1;for(const e of mn)(e.f&Te)!==0&&ke(e,lt),wr(e)&&er(e);mn.clear()}function ur(e){M(e,e.v+1)}function us(e,t,r){var n=e.reactions;if(n!==null)for(var a=br(),s=n.length,i=0;i<s;i++){var l=n[i],o=l.f;if(!(!a&&l===ee)){var u=(o&Re)===0;if(u&&ke(l,t),(o&Pe)!==0){var f=l;et?.delete(f),(o&qt)===0&&(o&Ge&&(ee===null||(ee.f&Ar)===0)&&(l.f|=qt),us(f,lt,r))}else if(u){var g=l;(o&ot)!==0&&vt!==null&&vt.add(g),r!==null?r.push(g):qn(g)}}}}function st(e){if(typeof e!="object"||e===null||Mt in e)return e;const t=Ln(e);if(t!==fi&&t!==vi)return e;var r=new Map,n=Pn(e),a=z(0),s=Dt,i=l=>{if(Dt===s)return l();var o=ae,u=Dt;We(null),na(s);var f=l();return We(o),na(u),f};return n&&r.set("length",z(e.length)),new Proxy(e,{defineProperty(l,o,u){(!("value"in u)||u.configurable===!1||u.enumerable===!1||u.writable===!1)&&Ci();var f=r.get(o);return f===void 0?i(()=>{var g=z(u.value);return r.set(o,g),g}):M(f,u.value,!0),!0},deleteProperty(l,o){var u=r.get(o);if(u===void 0){if(o in l){const f=i(()=>z(Ae));r.set(o,f),ur(a)}}else M(u,Ae),ur(a);return!0},get(l,o,u){if(o===Mt)return e;var f=r.get(o),g=o in l;if(f===void 0&&(!g||lr(l,o)?.writable)&&(f=i(()=>{var m=st(g?l[o]:Ae),E=z(m);return E}),r.set(o,f)),f!==void 0){var p=c(f);return p===Ae?void 0:p}return Reflect.get(l,o,u)},getOwnPropertyDescriptor(l,o){var u=Reflect.getOwnPropertyDescriptor(l,o);if(u&&"value"in u){var f=r.get(o);f&&(u.value=c(f))}else if(u===void 0){var g=r.get(o),p=g?.v;if(g!==void 0&&p!==Ae)return{enumerable:!0,configurable:!0,value:p,writable:!0}}return u},has(l,o){if(o===Mt)return!0;var u=r.get(o),f=u!==void 0&&u.v!==Ae||Reflect.has(l,o);if(u!==void 0||ee!==null&&(!f||lr(l,o)?.writable)){u===void 0&&(u=i(()=>{var p=f?st(l[o]):Ae,m=z(p);return m}),r.set(o,u));var g=c(u);if(g===Ae)return!1}return f},set(l,o,u,f){var g=r.get(o),p=o in l;if(n&&o==="length")for(var m=u;m<g.v;m+=1){var E=r.get(m+"");E!==void 0?M(E,Ae):m in l&&(E=i(()=>z(Ae)),r.set(m+"",E))}if(g===void 0)(!p||lr(l,o)?.writable)&&(g=i(()=>z(void 0)),M(g,st(u)),r.set(o,g));else{p=g.v!==Ae;var A=i(()=>st(u));M(g,A)}var k=Reflect.getOwnPropertyDescriptor(l,o);if(k?.set&&k.set.call(f,u),!p){if(n&&typeof o=="string"){var C=r.get("length"),B=Number(o);Number.isInteger(B)&&B>=C.v&&M(C,B+1)}ur(a)}return!0},ownKeys(l){c(a);var o=Reflect.ownKeys(l).filter(g=>{var p=r.get(g);return p===void 0||p.v!==Ae});for(var[u,f]of r)f.v!==Ae&&!(u in l)&&o.push(u);return o},setPrototypeOf(){Si()}})}function Zn(e){try{if(e!==null&&typeof e=="object"&&Mt in e)return e[Mt]}catch{}return e}function ao(e,t){return Object.is(Zn(e),Zn(t))}var ea,ds,fs,vs;function so(){if(ea===void 0){ea=window,ds=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,r=Text.prototype;fs=lr(t,"firstChild").get,vs=lr(t,"nextSibling").get,Jn(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),Jn(r)&&(r.__t=void 0)}}function pt(e=""){return document.createTextNode(e)}function it(e){return fs.call(e)}function yr(e){return vs.call(e)}function d(e,t){return it(e)}function de(e,t=!1){{var r=it(e);return r instanceof Comment&&r.data===""?yr(r):r}}function v(e,t=1,r=!1){let n=e;for(;t--;)n=yr(n);return n}function io(e){e.textContent=""}function hs(){return!1}function ps(e,t,r){return document.createElementNS(t??Ja,e,void 0)}let ta=!1;function oo(){ta||(ta=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t.__on_r?.()})},{capture:!0}))}function Br(e){var t=ae,r=ee;We(null),ct(null);try{return e()}finally{We(t),ct(r)}}function $n(e,t,r,n=r){e.addEventListener(t,()=>Br(r));const a=e.__on_r;a?e.__on_r=()=>{a(),n(!0)}:e.__on_r=()=>n(!0),oo()}function gs(e){ee===null&&(ae===null&&ki(),wi()),xt&&yi()}function lo(e,t){var r=t.last;r===null?t.last=t.first=e:(r.next=e,e.prev=r,t.last=e)}function ut(e,t){var r=ee;r!==null&&(r.f&Be)!==0&&(e|=Be);var n={ctx:be,deps:null,nodes:null,f:e|Re|Ge,first:null,fn:t,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};Q?.register_created_effect(n);var a=n;if((e&Qt)!==0)Gt!==null?Gt.push(n):Tt.ensure().schedule(n);else if(t!==null){try{er(n)}catch(i){throw $e(n),i}a.deps===null&&a.teardown===null&&a.nodes===null&&a.first===a.last&&(a.f&nr)===0&&(a=a.first,(e&ot)!==0&&(e&Bt)!==0&&a!==null&&(a.f|=Bt))}if(a!==null&&(a.parent=r,r!==null&&lo(a,r),ae!==null&&(ae.f&Pe)!==0&&(e&St)===0)){var s=ae;(s.effects??=[]).push(a)}return n}function Fn(){return ae!==null&&!tt}function On(e){const t=ut(_r,null);return ke(t,Te),t.teardown=e,t}function _t(e){gs();var t=ee.f,r=!ae&&(t&rt)!==0&&(t&Ot)===0;if(r){var n=be;(n.e??=[]).push(e)}else return _s(e)}function _s(e){return ut(Qt|Ka,e)}function co(e){return gs(),ut(_r|Ka,e)}function uo(e){Tt.ensure();const t=ut(St|nr,e);return(r={})=>new Promise(n=>{r.outro?Lt(t,()=>{$e(t),n(void 0)}):($e(t),n(void 0))})}function fo(e){return ut(Qt,e)}function vo(e){return ut(fr|nr,e)}function jn(e,t=0){return ut(_r|t,e)}function F(e,t=[],r=[],n=[]){Qi(n,t,r,a=>{ut(_r,()=>e(...a.map(c)))})}function qr(e,t=0){var r=ut(ot|t,e);return r}function Ke(e){return ut(rt|nr,e)}function ms(e){var t=e.teardown;if(t!==null){const r=xt,n=ae;ra(!0),We(null);try{t.call(null)}finally{ra(r),We(n)}}}function zn(e,t=!1){var r=e.first;for(e.first=e.last=null;r!==null;){const a=r.ac;a!==null&&Br(()=>{a.abort(ht)});var n=r.next;(r.f&St)!==0?r.parent=null:$e(r,t),r=n}}function ho(e){for(var t=e.first;t!==null;){var r=t.next;(t.f&rt)===0&&$e(t),t=r}}function $e(e,t=!0){var r=!1;(t||(e.f&pi)!==0)&&e.nodes!==null&&e.nodes.end!==null&&(bs(e.nodes.start,e.nodes.end),r=!0),ke(e,Wn),zn(e,t&&!r),vr(e,0);var n=e.nodes&&e.nodes.t;if(n!==null)for(const s of n)s.stop();ms(e),e.f^=Wn,e.f|=Ye;var a=e.parent;a!==null&&a.first!==null&&ys(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function bs(e,t){for(;e!==null;){var r=e===t?null:yr(e);e.remove(),e=r}}function ys(e){var t=e.parent,r=e.prev,n=e.next;r!==null&&(r.next=n),n!==null&&(n.prev=r),t!==null&&(t.first===e&&(t.first=n),t.last===e&&(t.last=r))}function Lt(e,t,r=!0){var n=[];ws(e,n,!0);var a=()=>{r&&$e(e),t&&t()},s=n.length;if(s>0){var i=()=>--s||a();for(var l of n)l.out(i)}else a()}function ws(e,t,r){if((e.f&Be)===0){e.f^=Be;var n=e.nodes&&e.nodes.t;if(n!==null)for(const l of n)(l.is_global||r)&&t.push(l);for(var a=e.first;a!==null;){var s=a.next;if((a.f&St)===0){var i=(a.f&Bt)!==0||(a.f&rt)!==0&&(e.f&ot)!==0;ws(a,t,i?r:!1)}a=s}}}function Hn(e){ks(e,!0)}function ks(e,t){if((e.f&Be)!==0){e.f^=Be,(e.f&Te)===0&&(ke(e,Re),Tt.ensure().schedule(e));for(var r=e.first;r!==null;){var n=r.next,a=(r.f&Bt)!==0||(r.f&rt)!==0;ks(r,a?t:!1),r=n}var s=e.nodes&&e.nodes.t;if(s!==null)for(const i of s)(i.is_global||t)&&i.in()}}function Vn(e,t){if(e.nodes)for(var r=e.nodes.start,n=e.nodes.end;r!==null;){var a=r===n?null:yr(r);t.append(r),r=a}}let xr=!1,xt=!1;function ra(e){xt=e}let ae=null,tt=!1;function We(e){ae=e}let ee=null;function ct(e){ee=e}let Je=null;function Es(e){ae!==null&&(Je===null?Je=[e]:Je.push(e))}let Ue=null,ze=0,Ve=null;function po(e){Ve=e}let Cs=1,Nt=0,Dt=Nt;function na(e){Dt=e}function Ss(){return++Cs}function wr(e){var t=e.f;if((t&Re)!==0)return!0;if(t&Pe&&(e.f&=~qt),(t&lt)!==0){for(var r=e.deps,n=r.length,a=0;a<n;a++){var s=r[a];if(wr(s)&&os(s),s.wv>e.wv)return!0}(t&Ge)!==0&&et===null&&ke(e,Te)}return!1}function Ts(e,t,r=!0){var n=e.reactions;if(n!==null&&!(Je!==null&&Wt.call(Je,e)))for(var a=0;a<n.length;a++){var s=n[a];(s.f&Pe)!==0?Ts(s,t,!1):t===s&&(r?ke(s,Re):(s.f&Te)!==0&&ke(s,lt),qn(s))}}function xs(e){var t=Ue,r=ze,n=Ve,a=ae,s=Je,i=be,l=tt,o=Dt,u=e.f;Ue=null,ze=0,Ve=null,ae=(u&(rt|St))===0?e:null,Je=null,Xt(e.ctx),tt=!1,Dt=++Nt,e.ac!==null&&(Br(()=>{e.ac.abort(ht)}),e.ac=null);try{e.f|=Ar;var f=e.fn,g=f();e.f|=Ot;var p=e.deps,m=Q?.is_fork;if(Ue!==null){var E;if(m||vr(e,ze),p!==null&&ze>0)for(p.length=ze+Ue.length,E=0;E<Ue.length;E++)p[ze+E]=Ue[E];else e.deps=p=Ue;if(Fn()&&(e.f&Ge)!==0)for(E=ze;E<p.length;E++)(p[E].reactions??=[]).push(e)}else!m&&p!==null&&ze<p.length&&(vr(e,ze),p.length=ze);if(br()&&Ve!==null&&!tt&&p!==null&&(e.f&(Pe|lt|Re))===0)for(E=0;E<Ve.length;E++)Ts(Ve[E],e);if(a!==null&&a!==e){if(Nt++,a.deps!==null)for(let A=0;A<r;A+=1)a.deps[A].rv=Nt;if(t!==null)for(const A of t)A.rv=Nt;Ve!==null&&(n===null?n=Ve:n.push(...Ve))}return(e.f&Et)!==0&&(e.f^=Et),g}catch(A){return Za(A)}finally{e.f^=Ar,Ue=t,ze=r,Ve=n,ae=a,Je=s,Xt(i),tt=l,Dt=o}}function go(e,t){let r=t.reactions;if(r!==null){var n=ui.call(r,e);if(n!==-1){var a=r.length-1;a===0?r=t.reactions=null:(r[n]=r[a],r.pop())}}if(r===null&&(t.f&Pe)!==0&&(Ue===null||!Wt.call(Ue,t))){var s=t;(s.f&Ge)!==0&&(s.f^=Ge,s.f&=~qt),s.v!==Ae&&Dn(s),to(s),vr(s,0)}}function vr(e,t){var r=e.deps;if(r!==null)for(var n=t;n<r.length;n++)go(e,r[n])}function er(e){var t=e.f;if((t&Ye)===0){ke(e,Te);var r=ee,n=xr;ee=e,xr=!0;try{(t&(ot|Va))!==0?ho(e):zn(e),ms(e);var a=xs(e);e.teardown=typeof a=="function"?a:null,e.wv=Cs;var s;ci&&Fi&&(e.f&Re)!==0&&e.deps}finally{xr=n,ee=r}}}async function _o(){await Promise.resolve(),Vi()}function c(e){var t=e.f,r=(t&Pe)!==0;if(ae!==null&&!tt){var n=ee!==null&&(ee.f&Ye)!==0;if(!n&&(Je===null||!Wt.call(Je,e))){var a=ae.deps;if((ae.f&Ar)!==0)e.rv<Nt&&(e.rv=Nt,Ue===null&&a!==null&&a[ze]===e?ze++:Ue===null?Ue=[e]:Ue.push(e));else{(ae.deps??=[]).push(e);var s=e.reactions;s===null?e.reactions=[ae]:Wt.call(s,ae)||s.push(ae)}}}if(xt&&Pt.has(e))return Pt.get(e);if(r){var i=e;if(xt){var l=i.v;return((i.f&Te)===0&&i.reactions!==null||Is(i))&&(l=Un(i)),Pt.set(i,l),l}var o=(i.f&Ge)===0&&!tt&&ae!==null&&(xr||(ae.f&Ge)!==0),u=(i.f&Ot)===0;wr(i)&&(o&&(i.f|=Ge),os(i)),o&&!u&&(ls(i),As(i))}if(et?.has(e))return et.get(e);if((e.f&Et)!==0)throw e.v;return e.v}function As(e){if(e.f|=Ge,e.deps!==null)for(const t of e.deps)(t.reactions??=[]).push(e),(t.f&Pe)!==0&&(t.f&Ge)===0&&(ls(t),As(t))}function Is(e){if(e.v===Ae)return!0;if(e.deps===null)return!1;for(const t of e.deps)if(Pt.has(t)||(t.f&Pe)!==0&&Is(t))return!0;return!1}function jt(e){var t=tt;try{return tt=!0,e()}finally{tt=t}}function mo(e){if(!(typeof e!="object"||!e||e instanceof EventTarget)){if(Mt in e)bn(e);else if(!Array.isArray(e))for(let t in e){const r=e[t];typeof r=="object"&&r&&Mt in r&&bn(r)}}}function bn(e,t=new Set){if(typeof e=="object"&&e!==null&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let n in e)try{bn(e[n],t)}catch{}const r=Ln(e);if(r!==Object.prototype&&r!==Array.prototype&&r!==Map.prototype&&r!==Set.prototype&&r!==Date.prototype){const n=ja(r);for(let a in n){const s=n[a].get;if(s)try{s.call(e)}catch{}}}}}const bo=["touchstart","touchmove"];function yo(e){return bo.includes(e)}const ir=Symbol("events"),Rs=new Set,yn=new Set;function wo(e,t,r,n={}){function a(s){if(n.capture||wn.call(t,s),!s.cancelBubble)return Br(()=>r?.call(this,s))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?Ct(()=>{t.addEventListener(e,a,n)}):t.addEventListener(e,a,n),a}function hr(e,t,r,n,a){var s={capture:n,passive:a},i=wo(e,t,r,s);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&On(()=>{t.removeEventListener(e,i,s)})}function re(e,t,r){(t[ir]??={})[e]=r}function Xe(e){for(var t=0;t<e.length;t++)Rs.add(e[t]);for(var r of yn)r(e)}let aa=null;function wn(e){var t=this,r=t.ownerDocument,n=e.type,a=e.composedPath?.()||[],s=a[0]||e.target;aa=e;var i=0,l=aa===e&&e[ir];if(l){var o=a.indexOf(l);if(o!==-1&&(t===document||t===window)){e[ir]=t;return}var u=a.indexOf(t);if(u===-1)return;o<=u&&(i=o)}if(s=a[i]||e.target,s!==t){di(e,"currentTarget",{configurable:!0,get(){return s||r}});var f=ae,g=ee;We(null),ct(null);try{for(var p,m=[];s!==null;){var E=s.assignedSlot||s.parentNode||s.host||null;try{var A=s[ir]?.[n];A!=null&&(!s.disabled||e.target===s)&&A.call(s,e)}catch(k){p?m.push(k):p=k}if(e.cancelBubble||E===t||E===null)break;s=E}if(p){for(let k of m)queueMicrotask(()=>{throw k});throw p}}finally{e[ir]=t,delete e.currentTarget,We(f),ct(g)}}}const ko=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:e=>e});function Eo(e){return ko?.createHTML(e)??e}function Ns(e){var t=ps("template");return t.innerHTML=Eo(e.replaceAll("<!>","<!---->")),t.content}function $t(e,t){var r=ee;r.nodes===null&&(r.nodes={start:e,end:t,a:null,t:null})}function L(e,t){var r=(t&Mi)!==0,n=(t&Pi)!==0,a,s=!e.startsWith("<!>");return()=>{a===void 0&&(a=Ns(s?e:"<!>"+e),r||(a=it(a)));var i=n||ds?document.importNode(a,!0):a.cloneNode(!0);if(r){var l=it(i),o=i.lastChild;$t(l,o)}else $t(i,i);return i}}function Co(e,t,r="svg"){var n=!e.startsWith("<!>"),a=`<${r}>${n?e:"<!>"+e}</${r}>`,s;return()=>{if(!s){var i=Ns(a),l=it(i);s=it(l)}var o=s.cloneNode(!0);return $t(o,o),o}}function Ms(e,t){return Co(e,t,"svg")}function So(e=""){{var t=pt(e+"");return $t(t,t),t}}function At(){var e=document.createDocumentFragment(),t=document.createComment(""),r=pt();return e.append(t,r),$t(t,r),e}function I(e,t){e!==null&&e.before(t)}function R(e,t){var r=t==null?"":typeof t=="object"?`${t}`:t;r!==(e.__t??=e.nodeValue)&&(e.__t=r,e.nodeValue=`${r}`)}function To(e,t){return xo(e,t)}const Cr=new Map;function xo(e,{target:t,anchor:r,props:n={},events:a,context:s,intro:i=!0,transformError:l}){so();var o=void 0,u=uo(()=>{var f=r??t.appendChild(pt());Ji(f,{pending:()=>{}},m=>{Ne({});var E=be;s&&(E.c=s),a&&(n.$$events=a),o=e(m,n)||{},Me()},l);var g=new Set,p=m=>{for(var E=0;E<m.length;E++){var A=m[E];if(!g.has(A)){g.add(A);var k=yo(A);for(const T of[t,document]){var C=Cr.get(T);C===void 0&&(C=new Map,Cr.set(T,C));var B=C.get(A);B===void 0?(T.addEventListener(A,wn,{passive:k}),C.set(A,1)):C.set(A,B+1)}}}};return p(Lr(Rs)),yn.add(p),()=>{for(var m of g)for(const k of[t,document]){var E=Cr.get(k),A=E.get(m);--A==0?(k.removeEventListener(m,wn),E.delete(m),E.size===0&&Cr.delete(k)):E.set(m,A)}yn.delete(p),f!==r&&f.parentNode?.removeChild(f)}});return Ao.set(o,u),o}let Ao=new WeakMap;class Ps{anchor;#r=new Map;#l=new Map;#e=new Map;#a=new Set;#n=!0;constructor(t,r=!0){this.anchor=t,this.#n=r}#s=t=>{if(this.#r.has(t)){var r=this.#r.get(t),n=this.#l.get(r);if(n)Hn(n),this.#a.delete(r);else{var a=this.#e.get(r);a&&(this.#l.set(r,a.effect),this.#e.delete(r),a.fragment.lastChild.remove(),this.anchor.before(a.fragment),n=a.effect)}for(const[s,i]of this.#r){if(this.#r.delete(s),s===t)break;const l=this.#e.get(i);l&&($e(l.effect),this.#e.delete(i))}for(const[s,i]of this.#l){if(s===r||this.#a.has(s))continue;const l=()=>{if(Array.from(this.#r.values()).includes(s)){var u=document.createDocumentFragment();Vn(i,u),u.append(pt()),this.#e.set(s,{effect:i,fragment:u})}else $e(i);this.#a.delete(s),this.#l.delete(s)};this.#n||!n?(this.#a.add(s),Lt(i,l,!1)):l()}}};#t=t=>{this.#r.delete(t);const r=Array.from(this.#r.values());for(const[n,a]of this.#e)r.includes(n)||($e(a.effect),this.#e.delete(n))};ensure(t,r){var n=Q,a=hs();if(r&&!this.#l.has(t)&&!this.#e.has(t))if(a){var s=document.createDocumentFragment(),i=pt();s.append(i),this.#e.set(t,{effect:Ke(()=>r(i)),fragment:s})}else this.#l.set(t,Ke(()=>r(this.anchor)));if(this.#r.set(n,t),a){for(const[l,o]of this.#l)l===t?n.unskip_effect(o):n.skip_effect(o);for(const[l,o]of this.#e)l===t?n.unskip_effect(o.effect):n.skip_effect(o.effect);n.oncommit(this.#s),n.ondiscard(this.#t)}else this.#s(n)}}function V(e,t,r=!1){var n=new Ps(e),a=r?Bt:0;function s(i,l){n.ensure(i,l)}qr(()=>{var i=!1;t((l,o=0)=>{i=!0,s(o,l)}),i||s(-1,null)},a)}function Io(e,t,r){for(var n=[],a=t.length,s,i=t.length,l=0;l<a;l++){let g=t[l];Lt(g,()=>{if(s){if(s.pending.delete(g),s.done.add(g),s.pending.size===0){var p=e.outrogroups;kn(e,Lr(s.done)),p.delete(s),p.size===0&&(e.outrogroups=null)}}else i-=1},!1)}if(i===0){var o=n.length===0&&r!==null;if(o){var u=r,f=u.parentNode;io(f),f.append(u),e.items.clear()}kn(e,t,!o)}else s={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(s)}function kn(e,t,r=!0){var n;if(e.pending.size>0){n=new Set;for(const i of e.pending.values())for(const l of i)n.add(e.items.get(l).e)}for(var a=0;a<t.length;a++){var s=t[a];if(n?.has(s)){s.f|=at;const i=document.createDocumentFragment();Vn(s,i)}else $e(t[a],r)}}var sa;function Qe(e,t,r,n,a,s=null){var i=e,l=new Map,o=(t&Ya)!==0;if(o){var u=e;i=u.appendChild(pt())}var f=null,g=is(()=>{var T=r();return Pn(T)?T:T==null?[]:Lr(T)}),p,m=new Map,E=!0;function A(T){(B.effect.f&Ye)===0&&(B.pending.delete(T),B.fallback=f,Ro(B,p,i,t,n),f!==null&&(p.length===0?(f.f&at)===0?Hn(f):(f.f^=at,or(f,null,i)):Lt(f,()=>{f=null})))}function k(T){B.pending.delete(T)}var C=qr(()=>{p=c(g);for(var T=p.length,N=new Set,U=Q,P=hs(),D=0;D<T;D+=1){var x=p[D],w=n(x,D),_=E?null:l.get(w);_?(_.v&&Zt(_.v,x),_.i&&Zt(_.i,D),P&&U.unskip_effect(_.e)):(_=No(l,E?i:sa??=pt(),x,w,D,a,t,r),E||(_.e.f|=at),l.set(w,_)),N.add(w)}if(T===0&&s&&!f&&(E?f=Ke(()=>s(i)):(f=Ke(()=>s(sa??=pt())),f.f|=at)),T>N.size&&bi(),!E)if(m.set(U,N),P){for(const[y,h]of l)N.has(y)||U.skip_effect(h.e);U.oncommit(A),U.ondiscard(k)}else A(U);c(g)}),B={effect:C,items:l,pending:m,outrogroups:null,fallback:f};E=!1}function ar(e){for(;e!==null&&(e.f&rt)===0;)e=e.next;return e}function Ro(e,t,r,n,a){var s=(n&Ri)!==0,i=t.length,l=e.items,o=ar(e.effect.first),u,f=null,g,p=[],m=[],E,A,k,C;if(s)for(C=0;C<i;C+=1)E=t[C],A=a(E,C),k=l.get(A).e,(k.f&at)===0&&(k.nodes?.a?.measure(),(g??=new Set).add(k));for(C=0;C<i;C+=1){if(E=t[C],A=a(E,C),k=l.get(A).e,e.outrogroups!==null)for(const _ of e.outrogroups)_.pending.delete(k),_.done.delete(k);if((k.f&Be)!==0&&(Hn(k),s&&(k.nodes?.a?.unfix(),(g??=new Set).delete(k))),(k.f&at)!==0)if(k.f^=at,k===o)or(k,null,r);else{var B=f?f.next:o;k===e.effect.last&&(e.effect.last=k.prev),k.prev&&(k.prev.next=k.next),k.next&&(k.next.prev=k.prev),yt(e,f,k),yt(e,k,B),or(k,B,r),f=k,p=[],m=[],o=ar(f.next);continue}if(k!==o){if(u!==void 0&&u.has(k)){if(p.length<m.length){var T=m[0],N;f=T.prev;var U=p[0],P=p[p.length-1];for(N=0;N<p.length;N+=1)or(p[N],T,r);for(N=0;N<m.length;N+=1)u.delete(m[N]);yt(e,U.prev,P.next),yt(e,f,U),yt(e,P,T),o=T,f=P,C-=1,p=[],m=[]}else u.delete(k),or(k,o,r),yt(e,k.prev,k.next),yt(e,k,f===null?e.effect.first:f.next),yt(e,f,k),f=k;continue}for(p=[],m=[];o!==null&&o!==k;)(u??=new Set).add(o),m.push(o),o=ar(o.next);if(o===null)continue}(k.f&at)===0&&p.push(k),f=k,o=ar(k.next)}if(e.outrogroups!==null){for(const _ of e.outrogroups)_.pending.size===0&&(kn(e,Lr(_.done)),e.outrogroups?.delete(_));e.outrogroups.size===0&&(e.outrogroups=null)}if(o!==null||u!==void 0){var D=[];if(u!==void 0)for(k of u)(k.f&Be)===0&&D.push(k);for(;o!==null;)(o.f&Be)===0&&o!==e.fallback&&D.push(o),o=ar(o.next);var x=D.length;if(x>0){var w=(n&Ya)!==0&&i===0?r:null;if(s){for(C=0;C<x;C+=1)D[C].nodes?.a?.measure();for(C=0;C<x;C+=1)D[C].nodes?.a?.fix()}Io(e,D,w)}}s&&Ct(()=>{if(g!==void 0)for(k of g)k.nodes?.a?.apply()})}function No(e,t,r,n,a,s,i,l){var o=(i&Ai)!==0?(i&Ni)===0?ro(r,!1,!1):Ut(r):null,u=(i&Ii)!==0?Ut(a):null;return{v:o,i:u,e:Ke(()=>(s(t,o??r,u??a,l),()=>{e.delete(n)}))}}function or(e,t,r){if(e.nodes)for(var n=e.nodes.start,a=e.nodes.end,s=t&&(t.f&at)===0?t.nodes.start:r;n!==null;){var i=yr(n);if(s.before(n),n===a)return;n=i}}function yt(e,t,r){t===null?e.effect.first=r:t.next=r,r===null?e.effect.last=t:r.prev=t}function Mo(e,t,r=!1,n=!1,a=!1,s=!1){var i=e,l="";if(r)var o=e;F(()=>{var u=ee;if(l!==(l=t()??"")){if(r){u.nodes=null,o.innerHTML=l,l!==""&&$t(it(o),o.lastChild);return}if(u.nodes!==null&&(bs(u.nodes.start,u.nodes.end),u.nodes=null),l!==""){var f=n?Li:a?Di:void 0,g=ps(n?"svg":a?"math":"template",f);g.innerHTML=l;var p=n||a?g:g.content;if($t(it(p),p.lastChild),n||a)for(;it(p);)i.before(it(p));else i.before(p)}}})}function Po(e,t,...r){var n=new Ps(e);qr(()=>{const a=t()??null;n.ensure(a,a&&(s=>a(s,...r)))},Bt)}function Ls(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(r=Ls(e[t]))&&(n&&(n+=" "),n+=r)}else for(r in e)e[r]&&(n&&(n+=" "),n+=r);return n}function Lo(){for(var e,t,r=0,n="",a=arguments.length;r<a;r++)(e=arguments[r])&&(t=Ls(e))&&(n&&(n+=" "),n+=t);return n}function Do(e){return typeof e=="object"?Lo(e):e??""}const ia=[...`
2
- \r\f \v\uFEFF`];function Bo(e,t,r){var n=e==null?"":""+e;if(t&&(n=n?n+" "+t:t),r){for(var a of Object.keys(r))if(r[a])n=n?n+" "+a:a;else if(n.length)for(var s=a.length,i=0;(i=n.indexOf(a,i))>=0;){var l=i+s;(i===0||ia.includes(n[i-1]))&&(l===n.length||ia.includes(n[l]))?n=(i===0?"":n.substring(0,i))+n.substring(l+1):i=l}}return n===""?null:n}function qo(e,t){return e==null?null:String(e)}function mt(e,t,r,n,a,s){var i=e.__className;if(i!==r||i===void 0){var l=Bo(r,n,s);l==null?e.removeAttribute("class"):e.className=l,e.__className=r}else if(s&&a!==s)for(var o in s){var u=!!s[o];(a==null||u!==!!a[o])&&e.classList.toggle(o,u)}return s}function En(e,t,r,n){var a=e.__style;if(a!==t){var s=qo(t);s==null?e.removeAttribute("style"):e.style.cssText=s,e.__style=t}return n}function Ds(e,t,r=!1){if(e.multiple){if(t==null)return;if(!Pn(t))return qi();for(var n of e.options)n.selected=t.includes(dr(n));return}for(n of e.options){var a=dr(n);if(ao(a,t)){n.selected=!0;return}}(!r||t!==void 0)&&(e.selectedIndex=-1)}function Uo(e){var t=new MutationObserver(()=>{Ds(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),On(()=>{t.disconnect()})}function Kn(e,t,r=t){var n=new WeakSet,a=!0;$n(e,"change",s=>{var i=s?"[selected]":":checked",l;if(e.multiple)l=[].map.call(e.querySelectorAll(i),dr);else{var o=e.querySelector(i)??e.querySelector("option:not([disabled])");l=o&&dr(o)}r(l),e.__value=l,Q!==null&&n.add(Q)}),fo(()=>{var s=t();if(e===document.activeElement){var i=Q;if(n.has(i))return}if(Ds(e,s,a),a&&s===void 0){var l=e.querySelector(":checked");l!==null&&(s=dr(l),r(s))}e.__value=s,a=!1}),Uo(e)}function dr(e){return"__value"in e?e.__value:e.value}const $o=Symbol("is custom element"),Fo=Symbol("is html"),Oo=_i?"progress":"PROGRESS";function Bs(e,t){var r=qs(e);r.value===(r.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==Oo)||(e.value=t??"")}function he(e,t,r,n){var a=qs(e);a[t]!==(a[t]=r)&&(t==="loading"&&(e[gi]=r),r==null?e.removeAttribute(t):typeof r!="string"&&jo(e).includes(t)?e[t]=r:e.setAttribute(t,r))}function qs(e){return e.__attributes??={[$o]:e.nodeName.includes("-"),[Fo]:e.namespaceURI===Ja}}var oa=new Map;function jo(e){var t=e.getAttribute("is")||e.nodeName,r=oa.get(t);if(r)return r;oa.set(t,r=[]);for(var n,a=e,s=Element.prototype;s!==a;){n=ja(a);for(var i in n)n[i].set&&r.push(i);a=Ln(a)}return r}function Ft(e,t,r=t){var n=new WeakSet;$n(e,"input",async a=>{var s=a?e.defaultValue:e.value;if(s=Or(e)?jr(s):s,r(s),Q!==null&&n.add(Q),await _o(),s!==(s=t())){var i=e.selectionStart,l=e.selectionEnd,o=e.value.length;if(e.value=s??"",l!==null){var u=e.value.length;i===l&&l===o&&u>o?(e.selectionStart=u,e.selectionEnd=u):(e.selectionStart=i,e.selectionEnd=Math.min(l,u))}}}),jt(t)==null&&e.value&&(r(Or(e)?jr(e.value):e.value),Q!==null&&n.add(Q)),jn(()=>{var a=t();if(e===document.activeElement){var s=Q;if(n.has(s))return}Or(e)&&a===jr(e.value)||e.type==="date"&&!a&&!e.value||a!==e.value&&(e.value=a??"")})}function Rr(e,t,r=t){$n(e,"change",n=>{var a=n?e.defaultChecked:e.checked;r(a)}),jt(t)==null&&r(e.checked),jn(()=>{var n=t();e.checked=!!n})}function Or(e){var t=e.type;return t==="number"||t==="range"}function jr(e){return e===""?null:+e}function Us(e=!1){const t=be,r=t.l.u;if(!r)return;let n=()=>mo(t.s);if(e){let a=0,s={};const i=Dr(()=>{let l=!1;const o=t.s;for(const u in o)o[u]!==s[u]&&(s[u]=o[u],l=!0);return l&&a++,a});n=()=>c(i)}r.b.length&&co(()=>{la(t,n),hn(r.b)}),_t(()=>{const a=jt(()=>r.m.map(hi));return()=>{for(const s of a)typeof s=="function"&&s()}}),r.a.length&&_t(()=>{la(t,n),hn(r.a)})}function la(e,t){if(e.l.s)for(const r of e.l.s)c(r);t()}function gt(e,t,r,n){var a=n,s=!0,i=()=>(s&&(s=!1,a=n),a),l;l=e[t],l===void 0&&n!==void 0&&(l=i());var o;return o=()=>{var u=e[t];return u===void 0?i():(s=!0,u)},o}function dt(e){be===null&&Ga(),mr&&be.l!==null?Ho(be).m.push(e):_t(()=>{const t=jt(e);if(typeof t=="function")return t})}function zo(e){be===null&&Ga(),dt(()=>()=>jt(e))}function Ho(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}const Vo="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(Vo);class De extends Error{code;status;constructor(t,r,n=0){super(r),this.name="ApiError",this.code=t,this.status=n}}async function Oe(e,t={}){let r;try{r=await fetch(e,{...t,headers:{accept:"application/json",...t.body!==void 0&&t.body!==null?{"content-type":"application/json"}:{},...t.headers??{}}})}catch(i){throw new De("network",i.message||"Network request failed",0)}const s=(r.headers.get("content-type")??"").includes("application/json")?await r.json().catch(()=>null):null;if(!r.ok){const i=s;throw i&&i.ok===!1&&i.error?new De(i.error.code,i.error.message,r.status):new De(`http_${r.status}`,r.statusText||"Request failed",r.status)}if(s&&typeof s=="object"){const i=s;if(i.ok===!1&&i.error)throw new De(i.error.code,i.error.message,r.status);if(i.ok===!0&&"data"in i)return i.data}return s}function kr(e,t){const r=t===void 0?{method:"POST"}:{method:"POST",body:JSON.stringify(t)};return Oe(e,r)}function Cn(e,t){const r=t===void 0?{method:"PUT"}:{method:"PUT",body:JSON.stringify(t)};return Oe(e,r)}function pr(e){return Oe(e,{method:"DELETE"})}function Ko(e,t,r,n){if(e===null)return"loading";if(e==="founder"){if(!t)return"loading";const a=t.directReachability;if(a==="unreachable"||a==="cgnat")return"warn"}return r.some(a=>a.status!=="running"&&!(e==="donor"&&a.owner))||n?.lastError?"warn":"ok"}const Z=st({status:"loading",service:null,role:null,nodes:[],nodeStats:{},trustCircle:{members:[],pending:[]},strands:{list:[],controlConnections:0,loaded:!1,error:null},grants:{list:[],loaded:!1,error:null},connectivity:null,update:null,settings:null,toasts:[]});function ft(){return Z}const ca=6e3;let Go=0;function te(e,t){const r=`t${++Go}`,n={id:r,kind:e,text:t,expiresAt:Date.now()+ca};Z.toasts.push(n),setTimeout(()=>$s(r),ca)}function $s(e){Z.toasts=Z.toasts.filter(t=>t.id!==e)}function bt(e,t){const r=t instanceof De?t.code:"error",n=t instanceof Error?t.message:String(t);console.error(`[cadre-host-ui] ${e}:`,t),te("error",`${e}: ${n} (${r})`)}function tr(){Z.status=Ko(Z.role,Z.connectivity,Z.nodes,Z.update)}async function Fs(){try{const e=await Oe("/api/status");Z.service=e.service,Z.role=e.role,Z.connectivity=e.connectivity??null,Z.nodes.length===0&&(Z.nodes=e.nodes.map(t=>({id:t.id,dockerId:"",partyId:t.partyId,profile:t.profile,status:t.status,spawnedAt:"",workdir:"",ports:{health:0,metrics:0,p2p:0,ws:0},...t.owner?{owner:!0}:{}}))),tr()}catch(e){bt("status",e),Z.status="error"}}async function Ur(){try{const e=await Oe("/api/nodes");Z.nodes=e.nodes,tr()}catch(e){bt("nodes",e)}}async function zr(e){try{const t=await Oe(`/api/nodes/${encodeURIComponent(e)}`);return Z.nodes=Z.nodes.some(r=>r.id===e)?Z.nodes.map(r=>r.id===e?t.node:r):[...Z.nodes,t.node],Z.nodeStats={...Z.nodeStats,[e]:t.stats},t}catch(t){return bt(`node ${e}`,t),null}}async function Jt(){try{const e=await Oe("/auth/trust-circle");Z.trustCircle=e}catch(e){bt("trust-circle",e)}}async function Sn(){try{const e=await Oe("/api/strands");Z.strands={list:e.strands,controlConnections:e.controlConnections,loaded:!0,error:null}}catch(e){bt("strands",e),Z.strands={...Z.strands,error:e instanceof Error?e.message:String(e)}}}async function gr(){try{const e=await Oe("/grants-admin");Z.grants={list:e.grants,loaded:!0,error:null}}catch(e){bt("grants",e),Z.grants={...Z.grants,error:e instanceof Error?e.message:String(e)}}}async function Yt(){try{const e=await Oe("/nat/status");Z.connectivity=e,tr()}catch(e){bt("connectivity",e)}}async function Nr(){try{const e=await Oe("/update");Z.update=e,tr()}catch{Z.update=null}}async function Tn(){try{const e=await Oe("/api/settings");Z.settings=e}catch(e){bt("settings",e)}}function Yo(e){let t;try{t=JSON.parse(e.data)}catch{return}switch(e.type){case"node-state-changed":{const r=t.nodeId,n=t.status;r&&n&&(Z.nodes=Z.nodes.map(a=>a.id===r?{...a,status:n}:a),tr()),Z.grants.loaded&&gr();break}case"trust-circle-changed":Jt();break;case"grants-changed":gr(),t.kind!=="issued"&&Ur();break;case"strands-changed":Sn();break;case"connectivity-changed":Yt();break;case"update-available":{const r=t.version,n=t.releaseNotesUrl;r&&(Z.update={...Z.update??{version:1},available:{version:r,publishedAt:Z.update?.available?.publishedAt??new Date().toISOString(),...n?{releaseNotesUrl:n}:{}}},tr());break}}}const Jo=new Set(["trust-circle","connectivity","strands"]);function ua(e){return Jo.has(e)}const xn={name:"home",params:{}};function Os(e){const t=e.startsWith("#")?e.slice(1):e,r=t.startsWith("/")?t.slice(1):t;if(!r)return xn;const n=r.split("/").filter(Boolean);switch(n[0]){case"trust-circle":return{name:"trust-circle",params:{}};case"connectivity":return{name:"connectivity",params:{}};case"nodes":return n.length>=2&&n[1]?{name:"node-detail",params:{id:decodeURIComponent(n[1])}}:{name:"nodes",params:{}};case"settings":return{name:"settings",params:{}};case"strands":return{name:"strands",params:{}};case"grants":return{name:"grants",params:{}};default:return xn}}function Ze(e,t={}){switch(e){case"home":return"#/";case"trust-circle":return"#/trust-circle";case"connectivity":return"#/connectivity";case"nodes":return"#/nodes";case"node-detail":return`#/nodes/${encodeURIComponent(t.id??"")}`;case"settings":return"#/settings";case"strands":return"#/strands";case"grants":return"#/grants"}}function Wo(e){if(typeof window>"u")return;const t=e.startsWith("#")?e:`#${e.startsWith("/")?e:`/${e}`}`;window.location.hash!==t&&(window.location.hash=t)}const js=st({route:typeof window>"u"?xn:Os(window.location.hash)});let Mr=!1;function An(){js.route=Os(window.location.hash)}function Qo(){return js}function Xo(){Mr||typeof window>"u"||(Mr=!0,window.addEventListener("hashchange",An),An())}function Zo(){!Mr||typeof window>"u"||(Mr=!1,window.removeEventListener("hashchange",An))}const el=["node-state-changed","trust-circle-changed","strands-changed","grants-changed","connectivity-changed","update-available"],tl=[2e3,4e3,8e3,16e3,3e4];function rl(e,t={}){const r=t.url??"/api/events",n=t.eventSourceCtor??(typeof EventSource<"u"?EventSource:void 0);if(!n)return{close(){}};const a=n,s=t.backoffSchedule??tl;let i=!1,l=0,o,u;function f(p){const m=Math.min(p,s.length-1);return s[m]??s[s.length-1]}function g(){if(i)return;u=new a(r);const p=u;p.onopen=()=>{i||(l=0,t.onOpen?.())};for(const m of el)p.addEventListener(m,E=>{e({type:m,data:E.data??""})});p.onerror=()=>{if(i)return;try{p.close()}catch{}const m=f(l);t.onError?.(l,m),l+=1,o=setTimeout(g,m)}}return g(),{close(){if(i=!0,o&&clearTimeout(o),u)try{u.close()}catch{}}}}const zs=1e3,In=60*zs,Rn=60*In,da=24*Rn;function Fe(e,t=Date.now()){if(!e)return"—";const r=Date.parse(e);if(!Number.isFinite(r))return"—";const n=t-r;return n<0?"just now":`${Vs(n)} ago`}function Hs(e,t=Date.now()){const r=e?Date.parse(e):NaN;return Number.isFinite(r)&&r>t?`in ${Vs(r-t)}`:Fe(e,t)}function Vs(e){return e<In?`${Math.floor(e/zs)}s`:e<Rn?`${Math.floor(e/In)}m`:e<da?`${Math.floor(e/Rn)}h`:`${Math.floor(e/da)}d`}function nl(e){if(e==null||!Number.isFinite(e))return"—";if(e<1024)return`${e} B`;const t=["KB","MB","GB","TB"];let r=e/1024,n=0;for(;r>=1024&&n<t.length-1;)r/=1024,n+=1;return`${r.toFixed(r<10?2:1)} ${t[n]}`}function al(e){if(e==null||!Number.isFinite(e)||e<0)return"—";const t=Math.floor(e/86400),r=Math.floor(e%86400/3600),n=Math.floor(e%3600/60);return t>0?`${t}d ${r}h`:r>0?`${r}h ${n}m`:`${n}m`}function Pr(e){return e?e.length<=12?e:`${e.slice(0,6)}…${e.slice(-4)}`:"—"}var sl=L('<span role="status"><span class="bulb svelte-1qa2kn2" aria-hidden="true"></span> <span> </span></span>');function Ks(e,t){const r=gt(t,"size",3,14),n=J(()=>{switch(t.status){case"ok":return"ok";case"warn":return"warn";case"error":return"err";default:return"muted"}}),a=J(()=>t.label??s(t.status));function s(f){switch(f){case"ok":return"Healthy";case"warn":return"Attention needed";case"error":return"Error";default:return"Loading…"}}var i=sl(),l=d(i),o=v(l,2),u=d(o);F(()=>{mt(i,1,`dot dot-${c(n)??""}`,"svelte-1qa2kn2"),En(l,`width: ${r()??""}px; height: ${r()??""}px;`),R(u,c(a))}),I(e,i)}var il=L('<span class="row svelte-lwwmgz"><span> </span> <span class="badge"> </span></span>');function Gs(e,t){const r=J(()=>{switch(t.reachability){case"reachable":return"Reachable";case"unreachable":return"Unreachable";case"cgnat":return"Behind CGNAT";default:return"Unknown"}}),n=J(()=>{switch(t.reachability){case"reachable":return"ok";case"unreachable":return"err";case"cgnat":return"warn";default:return"info"}}),a=J(()=>{switch(t.portMode){case"auto-upnp":return"UPnP";case"auto-natpmp":return"NAT-PMP";case"manual":return"Manual";case"failed":return"Failed";case"disabled":return"Disabled";default:return t.portMode}});var s=il(),i=d(s),l=d(i),o=v(i,2),u=d(o);F(()=>{mt(i,1,`badge ${c(n)??""}`,"svelte-lwwmgz"),R(l,c(r)),R(u,c(a))}),I(e,s)}var ol=L('<div class="banner info svelte-15mtls8"><div><strong>Update available</strong> <span class="muted"> </span></div> <a class="link svelte-15mtls8">View update</a></div>'),ll=L('<a class="link svelte-15mtls8">Resolve →</a>'),cl=L('<!> <dl class="kv svelte-15mtls8"><div class="svelte-15mtls8"><dt class="svelte-15mtls8">External IP</dt><dd class="svelte-15mtls8"> </dd></div> <div class="svelte-15mtls8"><dt class="svelte-15mtls8">External port</dt><dd class="svelte-15mtls8"> </dd></div> <div class="svelte-15mtls8"><dt class="svelte-15mtls8">Last tested</dt><dd class="svelte-15mtls8"> </dd></div></dl> <!>',1),ul=L('<p class="muted">Loading connectivity…</p>'),dl=L('<p class="muted"> </p>'),fl=L('<div class="card"><h3>Connectivity</h3> <!></div> <div class="card"><h3>Trust circle</h3> <p class="big svelte-15mtls8"> <span class="muted svelte-15mtls8">members</span></p> <!> <a class="link svelte-15mtls8">Manage →</a></div>',1),vl=L(`<div class="card"><h3>Donation</h3> <p class="muted">This machine donates cadre nodes to other people's cadres.</p> <p class="big svelte-15mtls8"> <span class="muted svelte-15mtls8"> </span></p> <a class="link svelte-15mtls8">Manage grants →</a></div>`),hl=L('<section class="stack"><!> <div class="grid summary svelte-15mtls8"><div class="card"><h3>Overall</h3> <!> <dl class="kv svelte-15mtls8"><div class="svelte-15mtls8"><dt class="svelte-15mtls8">Service</dt><dd class="svelte-15mtls8"> </dd></div> <div class="svelte-15mtls8"><dt class="svelte-15mtls8">Version</dt><dd class="svelte-15mtls8"> </dd></div> <div class="svelte-15mtls8"><dt class="svelte-15mtls8">Uptime</dt><dd class="svelte-15mtls8"> </dd></div></dl></div> <!> <div class="card"><h3>Nodes</h3> <p class="big svelte-15mtls8"> <span class="muted svelte-15mtls8"> </span></p> <a class="link svelte-15mtls8">Details →</a></div></div></section>');function pl(e,t){Ne(t,!0);const r=ft();dt(()=>{Fs(),Nr()});const n=J(()=>r.update?.available?.version??null),a=J(()=>r.trustCircle.members.length),s=J(()=>r.trustCircle.pending.length),i=J(()=>r.nodes.filter($=>$.status==="running").length),l=J(()=>r.nodes.filter($=>!$.owner)),o=J(()=>c(l).filter($=>$.status==="running").length);var u=hl(),f=d(u);{var g=$=>{var H=ol(),G=d(H),Y=v(d(G),2),X=d(Y),K=v(G,2);F(fe=>{R(X,`— version ${c(n)??""}`),he(K,"href",fe)},[()=>Ze("settings")]),I($,H)};V(f,$=>{c(n)&&$(g)})}var p=v(f,2),m=d(p),E=v(d(m),2);Ks(E,{get status(){return r.status}});var A=v(E,2),k=d(A),C=v(d(k)),B=d(C),T=v(k,2),N=v(d(T)),U=d(N),P=v(T,2),D=v(d(P)),x=d(D),w=v(m,2);{var _=$=>{var H=fl(),G=de(H),Y=v(d(G),2);{var X=pe=>{var Ie=cl(),je=de(Ie);Gs(je,{get reachability(){return r.connectivity.directReachability},get portMode(){return r.connectivity.portMode}});var ge=v(je,2),Ee=d(ge),He=v(d(Ee)),O=d(He),ne=v(Ee,2),_e=v(d(ne)),ye=d(_e),me=v(ne,2),Ce=v(d(me)),xe=d(Ce),Le=v(ge,2);{var ue=le=>{var ce=ll();F(we=>he(ce,"href",we),[()=>Ze("connectivity")]),I(le,ce)};V(Le,le=>{r.connectivity.directReachability!=="reachable"&&le(ue)})}F(le=>{R(O,r.connectivity.externalIp??"—"),R(ye,r.connectivity.externalPort),R(xe,le)},[()=>Fe(r.connectivity.lastTestedAt)]),I(pe,Ie)},K=pe=>{var Ie=ul();I(pe,Ie)};V(Y,pe=>{r.connectivity?pe(X):pe(K,-1)})}var fe=v(G,2),se=v(d(fe),2),Se=d(se),oe=v(se,2);{var ie=pe=>{var Ie=dl(),je=d(Ie);F(()=>R(je,`${c(s)??""} pending invite${c(s)===1?"":"s"}`)),I(pe,Ie)};V(oe,pe=>{c(s)>0&&pe(ie)})}var ve=v(oe,2);F(pe=>{R(Se,c(a)),he(ve,"href",pe)},[()=>Ze("trust-circle")]),I($,H)},y=$=>{var H=vl(),G=v(d(H),4),Y=d(G),X=v(Y),K=d(X),fe=v(G,2);F(se=>{R(Y,c(o)),R(K,`/ ${c(l).length??""} donated nodes running`),he(fe,"href",se)},[()=>Ze("grants")]),I($,H)};V(w,$=>{r.role==="founder"?$(_):r.role==="donor"&&$(y,1)})}var h=v(w,2),b=v(d(h),2),S=d(b),q=v(S),j=d(q),W=v(b,2);F(($,H)=>{R(B,r.service?.name??"cadre-host"),R(U,r.service?.version??"—"),R(x,$),R(S,c(i)),R(j,`/ ${r.nodes.length??""} running`),he(W,"href",H)},[()=>al(r.service?.uptimeSeconds),()=>Ze("nodes")]),I(e,u),Me()}function gl(e,t){const r=e.trim();return r?t.trim()===r:!1}var _l=L('<p class="note svelte-80vbit"> </p>'),ml=L('<div class="gate svelte-80vbit"><label for="confirm-typed">Type <code> </code> to confirm:</label> <input id="confirm-typed" type="text" autocomplete="off" autocapitalize="off" spellcheck="false"/></div>'),bl=L('<div class="backdrop svelte-80vbit" role="presentation"></div> <div class="dialog svelte-80vbit" role="dialog" aria-modal="true" aria-labelledby="confirm-title" tabindex="-1"><h3 id="confirm-title"> </h3> <p class="muted"> </p> <!> <!> <!> <div class="actions svelte-80vbit"><button> </button> <button> </button></div></div>',1);function rr(e,t){Ne(t,!0);const r=gt(t,"confirmLabel",3,"Confirm"),n=gt(t,"cancelLabel",3,"Cancel"),a=gt(t,"danger",3,!1);let s=z(!1),i=z("");const l=J(()=>typeof t.requireText=="string"&&t.requireText.trim()!==""),o=J(()=>c(l)&&gl(t.requireText??"",c(i))),u=J(()=>!c(s)&&(!c(l)||c(o)));_t(()=>{t.open,t.requireText,M(i,"")});async function f(){if(c(u)){M(s,!0);try{await t.onConfirm()}finally{M(s,!1)}}}function g(k){k.key==="Escape"&&t.onCancel()}function p(k){k.key==="Enter"&&(k.preventDefault(),c(u)&&f())}var m=At(),E=de(m);{var A=k=>{var C=bl(),B=de(C),T=v(B,2),N=d(T),U=d(N),P=v(N,2),D=d(P),x=v(P,2);{var w=$=>{var H=_l(),G=d(H);F(()=>R(G,`⚠ ${t.note??""}`)),I($,H)};V(x,$=>{t.note&&$(w)})}var _=v(x,2);{var y=$=>{var H=ml(),G=d(H),Y=v(d(G)),X=d(Y),K=v(G,2);F(()=>{R(X,t.requireText),K.disabled=c(s)}),re("keydown",K,p),Ft(K,()=>c(i),fe=>M(i,fe)),I($,H)};V(_,$=>{c(l)&&$(y)})}var h=v(_,2);Po(h,()=>t.children??za);var b=v(h,2),S=d(b),q=d(S),j=v(S,2),W=d(j);F(()=>{R(U,t.title),R(D,t.message),S.disabled=c(s),R(q,n()),mt(j,1,Do(a()?"danger":"primary")),j.disabled=!c(u),R(W,c(s)?"Working…":r())}),re("click",B,function(...$){t.onCancel?.apply(this,$)}),re("keydown",T,g),re("click",S,function(...$){t.onCancel?.apply(this,$)}),re("click",j,f),I(k,C)};V(E,k=>{t.open&&k(A)})}I(e,m),Me()}Xe(["click","keydown"]);function yl(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Kt={},Hr,fa;function wl(){return fa||(fa=1,Hr=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),Hr}var Vr={},wt={},va;function zt(){if(va)return wt;va=1;let e;const t=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return wt.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return n*4+17},wt.getSymbolTotalCodewords=function(n){return t[n]},wt.getBCHDigit=function(r){let n=0;for(;r!==0;)n++,r>>>=1;return n},wt.setToSJISFunction=function(n){if(typeof n!="function")throw new Error('"toSJISFunc" is not a valid function.');e=n},wt.isKanjiModeEnabled=function(){return typeof e<"u"},wt.toSJIS=function(n){return e(n)},wt}var Kr={},ha;function Gn(){return ha||(ha=1,(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+r)}}e.isValid=function(n){return n&&typeof n.bit<"u"&&n.bit>=0&&n.bit<4},e.from=function(n,a){if(e.isValid(n))return n;try{return t(n)}catch{return a}}})(Kr)),Kr}var Gr,pa;function kl(){if(pa)return Gr;pa=1;function e(){this.buffer=[],this.length=0}return e.prototype={get:function(t){const r=Math.floor(t/8);return(this.buffer[r]>>>7-t%8&1)===1},put:function(t,r){for(let n=0;n<r;n++)this.putBit((t>>>r-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(t){const r=Math.floor(this.length/8);this.buffer.length<=r&&this.buffer.push(0),t&&(this.buffer[r]|=128>>>this.length%8),this.length++}},Gr=e,Gr}var Yr,ga;function El(){if(ga)return Yr;ga=1;function e(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=new Uint8Array(t*t),this.reservedBit=new Uint8Array(t*t)}return e.prototype.set=function(t,r,n,a){const s=t*this.size+r;this.data[s]=n,a&&(this.reservedBit[s]=!0)},e.prototype.get=function(t,r){return this.data[t*this.size+r]},e.prototype.xor=function(t,r,n){this.data[t*this.size+r]^=n},e.prototype.isReserved=function(t,r){return this.reservedBit[t*this.size+r]},Yr=e,Yr}var Jr={},_a;function Cl(){return _a||(_a=1,(function(e){const t=zt().getSymbolSize;e.getRowColCoords=function(n){if(n===1)return[];const a=Math.floor(n/7)+2,s=t(n),i=s===145?26:Math.ceil((s-13)/(2*a-2))*2,l=[s-7];for(let o=1;o<a-1;o++)l[o]=l[o-1]-i;return l.push(6),l.reverse()},e.getPositions=function(n){const a=[],s=e.getRowColCoords(n),i=s.length;for(let l=0;l<i;l++)for(let o=0;o<i;o++)l===0&&o===0||l===0&&o===i-1||l===i-1&&o===0||a.push([s[l],s[o]]);return a}})(Jr)),Jr}var Wr={},ma;function Sl(){if(ma)return Wr;ma=1;const e=zt().getSymbolSize,t=7;return Wr.getPositions=function(n){const a=e(n);return[[0,0],[a-t,0],[0,a-t]]},Wr}var Qr={},ba;function Tl(){return ba||(ba=1,(function(e){e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(a){return a!=null&&a!==""&&!isNaN(a)&&a>=0&&a<=7},e.from=function(a){return e.isValid(a)?parseInt(a,10):void 0},e.getPenaltyN1=function(a){const s=a.size;let i=0,l=0,o=0,u=null,f=null;for(let g=0;g<s;g++){l=o=0,u=f=null;for(let p=0;p<s;p++){let m=a.get(g,p);m===u?l++:(l>=5&&(i+=t.N1+(l-5)),u=m,l=1),m=a.get(p,g),m===f?o++:(o>=5&&(i+=t.N1+(o-5)),f=m,o=1)}l>=5&&(i+=t.N1+(l-5)),o>=5&&(i+=t.N1+(o-5))}return i},e.getPenaltyN2=function(a){const s=a.size;let i=0;for(let l=0;l<s-1;l++)for(let o=0;o<s-1;o++){const u=a.get(l,o)+a.get(l,o+1)+a.get(l+1,o)+a.get(l+1,o+1);(u===4||u===0)&&i++}return i*t.N2},e.getPenaltyN3=function(a){const s=a.size;let i=0,l=0,o=0;for(let u=0;u<s;u++){l=o=0;for(let f=0;f<s;f++)l=l<<1&2047|a.get(u,f),f>=10&&(l===1488||l===93)&&i++,o=o<<1&2047|a.get(f,u),f>=10&&(o===1488||o===93)&&i++}return i*t.N3},e.getPenaltyN4=function(a){let s=0;const i=a.data.length;for(let o=0;o<i;o++)s+=a.data[o];return Math.abs(Math.ceil(s*100/i/5)-10)*t.N4};function r(n,a,s){switch(n){case e.Patterns.PATTERN000:return(a+s)%2===0;case e.Patterns.PATTERN001:return a%2===0;case e.Patterns.PATTERN010:return s%3===0;case e.Patterns.PATTERN011:return(a+s)%3===0;case e.Patterns.PATTERN100:return(Math.floor(a/2)+Math.floor(s/3))%2===0;case e.Patterns.PATTERN101:return a*s%2+a*s%3===0;case e.Patterns.PATTERN110:return(a*s%2+a*s%3)%2===0;case e.Patterns.PATTERN111:return(a*s%3+(a+s)%2)%2===0;default:throw new Error("bad maskPattern:"+n)}}e.applyMask=function(a,s){const i=s.size;for(let l=0;l<i;l++)for(let o=0;o<i;o++)s.isReserved(o,l)||s.xor(o,l,r(a,o,l))},e.getBestMask=function(a,s){const i=Object.keys(e.Patterns).length;let l=0,o=1/0;for(let u=0;u<i;u++){s(u),e.applyMask(u,a);const f=e.getPenaltyN1(a)+e.getPenaltyN2(a)+e.getPenaltyN3(a)+e.getPenaltyN4(a);e.applyMask(u,a),f<o&&(o=f,l=u)}return l}})(Qr)),Qr}var Sr={},ya;function Ys(){if(ya)return Sr;ya=1;const e=Gn(),t=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return Sr.getBlocksCount=function(a,s){switch(s){case e.L:return t[(a-1)*4+0];case e.M:return t[(a-1)*4+1];case e.Q:return t[(a-1)*4+2];case e.H:return t[(a-1)*4+3];default:return}},Sr.getTotalCodewordsCount=function(a,s){switch(s){case e.L:return r[(a-1)*4+0];case e.M:return r[(a-1)*4+1];case e.Q:return r[(a-1)*4+2];case e.H:return r[(a-1)*4+3];default:return}},Sr}var Xr={},sr={},wa;function xl(){if(wa)return sr;wa=1;const e=new Uint8Array(512),t=new Uint8Array(256);return(function(){let n=1;for(let a=0;a<255;a++)e[a]=n,t[n]=a,n<<=1,n&256&&(n^=285);for(let a=255;a<512;a++)e[a]=e[a-255]})(),sr.log=function(n){if(n<1)throw new Error("log("+n+")");return t[n]},sr.exp=function(n){return e[n]},sr.mul=function(n,a){return n===0||a===0?0:e[t[n]+t[a]]},sr}var ka;function Al(){return ka||(ka=1,(function(e){const t=xl();e.mul=function(n,a){const s=new Uint8Array(n.length+a.length-1);for(let i=0;i<n.length;i++)for(let l=0;l<a.length;l++)s[i+l]^=t.mul(n[i],a[l]);return s},e.mod=function(n,a){let s=new Uint8Array(n);for(;s.length-a.length>=0;){const i=s[0];for(let o=0;o<a.length;o++)s[o]^=t.mul(a[o],i);let l=0;for(;l<s.length&&s[l]===0;)l++;s=s.slice(l)}return s},e.generateECPolynomial=function(n){let a=new Uint8Array([1]);for(let s=0;s<n;s++)a=e.mul(a,new Uint8Array([1,t.exp(s)]));return a}})(Xr)),Xr}var Zr,Ea;function Il(){if(Ea)return Zr;Ea=1;const e=Al();function t(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}return t.prototype.initialize=function(n){this.degree=n,this.genPoly=e.generateECPolynomial(this.degree)},t.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const a=new Uint8Array(n.length+this.degree);a.set(n);const s=e.mod(a,this.genPoly),i=this.degree-s.length;if(i>0){const l=new Uint8Array(this.degree);return l.set(s,i),l}return s},Zr=t,Zr}var en={},tn={},rn={},Ca;function Js(){return Ca||(Ca=1,rn.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40}),rn}var nt={},Sa;function Ws(){if(Sa)return nt;Sa=1;const e="[0-9]+",t="[A-Z $%*+\\-./:]+";let r="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";r=r.replace(/u/g,"\\u");const n="(?:(?![A-Z0-9 $%*+\\-./:]|"+r+`)(?:.|[\r
3
- ]))+`;nt.KANJI=new RegExp(r,"g"),nt.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),nt.BYTE=new RegExp(n,"g"),nt.NUMERIC=new RegExp(e,"g"),nt.ALPHANUMERIC=new RegExp(t,"g");const a=new RegExp("^"+r+"$"),s=new RegExp("^"+e+"$"),i=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return nt.testKanji=function(o){return a.test(o)},nt.testNumeric=function(o){return s.test(o)},nt.testAlphanumeric=function(o){return i.test(o)},nt}var Ta;function Ht(){return Ta||(Ta=1,(function(e){const t=Js(),r=Ws();e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(s,i){if(!s.ccBits)throw new Error("Invalid mode: "+s);if(!t.isValid(i))throw new Error("Invalid version: "+i);return i>=1&&i<10?s.ccBits[0]:i<27?s.ccBits[1]:s.ccBits[2]},e.getBestModeForData=function(s){return r.testNumeric(s)?e.NUMERIC:r.testAlphanumeric(s)?e.ALPHANUMERIC:r.testKanji(s)?e.KANJI:e.BYTE},e.toString=function(s){if(s&&s.id)return s.id;throw new Error("Invalid mode")},e.isValid=function(s){return s&&s.bit&&s.ccBits};function n(a){if(typeof a!="string")throw new Error("Param is not a string");switch(a.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+a)}}e.from=function(s,i){if(e.isValid(s))return s;try{return n(s)}catch{return i}}})(tn)),tn}var xa;function Rl(){return xa||(xa=1,(function(e){const t=zt(),r=Ys(),n=Gn(),a=Ht(),s=Js(),i=7973,l=t.getBCHDigit(i);function o(p,m,E){for(let A=1;A<=40;A++)if(m<=e.getCapacity(A,E,p))return A}function u(p,m){return a.getCharCountIndicator(p,m)+4}function f(p,m){let E=0;return p.forEach(function(A){const k=u(A.mode,m);E+=k+A.getBitsLength()}),E}function g(p,m){for(let E=1;E<=40;E++)if(f(p,E)<=e.getCapacity(E,m,a.MIXED))return E}e.from=function(m,E){return s.isValid(m)?parseInt(m,10):E},e.getCapacity=function(m,E,A){if(!s.isValid(m))throw new Error("Invalid QR Code version");typeof A>"u"&&(A=a.BYTE);const k=t.getSymbolTotalCodewords(m),C=r.getTotalCodewordsCount(m,E),B=(k-C)*8;if(A===a.MIXED)return B;const T=B-u(A,m);switch(A){case a.NUMERIC:return Math.floor(T/10*3);case a.ALPHANUMERIC:return Math.floor(T/11*2);case a.KANJI:return Math.floor(T/13);case a.BYTE:default:return Math.floor(T/8)}},e.getBestVersionForData=function(m,E){let A;const k=n.from(E,n.M);if(Array.isArray(m)){if(m.length>1)return g(m,k);if(m.length===0)return 1;A=m[0]}else A=m;return o(A.mode,A.getLength(),k)},e.getEncodedBits=function(m){if(!s.isValid(m)||m<7)throw new Error("Invalid QR Code version");let E=m<<12;for(;t.getBCHDigit(E)-l>=0;)E^=i<<t.getBCHDigit(E)-l;return m<<12|E}})(en)),en}var nn={},Aa;function Nl(){if(Aa)return nn;Aa=1;const e=zt(),t=1335,r=21522,n=e.getBCHDigit(t);return nn.getEncodedBits=function(s,i){const l=s.bit<<3|i;let o=l<<10;for(;e.getBCHDigit(o)-n>=0;)o^=t<<e.getBCHDigit(o)-n;return(l<<10|o)^r},nn}var an={},sn,Ia;function Ml(){if(Ia)return sn;Ia=1;const e=Ht();function t(r){this.mode=e.NUMERIC,this.data=r.toString()}return t.getBitsLength=function(n){return 10*Math.floor(n/3)+(n%3?n%3*3+1:0)},t.prototype.getLength=function(){return this.data.length},t.prototype.getBitsLength=function(){return t.getBitsLength(this.data.length)},t.prototype.write=function(n){let a,s,i;for(a=0;a+3<=this.data.length;a+=3)s=this.data.substr(a,3),i=parseInt(s,10),n.put(i,10);const l=this.data.length-a;l>0&&(s=this.data.substr(a),i=parseInt(s,10),n.put(i,l*3+1))},sn=t,sn}var on,Ra;function Pl(){if(Ra)return on;Ra=1;const e=Ht(),t=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function r(n){this.mode=e.ALPHANUMERIC,this.data=n}return r.getBitsLength=function(a){return 11*Math.floor(a/2)+6*(a%2)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(a){let s;for(s=0;s+2<=this.data.length;s+=2){let i=t.indexOf(this.data[s])*45;i+=t.indexOf(this.data[s+1]),a.put(i,11)}this.data.length%2&&a.put(t.indexOf(this.data[s]),6)},on=r,on}var ln,Na;function Ll(){if(Na)return ln;Na=1;const e=Ht();function t(r){this.mode=e.BYTE,typeof r=="string"?this.data=new TextEncoder().encode(r):this.data=new Uint8Array(r)}return t.getBitsLength=function(n){return n*8},t.prototype.getLength=function(){return this.data.length},t.prototype.getBitsLength=function(){return t.getBitsLength(this.data.length)},t.prototype.write=function(r){for(let n=0,a=this.data.length;n<a;n++)r.put(this.data[n],8)},ln=t,ln}var cn,Ma;function Dl(){if(Ma)return cn;Ma=1;const e=Ht(),t=zt();function r(n){this.mode=e.KANJI,this.data=n}return r.getBitsLength=function(a){return a*13},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(n){let a;for(a=0;a<this.data.length;a++){let s=t.toSJIS(this.data[a]);if(s>=33088&&s<=40956)s-=33088;else if(s>=57408&&s<=60351)s-=49472;else throw new Error("Invalid SJIS character: "+this.data[a]+`
4
- Make sure your charset is UTF-8`);s=(s>>>8&255)*192+(s&255),n.put(s,13)}},cn=r,cn}var un={exports:{}},Pa;function Bl(){return Pa||(Pa=1,(function(e){var t={single_source_shortest_paths:function(r,n,a){var s={},i={};i[n]=0;var l=t.PriorityQueue.make();l.push(n,0);for(var o,u,f,g,p,m,E,A,k;!l.empty();){o=l.pop(),u=o.value,g=o.cost,p=r[u]||{};for(f in p)p.hasOwnProperty(f)&&(m=p[f],E=g+m,A=i[f],k=typeof i[f]>"u",(k||A>E)&&(i[f]=E,l.push(f,E),s[f]=u))}if(typeof a<"u"&&typeof i[a]>"u"){var C=["Could not find a path from ",n," to ",a,"."].join("");throw new Error(C)}return s},extract_shortest_path_from_predecessor_list:function(r,n){for(var a=[],s=n;s;)a.push(s),r[s],s=r[s];return a.reverse(),a},find_path:function(r,n,a){var s=t.single_source_shortest_paths(r,n,a);return t.extract_shortest_path_from_predecessor_list(s,a)},PriorityQueue:{make:function(r){var n=t.PriorityQueue,a={},s;r=r||{};for(s in n)n.hasOwnProperty(s)&&(a[s]=n[s]);return a.queue=[],a.sorter=r.sorter||n.default_sorter,a},default_sorter:function(r,n){return r.cost-n.cost},push:function(r,n){var a={value:r,cost:n};this.queue.push(a),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};e.exports=t})(un)),un.exports}var La;function ql(){return La||(La=1,(function(e){const t=Ht(),r=Ml(),n=Pl(),a=Ll(),s=Dl(),i=Ws(),l=zt(),o=Bl();function u(C){return unescape(encodeURIComponent(C)).length}function f(C,B,T){const N=[];let U;for(;(U=C.exec(T))!==null;)N.push({data:U[0],index:U.index,mode:B,length:U[0].length});return N}function g(C){const B=f(i.NUMERIC,t.NUMERIC,C),T=f(i.ALPHANUMERIC,t.ALPHANUMERIC,C);let N,U;return l.isKanjiModeEnabled()?(N=f(i.BYTE,t.BYTE,C),U=f(i.KANJI,t.KANJI,C)):(N=f(i.BYTE_KANJI,t.BYTE,C),U=[]),B.concat(T,N,U).sort(function(D,x){return D.index-x.index}).map(function(D){return{data:D.data,mode:D.mode,length:D.length}})}function p(C,B){switch(B){case t.NUMERIC:return r.getBitsLength(C);case t.ALPHANUMERIC:return n.getBitsLength(C);case t.KANJI:return s.getBitsLength(C);case t.BYTE:return a.getBitsLength(C)}}function m(C){return C.reduce(function(B,T){const N=B.length-1>=0?B[B.length-1]:null;return N&&N.mode===T.mode?(B[B.length-1].data+=T.data,B):(B.push(T),B)},[])}function E(C){const B=[];for(let T=0;T<C.length;T++){const N=C[T];switch(N.mode){case t.NUMERIC:B.push([N,{data:N.data,mode:t.ALPHANUMERIC,length:N.length},{data:N.data,mode:t.BYTE,length:N.length}]);break;case t.ALPHANUMERIC:B.push([N,{data:N.data,mode:t.BYTE,length:N.length}]);break;case t.KANJI:B.push([N,{data:N.data,mode:t.BYTE,length:u(N.data)}]);break;case t.BYTE:B.push([{data:N.data,mode:t.BYTE,length:u(N.data)}])}}return B}function A(C,B){const T={},N={start:{}};let U=["start"];for(let P=0;P<C.length;P++){const D=C[P],x=[];for(let w=0;w<D.length;w++){const _=D[w],y=""+P+w;x.push(y),T[y]={node:_,lastCount:0},N[y]={};for(let h=0;h<U.length;h++){const b=U[h];T[b]&&T[b].node.mode===_.mode?(N[b][y]=p(T[b].lastCount+_.length,_.mode)-p(T[b].lastCount,_.mode),T[b].lastCount+=_.length):(T[b]&&(T[b].lastCount=_.length),N[b][y]=p(_.length,_.mode)+4+t.getCharCountIndicator(_.mode,B))}}U=x}for(let P=0;P<U.length;P++)N[U[P]].end=0;return{map:N,table:T}}function k(C,B){let T;const N=t.getBestModeForData(C);if(T=t.from(B,N),T!==t.BYTE&&T.bit<N.bit)throw new Error('"'+C+'" cannot be encoded with mode '+t.toString(T)+`.
5
- Suggested mode is: `+t.toString(N));switch(T===t.KANJI&&!l.isKanjiModeEnabled()&&(T=t.BYTE),T){case t.NUMERIC:return new r(C);case t.ALPHANUMERIC:return new n(C);case t.KANJI:return new s(C);case t.BYTE:return new a(C)}}e.fromArray=function(B){return B.reduce(function(T,N){return typeof N=="string"?T.push(k(N,null)):N.data&&T.push(k(N.data,N.mode)),T},[])},e.fromString=function(B,T){const N=g(B,l.isKanjiModeEnabled()),U=E(N),P=A(U,T),D=o.find_path(P.map,"start","end"),x=[];for(let w=1;w<D.length-1;w++)x.push(P.table[D[w]].node);return e.fromArray(m(x))},e.rawSplit=function(B){return e.fromArray(g(B,l.isKanjiModeEnabled()))}})(an)),an}var Da;function Ul(){if(Da)return Vr;Da=1;const e=zt(),t=Gn(),r=kl(),n=El(),a=Cl(),s=Sl(),i=Tl(),l=Ys(),o=Il(),u=Rl(),f=Nl(),g=Ht(),p=ql();function m(P,D){const x=P.size,w=s.getPositions(D);for(let _=0;_<w.length;_++){const y=w[_][0],h=w[_][1];for(let b=-1;b<=7;b++)if(!(y+b<=-1||x<=y+b))for(let S=-1;S<=7;S++)h+S<=-1||x<=h+S||(b>=0&&b<=6&&(S===0||S===6)||S>=0&&S<=6&&(b===0||b===6)||b>=2&&b<=4&&S>=2&&S<=4?P.set(y+b,h+S,!0,!0):P.set(y+b,h+S,!1,!0))}}function E(P){const D=P.size;for(let x=8;x<D-8;x++){const w=x%2===0;P.set(x,6,w,!0),P.set(6,x,w,!0)}}function A(P,D){const x=a.getPositions(D);for(let w=0;w<x.length;w++){const _=x[w][0],y=x[w][1];for(let h=-2;h<=2;h++)for(let b=-2;b<=2;b++)h===-2||h===2||b===-2||b===2||h===0&&b===0?P.set(_+h,y+b,!0,!0):P.set(_+h,y+b,!1,!0)}}function k(P,D){const x=P.size,w=u.getEncodedBits(D);let _,y,h;for(let b=0;b<18;b++)_=Math.floor(b/3),y=b%3+x-8-3,h=(w>>b&1)===1,P.set(_,y,h,!0),P.set(y,_,h,!0)}function C(P,D,x){const w=P.size,_=f.getEncodedBits(D,x);let y,h;for(y=0;y<15;y++)h=(_>>y&1)===1,y<6?P.set(y,8,h,!0):y<8?P.set(y+1,8,h,!0):P.set(w-15+y,8,h,!0),y<8?P.set(8,w-y-1,h,!0):y<9?P.set(8,15-y-1+1,h,!0):P.set(8,15-y-1,h,!0);P.set(w-8,8,1,!0)}function B(P,D){const x=P.size;let w=-1,_=x-1,y=7,h=0;for(let b=x-1;b>0;b-=2)for(b===6&&b--;;){for(let S=0;S<2;S++)if(!P.isReserved(_,b-S)){let q=!1;h<D.length&&(q=(D[h]>>>y&1)===1),P.set(_,b-S,q),y--,y===-1&&(h++,y=7)}if(_+=w,_<0||x<=_){_-=w,w=-w;break}}}function T(P,D,x){const w=new r;x.forEach(function(S){w.put(S.mode.bit,4),w.put(S.getLength(),g.getCharCountIndicator(S.mode,P)),S.write(w)});const _=e.getSymbolTotalCodewords(P),y=l.getTotalCodewordsCount(P,D),h=(_-y)*8;for(w.getLengthInBits()+4<=h&&w.put(0,4);w.getLengthInBits()%8!==0;)w.putBit(0);const b=(h-w.getLengthInBits())/8;for(let S=0;S<b;S++)w.put(S%2?17:236,8);return N(w,P,D)}function N(P,D,x){const w=e.getSymbolTotalCodewords(D),_=l.getTotalCodewordsCount(D,x),y=w-_,h=l.getBlocksCount(D,x),b=w%h,S=h-b,q=Math.floor(w/h),j=Math.floor(y/h),W=j+1,$=q-j,H=new o($);let G=0;const Y=new Array(h),X=new Array(h);let K=0;const fe=new Uint8Array(P.buffer);for(let ve=0;ve<h;ve++){const pe=ve<S?j:W;Y[ve]=fe.slice(G,G+pe),X[ve]=H.encode(Y[ve]),G+=pe,K=Math.max(K,pe)}const se=new Uint8Array(w);let Se=0,oe,ie;for(oe=0;oe<K;oe++)for(ie=0;ie<h;ie++)oe<Y[ie].length&&(se[Se++]=Y[ie][oe]);for(oe=0;oe<$;oe++)for(ie=0;ie<h;ie++)se[Se++]=X[ie][oe];return se}function U(P,D,x,w){let _;if(Array.isArray(P))_=p.fromArray(P);else if(typeof P=="string"){let q=D;if(!q){const j=p.rawSplit(P);q=u.getBestVersionForData(j,x)}_=p.fromString(P,q||40)}else throw new Error("Invalid data");const y=u.getBestVersionForData(_,x);if(!y)throw new Error("The amount of data is too big to be stored in a QR Code");if(!D)D=y;else if(D<y)throw new Error(`
6
- The chosen QR Code version cannot contain this amount of data.
7
- Minimum version required to store current data is: `+y+`.
8
- `);const h=T(D,x,_),b=e.getSymbolSize(D),S=new n(b);return m(S,D),E(S),A(S,D),C(S,x,0),D>=7&&k(S,D),B(S,h),isNaN(w)&&(w=i.getBestMask(S,C.bind(null,S,x))),i.applyMask(w,S),C(S,x,w),{modules:S,version:D,errorCorrectionLevel:x,maskPattern:w,segments:_}}return Vr.create=function(D,x){if(typeof D>"u"||D==="")throw new Error("No input text");let w=t.M,_,y;return typeof x<"u"&&(w=t.from(x.errorCorrectionLevel,t.M),_=u.from(x.version),y=i.from(x.maskPattern),x.toSJISFunc&&e.setToSJISFunction(x.toSJISFunc)),U(D,_,w,y)},Vr}var dn={},fn={},Ba;function Qs(){return Ba||(Ba=1,(function(e){function t(r){if(typeof r=="number"&&(r=r.toString()),typeof r!="string")throw new Error("Color should be defined as hex string");let n=r.slice().replace("#","").split("");if(n.length<3||n.length===5||n.length>8)throw new Error("Invalid hex color: "+r);(n.length===3||n.length===4)&&(n=Array.prototype.concat.apply([],n.map(function(s){return[s,s]}))),n.length===6&&n.push("F","F");const a=parseInt(n.join(""),16);return{r:a>>24&255,g:a>>16&255,b:a>>8&255,a:a&255,hex:"#"+n.slice(0,6).join("")}}e.getOptions=function(n){n||(n={}),n.color||(n.color={});const a=typeof n.margin>"u"||n.margin===null||n.margin<0?4:n.margin,s=n.width&&n.width>=21?n.width:void 0,i=n.scale||4;return{width:s,scale:s?4:i,margin:a,color:{dark:t(n.color.dark||"#000000ff"),light:t(n.color.light||"#ffffffff")},type:n.type,rendererOpts:n.rendererOpts||{}}},e.getScale=function(n,a){return a.width&&a.width>=n+a.margin*2?a.width/(n+a.margin*2):a.scale},e.getImageWidth=function(n,a){const s=e.getScale(n,a);return Math.floor((n+a.margin*2)*s)},e.qrToImageData=function(n,a,s){const i=a.modules.size,l=a.modules.data,o=e.getScale(i,s),u=Math.floor((i+s.margin*2)*o),f=s.margin*o,g=[s.color.light,s.color.dark];for(let p=0;p<u;p++)for(let m=0;m<u;m++){let E=(p*u+m)*4,A=s.color.light;if(p>=f&&m>=f&&p<u-f&&m<u-f){const k=Math.floor((p-f)/o),C=Math.floor((m-f)/o);A=g[l[k*i+C]?1:0]}n[E++]=A.r,n[E++]=A.g,n[E++]=A.b,n[E]=A.a}}})(fn)),fn}var qa;function $l(){return qa||(qa=1,(function(e){const t=Qs();function r(a,s,i){a.clearRect(0,0,s.width,s.height),s.style||(s.style={}),s.height=i,s.width=i,s.style.height=i+"px",s.style.width=i+"px"}function n(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}e.render=function(s,i,l){let o=l,u=i;typeof o>"u"&&(!i||!i.getContext)&&(o=i,i=void 0),i||(u=n()),o=t.getOptions(o);const f=t.getImageWidth(s.modules.size,o),g=u.getContext("2d"),p=g.createImageData(f,f);return t.qrToImageData(p.data,s,o),r(g,u,f),g.putImageData(p,0,0),u},e.renderToDataURL=function(s,i,l){let o=l;typeof o>"u"&&(!i||!i.getContext)&&(o=i,i=void 0),o||(o={});const u=e.render(s,i,o),f=o.type||"image/png",g=o.rendererOpts||{};return u.toDataURL(f,g.quality)}})(dn)),dn}var vn={},Ua;function Fl(){if(Ua)return vn;Ua=1;const e=Qs();function t(a,s){const i=a.a/255,l=s+'="'+a.hex+'"';return i<1?l+" "+s+'-opacity="'+i.toFixed(2).slice(1)+'"':l}function r(a,s,i){let l=a+s;return typeof i<"u"&&(l+=" "+i),l}function n(a,s,i){let l="",o=0,u=!1,f=0;for(let g=0;g<a.length;g++){const p=Math.floor(g%s),m=Math.floor(g/s);!p&&!u&&(u=!0),a[g]?(f++,g>0&&p>0&&a[g-1]||(l+=u?r("M",p+i,.5+m+i):r("m",o,0),o=0,u=!1),p+1<s&&a[g+1]||(l+=r("h",f),f=0)):o++}return l}return vn.render=function(s,i,l){const o=e.getOptions(i),u=s.modules.size,f=s.modules.data,g=u+o.margin*2,p=o.color.light.a?"<path "+t(o.color.light,"fill")+' d="M0 0h'+g+"v"+g+'H0z"/>':"",m="<path "+t(o.color.dark,"stroke")+' d="'+n(f,u,o.margin)+'"/>',E='viewBox="0 0 '+g+" "+g+'"',k='<svg xmlns="http://www.w3.org/2000/svg" '+(o.width?'width="'+o.width+'" height="'+o.width+'" ':"")+E+' shape-rendering="crispEdges">'+p+m+`</svg>
9
- `;return typeof l=="function"&&l(null,k),k},vn}var $a;function Ol(){if($a)return Kt;$a=1;const e=wl(),t=Ul(),r=$l(),n=Fl();function a(s,i,l,o,u){const f=[].slice.call(arguments,1),g=f.length,p=typeof f[g-1]=="function";if(!p&&!e())throw new Error("Callback required as last argument");if(p){if(g<2)throw new Error("Too few arguments provided");g===2?(u=l,l=i,i=o=void 0):g===3&&(i.getContext&&typeof u>"u"?(u=o,o=void 0):(u=o,o=l,l=i,i=void 0))}else{if(g<1)throw new Error("Too few arguments provided");return g===1?(l=i,i=o=void 0):g===2&&!i.getContext&&(o=l,l=i,i=void 0),new Promise(function(m,E){try{const A=t.create(l,o);m(s(A,i,o))}catch(A){E(A)}})}try{const m=t.create(l,o);u(null,s(m,i,o))}catch(m){u(m)}}return Kt.create=t.create,Kt.toCanvas=a.bind(null,r.render),Kt.toDataURL=a.bind(null,r.renderToDataURL),Kt.toString=a.bind(null,function(s,i,l){return n.render(s,l)}),Kt}var jl=Ol();const zl=yl(jl);var Hl=L('<p class="muted"> </p>'),Vl=L('<div class="qr svelte-1uqetyj"></div>'),Kl=L('<div class="qr placeholder svelte-1uqetyj"></div>');function Gl(e,t){Ne(t,!0);const r=gt(t,"size",3,192);let n=z(""),a=z(null);_t(()=>{const f=t.value;if(!f){M(n,""),M(a,null);return}zl.toString(f,{type:"svg",errorCorrectionLevel:"M",margin:1,width:r(),color:{dark:"#1d1f24",light:"#ffffff"}}).then(g=>{M(n,g,!0),M(a,null)}).catch(g=>{console.error("QR generation failed",g),M(a,g.message,!0)})});var s=At(),i=de(s);{var l=f=>{var g=Hl(),p=d(g);F(()=>R(p,`QR unavailable: ${c(a)??""}`)),I(f,g)},o=f=>{var g=Vl();Mo(g,()=>c(n),!0),F(()=>En(g,`width: ${r()??""}px; height: ${r()??""}px;`)),I(f,g)},u=f=>{var g=Kl();F(()=>En(g,`width: ${r()??""}px; height: ${r()??""}px;`)),I(f,g)};V(i,f=>{c(a)?f(l):c(n)?f(o,1):f(u,-1)})}I(e,s),Me()}var Yl=Ms('<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="5" y="5" width="9" height="9" rx="1.5"></rect><path d="M11 3.5V3a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h.5"></path></svg>');function Nn(e,t){const r=gt(t,"size",3,16);var n=Yl();F(()=>{he(n,"width",r()),he(n,"height",r())}),I(e,n)}var Jl=L('<div class="qr-wrap svelte-sddtr9"><!></div> <div class="token svelte-sddtr9"><textarea readonly="" rows="3" class="svelte-sddtr9"></textarea> <button class="ghost svelte-sddtr9" type="button"><!> Copy</button></div>',1);function Xs(e,t){Ne(t,!0);async function r(){try{await navigator.clipboard.writeText(t.value),te("success","Copied to clipboard")}catch(f){te("error",`Copy failed: ${f.message}`)}}var n=Jl(),a=de(n),s=d(a);Gl(s,{get value(){return t.value},size:224});var i=v(a,2),l=d(i),o=v(l,2),u=d(o);Nn(u,{}),F(()=>{Bs(l,t.value),he(o,"aria-label",t.copyLabel)}),re("click",o,r),I(e,n),Me()}Xe(["click"]);var Wl=L("<option> </option>"),Ql=L(`<form class="stack"><div><label for="invite-label">Label</label> <input id="invite-label" type="text" placeholder="e.g. Mom's phone" required="" autocomplete="off"/></div> <div><label for="invite-ttl">Expires after</label> <select id="invite-ttl"></select></div> <div class="actions svelte-1d46kin"><button type="button">Cancel</button> <button type="submit" class="primary"> </button></div></form>`),Xl=L('<p class="muted small svelte-1d46kin"> </p>'),Zl=L('<p class="muted">Share this invite with the new device. It can be scanned as a QR or pasted as text.</p> <!> <!> <div class="actions svelte-1d46kin"><button type="button">Create another</button> <button type="button" class="primary">Done</button></div>',1),ec=L('<div class="backdrop svelte-1d46kin" role="presentation"></div> <div class="dialog svelte-1d46kin" role="dialog" aria-modal="true" aria-labelledby="invite-title" tabindex="-1"><h3 id="invite-title">Invite a friend</h3> <!></div>',1);function tc(e,t){Ne(t,!0);const r=[{label:"15 minutes",value:900*1e3},{label:"1 hour",value:3600*1e3},{label:"24 hours",value:1440*60*1e3},{label:"7 days",value:10080*60*1e3},{label:"No expiry",value:0}];let n=z(""),a=z(1440*60*1e3),s=z(!1),i=z(null);function l(){M(n,""),M(a,1440*60*1e3),M(s,!1),M(i,null)}function o(){l(),t.onClose()}async function u(E){E.preventDefault();const A=c(n).trim();if(!A){te("error","Label is required");return}M(s,!0);try{const k={label:A};c(a)>0&&(k.ttlMs=c(a));const C=await kr("/auth/invites",k);M(i,C,!0),te("success","Invite created"),Jt()}catch(k){const C=k instanceof De?k.code:"error",B=k instanceof Error?k.message:String(k);te("error",`Invite failed: ${B} (${C})`)}finally{M(s,!1)}}function f(E){E.key==="Escape"&&o()}var g=At(),p=de(g);{var m=E=>{var A=ec(),k=de(A),C=v(k,2),B=v(d(C),2);{var T=U=>{var P=Ql(),D=d(P),x=v(d(D),2),w=v(D,2),_=v(d(w),2);Qe(_,21,()=>r,q=>q.value,(q,j)=>{var W=Wl(),$=d(W),H={};F(()=>{R($,c(j).label),H!==(H=c(j).value)&&(W.value=(W.__value=c(j).value)??"")}),I(q,W)});var y=v(w,2),h=d(y),b=v(h,2),S=d(b);F(()=>{h.disabled=c(s),b.disabled=c(s),R(S,c(s)?"Creating…":"Create invite")}),hr("submit",P,u),Ft(x,()=>c(n),q=>M(n,q)),Kn(_,()=>c(a),q=>M(a,q)),re("click",h,o),I(U,P)},N=U=>{var P=Zl(),D=v(de(P),2);Xs(D,{get value(){return c(i).encodedInvite},copyLabel:"Copy invite"});var x=v(D,2);{var w=b=>{var S=Xl(),q=d(S);F(j=>R(q,`Expires ${j??""}`),[()=>new Date(c(i).expiresAt).toLocaleString()]),I(b,S)};V(x,b=>{c(i).expiresAt&&b(w)})}var _=v(x,2),y=d(_),h=v(y,2);re("click",y,()=>M(i,null)),re("click",h,o),I(U,P)};V(B,U=>{c(i)?U(N,-1):U(T)})}re("click",k,o),re("keydown",C,f),I(E,A)};V(p,E=>{t.open&&E(m)})}I(e,g),Me()}Xe(["click","keydown"]);var rc=L('<p class="muted">No members yet. Use “Invite a friend” to add one.</p>'),nc=L('<span class="badge info">This device</span>'),ac=L('<button class="danger">Remove</button>'),sc=L('<li class="svelte-3alf51"><div class="member-main svelte-3alf51"><div><span class="member-label svelte-3alf51"> </span> <!></div> <div class="muted small svelte-3alf51"><code> </code> </div></div> <!></li>'),ic=L('<ul class="list svelte-3alf51"></ul>'),oc=L('<p class="muted">No outstanding invites.</p>'),lc=L('<li class="svelte-3alf51"><div class="member-main svelte-3alf51"><div><span class="member-label svelte-3alf51"> </span></div> <div class="muted small svelte-3alf51"> <!></div></div> <button>Revoke</button></li>'),cc=L('<ul class="list svelte-3alf51"></ul>'),uc=L('<section class="stack"><header class="page-header svelte-3alf51"><div><h2>Trust Circle</h2> <p class="muted">Devices authorised to participate in your cadre.</p></div> <button class="primary">Invite a friend</button></header> <div class="card"><h3> </h3> <!></div> <div class="card"><h3> </h3> <!></div></section> <!> <!> <!>',1);function dc(e,t){Ne(t,!0);const r=ft();let n=z(!1),a=z(null),s=z(null);dt(()=>{Jt()});async function i(){const y=c(a);if(y)try{await pr(`/auth/members/${encodeURIComponent(y.peerId)}`),te("success",`Removed ${y.label||Pr(y.peerId)}`),await Jt()}catch(h){const b=h instanceof De?h.code:"error",S=h instanceof Error?h.message:String(h);te("error",`Remove failed: ${S} (${b})`)}finally{M(a,null)}}async function l(){const y=c(s);if(y)try{await pr(`/auth/invites/${encodeURIComponent(y.token)}`),te("success",`Revoked invite for ${y.label}`),await Jt()}catch(h){const b=h instanceof De?h.code:"error",S=h instanceof Error?h.message:String(h);te("error",`Revoke failed: ${S} (${b})`)}finally{M(s,null)}}var o=uc(),u=de(o),f=d(u),g=v(d(f),2),p=v(f,2),m=d(p),E=d(m),A=v(m,2);{var k=y=>{var h=rc();I(y,h)},C=y=>{var h=ic();Qe(h,21,()=>r.trustCircle.members,b=>b.peerId,(b,S)=>{var q=sc(),j=d(q),W=d(j),$=d(W),H=d($),G=v($,2);{var Y=ie=>{var ve=nc();I(ie,ve)};V(G,ie=>{c(S).self&&ie(Y)})}var X=v(W,2),K=d(X),fe=d(K),se=v(K),Se=v(j,2);{var oe=ie=>{var ve=ac();F(()=>he(ve,"aria-label",`Remove ${c(S).label||c(S).peerId}`)),re("click",ve,()=>M(a,c(S),!0)),I(ie,ve)};V(Se,ie=>{c(S).self||ie(oe)})}F((ie,ve)=>{R(H,c(S).label||"Unnamed"),he(K,"title",c(S).peerId),R(fe,ie),R(se,` · added ${ve??""}`)},[()=>Pr(c(S).peerId),()=>Fe(c(S).addedAt)]),I(b,q)}),I(y,h)};V(A,y=>{r.trustCircle.members.length===0?y(k):y(C,-1)})}var B=v(p,2),T=d(B),N=d(T),U=v(T,2);{var P=y=>{var h=oc();I(y,h)},D=y=>{var h=cc();Qe(h,21,()=>r.trustCircle.pending,b=>b.token,(b,S)=>{var q=lc(),j=d(q),W=d(j),$=d(W),H=d($),G=v(W,2),Y=d(G),X=v(Y);{var K=se=>{var Se=So();F(oe=>R(Se,`· expires ${oe??""}`),[()=>Hs(c(S).expiresAt)]),I(se,Se)};V(X,se=>{c(S).expiresAt&&se(K)})}var fe=v(j,2);F(se=>{R(H,c(S).label),R(Y,`issued ${se??""} `)},[()=>Fe(c(S).createdAt)]),re("click",fe,()=>M(s,c(S),!0)),I(b,q)}),I(y,h)};V(U,y=>{r.trustCircle.pending.length===0?y(P):y(D,-1)})}var x=v(u,2);tc(x,{get open(){return c(n)},onClose:()=>M(n,!1)});var w=v(x,2);{let y=J(()=>c(a)!==null),h=J(()=>`Remove ${c(a)?.label||"this device"} from your trust circle? This cannot be undone — they will lose access to your cadre.`);rr(w,{get open(){return c(y)},title:"Remove member",get message(){return c(h)},confirmLabel:"Remove",danger:!0,onConfirm:i,onCancel:()=>M(a,null)})}var _=v(w,2);{let y=J(()=>c(s)!==null),h=J(()=>`Revoke the invite for ${c(s)?.label??"this invite"}? It will no longer be redeemable.`);rr(_,{get open(){return c(y)},title:"Revoke invite",get message(){return c(h)},confirmLabel:"Revoke",danger:!0,onConfirm:l,onCancel:()=>M(s,null)})}F(()=>{R(E,`Members (${r.trustCircle.members.length??""})`),R(N,`Pending invites (${r.trustCircle.pending.length??""})`)}),re("click",g,()=>M(n,!0)),I(e,o),Me()}Xe(["click"]);var fc=L('<!> <dl class="kv svelte-hh3bto"><div class="svelte-hh3bto"><dt class="svelte-hh3bto">External IP</dt><dd class="svelte-hh3bto"> </dd></div> <div class="svelte-hh3bto"><dt class="svelte-hh3bto">Router IP</dt><dd class="svelte-hh3bto"> </dd></div> <div class="svelte-hh3bto"><dt class="svelte-hh3bto">External port</dt><dd class="svelte-hh3bto"> </dd></div> <div class="svelte-hh3bto"><dt class="svelte-hh3bto">Internal port</dt><dd class="svelte-hh3bto"> </dd></div> <div class="svelte-hh3bto"><dt class="svelte-hh3bto">Last tested</dt><dd class="svelte-hh3bto"> </dd></div> <div class="svelte-hh3bto"><dt class="svelte-hh3bto">External IP detected</dt><dd class="svelte-hh3bto"> </dd></div></dl> <button> </button>',1),vc=L('<p class="muted">Loading…</p>'),hc=L(`<p>Your ISP is using Carrier-Grade NAT (CGNAT). You'll need to either:</p> <ul class="svelte-hh3bto"><li>Ask your ISP for a public IP.</li> <li>Use a relay / tunnel (e.g. Cloudflare Tunnel, Tailscale Funnel).</li></ul>`,1),pc=L(`<p>Your cadre isn't reachable from the open internet. The most likely causes:</p> <ul class="svelte-hh3bto"><li> </li> <li> </li></ul>`,1),gc=L('<div class="card warning svelte-hh3bto"><h3>Manual fix</h3> <!> <p class="muted small svelte-hh3bto">See <a href="https://github.com/gotchoices/sereus/blob/master/docs/cadre-host.md" target="_blank" rel="noreferrer">docs/cadre-host.md</a> for vendor-specific router instructions.</p></div>'),_c=L("<option> </option>"),mc=L('<span class="muted small svelte-hh3bto">(stored in OS keychain)</span>'),bc=L('<div><label> <!></label> <input autocomplete="off"/></div>'),yc=L('<p class="muted small svelte-hh3bto"> </p>'),wc=L(`<section class="stack"><header><h2>Connectivity</h2> <p class="muted">How the outside world reaches your cadre.</p></header> <div class="grid two svelte-hh3bto"><div class="card status-card"><h3>Current status</h3> <!></div> <!></div> <form class="card stack"><h3>Port forwarding</h3> <label class="row inline svelte-hh3bto"><input type="checkbox" class="svelte-hh3bto"/> <span>Attempt UPnP / NAT-PMP automatically</span></label> <div><label for="external-port">External port</label> <input id="external-port" type="number" min="1" max="65535"/></div> <div class="actions svelte-hh3bto"><button type="submit" class="primary"> </button></div></form> <form class="card stack"><h3>Dynamic DNS</h3> <p class="muted">Publish a stable hostname so your friends don't need to track your IP.</p> <div><label for="ddns-provider">Provider</label> <select id="ddns-provider"><option>— none —</option><!></select></div> <div><label for="ddns-hostname">Hostname</label> <input id="ddns-hostname" type="text" placeholder="e.g. yourname.duckdns.org" autocomplete="off"/></div> <!> <label class="row inline svelte-hh3bto"><input type="checkbox" class="svelte-hh3bto"/> <span>I manage this DDNS record outside cadre-host (don't auto-update)</span></label> <div class="actions svelte-hh3bto"><button type="submit" class="primary"> </button></div> <!></form></section>`);function kc(e,t){Ne(t,!0);const r=ft();let n=z(st([])),a=z(""),s=z(""),i=z(!1),l=z(st({})),o=z(!0),u=z(4001),f=z(!1),g=z(!1),p=z(!1);const m=J(()=>c(n).find(O=>O.id===c(a))??null),E=J(()=>!!r.connectivity&&(r.connectivity.directReachability==="unreachable"||r.connectivity.portMode==="failed")),A=J(()=>r.connectivity?.cgnatDetected===!0);dt(()=>{Yt(),k()}),_t(()=>{const O=r.connectivity;O&&(c(a)===""&&O.ddns.providerId&&M(a,O.ddns.providerId,!0),c(s)===""&&O.ddns.hostname&&M(s,O.ddns.hostname,!0),M(i,O.ddns.externallyManaged,!0),M(u,O.externalPort,!0))});async function k(){try{const O=await Oe("/nat/providers");M(n,O,!0)}catch(O){te("error",`Could not load DDNS providers: ${O.message}`)}}async function C(){M(f,!0);try{await kr("/nat/test"),te("success","Reachability test complete"),await Yt()}catch(O){te("error",`Test failed: ${O.message}`)}finally{M(f,!1)}}async function B(O){O.preventDefault(),M(g,!0);try{await Cn("/nat/ddns",{providerId:c(a),hostname:c(s),config:{...c(l)},externallyManaged:c(i)}),te("success","DDNS settings saved"),M(l,{},!0),await Yt()}catch(ne){const _e=ne instanceof De?ne.code:"error";te("error",`Save failed: ${ne.message} (${_e})`)}finally{M(g,!1)}}async function T(O){O.preventDefault(),M(p,!0);try{await Cn("/nat/settings",{upnpEnabled:c(o),externalPort:c(u)}),te("success","Port settings saved"),await Yt()}catch(ne){te("error",`Save failed: ${ne.message}`)}finally{M(p,!1)}}var N=wc(),U=v(d(N),2),P=d(U),D=v(d(P),2);{var x=O=>{var ne=fc(),_e=de(ne);Gs(_e,{get reachability(){return r.connectivity.directReachability},get portMode(){return r.connectivity.portMode}});var ye=v(_e,2),me=d(ye),Ce=v(d(me)),xe=d(Ce),Le=v(me,2),ue=v(d(Le)),le=d(ue),ce=v(Le,2),we=v(d(ce)),qe=d(we),Vt=v(ce,2),Er=v(d(Vt)),ei=d(Er),Yn=v(Vt,2),ti=v(d(Yn)),ri=d(ti),ni=v(Yn,2),ai=v(d(ni)),si=d(ai),$r=v(ye,2),ii=d($r);F((oi,li)=>{R(xe,r.connectivity.externalIp??"—"),R(le,r.connectivity.routerExternalIp??"—"),R(qe,r.connectivity.externalPort),R(ei,r.connectivity.internalPort),R(ri,oi),R(si,li),$r.disabled=c(f),R(ii,c(f)?"Testing…":"Test reachability")},[()=>Fe(r.connectivity.lastTestedAt),()=>Fe(r.connectivity.externalIpDetectedAt)]),re("click",$r,C),I(O,ne)},w=O=>{var ne=vc();I(O,ne)};V(D,O=>{r.connectivity?O(x):O(w,-1)})}var _=v(P,2);{var y=O=>{var ne=gc(),_e=v(d(ne),2);{var ye=Ce=>{var xe=hc();I(Ce,xe)},me=Ce=>{var xe=pc(),Le=v(de(xe),2),ue=d(Le),le=d(ue),ce=v(ue,2),we=d(ce);F(()=>{R(le,`Your router doesn't allow UPnP / NAT-PMP — open it and enable the feature, or set up a manual port-forward for port ${r.connectivity?.externalPort??""}.`),R(we,`A firewall on this machine is blocking inbound TCP on port ${r.connectivity?.internalPort??""}.`)}),I(Ce,xe)};V(_e,Ce=>{c(A)?Ce(ye):Ce(me,-1)})}I(O,ne)};V(_,O=>{(c(E)||c(A))&&O(y)})}var h=v(U,2),b=v(d(h),2),S=d(b),q=v(b,2),j=v(d(q),2),W=v(q,2),$=d(W),H=d($),G=v(h,2),Y=v(d(G),4),X=v(d(Y),2),K=d(X);K.value=K.__value="";var fe=v(K);Qe(fe,17,()=>c(n),O=>O.id,(O,ne)=>{var _e=_c(),ye=d(_e),me={};F(()=>{R(ye,c(ne).displayName),me!==(me=c(ne).id)&&(_e.value=(_e.__value=c(ne).id)??"")}),I(O,_e)});var se=v(Y,2),Se=v(d(se),2),oe=v(se,2);{var ie=O=>{var ne=At(),_e=de(ne);Qe(_e,17,()=>c(m).configFields,ye=>ye.key,(ye,me)=>{var Ce=bc(),xe=d(Ce),Le=d(xe),ue=v(Le);{var le=we=>{var qe=mc();I(we,qe)};V(ue,we=>{c(me).secret&&we(le)})}var ce=v(xe,2);F(()=>{he(xe,"for",`ddns-${c(me).key}`),R(Le,`${c(me).label??""} `),he(ce,"id",`ddns-${c(me).key}`),he(ce,"type",c(me).secret?"password":"text"),Bs(ce,c(l)[c(me).key]??"")}),re("input",ce,we=>M(l,{...c(l),[c(me).key]:we.currentTarget.value},!0)),I(ye,Ce)}),I(O,ne)};V(oe,O=>{c(m)&&O(ie)})}var ve=v(oe,2),pe=d(ve),Ie=v(ve,2),je=d(Ie),ge=d(je),Ee=v(Ie,2);{var He=O=>{var ne=yc(),_e=d(ne);F(ye=>R(_e,`Last DDNS update ${ye??""}
10
- ${r.connectivity.ddns.lastUpdateOk===!0?"· ok":r.connectivity.ddns.lastUpdateOk===!1?`· failed: ${r.connectivity.ddns.lastError??"error"}`:""}`),[()=>Fe(r.connectivity.ddns.lastUpdateAt)]),I(O,ne)};V(Ee,O=>{r.connectivity?.ddns.lastUpdateAt&&O(He)})}F(()=>{$.disabled=c(p),R(H,c(p)?"Saving…":"Save port settings"),je.disabled=c(g)||c(a)==="",R(ge,c(g)?"Saving…":"Save DDNS settings")}),hr("submit",h,T),Rr(S,()=>c(o),O=>M(o,O)),Ft(j,()=>c(u),O=>M(u,O)),hr("submit",G,B),Kn(X,()=>c(a),O=>M(a,O)),Ft(Se,()=>c(s),O=>M(s,O)),Rr(pe,()=>c(i),O=>M(i,O)),I(e,N),Me()}Xe(["click","input"]);Oi();var Ec=L(`<p class="muted">No managed nodes yet. cadre-host v1 doesn't auto-spawn nodes — they
11
- come up once you complete an invite redemption.</p>`),Cc=L('<tr class="svelte-7tcksg"><td class="svelte-7tcksg"><code> </code></td><td class="svelte-7tcksg"> </td><td class="svelte-7tcksg"><span> </span></td><td class="svelte-7tcksg"><code> </code></td><td class="muted svelte-7tcksg"> </td><td class="svelte-7tcksg"><a>Details →</a></td></tr>'),Sc=L('<table class="svelte-7tcksg"><thead><tr><th scope="col" class="svelte-7tcksg">ID</th><th scope="col" class="svelte-7tcksg">Profile</th><th scope="col" class="svelte-7tcksg">Status</th><th scope="col" class="svelte-7tcksg">Party</th><th scope="col" class="svelte-7tcksg">Spawned</th><th scope="col" class="svelte-7tcksg"></th></tr></thead><tbody></tbody></table>'),Tc=L('<section class="stack"><header><h2>Nodes</h2> <p class="muted">Cadre nodes managed by this host.</p></header> <div class="card"><!></div></section>');function xc(e,t){Ne(t,!1);const r=ft();dt(()=>{Ur()}),Us();var n=Tc(),a=v(d(n),2),s=d(a);{var i=o=>{var u=Ec();I(o,u)},l=o=>{var u=Sc(),f=v(d(u));Qe(f,5,()=>r.nodes,g=>g.id,(g,p)=>{var m=Cc(),E=d(m),A=d(E),k=d(A),C=v(E),B=d(C),T=v(C),N=d(T),U=d(N),P=v(T),D=d(P),x=d(D),w=v(P),_=d(w),y=v(w),h=d(y);F((b,S,q)=>{R(k,c(p).id),R(B,c(p).profile),mt(N,1,`badge ${c(p).status==="running"?"ok":"err"}`),R(U,c(p).status),he(D,"title",c(p).partyId),R(x,b),R(_,S),he(h,"href",q)},[()=>Pr(c(p).partyId),()=>Fe(c(p).spawnedAt),()=>Ze("node-detail",{id:c(p).id})]),I(g,m)}),I(o,u)};V(s,o=>{r.nodes.length===0?o(i):o(l,-1)})}I(e,n),Me()}var Ac=Ms('<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M13.5 8a5.5 5.5 0 1 1-1.6-3.9"></path><path d="M14 2v3h-3"></path></svg>');function Ic(e,t){const r=gt(t,"size",3,16);var n=Ac();F(()=>{he(n,"width",r()),he(n,"height",r())}),I(e,n)}var Rc=L('<span class="muted small svelte-15ufwrh"> </span>'),Nc=L('<p class="muted"> </p>'),Mc=L('<pre class="logs svelte-15ufwrh"> </pre>'),Pc=L('<div class="card log-card svelte-15ufwrh"><div class="header svelte-15ufwrh"><h3>Recent logs</h3> <div class="row"><!> <button class="ghost svelte-15ufwrh" aria-label="Refresh logs"><!> Refresh</button></div></div> <!></div>');function Lc(e,t){Ne(t,!0);const r=gt(t,"lines",3,200);let n=z(st([])),a=z(!1),s=z(null);async function i(){if(t.nodeId){M(a,!0);try{const C=await Oe(`/api/nodes/${encodeURIComponent(t.nodeId)}/logs?lines=${r()}`);M(n,C.lines,!0),M(s,new Date,!0)}catch(C){te("error",`Logs unavailable: ${C.message}`)}finally{M(a,!1)}}}_t(()=>{i()});var l=Pc(),o=d(l),u=v(d(o),2),f=d(u);{var g=C=>{var B=Rc(),T=d(B);F(N=>R(T,`as of ${N??""}`),[()=>c(s).toLocaleTimeString()]),I(C,B)};V(f,C=>{c(s)&&C(g)})}var p=v(f,2),m=d(p);Ic(m,{});var E=v(o,2);{var A=C=>{var B=Nc(),T=d(B);F(()=>R(T,c(a)?"Loading…":"No log lines yet.")),I(C,B)},k=C=>{var B=Mc(),T=d(B);F(N=>R(T,N),[()=>c(n).join(`
12
- `)]),I(C,B)};V(E,C=>{c(n).length===0?C(A):C(k,-1)})}F(()=>p.disabled=c(a)),re("click",p,i),I(e,l),Me()}Xe(["click"]);var Dc=L('<div class="card"><p class="muted"> </p></div>'),Bc=L('<div class="actions svelte-1eq4g96"><button> </button> <button> </button> <button class="danger">Stop</button></div>'),qc=L('<p class="muted">Your own cadre is turned off on this machine, so this node is not run here.</p>'),Uc=L('<div class="actions svelte-1eq4g96"><button class="danger"> </button></div>'),$c=L('<div class="card"><div class="page-header svelte-1eq4g96"><div><h2><code> </code></h2> <p class="muted"> <code> </code></p></div> <span> </span></div> <dl class="kv svelte-1eq4g96"><div class="svelte-1eq4g96"><dt class="svelte-1eq4g96">Workdir</dt><dd class="svelte-1eq4g96"><code> </code></dd></div> <div class="svelte-1eq4g96"><dt class="svelte-1eq4g96">Spawned</dt><dd class="svelte-1eq4g96"> </dd></div> <div class="svelte-1eq4g96"><dt class="svelte-1eq4g96">Ports</dt><dd class="svelte-1eq4g96"> </dd></div> <div class="svelte-1eq4g96"><dt class="svelte-1eq4g96">CPU</dt><dd class="svelte-1eq4g96"> </dd></div> <div class="svelte-1eq4g96"><dt class="svelte-1eq4g96">Memory (RSS)</dt><dd class="svelte-1eq4g96"> </dd></div></dl> <!></div> <!>',1),Fc=L('<section class="stack"><header class="row"><a class="back svelte-1eq4g96">← Back to nodes</a></header> <!></section> <!> <!>',1);function Oc(e,t){Ne(t,!0);const r=ft();let n=z(!1),a=z(!1),s=z(null),i,l=!1;const o=J(()=>r.nodes.find(x=>x.id===t.id)??null),u=J(()=>r.nodeStats[t.id]??null);dt(()=>{zr(t.id),f()}),zo(()=>{l=!0,g()});function f(){i=setInterval(()=>void zr(t.id),5e3)}function g(){i&&clearInterval(i),i=void 0}function p(x,w){const _=w instanceof De?w.code:"error",y=w instanceof Error?w.message:String(w);te("error",`${x} failed: ${y} (${_})`)}async function m(x){M(s,x,!0);try{await kr(`/api/nodes/${encodeURIComponent(t.id)}/${x}`),te("success",`${x} requested`),await zr(t.id)}catch(w){p(x,w)}finally{M(s,null)}}async function E(){M(s,"terminate"),g();try{await pr(`/grants-admin/donations/${encodeURIComponent(t.id)}`)}catch(x){p("terminate",x),l||f(),M(s,null);return}te("success",`Terminated donated node ${t.id}`),await Ur(),l||Wo(Ze("nodes"))}var A=Fc(),k=de(A),C=d(k),B=d(C),T=v(C,2);{var N=x=>{var w=Dc(),_=d(w),y=d(_);F(()=>R(y,`Loading node ${t.id??""}…`)),I(x,w)},U=x=>{var w=$c(),_=de(w),y=d(_),h=d(y),b=d(h),S=d(b),q=d(S),j=v(b,2),W=d(j),$=v(W),H=d($),G=v(h,2),Y=d(G),X=v(y,2),K=d(X),fe=v(d(K)),se=d(fe),Se=d(se),oe=v(K,2),ie=v(d(oe)),ve=d(ie),pe=v(oe,2),Ie=v(d(pe)),je=d(Ie),ge=v(pe,2),Ee=v(d(ge)),He=d(Ee),O=v(ge,2),ne=v(d(O)),_e=d(ne),ye=v(X,2);{var me=ue=>{var le=Bc(),ce=d(le),we=d(ce),qe=v(ce,2),Vt=d(qe),Er=v(qe,2);F(()=>{ce.disabled=c(s)!==null||c(o).status==="running",R(we,c(s)==="start"?"Starting…":"Start"),qe.disabled=c(s)!==null||c(o).status==="running",R(Vt,c(s)==="restart"?"Restarting…":"Restart"),Er.disabled=c(s)!==null||c(o).status!=="running"}),re("click",ce,()=>m("start")),re("click",qe,()=>m("restart")),re("click",Er,()=>M(n,!0)),I(ue,le)},Ce=ue=>{var le=At(),ce=de(le);{var we=qe=>{var Vt=qc();I(qe,Vt)};V(ce,qe=>{r.role==="donor"&&qe(we)})}I(ue,le)},xe=ue=>{var le=Uc(),ce=d(le),we=d(ce);F(()=>{ce.disabled=c(s)!==null,R(we,c(s)==="terminate"?"Terminating…":"Terminate")}),re("click",ce,()=>M(a,!0)),I(ue,le)};V(ye,ue=>{c(o).owner&&r.role==="founder"?ue(me):c(o).owner?ue(Ce,1):ue(xe,-1)})}var Le=v(_,2);Lc(Le,{get nodeId(){return c(o).id}}),F((ue,le,ce,we)=>{R(q,c(o).id),R(W,`${c(o).profile??""} · party `),he($,"title",c(o).partyId),R(H,ue),mt(G,1,`badge ${c(o).status==="running"?"ok":"err"}`,"svelte-1eq4g96"),R(Y,c(o).status),R(Se,c(o).workdir||"—"),R(ve,le),R(je,`health ${c(o).ports.health??""} · metrics ${c(o).ports.metrics??""} · p2p ${c(o).ports.p2p??""} · ws ${c(o).ports.ws??""}`),R(He,ce),R(_e,we)},[()=>Pr(c(o).partyId),()=>Fe(c(o).spawnedAt),()=>c(u)?c(u).cpuPercent.toFixed(1)+"%":"—",()=>nl(c(u)?.memoryBytes)]),I(x,w)};V(T,x=>{c(o)?x(U,-1):x(N)})}var P=v(k,2);{let x=J(()=>`Stop node ${t.id}? In-flight requests will be terminated.`);rr(P,{get open(){return c(n)},title:"Stop node",get message(){return c(x)},confirmLabel:"Stop",danger:!0,onConfirm:async()=>{M(n,!1),await m("stop")},onCancel:()=>M(n,!1)})}var D=v(P,2);{let x=J(()=>`Shut down donated node ${t.id}? It leaves the borrower's cadre and frees one node slot on their grant; they can ask for another while the grant is valid.`);rr(D,{get open(){return c(a)},title:"Terminate donated node",get message(){return c(x)},note:"The grant itself is untouched; revoke it with: cadre-host grant revoke",confirmLabel:"Terminate",danger:!0,onConfirm:async()=>{M(a,!1),await E()},onCancel:()=>M(a,!1)})}F(x=>he(B,"href",x),[()=>Ze("nodes")]),I(e,A),Me()}Xe(["click"]);var jc=L('<a target="_blank" rel="noreferrer">Release notes</a>'),zc=L('<div class="banner info svelte-1cl3wo6"><div><strong>Update available</strong> <span class="muted"> </span> <!></div> <button type="button" class="primary"> </button></div>'),Hc=L('<p class="muted small svelte-1cl3wo6"> </p>'),Vc=L('<p class="error small svelte-1cl3wo6"> </p>'),Kc=L('<dl class="kv svelte-1cl3wo6"><div class="svelte-1cl3wo6"><dt class="svelte-1cl3wo6">Install ID</dt><dd class="svelte-1cl3wo6"><code> </code></dd></div> <div class="svelte-1cl3wo6"><dt class="svelte-1cl3wo6">Installed at</dt><dd class="svelte-1cl3wo6"> </dd></div> <div class="svelte-1cl3wo6"><dt class="svelte-1cl3wo6">Installer version</dt><dd class="svelte-1cl3wo6"> </dd></div> <div class="svelte-1cl3wo6"><dt class="svelte-1cl3wo6">UI port</dt><dd class="svelte-1cl3wo6"> </dd></div> <div class="svelte-1cl3wo6"><dt class="svelte-1cl3wo6">libp2p port</dt><dd class="svelte-1cl3wo6"> </dd></div> <div class="svelte-1cl3wo6"><dt class="svelte-1cl3wo6">Data dir</dt> <dd class="copy-row svelte-1cl3wo6"><code> </code> <button type="button" class="ghost" aria-label="Copy data dir"><!></button></dd></div> <div class="svelte-1cl3wo6"><dt class="svelte-1cl3wo6">Identity</dt> <dd class="copy-row svelte-1cl3wo6"><code> </code> <button type="button" class="ghost" aria-label="Copy identity path"><!></button></dd></div></dl> <p class="muted small svelte-1cl3wo6">UI port, libp2p port, and data dir are set at install time and can only be changed by editing <code>host.config.json</code> and restarting the service.</p>',1),Gc=L('<p class="muted">Loading…</p>'),Yc=L(`<section class="stack"><header><h2>Settings</h2> <p class="muted">Update preferences and install metadata.</p></header> <form class="card stack"><h3>Updates</h3> <label class="row inline svelte-1cl3wo6"><input type="checkbox" class="svelte-1cl3wo6"/> <span>Apply updates automatically when available</span></label> <div><label for="manifest-url">Manifest URL (optional override)</label> <input id="manifest-url" type="url" placeholder="https://example.org/latest.json" autocomplete="off"/></div> <!> <!> <div class="actions svelte-1cl3wo6"><button type="submit" class="primary"> </button></div></form> <div class="card"><h3>Install</h3> <!></div> <div class="card"><h3>Uninstall</h3> <p class="muted">Stop the cadre-host service, then remove the data directory above and the
13
- installed package:</p> <pre>npm uninstall -g @serfab/cadre-host</pre> <p class="muted small svelte-1cl3wo6">See the README under <a href="https://github.com/gotchoices/sereus/blob/master/packages/cadre-host/README.md" target="_blank" rel="noreferrer">Uninstall</a> for OS-specific service teardown.</p></div></section>`);function Jc(e,t){Ne(t,!0);const r=ft();let n=z(!1),a=z(""),s=z(!1),i=z(!1);dt(()=>{Tn(),Nr()}),_t(()=>{const h=r.settings;h&&(M(n,h.updates.autoApply,!0),M(a,h.updates.manifestUrl??"",!0))});async function l(h){h.preventDefault(),M(s,!0);try{const b={updates:{autoApply:c(n)}};c(a).trim()&&(b.updates.manifestUrl=c(a).trim()),await Cn("/api/settings",b),te("success","Update preferences saved"),await Tn()}catch(b){const S=b instanceof De?b.code:"error";te("error",`Save failed: ${b.message} (${S})`)}finally{M(s,!1)}}async function o(){M(i,!0);try{const h=await kr("/update/apply");te("success",`Applied ${h.fromVersion} → ${h.toVersion}`+(h.restarted?" (service restarting)":"")),await Nr()}catch(h){const b=h instanceof De?h.code:"error";te("error",`Apply failed: ${h.message} (${b})`)}finally{M(i,!1)}}async function u(h){try{await navigator.clipboard.writeText(h),te("success","Copied")}catch(b){te("error",`Copy failed: ${b.message}`)}}var f=Yc(),g=v(d(f),2),p=v(d(g),2),m=d(p),E=v(p,2),A=v(d(E),2),k=v(E,2);{var C=h=>{var b=zc(),S=d(b),q=v(d(S),2),j=d(q),W=v(q,2);{var $=Y=>{var X=jc();F(()=>he(X,"href",r.update.available.releaseNotesUrl)),I(Y,X)};V(W,Y=>{r.update.available.releaseNotesUrl&&Y($)})}var H=v(S,2),G=d(H);F(()=>{R(j,`→ version ${r.update.available.version??""}`),H.disabled=c(i),R(G,c(i)?"Applying…":"Apply now")}),re("click",H,o),I(h,b)},B=h=>{var b=Hc(),S=d(b);F(q=>R(S,`No update available. Last checked ${q??""}.`),[()=>Fe(r.update.lastChecked)]),I(h,b)};V(k,h=>{r.update?.available?.version?h(C):r.update?.lastChecked&&h(B,1)})}var T=v(k,2);{var N=h=>{var b=Vc(),S=d(b);F(()=>R(S,`Last error: ${r.update.lastError.message??""} (${r.update.lastError.code??""})`)),I(h,b)};V(T,h=>{r.update?.lastError&&h(N)})}var U=v(T,2),P=d(U),D=d(P),x=v(g,2),w=v(d(x),2);{var _=h=>{var b=Kc(),S=de(b),q=d(S),j=v(d(q)),W=d(j),$=d(W),H=v(q,2),G=v(d(H)),Y=d(G),X=v(H,2),K=v(d(X)),fe=d(K),se=v(X,2),Se=v(d(se)),oe=d(Se),ie=v(se,2),ve=v(d(ie)),pe=d(ve),Ie=v(ie,2),je=v(d(Ie),2),ge=d(je),Ee=d(ge),He=v(ge,2),O=d(He);Nn(O,{});var ne=v(Ie,2),_e=v(d(ne),2),ye=d(_e),me=d(ye),Ce=v(ye,2),xe=d(Ce);Nn(xe,{}),F(Le=>{R($,r.settings.installId),R(Y,Le),R(fe,r.settings.installerVersion??"—"),R(oe,r.settings.uiPort),R(pe,r.settings.libp2pPort),R(Ee,r.settings.dataDir),R(me,r.settings.identityPath)},[()=>Fe(r.settings.installedAt)]),re("click",He,()=>u(r.settings.dataDir)),re("click",Ce,()=>u(r.settings.identityPath)),I(h,b)},y=h=>{var b=Gc();I(h,b)};V(w,h=>{r.settings?h(_):h(y,-1)})}F(()=>{P.disabled=c(s),R(D,c(s)?"Saving…":"Save update preferences")}),hr("submit",g,l),Rr(m,()=>c(n),h=>M(n,h)),Ft(A,()=>c(a),h=>M(a,h)),I(e,f),Me()}Xe(["click"]);function Fa(e){return e==="c"}function Wc(e){const t=e.strandId;return e.published?e.removed&&e.alone?{kind:"banner",strandId:t}:{kind:"toast",tone:"success",text:`Left ${t}`}:{kind:"toast",tone:"info",text:`${t} was already removed`}}var Qc=L(`<div class="card warning svelte-ngb3vw" role="status"><p>You left <code class="svelte-ngb3vw"> </code> while this machine had no connection to your
14
- other cadre nodes. The removal is recorded here, but your other nodes may keep
15
- running it until they reconnect and sync.</p> <div class="actions svelte-ngb3vw"><button>Dismiss</button></div></div>`),Xc=L('<p class="error svelte-ngb3vw"> </p>'),Zc=L('<p class="muted">Loading…</p>'),eu=L('<p class="muted">This party doesn’t take part in any shared networks yet.</p>'),tu=L('<li class="svelte-ngb3vw"><div class="strand-main svelte-ngb3vw"><code class="strand-id svelte-ngb3vw"> </code> <div class="row meta svelte-ngb3vw"><span> </span> <span class="muted small svelte-ngb3vw"> </span></div></div> <button class="danger">Leave</button></li>'),ru=L('<ul class="list svelte-ngb3vw"></ul>'),nu=L(`<section class="stack"><header><h2>Strands</h2> <p class="muted">Shared networks this party takes part in. Leaving one takes your whole party out of
16
- it. The other parties in that network are unaffected and keep running it.</p></header> <!> <div class="card"><!> <!></div></section> <!>`,1);function au(e,t){Ne(t,!0);function r(w){return`Every cadre node in your party will stop taking part in ${w}. The other parties in that network are unaffected — this only removes yours. You can re-join later by publishing the strand again.`}function n(w){return`This is irreversible. ${w} is a closed network, and your party’s membership key for it is stored only in the row you are about to delete. Once it is gone your party can never admit another member to that network, and re-publishing the strand would create a different key that its existing members will not accept. Every cadre node in your party will stop taking part in it. The other parties in that network are unaffected.`}const a="This machine currently has no connection to your other cadre nodes. If you leave now, they may keep running this network until they sync.",s=ft();let i=z(null),l=z(null);const o=J(()=>Fa(c(i)?.type??"o")),u=J(()=>s.strands.loaded?s.strands.list.length===0?"empty":"list":s.strands.error?"none":"loading");dt(()=>{Sn()});function f(w){return w.running?w.status?`running · ${w.status}`:"running":"not running"}async function g(){const w=c(i);if(!w)return;const _=Fa(w.type)?"?confirm=1":"";try{const y=await pr(`/api/strands/${encodeURIComponent(w.id)}${_}`);p(Wc(y)),await Sn()}catch(y){const h=y instanceof Error?y.message:String(y);if(y instanceof De&&y.status===428)te("error",h);else{const b=y instanceof De?y.code:"error";te("error",`Leave failed: ${h} (${b})`)}}finally{M(i,null)}}function p(w){w.kind==="banner"?M(l,w.strandId,!0):te(w.tone,w.text)}var m=nu(),E=de(m),A=v(d(E),2);{var k=w=>{var _=Qc(),y=d(_),h=v(d(y)),b=d(h),S=v(y,2),q=d(S);F(()=>R(b,c(l))),re("click",q,()=>M(l,null)),I(w,_)};V(A,w=>{c(l)&&w(k)})}var C=v(A,2),B=d(C);{var T=w=>{var _=Xc(),y=d(_);F(()=>R(y,`Couldn’t load strands: ${s.strands.error??""}`)),I(w,_)};V(B,w=>{s.strands.error&&w(T)})}var N=v(B,2);{var U=w=>{var _=Zc();I(w,_)},P=w=>{var _=eu();I(w,_)},D=w=>{var _=ru();Qe(_,21,()=>s.strands.list,y=>y.id,(y,h)=>{var b=tu(),S=d(b),q=d(S),j=d(q),W=v(q,2),$=d(W),H=d($),G=v($,2),Y=d(G),X=v(S,2);F(K=>{R(j,c(h).id),mt($,1,`badge ${c(h).type==="c"?"warn":"info"}`),R(H,c(h).type==="c"?"Closed":"Open"),R(Y,K),he(X,"aria-label",`Leave ${c(h).id}`)},[()=>f(c(h))]),re("click",X,()=>M(i,c(h),!0)),I(y,b)}),I(w,_)};V(N,w=>{c(u)==="loading"?w(U):c(u)==="empty"?w(P,1):c(u)==="list"&&w(D,2)})}var x=v(E,2);{let w=J(()=>c(i)!==null),_=J(()=>c(o)?"Leave this closed network?":"Leave this shared network?"),y=J(()=>c(o)?n(c(i)?.id??""):r(c(i)?.id??"")),h=J(()=>s.strands.loaded&&s.strands.controlConnections===0?a:void 0),b=J(()=>c(o)?c(i)?.id??"":void 0);rr(x,{get open(){return c(w)},get title(){return c(_)},get message(){return c(y)},get note(){return c(h)},get requireText(){return c(b)},confirmLabel:"Leave",danger:!0,onConfirm:g,onCancel:()=>M(i,null)})}I(e,m),Me()}Xe(["click"]);function Mn(e,t=Date.now()){if(e.revokedAt)return"revoked";if(e.expiresAt){const r=Date.parse(e.expiresAt);if(Number.isFinite(r)&&t>r)return"expired"}return"active"}const Oa={active:0,expired:1,revoked:2};function su(e,t=Date.now()){return[...e].sort((r,n)=>Oa[Mn(r,t)]-Oa[Mn(n,t)]||Date.parse(n.createdAt)-Date.parse(r.createdAt))}const iu={provisioning:"starting",awaiting_seed:"waiting for their device",seeded:"in use",error:"failed",terminated:"shut down"};function ou(e){return e==="awaiting_seed"||e==="seeded"}var lu=L("<option> </option>"),cu=L(`<h3 id="grant-title">Issue a grant</h3> <form class="stack"><div><label for="grant-label">Label</label> <input id="grant-label" type="text" placeholder="e.g. Alice's cadre" maxlength="200" required="" autocomplete="off"/></div> <div><label for="grant-max-nodes">Max nodes at once</label> <input id="grant-max-nodes" type="number" placeholder="1" min="1" step="1"/></div> <div><label for="grant-ttl">Expires after</label> <select id="grant-ttl"></select></div> <div class="actions svelte-1gylbi3"><button type="button">Cancel</button> <button type="submit" class="primary"> </button></div></form>`,1),uu=L('<button type="button">Issue another</button>'),du=L(`<h3 id="grant-title"> </h3> <p class="muted">In their app's Host Node settings, your friend enters this machine's address as the
17
- host URL and this token as the grant token. Anyone holding the token can ask this
18
- machine for nodes, so share it only with them.</p> <!> <p class="muted small svelte-1gylbi3"> </p> <div class="actions svelte-1gylbi3"><!> <button type="button" class="primary">Done</button></div>`,1),fu=L('<div class="backdrop svelte-1gylbi3" role="presentation"></div> <div class="dialog svelte-1gylbi3" role="dialog" aria-modal="true" aria-labelledby="grant-title" tabindex="-1"><!></div>',1);function vu(e,t){Ne(t,!0);const r=gt(t,"grant",3,null),n=1440*60*1e3,a=[{label:"30 days",value:30*n},{label:"90 days",value:90*n},{label:"1 year",value:365*n},{label:"No expiry",value:0}];let s=z(""),i=z(null),l=z(0),o=z(!1),u=z(null);const f=J(()=>c(u)??r());function g(){M(s,""),M(i,null),M(l,0),M(o,!1),M(u,null)}function p(){g(),t.onClose()}function m(){const T=c(s).trim();if(!T)return"Label is required";const N={label:T};if(c(i)!==null&&c(i)!==void 0){if(!Number.isInteger(c(i))||c(i)<1)return"Max nodes must be a whole number, 1 or more";N.maxNodes=c(i)}return c(l)>0&&(N.ttlMs=c(l)),N}async function E(T){T.preventDefault();const N=m();if(typeof N=="string"){te("error",N);return}M(o,!0);try{const U=await kr("/grants-admin",N);M(u,U.grant,!0),te("success","Grant issued"),gr()}catch(U){const P=U instanceof De?U.code:"error",D=U instanceof Error?U.message:String(U);te("error",`Issue failed: ${D} (${P})`)}finally{M(o,!1)}}function A(T){T.key==="Escape"&&p()}var k=At(),C=de(k);{var B=T=>{var N=fu(),U=de(N),P=v(U,2),D=d(P);{var x=_=>{var y=cu(),h=v(de(y),2),b=d(h),S=v(d(b),2),q=v(b,2),j=v(d(q),2),W=v(q,2),$=v(d(W),2);Qe($,21,()=>a,K=>K.value,(K,fe)=>{var se=lu(),Se=d(se),oe={};F(()=>{R(Se,c(fe).label),oe!==(oe=c(fe).value)&&(se.value=(se.__value=c(fe).value)??"")}),I(K,se)});var H=v(W,2),G=d(H),Y=v(G,2),X=d(Y);F(()=>{G.disabled=c(o),Y.disabled=c(o),R(X,c(o)?"Issuing…":"Issue grant")}),hr("submit",h,E),Ft(S,()=>c(s),K=>M(s,K)),Ft(j,()=>c(i),K=>M(i,K)),Kn($,()=>c(l),K=>M(l,K)),re("click",G,p),I(_,y)},w=_=>{var y=du(),h=de(y),b=d(h),S=v(h,4);Xs(S,{get value(){return c(f).token},copyLabel:"Copy grant token"});var q=v(S,2),j=d(q),W=v(q,2),$=d(W);{var H=Y=>{var X=uu();re("click",X,g),I(Y,X)};V($,Y=>{c(u)&&Y(H)})}var G=v($,2);F(Y=>{R(b,`Grant for ${c(f).label??""}`),R(j,`Up to ${c(f).maxNodes??""} node${c(f).maxNodes===1?"":"s"} at once ·
19
- ${Y??""}`)},[()=>c(f).expiresAt?`expires ${new Date(c(f).expiresAt).toLocaleString()}`:"never expires"]),re("click",G,p),I(_,y)};V(D,_=>{c(f)?_(w,-1):_(x)})}re("click",U,p),re("keydown",P,A),I(T,N)};V(C,T=>{t.open&&T(B)})}I(e,k),Me()}Xe(["click","keydown"]);var hu=L('<p class="error svelte-1jncsno"> </p>'),pu=L('<p class="muted">Loading…</p>'),gu=L('<p class="muted">No grants yet. Issue one to let a friend borrow nodes from this machine.</p>'),_u=L("<a><code> </code></a>"),mu=L("<code> </code>"),bu=L('<li class="svelte-1jncsno"><!> <span class="muted"> </span></li>'),yu=L('<ul class="donations small svelte-1jncsno"></ul>'),wu=L("<button>Show token</button>"),ku=L('<button class="danger">Revoke</button>'),Eu=L('<li class="svelte-1jncsno"><div class="grant-main svelte-1jncsno"><div class="row meta svelte-1jncsno"><span class="grant-label svelte-1jncsno"> </span> <span> </span></div> <div class="muted small svelte-1jncsno"> </div> <!></div> <div class="actions svelte-1jncsno"><!> <!></div></li>'),Cu=L('<ul class="list svelte-1jncsno"></ul>'),Su=L('<label class="keep svelte-1jncsno"><input type="checkbox"/> </label>'),Tu=L(`<section class="stack"><header class="page-header svelte-1jncsno"><div><h2>Grants</h2> <p class="muted">Tokens that let a friend's cadre borrow nodes from this machine. A grant stays
20
- usable, up to its node limit, until it expires or you revoke it.</p></div> <button class="primary">Issue grant</button></header> <div class="card"><!> <!></div></section> <!> <!>`,1);function xu(e,t){Ne(t,!0);const r={active:{text:"Active",tone:"ok"},expired:{text:"Expired",tone:"warn"},revoked:{text:"Revoked",tone:"err"}},n=ft();let a=z(!1),s=z(null),i=z(null),l=z(!1);const o=J(()=>su(n.grants.list)),u=J(()=>n.grants.loaded?n.grants.list.length===0?"empty":"list":n.grants.error?"none":"loading");dt(()=>{gr()});function f(h){return`${h} donated node${h===1?"":"s"}`}function g(h,b){return b==="revoked"?`revoked ${Fe(h.revokedAt)}`:h.expiresAt?b==="expired"?`expired ${Fe(h.expiresAt)}`:`expires ${Hs(h.expiresAt)}`:"never expires"}function p(h){M(l,!1),M(i,h,!0)}function m(h,b){if(!h)return"";const S=`Revoke the grant for ${h.label}? Whoever holds its token can no longer ask this machine for nodes.`,q=h.donations.length;return q===0?S:b?`${S} Its ${f(q)} keep running until you terminate each one, from its node page or with cadre-host grant terminate.`:`${S} Its ${f(q)} will be shut down, and ${q===1?"its":"their"} data on this machine deleted.`}async function E(){const h=c(i);if(!h)return;const b=c(l)&&h.donations.length>0;try{const S=await pr(`/grants-admin/${encodeURIComponent(h.token)}${b?"?keepNodes=true":""}`),q=b?"its nodes keep running":S.terminated.length>0?`shut down ${f(S.terminated.length)}`:"";te("success",`Revoked grant for ${h.label}${q?`; ${q}`:""}`)}catch(S){bt("Revoke",S)}finally{M(i,null)}await gr()}var A=Tu(),k=de(A),C=d(k),B=v(d(C),2),T=v(C,2),N=d(T);{var U=h=>{var b=hu(),S=d(b);F(()=>R(S,`Couldn’t load grants: ${n.grants.error??""}`)),I(h,b)};V(N,h=>{n.grants.error&&h(U)})}var P=v(N,2);{var D=h=>{var b=pu();I(h,b)},x=h=>{var b=gu();I(h,b)},w=h=>{var b=Cu();Qe(b,21,()=>c(o),S=>S.token,(S,q)=>{const j=J(()=>Mn(c(q)));var W=Eu(),$=d(W),H=d($),G=d(H),Y=d(G),X=v(G,2),K=d(X),fe=v(H,2),se=d(fe),Se=v(fe,2);{var oe=ge=>{var Ee=yu();Qe(Ee,21,()=>c(q).donations,He=>He.id,(He,O)=>{var ne=bu(),_e=d(ne);{var ye=ue=>{var le=_u(),ce=d(le),we=d(ce);F(qe=>{he(le,"href",qe),R(we,c(O).id)},[()=>Ze("node-detail",{id:c(O).id})]),I(ue,le)},me=J(()=>ou(c(O).status)),Ce=ue=>{var le=mu(),ce=d(le);F(()=>R(ce,c(O).id)),I(ue,le)};V(_e,ue=>{c(me)?ue(ye):ue(Ce,-1)})}var xe=v(_e,2),Le=d(xe);F(()=>R(Le,iu[c(O).status])),I(He,ne)}),I(ge,Ee)};V(Se,ge=>{c(q).donations.length>0&&ge(oe)})}var ie=v($,2),ve=d(ie);{var pe=ge=>{var Ee=wu();re("click",Ee,()=>M(s,c(q),!0)),I(ge,Ee)};V(ve,ge=>{c(j)==="active"&&ge(pe)})}var Ie=v(ve,2);{var je=ge=>{var Ee=ku();F(()=>he(Ee,"aria-label",`Revoke grant for ${c(q).label}`)),re("click",Ee,()=>p(c(q))),I(ge,Ee)};V(Ie,ge=>{c(j)!=="revoked"&&ge(je)})}F((ge,Ee)=>{R(Y,c(q).label),mt(X,1,`badge ${r[c(j)].tone??""}`,"svelte-1jncsno"),R(K,r[c(j)].text),R(se,`${c(q).liveNodes??""} / ${c(q).maxNodes??""} nodes
21
- · issued ${ge??""}
22
- · ${Ee??""}`)},[()=>Fe(c(q).createdAt),()=>g(c(q),c(j))]),I(S,W)}),I(h,b)};V(P,h=>{c(u)==="loading"?h(D):c(u)==="empty"?h(x,1):c(u)==="list"&&h(w,2)})}var _=v(k,2);{let h=J(()=>c(a)||c(s)!==null);vu(_,{get open(){return c(h)},get grant(){return c(s)},onClose:()=>{M(a,!1),M(s,null)}})}var y=v(_,2);{let h=J(()=>c(i)!==null),b=J(()=>m(c(i),c(l)));rr(y,{get open(){return c(h)},title:"Revoke grant",get message(){return c(b)},confirmLabel:"Revoke",danger:!0,onConfirm:E,onCancel:()=>M(i,null),children:(S,q)=>{var j=At(),W=de(j);{var $=H=>{var G=Su(),Y=d(G),X=v(Y);F(K=>R(X,` Keep its ${K??""} running`),[()=>f(c(i).donations.length)]),Rr(Y,()=>c(l),K=>M(l,K)),I(H,G)};V(W,H=>{c(i)&&c(i).donations.length>0&&H($)})}I(S,j)},$$slots:{default:!0}})}re("click",B,()=>M(a,!0)),I(e,A),Me()}Xe(["click"]);var Au=L('<div role="status"><span class="text svelte-g7yjw8"> </span> <button class="ghost svelte-g7yjw8" aria-label="Dismiss">×</button></div>'),Iu=L('<div class="toast-stack svelte-g7yjw8" aria-live="polite" aria-relevant="additions"></div>');function Ru(e,t){Ne(t,!1);const r=ft();Us();var n=At(),a=de(n);{var s=i=>{var l=Iu();Qe(l,5,()=>r.toasts,o=>o.id,(o,u)=>{var f=Au(),g=d(f),p=d(g),m=v(g,2);F(()=>{mt(f,1,`toast toast-${c(u).kind??""}`,"svelte-g7yjw8"),R(p,c(u).text)}),re("click",m,()=>$s(c(u).id)),I(o,f)}),I(i,l)};V(a,i=>{r.toasts.length>0&&i(s)})}I(e,n),Me()}Xe(["click"]);var Nu=L("<a> </a>"),Mu=L('<p class="muted">Loading…</p>'),Pu=L("<p>This page is for running your own cadre, which is turned off on this machine.</p> <a>← Back to Home</a>",1),Lu=L('<div class="card"><!></div>'),Du=L('<a class="visually-hidden" href="#main">Skip to content</a> <header class="topbar svelte-1r8vfx3"><div class="brand svelte-1r8vfx3"><span class="logo svelte-1r8vfx3" aria-hidden="true">●</span> <span>cadre-host</span> <!></div> <nav aria-label="Primary" class="svelte-1r8vfx3"></nav></header> <main id="main" class="svelte-1r8vfx3"><!></main> <!>',1);function Bu(e,t){Ne(t,!0);const r=Qo(),n=ft();function a(_){switch(_){case"ok":return"OK";case"warn":return"Attention";case"error":return"Error";default:return"…"}}const s=[{name:"home",label:"Home"},{name:"trust-circle",label:"Trust Circle"},{name:"connectivity",label:"Connectivity"},{name:"nodes",label:"Nodes"},{name:"grants",label:"Grants"},{name:"settings",label:"Settings"},{name:"strands",label:"Strands"}],i=J(()=>s.filter(_=>n.role==="founder"||!ua(_.name)));_t(()=>{n.role==="founder"&&jt(()=>{Jt(),Yt()})});function l(_){return _==="nodes"?r.route.name==="nodes"||r.route.name==="node-detail":r.route.name===_}dt(()=>{Xo(),Fs(),Ur(),Nr(),Tn();let _=!0;const y=rl(h=>Yo(h),{onError(h,b){_&&(_=!1,te("error",`Lost realtime updates; retrying in ${Math.round(b/1e3)}s`))},onOpen(){_=!0}});return()=>{y.close(),Zo()}});var o=Du(),u=v(de(o),2),f=d(u),g=v(d(f),4);{let _=J(()=>a(n.status));Ks(g,{get status(){return n.status},get label(){return c(_)},size:10})}var p=v(f,2);Qe(p,21,()=>c(i),_=>_.name,(_,y)=>{var h=Nu();let b;var S=d(h);F((q,j,W)=>{he(h,"href",q),he(h,"aria-current",j),b=mt(h,1,"svelte-1r8vfx3",null,b,W),R(S,c(y).label)},[()=>Ze(c(y).name),()=>l(c(y).name)?"page":void 0,()=>({active:l(c(y).name)})]),I(_,h)});var m=v(u,2),E=d(m);{var A=_=>{var y=Lu(),h=d(y);{var b=q=>{var j=Mu();I(q,j)},S=q=>{var j=Pu(),W=v(de(j),2);F($=>he(W,"href",$),[()=>Ze("home")]),I(q,j)};V(h,q=>{n.role===null?q(b):q(S,-1)})}I(_,y)},k=J(()=>ua(r.route.name)&&n.role!=="founder"),C=_=>{dc(_,{})},B=_=>{kc(_,{})},T=_=>{xc(_,{})},N=_=>{{let y=J(()=>r.route.params.id??"");Oc(_,{get id(){return c(y)}})}},U=_=>{Jc(_,{})},P=_=>{au(_,{})},D=_=>{xu(_,{})},x=_=>{pl(_,{})};V(E,_=>{c(k)?_(A):r.route.name==="trust-circle"?_(C,1):r.route.name==="connectivity"?_(B,2):r.route.name==="nodes"?_(T,3):r.route.name==="node-detail"?_(N,4):r.route.name==="settings"?_(U,5):r.route.name==="strands"?_(P,6):r.route.name==="grants"?_(D,7):_(x,-1)})}var w=v(m,2);Ru(w,{}),I(e,o),Me()}const Zs=document.getElementById("app");if(!Zs)throw new Error("Missing #app mount target");To(Bu,{target:Zs});
23
- //# sourceMappingURL=index-C6nELNfC.js.map