fundus 0.10.0 → 0.11.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 (221) hide show
  1. package/README.md +58 -0
  2. package/build/client/_app/immutable/assets/3.BuCXJbRG.css +1 -0
  3. package/build/client/_app/immutable/assets/3.BuCXJbRG.css.br +0 -0
  4. package/build/client/_app/immutable/assets/3.BuCXJbRG.css.gz +0 -0
  5. package/build/client/_app/immutable/assets/4.C0QkCMQ4.css +1 -0
  6. package/build/client/_app/immutable/assets/4.C0QkCMQ4.css.br +0 -0
  7. package/build/client/_app/immutable/assets/4.C0QkCMQ4.css.gz +0 -0
  8. package/build/client/_app/immutable/assets/Popover.Et4sBRbI.css +1 -0
  9. package/build/client/_app/immutable/assets/Popover.Et4sBRbI.css.br +0 -0
  10. package/build/client/_app/immutable/assets/Popover.Et4sBRbI.css.gz +0 -0
  11. package/build/client/_app/immutable/chunks/BAva9YXm.js +1 -0
  12. package/build/client/_app/immutable/chunks/BAva9YXm.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/BAva9YXm.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/BGAUmugt.js +1 -0
  15. package/build/client/_app/immutable/chunks/BGAUmugt.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/BGAUmugt.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/BMORe2Gb.js +3 -0
  18. package/build/client/_app/immutable/chunks/BMORe2Gb.js.br +0 -0
  19. package/build/client/_app/immutable/chunks/BMORe2Gb.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/CBygkKLq.js +1 -0
  21. package/build/client/_app/immutable/chunks/CBygkKLq.js.br +0 -0
  22. package/build/client/_app/immutable/chunks/CBygkKLq.js.gz +0 -0
  23. package/build/client/_app/immutable/chunks/Cil0r9BR.js +108 -0
  24. package/build/client/_app/immutable/chunks/Cil0r9BR.js.br +0 -0
  25. package/build/client/_app/immutable/chunks/Cil0r9BR.js.gz +0 -0
  26. package/build/client/_app/immutable/chunks/D-p-QSzz.js +1 -0
  27. package/build/client/_app/immutable/chunks/D-p-QSzz.js.br +0 -0
  28. package/build/client/_app/immutable/chunks/D-p-QSzz.js.gz +0 -0
  29. package/build/client/_app/immutable/chunks/D15yxLq9.js +1 -0
  30. package/build/client/_app/immutable/chunks/D15yxLq9.js.br +0 -0
  31. package/build/client/_app/immutable/chunks/D15yxLq9.js.gz +0 -0
  32. package/build/client/_app/immutable/chunks/DFRlZOKz.js +2 -0
  33. package/build/client/_app/immutable/chunks/DFRlZOKz.js.br +0 -0
  34. package/build/client/_app/immutable/chunks/DFRlZOKz.js.gz +0 -0
  35. package/build/client/_app/immutable/chunks/{CliRE4wo.js → DpFtnEPx.js} +1 -1
  36. package/build/client/_app/immutable/chunks/DpFtnEPx.js.br +4 -0
  37. package/build/client/_app/immutable/chunks/DpFtnEPx.js.gz +0 -0
  38. package/build/client/_app/immutable/entry/app.BaP08B0_.js +2 -0
  39. package/build/client/_app/immutable/entry/app.BaP08B0_.js.br +0 -0
  40. package/build/client/_app/immutable/entry/app.BaP08B0_.js.gz +0 -0
  41. package/build/client/_app/immutable/entry/start.DntfygIK.js +1 -0
  42. package/build/client/_app/immutable/entry/start.DntfygIK.js.br +0 -0
  43. package/build/client/_app/immutable/entry/start.DntfygIK.js.gz +0 -0
  44. package/build/client/_app/immutable/nodes/0.6A6JK0Xm.js +1 -0
  45. package/build/client/_app/immutable/nodes/0.6A6JK0Xm.js.br +0 -0
  46. package/build/client/_app/immutable/nodes/0.6A6JK0Xm.js.gz +0 -0
  47. package/build/client/_app/immutable/nodes/1.8K7wLW9R.js +1 -0
  48. package/build/client/_app/immutable/nodes/1.8K7wLW9R.js.br +0 -0
  49. package/build/client/_app/immutable/nodes/1.8K7wLW9R.js.gz +0 -0
  50. package/build/client/_app/immutable/nodes/2.CB_PeUBC.js +3 -0
  51. package/build/client/_app/immutable/nodes/2.CB_PeUBC.js.br +0 -0
  52. package/build/client/_app/immutable/nodes/2.CB_PeUBC.js.gz +0 -0
  53. package/build/client/_app/immutable/nodes/3.qIkVQyP6.js +1 -0
  54. package/build/client/_app/immutable/nodes/3.qIkVQyP6.js.br +0 -0
  55. package/build/client/_app/immutable/nodes/3.qIkVQyP6.js.gz +0 -0
  56. package/build/client/_app/immutable/nodes/4.SmoVIy5D.js +2 -0
  57. package/build/client/_app/immutable/nodes/4.SmoVIy5D.js.br +0 -0
  58. package/build/client/_app/immutable/nodes/4.SmoVIy5D.js.gz +0 -0
  59. package/build/client/_app/version.json +1 -1
  60. package/build/client/_app/version.json.br +0 -0
  61. package/build/client/_app/version.json.gz +0 -0
  62. package/build/handler.js +7 -7
  63. package/build/index.js +7 -7
  64. package/build/server/chunks/chunks/{context.js-Cg-Pih8x.js → context.js-BJfk3ZiR.js} +440 -6
  65. package/build/server/chunks/chunks/context.js-BJfk3ZiR.js.map +1 -0
  66. package/build/server/chunks/chunks/{contract.js-C6yL03Hj.js → contract.js-DRcxzb4o.js} +17 -3
  67. package/build/server/chunks/chunks/contract.js-DRcxzb4o.js.map +1 -0
  68. package/build/server/chunks/chunks/{exports.js-CKLcHEPO.js → exports.js-aVVdkXgn.js} +2 -2
  69. package/build/server/chunks/chunks/{exports.js-CKLcHEPO.js.map → exports.js-aVVdkXgn.js.map} +1 -1
  70. package/build/server/chunks/chunks/{http.js-B2joT3YT.js → http.js-DMkgmpI5.js} +2 -2
  71. package/build/server/chunks/chunks/{http.js-B2joT3YT.js.map → http.js-DMkgmpI5.js.map} +1 -1
  72. package/build/server/chunks/chunks/{internal.js-ByCfjWgU.js → internal.js-C6cIfe5d.js} +3 -3
  73. package/build/server/chunks/chunks/{internal.js-ByCfjWgU.js.map → internal.js-C6cIfe5d.js.map} +1 -1
  74. package/build/server/chunks/chunks/internal2.js-BlXt2rfE.js.map +1 -1
  75. package/build/server/chunks/chunks/{shared.js-BDdrmPL3.js → shared.js-BNd0HSxp.js} +2 -2
  76. package/build/server/chunks/chunks/{shared.js-BDdrmPL3.js.map → shared.js-BNd0HSxp.js.map} +1 -1
  77. package/build/server/chunks/chunks/{utils.js-CD_wf0ka.js → utils.js-6HSqnONB.js} +3 -3
  78. package/build/server/chunks/chunks/{utils.js-CD_wf0ka.js.map → utils.js-6HSqnONB.js.map} +1 -1
  79. package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-Cn8Ztaiw.js → _server.ts.js-m2QGyBiV.js} +3 -3
  80. package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-Cn8Ztaiw.js.map → _server.ts.js-m2QGyBiV.js.map} +1 -1
  81. package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-CrOiDQG8.js → _server.ts.js-eMNgdaf4.js} +4 -4
  82. package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-CrOiDQG8.js.map → _server.ts.js-eMNgdaf4.js.map} +1 -1
  83. package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-CpJ_OzDV.js → _server.ts.js-CEQd4Wxn.js} +4 -4
  84. package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-CpJ_OzDV.js.map → _server.ts.js-CEQd4Wxn.js.map} +1 -1
  85. package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-BCZRAtqn.js → _server.ts.js-B2JoGCzy.js} +4 -4
  86. package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-BCZRAtqn.js.map → _server.ts.js-B2JoGCzy.js.map} +1 -1
  87. package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-CwyV_AMP.js → _server.ts.js-DTpkVywC.js} +4 -4
  88. package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-CwyV_AMP.js.map → _server.ts.js-DTpkVywC.js.map} +1 -1
  89. package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-BZAM3HSB.js → _server.ts.js-D6Z_pGEZ.js} +4 -4
  90. package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-BZAM3HSB.js.map → _server.ts.js-D6Z_pGEZ.js.map} +1 -1
  91. package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-CPNISyB1.js → _server.ts.js-CnDi9p0a.js} +4 -4
  92. package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-CPNISyB1.js.map → _server.ts.js-CnDi9p0a.js.map} +1 -1
  93. package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-5R7ywd4H.js → _server.ts.js-BCzuPX5Z.js} +4 -4
  94. package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-5R7ywd4H.js.map → _server.ts.js-BCzuPX5Z.js.map} +1 -1
  95. package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-ZQiaSMNA.js → _server.ts.js-CGbYyJ6S.js} +4 -4
  96. package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-ZQiaSMNA.js.map → _server.ts.js-CGbYyJ6S.js.map} +1 -1
  97. package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-CE29dwBF.js → _server.ts.js-CL_89klb.js} +4 -4
  98. package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-CE29dwBF.js.map → _server.ts.js-CL_89klb.js.map} +1 -1
  99. package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-CU3gpNeg.js → _server.ts.js-DZUKtjz9.js} +4 -4
  100. package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-CU3gpNeg.js.map → _server.ts.js-DZUKtjz9.js.map} +1 -1
  101. package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-BhJDoTAq.js → _server.ts.js-Dz25LG_P.js} +4 -4
  102. package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-BhJDoTAq.js.map → _server.ts.js-Dz25LG_P.js.map} +1 -1
  103. package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-B72NkhD1.js → _server.ts.js-C-NuN3JJ.js} +4 -4
  104. package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-B72NkhD1.js.map → _server.ts.js-C-NuN3JJ.js.map} +1 -1
  105. package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-CWK5em43.js → _server.ts.js-CwL9UPh3.js} +4 -4
  106. package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-CWK5em43.js.map → _server.ts.js-CwL9UPh3.js.map} +1 -1
  107. package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-BBxmYiE6.js → _server.ts.js-DanXYrj1.js} +4 -4
  108. package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-BBxmYiE6.js.map → _server.ts.js-DanXYrj1.js.map} +1 -1
  109. package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-DR4xHt0w.js → _server.ts.js-BZrun0up.js} +4 -4
  110. package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-DR4xHt0w.js.map → _server.ts.js-BZrun0up.js.map} +1 -1
  111. package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-CfiypExu.js → _server.ts.js-DQOabHbS.js} +4 -4
  112. package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-CfiypExu.js.map → _server.ts.js-DQOabHbS.js.map} +1 -1
  113. package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-DjmTUX8d.js → _server.ts.js-k8Ueydx1.js} +4 -4
  114. package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-DjmTUX8d.js.map → _server.ts.js-k8Ueydx1.js.map} +1 -1
  115. package/build/server/chunks/entries/endpoints/api/usage/_server.ts.js-DmMmiFiu.js +82 -0
  116. package/build/server/chunks/entries/endpoints/api/usage/_server.ts.js-DmMmiFiu.js.map +1 -0
  117. package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-qfzdfNHQ.js → _server.ts.js-CT7yOdDS.js} +3 -3
  118. package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-qfzdfNHQ.js.map → _server.ts.js-CT7yOdDS.js.map} +1 -1
  119. package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-CS_5SEL-.js → _server.ts.js-BQTC0OSC.js} +4 -4
  120. package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-CS_5SEL-.js.map → _server.ts.js-BQTC0OSC.js.map} +1 -1
  121. package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-Cv-y3Nqu.js → _server.ts.js-mv9cqSuS.js} +4 -4
  122. package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-Cv-y3Nqu.js.map → _server.ts.js-mv9cqSuS.js.map} +1 -1
  123. package/build/server/chunks/entries/{hooks.server.js-WOShZElI.js → hooks.server.js-BNQO3cZr.js} +3 -3
  124. package/build/server/chunks/entries/{hooks.server.js-WOShZElI.js.map → hooks.server.js-BNQO3cZr.js.map} +1 -1
  125. package/build/server/chunks/{handler-CIOnH690.js → handler-rG16rikT.js} +5 -5
  126. package/build/server/chunks/{handler-CIOnH690.js.map → handler-rG16rikT.js.map} +1 -1
  127. package/build/server/chunks/{index.js-nSuivP3M.js → index.js-DYK_SfL5.js} +5 -5
  128. package/build/server/chunks/{index.js-nSuivP3M.js.map → index.js-DYK_SfL5.js.map} +1 -1
  129. package/build/server/chunks/{manifest.js-CIFnCWGv.js → manifest.js-h2lDpEPs.js} +35 -28
  130. package/build/server/chunks/manifest.js-h2lDpEPs.js.map +1 -0
  131. package/build/server/chunks/nodes/{0.js-BSbmgTIm.js → 0.js-Db28RwnA.js} +2 -2
  132. package/build/server/chunks/nodes/{0.js-BSbmgTIm.js.map → 0.js-Db28RwnA.js.map} +1 -1
  133. package/build/server/chunks/nodes/1.js-D26Uv3YT.js +7 -0
  134. package/build/server/chunks/nodes/{1.js-kvz4iUXK.js.map → 1.js-D26Uv3YT.js.map} +1 -1
  135. package/build/server/chunks/nodes/2.js-BeRlEFid.js +7 -0
  136. package/build/server/chunks/nodes/{2.js-B9ILHJtB.js.map → 2.js-BeRlEFid.js.map} +1 -1
  137. package/build/server/chunks/nodes/3.js-BRUNmCyG.js +7 -0
  138. package/build/server/chunks/nodes/3.js-BRUNmCyG.js.map +1 -0
  139. package/build/server/chunks/nodes/4.js-CTHWqDf1.js +7 -0
  140. package/build/server/chunks/nodes/4.js-CTHWqDf1.js.map +1 -0
  141. package/dist/cli.js +6 -1
  142. package/dist/config.d.ts +1 -1
  143. package/dist/core/api-types.d.ts +36 -1
  144. package/dist/core/config.d.ts +35 -0
  145. package/dist/core/index.d.ts +2 -2
  146. package/dist/server/check.d.ts +6 -0
  147. package/dist/server/check.js +4 -1
  148. package/dist/server/cli-commands.d.ts +3 -1
  149. package/dist/server/cli-commands.js +117 -2
  150. package/dist/server/codegen.d.ts +3 -0
  151. package/dist/server/codegen.js +19 -2
  152. package/dist/server/config-loader.d.ts +3 -1
  153. package/dist/server/config-loader.js +13 -1
  154. package/dist/server/index.d.ts +2 -2
  155. package/dist/server/index.js +1 -1
  156. package/dist/server/operations.d.ts +7 -1
  157. package/dist/server/operations.js +85 -2
  158. package/dist/server/start.d.ts +8 -0
  159. package/dist/server/start.js +24 -0
  160. package/dist/server/usage.d.ts +24 -0
  161. package/dist/server/usage.js +441 -0
  162. package/package.json +1 -1
  163. package/build/client/_app/immutable/assets/3.CmXD8k9d.css +0 -1
  164. package/build/client/_app/immutable/assets/3.CmXD8k9d.css.br +0 -0
  165. package/build/client/_app/immutable/assets/3.CmXD8k9d.css.gz +0 -0
  166. package/build/client/_app/immutable/assets/4.p004hmEN.css +0 -1
  167. package/build/client/_app/immutable/assets/4.p004hmEN.css.br +0 -0
  168. package/build/client/_app/immutable/assets/4.p004hmEN.css.gz +0 -0
  169. package/build/client/_app/immutable/chunks/BD3hQKzV.js +0 -1
  170. package/build/client/_app/immutable/chunks/BD3hQKzV.js.br +0 -0
  171. package/build/client/_app/immutable/chunks/BD3hQKzV.js.gz +0 -0
  172. package/build/client/_app/immutable/chunks/C3HGm51f.js +0 -1
  173. package/build/client/_app/immutable/chunks/C3HGm51f.js.br +0 -0
  174. package/build/client/_app/immutable/chunks/C3HGm51f.js.gz +0 -0
  175. package/build/client/_app/immutable/chunks/C7OUKWnm.js +0 -1
  176. package/build/client/_app/immutable/chunks/C7OUKWnm.js.br +0 -0
  177. package/build/client/_app/immutable/chunks/C7OUKWnm.js.gz +0 -0
  178. package/build/client/_app/immutable/chunks/CaKQ_luf.js +0 -1
  179. package/build/client/_app/immutable/chunks/CaKQ_luf.js.br +0 -0
  180. package/build/client/_app/immutable/chunks/CaKQ_luf.js.gz +0 -0
  181. package/build/client/_app/immutable/chunks/CliRE4wo.js.br +0 -1
  182. package/build/client/_app/immutable/chunks/CliRE4wo.js.gz +0 -0
  183. package/build/client/_app/immutable/chunks/DPZDGjcn.js +0 -1
  184. package/build/client/_app/immutable/chunks/DPZDGjcn.js.br +0 -0
  185. package/build/client/_app/immutable/chunks/DPZDGjcn.js.gz +0 -0
  186. package/build/client/_app/immutable/chunks/JSnjcoVL.js +0 -108
  187. package/build/client/_app/immutable/chunks/JSnjcoVL.js.br +0 -0
  188. package/build/client/_app/immutable/chunks/JSnjcoVL.js.gz +0 -0
  189. package/build/client/_app/immutable/chunks/NblqapDQ.js +0 -3
  190. package/build/client/_app/immutable/chunks/NblqapDQ.js.br +0 -0
  191. package/build/client/_app/immutable/chunks/NblqapDQ.js.gz +0 -0
  192. package/build/client/_app/immutable/entry/app.p0Th9Q3c.js +0 -2
  193. package/build/client/_app/immutable/entry/app.p0Th9Q3c.js.br +0 -0
  194. package/build/client/_app/immutable/entry/app.p0Th9Q3c.js.gz +0 -0
  195. package/build/client/_app/immutable/entry/start.p06L3A6u.js +0 -1
  196. package/build/client/_app/immutable/entry/start.p06L3A6u.js.br +0 -0
  197. package/build/client/_app/immutable/entry/start.p06L3A6u.js.gz +0 -0
  198. package/build/client/_app/immutable/nodes/0.D2yDRY2E.js +0 -2
  199. package/build/client/_app/immutable/nodes/0.D2yDRY2E.js.br +0 -0
  200. package/build/client/_app/immutable/nodes/0.D2yDRY2E.js.gz +0 -0
  201. package/build/client/_app/immutable/nodes/1.nLMgahSZ.js +0 -1
  202. package/build/client/_app/immutable/nodes/1.nLMgahSZ.js.br +0 -3
  203. package/build/client/_app/immutable/nodes/1.nLMgahSZ.js.gz +0 -0
  204. package/build/client/_app/immutable/nodes/2.Cr-DsqQM.js +0 -3
  205. package/build/client/_app/immutable/nodes/2.Cr-DsqQM.js.br +0 -0
  206. package/build/client/_app/immutable/nodes/2.Cr-DsqQM.js.gz +0 -0
  207. package/build/client/_app/immutable/nodes/3.CmsMY1VJ.js +0 -1
  208. package/build/client/_app/immutable/nodes/3.CmsMY1VJ.js.br +0 -0
  209. package/build/client/_app/immutable/nodes/3.CmsMY1VJ.js.gz +0 -0
  210. package/build/client/_app/immutable/nodes/4.CeeDVfsm.js +0 -2
  211. package/build/client/_app/immutable/nodes/4.CeeDVfsm.js.br +0 -0
  212. package/build/client/_app/immutable/nodes/4.CeeDVfsm.js.gz +0 -0
  213. package/build/server/chunks/chunks/context.js-Cg-Pih8x.js.map +0 -1
  214. package/build/server/chunks/chunks/contract.js-C6yL03Hj.js.map +0 -1
  215. package/build/server/chunks/manifest.js-CIFnCWGv.js.map +0 -1
  216. package/build/server/chunks/nodes/1.js-kvz4iUXK.js +0 -7
  217. package/build/server/chunks/nodes/2.js-B9ILHJtB.js +0 -7
  218. package/build/server/chunks/nodes/3.js-YAjQeV5C.js +0 -7
  219. package/build/server/chunks/nodes/3.js-YAjQeV5C.js.map +0 -1
  220. package/build/server/chunks/nodes/4.js-7My4KJNM.js +0 -7
  221. package/build/server/chunks/nodes/4.js-7My4KJNM.js.map +0 -1
@@ -0,0 +1,441 @@
1
+ import { createHash, createHmac, randomBytes, timingSafeEqual } from 'node:crypto';
2
+ import { isAbsolute } from 'node:path';
3
+ import { compareCodeUnits } from '../core/index.js';
4
+ const MAX_PATHS = 20;
5
+ const TOKEN_TTL_MS = 10 * 60 * 1000;
6
+ function locationKey(location) {
7
+ return `${location.file}\u0000${location.line}\u0000${location.column}`;
8
+ }
9
+ function compareLocations(left, right) {
10
+ return (compareCodeUnits(left.file, right.file) ||
11
+ left.line - right.line ||
12
+ left.column - right.column ||
13
+ compareCodeUnits(left.label ?? '', right.label ?? ''));
14
+ }
15
+ function validateLocation(value, context, allowLabel) {
16
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
17
+ throw new Error(`${context} must be an object.`);
18
+ }
19
+ const record = value;
20
+ if (typeof record.file !== 'string' || record.file.length === 0 || !isAbsolute(record.file)) {
21
+ throw new Error(`${context}.file must be an absolute path.`);
22
+ }
23
+ for (const key of ['line', 'column']) {
24
+ if (!Number.isSafeInteger(record[key]) || record[key] <= 0) {
25
+ throw new Error(`${context}.${key} must be a positive safe integer.`);
26
+ }
27
+ }
28
+ if (allowLabel && record.label !== undefined && typeof record.label !== 'string') {
29
+ throw new Error(`${context}.label must be a string.`);
30
+ }
31
+ return {
32
+ file: record.file,
33
+ line: record.line,
34
+ column: record.column,
35
+ ...(allowLabel && typeof record.label === 'string' ? { label: record.label } : {})
36
+ };
37
+ }
38
+ function normalizeResult(value, target) {
39
+ const context = `fundus.config: usage.referenceProvider for ${target.manifest}.${target.assetId}`;
40
+ try {
41
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
42
+ throw new Error(`${context} must return an object.`);
43
+ }
44
+ const result = value;
45
+ if (result.status === 'unknown') {
46
+ if (result.reason !== undefined && typeof result.reason !== 'string') {
47
+ throw new Error(`${context} unknown reason must be a string.`);
48
+ }
49
+ return {
50
+ status: 'unknown',
51
+ ...(typeof result.reason === 'string' ? { reason: result.reason } : {})
52
+ };
53
+ }
54
+ if (result.status !== 'resolved' || !Array.isArray(result.references)) {
55
+ throw new Error(`${context} must return resolved references or unknown.`);
56
+ }
57
+ const declarationKey = locationKey(target.declaration);
58
+ const references = result.references
59
+ .map((reference, index) => validateLocation(reference, `${context} references[${index}]`, true))
60
+ .filter((reference) => locationKey(reference) !== declarationKey)
61
+ .sort(compareLocations);
62
+ const deduplicated = [];
63
+ const seen = new Set();
64
+ for (const reference of references) {
65
+ const key = locationKey(reference);
66
+ if (seen.has(key))
67
+ continue;
68
+ seen.add(key);
69
+ deduplicated.push(reference);
70
+ }
71
+ return { status: 'resolved', references: deduplicated };
72
+ }
73
+ catch (cause) {
74
+ return { status: 'unknown', reason: cause instanceof Error ? cause.message : String(cause) };
75
+ }
76
+ }
77
+ class FifoLimiter {
78
+ #active = 0;
79
+ #queue = [];
80
+ async run(operation) {
81
+ if (this.#active >= 4)
82
+ await new Promise((resolve) => this.#queue.push(resolve));
83
+ this.#active++;
84
+ try {
85
+ return await operation();
86
+ }
87
+ finally {
88
+ this.#active--;
89
+ this.#queue.shift()?.();
90
+ }
91
+ }
92
+ }
93
+ export class FundusUsageAnalyzer {
94
+ #usage;
95
+ #secret = randomBytes(32);
96
+ #limiter = new FifoLimiter();
97
+ #inflight = new Map();
98
+ #freshGeneration = 0;
99
+ constructor(usage) {
100
+ this.#usage = usage;
101
+ }
102
+ async analyze(snapshot, options = {}) {
103
+ if (options.assetId && !Object.hasOwn(snapshot.library.assets, options.assetId)) {
104
+ throw new Error(`Unknown asset "${options.assetId}".`);
105
+ }
106
+ const rootsToAnalyze = options.assetId
107
+ ? relevantRootsForAsset(snapshot, options.assetId)
108
+ : snapshot.roots;
109
+ const freshKey = options.forceFresh ? `fresh:${++this.#freshGeneration}` : 'normal';
110
+ const rootResults = new Map();
111
+ await Promise.all(rootsToAnalyze.map(async (root) => {
112
+ const key = rootKey(root);
113
+ if (!root.declaration) {
114
+ rootResults.set(key, {
115
+ status: 'unknown',
116
+ reason: root.declarationError ??
117
+ `Cannot locate generated declaration for ${root.manifest}.${root.assetId}.`
118
+ });
119
+ return;
120
+ }
121
+ const target = {
122
+ assetId: root.assetId,
123
+ manifest: root.manifest,
124
+ declaration: root.declaration
125
+ };
126
+ const inflightKey = `${snapshot.revision}|${locationKey(root.declaration)}|${freshKey}`;
127
+ let run = !options.forceFresh ? this.#inflight.get(inflightKey) : undefined;
128
+ if (!run) {
129
+ run = this.#limiter.run(async () => {
130
+ try {
131
+ return normalizeResult(await this.#usage.referenceProvider(target), target);
132
+ }
133
+ catch (cause) {
134
+ return {
135
+ status: 'unknown',
136
+ reason: `usage.referenceProvider failed for ${root.manifest}.${root.assetId}: ${cause instanceof Error ? cause.message : String(cause)}`
137
+ };
138
+ }
139
+ });
140
+ if (!options.forceFresh) {
141
+ this.#inflight.set(inflightKey, run);
142
+ void run.finally(() => this.#inflight.delete(inflightKey));
143
+ }
144
+ }
145
+ rootResults.set(key, await run);
146
+ }));
147
+ return this.#assemble(snapshot, rootResults, options.assetId);
148
+ }
149
+ stale(snapshot, assetId) {
150
+ const results = new Map();
151
+ for (const root of assetId ? relevantRootsForAsset(snapshot, assetId) : snapshot.roots) {
152
+ results.set(rootKey(root), {
153
+ status: 'unknown',
154
+ reason: 'The Fundus project changed repeatedly during usage analysis; refresh to retry.'
155
+ });
156
+ }
157
+ return this.#assemble(snapshot, results, assetId);
158
+ }
159
+ async open(token) {
160
+ if (typeof token !== 'string' || token.length === 0) {
161
+ throw new Error('Usage location token must be a non-empty string.');
162
+ }
163
+ const [encoded, signature, extra] = token.split('.');
164
+ if (!encoded || !signature || extra !== undefined)
165
+ throw new Error('Invalid usage location token.');
166
+ const expected = createHmac('sha256', this.#secret).update(encoded).digest();
167
+ let received;
168
+ try {
169
+ received = Buffer.from(signature, 'base64url');
170
+ }
171
+ catch {
172
+ throw new Error('Invalid usage location token.');
173
+ }
174
+ if (received.length !== expected.length || !timingSafeEqual(received, expected)) {
175
+ throw new Error('Invalid usage location token; refresh usage and try again.');
176
+ }
177
+ let payload;
178
+ try {
179
+ payload = JSON.parse(Buffer.from(encoded, 'base64url').toString('utf8'));
180
+ }
181
+ catch {
182
+ throw new Error('Invalid usage location token.');
183
+ }
184
+ if (typeof payload !== 'object' || payload === null || Array.isArray(payload)) {
185
+ throw new Error('Invalid usage location token.');
186
+ }
187
+ const record = payload;
188
+ if (record.v !== 1 || typeof record.expiresAt !== 'number' || Date.now() > record.expiresAt) {
189
+ throw new Error('Usage location token expired; refresh usage and try again.');
190
+ }
191
+ const location = validateLocation(record.location, 'Usage location token', false);
192
+ const normalized = { file: location.file, line: location.line, column: location.column };
193
+ try {
194
+ await this.#usage.openLocation(normalized);
195
+ }
196
+ catch (cause) {
197
+ throw new Error(`Could not open ${normalized.file}:${normalized.line}:${normalized.column}: ${cause instanceof Error ? cause.message : String(cause)}`);
198
+ }
199
+ }
200
+ #token(location) {
201
+ const encoded = Buffer.from(JSON.stringify({ v: 1, expiresAt: Date.now() + TOKEN_TTL_MS, location })).toString('base64url');
202
+ const signature = createHmac('sha256', this.#secret).update(encoded).digest('base64url');
203
+ return `${encoded}.${signature}`;
204
+ }
205
+ #assemble(snapshot, rootResults, requestedAssetId) {
206
+ const assetIds = requestedAssetId
207
+ ? [requestedAssetId]
208
+ : Object.keys(snapshot.library.assets).sort(compareCodeUnits);
209
+ const analyzedRoots = snapshot.roots.filter((root) => rootResults.has(rootKey(root)));
210
+ const cyclicNodes = referenceCycleNodes(snapshot.referencesByAsset);
211
+ const cycleAncestors = reverseClosure(cyclicNodes, snapshot.referencesByAsset);
212
+ const adjustedResults = new Map();
213
+ for (const root of analyzedRoots) {
214
+ const result = rootResults.get(rootKey(root));
215
+ adjustedResults.set(rootKey(root), cycleAncestors.has(root.assetId) &&
216
+ result.status === 'resolved' &&
217
+ result.references.length === 0
218
+ ? {
219
+ status: 'unknown',
220
+ reason: 'A reference cycle prevents complete usage analysis for this root.'
221
+ }
222
+ : result);
223
+ }
224
+ const usedAssets = referenceClosureFromSources(analyzedRoots
225
+ .filter((root) => {
226
+ const result = adjustedResults.get(rootKey(root));
227
+ return result?.status === 'resolved' && result.references.length > 0;
228
+ })
229
+ .map((root) => root.assetId), snapshot.referencesByAsset);
230
+ const unknownAssets = referenceClosureFromSources(analyzedRoots
231
+ .filter((root) => adjustedResults.get(rootKey(root))?.status === 'unknown')
232
+ .map((root) => root.assetId), snapshot.referencesByAsset);
233
+ const assets = assetIds.map((assetId) => {
234
+ const status = usedAssets.has(assetId)
235
+ ? 'used'
236
+ : unknownAssets.has(assetId)
237
+ ? 'unknown'
238
+ : 'unused';
239
+ if (!requestedAssetId) {
240
+ return { assetId, status, references: [], roots: [] };
241
+ }
242
+ const groups = [];
243
+ const pathCountMemo = new Map();
244
+ for (const root of analyzedRoots) {
245
+ const paths = pathsFromRoot(root.assetId, assetId, snapshot.referencesByAsset, pathCountMemo, cyclicNodes);
246
+ if (paths.count > 0n)
247
+ groups.push({ root, paths: paths.paths, count: paths.count });
248
+ }
249
+ const allReferences = [];
250
+ for (const group of groups) {
251
+ const result = adjustedResults.get(rootKey(group.root));
252
+ if (result?.status === 'resolved')
253
+ allReferences.push(...result.references);
254
+ }
255
+ allReferences.sort(compareLocations);
256
+ const uniqueReferences = [];
257
+ const referenceIdByKey = new Map();
258
+ for (const reference of allReferences) {
259
+ const key = locationKey(reference);
260
+ if (referenceIdByKey.has(key))
261
+ continue;
262
+ const id = `r${uniqueReferences.length}`;
263
+ referenceIdByKey.set(key, id);
264
+ uniqueReferences.push(reference);
265
+ }
266
+ const roots = groups.map(({ root, paths, count }) => {
267
+ const result = adjustedResults.get(rootKey(root)) ?? {
268
+ status: 'unknown',
269
+ reason: 'Usage analysis result is missing.'
270
+ };
271
+ const dtoResult = result.status === 'unknown'
272
+ ? result
273
+ : {
274
+ status: 'resolved',
275
+ referenceIds: result.references
276
+ .map((reference) => referenceIdByKey.get(locationKey(reference)))
277
+ .filter((id) => id !== undefined)
278
+ };
279
+ return {
280
+ manifest: root.manifest,
281
+ rootAssetId: root.assetId,
282
+ paths,
283
+ pathsTruncated: count > BigInt(paths.length),
284
+ ...(count > BigInt(paths.length)
285
+ ? { additionalPathCount: (count - BigInt(paths.length)).toString() }
286
+ : {}),
287
+ declaration: root.declaration,
288
+ result: dtoResult
289
+ };
290
+ });
291
+ return {
292
+ assetId,
293
+ status,
294
+ references: uniqueReferences.map((reference, index) => ({
295
+ ...reference,
296
+ id: `r${index}`,
297
+ openToken: this.#token(reference)
298
+ })),
299
+ roots
300
+ };
301
+ });
302
+ return { assets };
303
+ }
304
+ }
305
+ function rootKey(root) {
306
+ return `${root.manifest}\u0000${root.assetId}`;
307
+ }
308
+ function relevantRootsForAsset(snapshot, assetId) {
309
+ const ancestors = reverseClosure(new Set([assetId]), snapshot.referencesByAsset);
310
+ return snapshot.roots.filter((root) => ancestors.has(root.assetId));
311
+ }
312
+ function reverseClosure(sources, referencesByAsset) {
313
+ const incoming = new Map();
314
+ for (const [source, references] of Object.entries(referencesByAsset)) {
315
+ for (const target of new Set(references.map((reference) => reference.assetId))) {
316
+ const sources = incoming.get(target);
317
+ if (sources)
318
+ sources.push(source);
319
+ else
320
+ incoming.set(target, [source]);
321
+ }
322
+ }
323
+ const closure = new Set();
324
+ const pending = [...sources];
325
+ while (pending.length > 0) {
326
+ const current = pending.pop();
327
+ if (closure.has(current))
328
+ continue;
329
+ closure.add(current);
330
+ pending.push(...(incoming.get(current) ?? []));
331
+ }
332
+ return closure;
333
+ }
334
+ function referenceClosureFromSources(sources, referencesByAsset) {
335
+ const closure = new Set();
336
+ const pending = [...sources];
337
+ while (pending.length > 0) {
338
+ const current = pending.pop();
339
+ if (closure.has(current) || !Object.hasOwn(referencesByAsset, current))
340
+ continue;
341
+ closure.add(current);
342
+ for (const reference of referencesByAsset[current])
343
+ pending.push(reference.assetId);
344
+ }
345
+ return closure;
346
+ }
347
+ /** Tarjan SCC detection; singleton components count only when they self-reference. */
348
+ function referenceCycleNodes(referencesByAsset) {
349
+ let nextIndex = 0;
350
+ const indexByNode = new Map();
351
+ const lowLink = new Map();
352
+ const stack = [];
353
+ const onStack = new Set();
354
+ const cyclic = new Set();
355
+ const visit = (node) => {
356
+ indexByNode.set(node, nextIndex);
357
+ lowLink.set(node, nextIndex++);
358
+ stack.push(node);
359
+ onStack.add(node);
360
+ for (const target of new Set((referencesByAsset[node] ?? []).map((ref) => ref.assetId))) {
361
+ if (!Object.hasOwn(referencesByAsset, target))
362
+ continue;
363
+ if (!indexByNode.has(target)) {
364
+ visit(target);
365
+ lowLink.set(node, Math.min(lowLink.get(node), lowLink.get(target)));
366
+ }
367
+ else if (onStack.has(target)) {
368
+ lowLink.set(node, Math.min(lowLink.get(node), indexByNode.get(target)));
369
+ }
370
+ }
371
+ if (lowLink.get(node) !== indexByNode.get(node))
372
+ return;
373
+ const component = [];
374
+ for (;;) {
375
+ const member = stack.pop();
376
+ onStack.delete(member);
377
+ component.push(member);
378
+ if (member === node)
379
+ break;
380
+ }
381
+ if (component.length > 1 ||
382
+ (referencesByAsset[node] ?? []).some((reference) => reference.assetId === node)) {
383
+ for (const member of component)
384
+ cyclic.add(member);
385
+ }
386
+ };
387
+ for (const node of Object.keys(referencesByAsset)) {
388
+ if (!indexByNode.has(node))
389
+ visit(node);
390
+ }
391
+ return cyclic;
392
+ }
393
+ function pathsFromRoot(root, target, referencesByAsset, countMemo = new Map(), cyclicNodes = referenceCycleNodes(referencesByAsset)) {
394
+ const count = (assetId, visiting) => {
395
+ if (assetId === target)
396
+ return 1n;
397
+ const visitedCyclicNodes = [...visiting]
398
+ .filter((id) => cyclicNodes.has(id))
399
+ .sort(compareCodeUnits);
400
+ const memoKey = JSON.stringify([assetId, visitedCyclicNodes]);
401
+ const cached = countMemo.get(memoKey);
402
+ if (cached !== undefined)
403
+ return cached;
404
+ if (visiting.has(assetId)) {
405
+ return 0n;
406
+ }
407
+ const nextVisiting = new Set(visiting).add(assetId);
408
+ let total = 0n;
409
+ const nextIds = [...new Set((referencesByAsset[assetId] ?? []).map((ref) => ref.assetId))].sort(compareCodeUnits);
410
+ for (const next of nextIds)
411
+ total += count(next, nextVisiting);
412
+ countMemo.set(memoKey, total);
413
+ return total;
414
+ };
415
+ const total = count(root, new Set());
416
+ const paths = [];
417
+ const collect = (assetId, path, visiting) => {
418
+ if (paths.length >= MAX_PATHS)
419
+ return;
420
+ if (assetId === target) {
421
+ paths.push(path);
422
+ return;
423
+ }
424
+ if (visiting.has(assetId))
425
+ return;
426
+ const nextVisiting = new Set(visiting).add(assetId);
427
+ const nextIds = [...new Set((referencesByAsset[assetId] ?? []).map((ref) => ref.assetId))].sort(compareCodeUnits);
428
+ for (const next of nextIds) {
429
+ if (count(next, nextVisiting) > 0n)
430
+ collect(next, [...path, next], nextVisiting);
431
+ if (paths.length >= MAX_PATHS)
432
+ break;
433
+ }
434
+ };
435
+ if (total > 0n)
436
+ collect(root, [root], new Set());
437
+ return { paths, count: total };
438
+ }
439
+ export function usageSnapshotRevision(parts) {
440
+ return createHash('sha256').update(parts.join('\u0000')).digest('hex');
441
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fundus",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1 +0,0 @@
1
- .detail.svelte-xy8zsr{flex:1;grid-template-columns:224px 1fr 280px;min-height:0;display:grid}.center.svelte-xy8zsr{flex-direction:column;min-width:0;min-height:0;padding:12px 16px;display:flex}.center.empty.svelte-xy8zsr,.empty.svelte-xy8zsr{color:var(--text-dim);flex:1;justify-content:center;align-items:center;display:flex}.inspector.svelte-xy8zsr{background:var(--panel);border-left:1px solid var(--border);overflow-y:auto}.inspector.svelte-xy8zsr section:where(.svelte-xy8zsr){border-bottom:1px solid var(--border-soft);padding:12px}.inspector.svelte-xy8zsr h2:where(.svelte-xy8zsr){word-break:break-all;margin:0;font-size:13px}.raw.svelte-xy8zsr{color:var(--text-dim);word-break:break-all;margin:4px 0 0}.warning.svelte-xy8zsr{color:var(--warning);margin:8px 0 0;font-size:11px}.hint.svelte-xy8zsr{color:var(--text-faint);margin:0;font-size:11px}.inspector.svelte-xy8zsr h4:where(.svelte-xy8zsr){text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin:8px 0 4px;font-size:10px}.reference-row.svelte-xy8zsr{border-radius:var(--radius);color:var(--text-dim);align-items:center;gap:6px;min-width:0;padding:3px 4px;display:flex}.reference-row.svelte-xy8zsr:hover{background:var(--panel-raised);color:var(--text)}.reference-field.svelte-xy8zsr{color:var(--text-faint);font-size:11px}.reference-arrow.svelte-xy8zsr{color:var(--text-faint);flex:none}.reference-asset.svelte-xy8zsr{color:var(--accent);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.rename.svelte-xy8zsr{gap:8px;margin-bottom:8px;display:flex}.replace-raw.svelte-xy8zsr{width:100%;margin-bottom:8px}.source-label.svelte-xy8zsr{margin-bottom:8px}.source-field.svelte-xy8zsr{color:var(--text-dim);flex-direction:column;gap:4px;margin-bottom:8px;font-size:11px;display:flex}.source-field.svelte-xy8zsr .control:where(.svelte-xy8zsr){width:100%}.source-actions.svelte-xy8zsr{flex-direction:column;gap:6px;display:flex}.source-actions.svelte-xy8zsr .control:where(.svelte-xy8zsr){text-align:center;width:100%}.rename.svelte-xy8zsr input:where(.svelte-xy8zsr){flex:1;min-width:0}.danger.svelte-xy8zsr{width:100%}
@@ -1 +0,0 @@
1
- .popover-anchor.svelte-1rznwff{display:inline-flex;position:relative}.popover.svelte-1rznwff{z-index:10;background:var(--panel-raised);border:1px solid var(--border);border-radius:var(--radius);padding:8px;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 8px 24px #0006}.popover.right.svelte-1rznwff{left:auto;right:0}.controls.svelte-58t64l{align-items:center;gap:4px;display:inline-flex}.emoji-trigger.svelte-58t64l,.swatch-trigger.svelte-58t64l{border:1px solid var(--border);background:var(--panel-raised);cursor:pointer;justify-content:center;align-items:center;padding:0;display:inline-flex}.emoji-trigger.svelte-58t64l{border-radius:var(--radius-small);width:22px;height:22px;font-size:14px;line-height:1}.emoji-trigger.empty.svelte-58t64l{color:var(--text-faint)}.swatch-trigger.svelte-58t64l{background:var(--swatch);border-radius:50%;width:16px;height:16px}.swatch-trigger.empty.svelte-58t64l{background:0 0;position:relative}.swatch-trigger.empty.svelte-58t64l:after{content:"";background:var(--text-faint);height:1px;position:absolute;inset:50% 1px auto;transform:rotate(-45deg)}.emoji-trigger.active.svelte-58t64l,.swatch-trigger.active.svelte-58t64l{border-color:var(--accent)}.picker.svelte-58t64l{gap:4px;display:grid}.swatches.svelte-58t64l{grid-template-columns:repeat(7,18px)}.emojis.svelte-58t64l{grid-template-columns:repeat(8,24px)}.swatch.svelte-58t64l{border:1px solid var(--border);cursor:pointer;border-radius:50%;width:18px;height:18px;padding:0}.swatch.none.svelte-58t64l{background:0 0;position:relative}.swatch.none.svelte-58t64l:after{content:"";background:var(--text-faint);height:1px;position:absolute;inset:50% 1px auto;transform:rotate(-45deg)}.swatch.selected.svelte-58t64l{outline:2px solid var(--text);outline-offset:1px}.emoji.svelte-58t64l{border-radius:var(--radius-small);border:1px solid var(--border);background:var(--panel);cursor:pointer;width:24px;height:24px;padding:0;font-size:14px;line-height:1}.emoji.none.svelte-58t64l{color:var(--text-faint);font-size:12px}.emoji.selected.svelte-58t64l{border-color:var(--accent);background:var(--accent-soft)}.page.svelte-1k9wgg5{flex:1;min-height:0;padding:16px;overflow-y:auto}.create.svelte-1k9wgg5{align-items:center;gap:8px;margin-bottom:16px;display:flex}.create.svelte-1k9wgg5 input:where(.svelte-1k9wgg5){width:240px}.hint.svelte-1k9wgg5{color:var(--text-faint);font-size:11px}.empty.svelte-1k9wgg5{color:var(--text-dim);text-align:center;padding:48px}.list.svelte-1k9wgg5{flex-direction:column;gap:12px;max-width:640px;display:flex}.manifest.svelte-1k9wgg5{background:var(--panel);border:1px solid var(--manifest-color,var(--border-soft));border-radius:var(--radius-large);padding:12px}.manifest.svelte-1k9wgg5 header:where(.svelte-1k9wgg5){align-items:center;gap:12px;display:flex}.manifest.svelte-1k9wgg5 h2:where(.svelte-1k9wgg5){margin:0;font-size:13px}.size.svelte-1k9wgg5{color:var(--accent);font-variant-numeric:tabular-nums}.count.svelte-1k9wgg5{color:var(--text-dim);margin-left:auto}ul.svelte-1k9wgg5{margin:8px 0 0;padding:0;list-style:none}li.svelte-1k9wgg5 a:where(.svelte-1k9wgg5){border-radius:var(--radius);color:var(--text-dim);align-items:center;gap:12px;padding:4px 8px;display:flex}li.svelte-1k9wgg5 a:where(.svelte-1k9wgg5):hover{background:var(--panel-raised);color:var(--text)}.asset-id.svelte-1k9wgg5{color:var(--text);font-weight:600}.asset-type.svelte-1k9wgg5{border:1px solid var(--border);border-radius:4px;padding:0 5px;font-size:10px}.asset-size.svelte-1k9wgg5{font-variant-numeric:tabular-nums;margin-left:auto}.passive-member.svelte-1k9wgg5{margin-left:16px}.passive-member.svelte-1k9wgg5 a:where(.svelte-1k9wgg5),.passive-member.svelte-1k9wgg5 .asset-id:where(.svelte-1k9wgg5){color:var(--text-faint)}.passive-id.svelte-1k9wgg5{text-underline-offset:3px;font-weight:600;text-decoration-line:underline;text-decoration-style:dashed}.asset-via.svelte-1k9wgg5{color:var(--text-faint);font-size:11px}.dialog-text.svelte-1k9wgg5{color:var(--text-dim);margin:0 0 8px}.dialog-text.warn.svelte-1k9wgg5{color:var(--warning);font-size:11px}.dialog-row.svelte-1k9wgg5{align-items:center;gap:8px;margin-bottom:8px;display:flex}.dialog-label.svelte-1k9wgg5{color:var(--text-dim);flex:none}.dialog-row.svelte-1k9wgg5 input:where(.svelte-1k9wgg5){flex:1}
@@ -1 +0,0 @@
1
- import{A as e,D as t,F as n,G as r,J as i,K as a,N as o,O as s,P as c,V as l,_ as u,i as d,nt as f,ot as p,tt as m,u as h,x as g}from"./NblqapDQ.js";import"./xihTtKlq.js";function _(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} kB`:`${(e/(1024*1024)).toFixed(2)} MB`}function v(e){return`${(e/1e3).toFixed(2)} s`}function y(e,t){let{maxWidth:n,...r}=e;return t===null||!Number.isFinite(t)||t<=0?r:{...r,maxWidth:Math.round(t)}}function b(e,t){return e.defaultPrevented||e.isComposing||t.busy?null:e.key===`Escape`?`cancel`:e.key===`Enter`&&!t.confirmDisabled?`confirm`:null}function x(e){return e instanceof Element&&e.closest(`button, select, textarea, [contenteditable]:not([contenteditable="false"])`)!==null}function S(e,t){let n=b(e,t);n===null||n===`confirm`&&x(e.target)||(e.preventDefault(),e.stopPropagation(),n===`confirm`?t.onConfirm():t.onCancel())}var C=e(`<div class="backdrop svelte-oozc38" role="presentation"><div class="dialog svelte-oozc38" role="dialog" tabindex="-1"><h2 class="svelte-oozc38"> </h2> <!> <div class="actions svelte-oozc38"><button class="control">Cancel</button> <button> </button></div></div></div>`);function w(e,o){f(o,!0);let _=d(o,`danger`,3,!1),v=d(o,`confirmDisabled`,3,!1),y=d(o,`busy`,3,!1);var b=C();n(`keydown`,r,e=>S(e,{busy:y(),confirmDisabled:v(),onConfirm:o.onConfirm,onCancel:o.onCancel}));var x=a(b),w=a(x),T=a(w,!0);p(w);var E=i(w,2);g(E,()=>o.children);var D=i(E,2),O=a(D),k=i(O,2);let A;var j=a(k,!0);p(k),p(D),p(x),p(b),l(()=>{h(x,`aria-label`,o.title),t(T,o.title),O.disabled=y(),A=u(k,1,`control`,null,A,{primary:!_(),danger:_()}),k.disabled=v()||y(),t(j,o.confirmLabel)}),c(`click`,b,e=>{e.target===e.currentTarget&&!y()&&o.onCancel()}),c(`click`,O,function(...e){o.onCancel?.apply(this,e)}),c(`click`,k,function(...e){o.onConfirm?.apply(this,e)}),s(e,b),m()}o([`click`]);export{y as a,v as i,S as n,_ as r,w as t};
@@ -1 +0,0 @@
1
- import{A as e,C as t,D as n,E as r,I as i,J as a,K as o,M as s,N as c,O as l,P as u,Q as d,S as f,V as p,_ as m,d as h,g,i as _,j as v,l as y,nt as b,ot as x,tt as S,u as C}from"./NblqapDQ.js";import"./xihTtKlq.js";import{O as w,t as T}from"./C7OUKWnm.js";var E={"arrow-up":`<path d="M12 19V5"/><path d="M6 11l6-6 6 6"/>`,"arrow-right":`<path d="M5 12h14"/><path d="M13 6l6 6-6 6"/>`,"arrow-down":`<path d="M12 5v14"/><path d="M6 13l6 6 6-6"/>`,"arrow-left":`<path d="M19 12H5"/><path d="M11 6l-6 6 6 6"/>`,sort:`<path d="m3 16 4 4 4-4"/><path d="M7 20V4"/><path d="M11 4h10"/><path d="M11 8h7"/><path d="M11 12h4"/>`,"asset-type":`<path d="M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z"/><rect x="3" y="14" width="7" height="7" rx="1"/><circle cx="17.5" cy="17.5" r="3.5"/>`,manifest:`<path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"/><path d="M14 2v5a1 1 0 0 0 1 1h5"/><path d="M10 9H8"/><path d="M16 13H8"/><path d="M16 17H8"/>`,"git-branch":`<path d="M15 6a9 9 0 0 0-9 9V3"/><circle cx="18" cy="6" r="3"/><circle cx="6" cy="18" r="3"/>`,width:`<path d="M3 12h18"/><path d="M7 8l-4 4 4 4"/><path d="M17 8l4 4-4 4"/>`,ratio:`<rect x="4" y="4" width="7" height="7" rx="1"/><rect x="13" y="4" width="7" height="7" rx="1"/><rect x="4" y="13" width="7" height="7" rx="1"/><rect x="13" y="13" width="7" height="7" rx="1"/>`,preset:`<path d="M4 7h10"/><circle cx="17" cy="7" r="2"/><path d="M20 17H10"/><circle cx="7" cy="17" r="2"/>`,cutoff:`<circle cx="12" cy="12" r="8"/><path d="M12 4a8 8 0 0 1 0 16z" fill="currentColor" stroke="none"/>`,"color-feather":`<circle cx="12" cy="12" r="8" stroke-dasharray="1.5 3"/><circle cx="12" cy="12" r="3.5"/>`,"mask-feather":`<rect x="4" y="4" width="16" height="16" rx="3" stroke-dasharray="1.5 3"/><circle cx="12" cy="12" r="3.5"/>`,sharpen:`<path d="M4 18l8-12 8 12"/><path d="M4 18h16"/>`,despill:`<path d="M12 3s6 6 6 11a6 6 0 0 1-12 0c0-5 6-11 6-11z"/>`,"despill-lum":`<path d="M12 3s5.5 5.5 5.5 10a5.5 5.5 0 0 1-11 0c0-4.5 5.5-10 5.5-10z"/><path d="M12 10v5M9.5 12.5h5"/>`},D=v(`<svg class="icon svelte-jamecx" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"></svg>`);function O(e,t){let n=_(t,`size`,3,16);var r=D();f(r,()=>E[t.name],!0),x(r),p(()=>{C(r,`width`,n()),C(r,`height`,n())}),l(e,r)}function k(e){return e.length===0?[]:[e.includes(`main`)?`main`:e[0]]}function A(e,t){return w(e)??(t.has(e)?`An asset with id "${e}" already exists.`:null)}function j(e,t,n=[]){let r=e;for(let i of t)i.kind===`unsupported`||Object.hasOwn(e,i.token)||(r===e&&(r={...e}),r[i.token]={id:i.kind===`new`?i.proposedId:i.assetId,type:i.kind===`new`?i.compatibleTypes[0]??``:i.compatibleTypes.includes(i.currentType)?i.currentType:``,manifests:i.kind===`new`?k(n):[],error:null,busy:!1});return r}var M=e(`<span class="color-dot svelte-151zph4"></span>`),N=e(`<span class="via svelte-151zph4"> </span>`),P=e(`<label><input type="checkbox" class="svelte-151zph4"/> <span class="marker svelte-151zph4" aria-hidden="true"><!></span> <span class="name svelte-151zph4"> </span> <!></label>`),F=e(`<div class="manifest-selector svelte-151zph4" role="group" aria-label="Manifest assignments"></div>`);function I(e,c){b(c,!0);let f=_(c,`disabled`,3,!1);function v(e){return c.passive.find(t=>t.manifest===e)}function w(e,t,n){return t?`${e}: explicitly assigned`:n?`${e}: passive member via ${n.via.join(`, `)}`:`${e}: not assigned`}var E=F();t(E,20,()=>c.manifests,e=>e,(e,t)=>{let _=d(()=>T.manifestAppearance(t)),b=d(()=>c.selected.includes(t)),S=d(()=>v(t)),E=d(()=>i(_).color??`var(--accent)`);var D=P();let O,k;var A=o(D);y(A);var j=a(A,2),F=o(j),I=e=>{var t=s();p(()=>n(t,i(_).emoji)),l(e,t)},L=e=>{l(e,M())};r(F,e=>{i(_).emoji?e(I):e(L,-1)}),x(j);var R=a(j,2),z=o(R,!0);x(R);var B=a(R,2),V=e=>{var t=N(),r=o(t);x(t),p(e=>n(r,`passive · via ${e??``}`),[()=>i(S).via.join(`, `)]),l(e,t)};r(B,e=>{i(S)&&!i(b)&&e(V)}),x(D),p((e,r)=>{O=m(D,1,`manifest-option control svelte-151zph4`,null,O,{selected:i(b),passive:i(S)!==void 0&&!i(b),disabled:f()}),C(D,`title`,e),k=g(D,``,k,{"--manifest-color":i(E)}),h(A,i(b)),A.disabled=f(),C(A,`aria-label`,r),n(z,t)},[()=>w(t,i(b),i(S)),()=>w(t,i(b),i(S))]),u(`change`,A,()=>c.onToggle(t)),l(e,D)}),x(E),l(e,E),S()}c([`change`]);export{O as a,A as i,k as n,j as r,I as t};
@@ -1 +0,0 @@
1
- import{I as e,X as t,Z as n}from"./NblqapDQ.js";var r=class extends Error{status;constructor(e,t){super(t),this.name=`ApiResponseError`,this.status=e}};async function i(e){if(!e.ok){let t=`${e.status} ${e.statusText}`;try{let n=await e.json();n.error?.message&&(t=n.error.message)}catch{}throw new r(e.status,t)}return await e.json()}async function a(e){if(!e.ok){let t=`${e.status} ${e.statusText}`;try{let n=await e.json();n.error?.message&&(t=n.error.message)}catch{}throw new r(e.status,t)}}async function o(){return i(await fetch(`/api/state`,{cache:`no-store`}))}async function s(){return i(await fetch(`/api/reconcile`,{method:`POST`,cache:`no-store`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})}))}async function c(e,t,n,r=[]){return i(await fetch(`/api/raw/adopt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,id:t,type:n,manifests:r})}))}async function l(e,t){return i(await fetch(`/api/raw/edited/accept`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,type:t})}))}async function u(e){return i(await fetch(`/api/raw/edited/dismiss`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e})}))}async function d(e,t,n,r,a=[]){let o=new FormData;o.set(`file`,e),o.set(`type`,t),o.set(`id`,n),o.set(`folder`,r);for(let e of a)o.append(`manifests`,e);return i(await fetch(`/api/assets`,{method:`POST`,body:o}))}async function f(e){return i(await fetch(`/api/imports`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({importer:`figma`,input:{url:e.url,format:`png`,scale:e.scale},type:e.type,id:e.id,folder:e.folder,manifests:e.manifests})}))}async function ee(e,t){return i(await fetch(`/api/assets/${encodeURIComponent(e)}/reimport`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...t?{input:{...t,format:`png`}}:{}})}))}async function te(e,t){let n=new FormData;return n.set(`file`,t),i(await fetch(`/api/assets/${encodeURIComponent(e)}/raw`,{method:`PUT`,body:n}))}async function ne(e){return i(await fetch(`/api/folders`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})}))}async function re(e,t){return i(await fetch(`/api/folders/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:t})}))}async function ie(e,t){return i(await fetch(`/api/folders/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({parent:t})}))}async function ae(e){return i(await fetch(`/api/folders/${encodeURIComponent(e)}`,{method:`DELETE`}))}async function oe(e,t){return i(await fetch(`/api/assets/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}))}async function se(e,t){return i(await fetch(`/api/assets/move`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({assetIds:e,folder:t})}))}async function ce(e){return i(await fetch(`/api/assets/${encodeURIComponent(e)}`,{method:`DELETE`}))}async function le(e){return i(await fetch(`/api/assets/delete`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({assetIds:e})}))}async function ue(e,t){return a(await fetch(`/api/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({assetId:e,kind:t})}))}async function de(e){return a(await fetch(`/api/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({folder:e})}))}async function fe(e){return i(await fetch(`/api/manifests`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e})}))}async function pe(e){return i(await fetch(`/api/manifests/${encodeURIComponent(e)}`,{method:`DELETE`}))}async function me(e,t){return i(await fetch(`/api/manifests/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}))}var he=class{#e=null;#t=null;#n=0;#r=[];get value(){return this.#t}replaceBase(e){this.#e=e,this.#a()}mergeBase(e){this.#e!==null&&(this.#e=e(this.#e),this.#a())}add(e,t=[]){let n=++this.#n;return this.#r.push({id:n,update:e,dependencies:t}),this.#t!==null&&(this.#t=e(this.#t)),n}confirm(e,t,n){let r=this.#r.findIndex(t=>t.id===e);if(r===-1)return;let i=this.#r[r],a=this.#e;if(a===null){this.#e=t,this.#i(e),this.#a();return}this.#e=n(i.update(a)),this.#i(e),r===0&&this.#t!==null?this.#t=n(this.#t):this.#a()}reject(e){this.#i(e),this.#a()}rejectAffectedFrom(e,t){this.#r=this.#r.filter(n=>n.id<e||n.id>e&&!p(n.dependencies,t)),this.#a()}#i(e){this.#r=this.#r.filter(t=>t.id!==e)}#a(){let e=this.#e;if(e===null){this.#t=null;return}let t=e;for(let e of this.#r)t=e.update(t);this.#t=t}};function p(e,t){return e.some(e=>t.some(t=>{if(e===t)return!0;if(!e.startsWith(`folder:`)||!t.startsWith(`folder:`))return!1;let n=e.slice(7),r=t.slice(7);return n.startsWith(`${r}/`)||r.startsWith(`${n}/`)}))}var ge=/[\u0000-\u001f\u007f]/,_e=/[<>:"|?*]/,ve=/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\..*)?$/i;function ye(e){return e.length===0?`Folder names must not be empty.`:e===e.trim()?e===`.`||e===`..`?`"${e}" is not a valid folder name.`:e.includes(`/`)||e.includes(`\\`)?`Folder names must not contain path separators.`:ge.test(e)?`Folder names must not contain control characters.`:_e.test(e)?`Folder names must not contain Windows-reserved characters (: * ? " < > |).`:e.endsWith(`.`)?`Folder names must not end with a dot.`:e.toLocaleLowerCase(`en-US`)===`root`?`"${e}" is reserved for the implicit Fundus root folder.`:e.toLocaleLowerCase(`en-US`)===`.gitkeep`?`"${e}" is reserved for Fundus folder management.`:ve.test(e)?`"${e}" is a reserved filesystem name.`:null:`Folder names must not start or end with whitespace.`}function be(e){return e.split(`/`).map(e=>e.normalize(`NFC`)).join(`/`)}function m(e){return be(e).toLocaleLowerCase(`en-US`)}function h(e){let t=e.lastIndexOf(`/`);return t===-1?``:e.slice(0,t)}function g(e){let t=e.lastIndexOf(`/`);return t===-1?e:e.slice(t+1)}function _(e,t){return e===``?t:`${e}/${t}`}function v(e){return h(e)}function y(e){return g(e)}function b(e,t){return e===t||e.startsWith(`${t}/`)}function x(e,t,n){return e===t?n:`${n}${e.slice(t.length)}`}var S=`[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}`;RegExp(`^(?:\\.fundus-replace-${S}\\.tmp|\\.fundus-delete(?:-assets)?-${S})$`,`i`),RegExp(`\\.fundus-(?:replace-)?${S}$`,`i`);var C=[`preload`,`release`,`entries`,`constructor`,`prototype`,`hasOwnProperty`,`isPrototypeOf`,`propertyIsEnumerable`,`toLocaleString`,`toString`,`valueOf`],w=/^[a-z][A-Za-z0-9]*$/;function xe(e){return w.test(e)?C.includes(e)?`"${e}" is reserved (it collides with a Manifest member name).`:null:`"${e}" is not a valid asset id — use a camelCase identifier starting with a lowercase letter (e.g. "navigationPanel").`}function Se(e){return w.test(e)?C.includes(e)?`"${e}" is reserved (it collides with a Manifest member name).`:null:`"${e}" is not a valid manifest name — use a camelCase identifier starting with a lowercase letter (e.g. "mainCatalog").`}var T={type:`audio`,accepts:[`mp3`,`wav`,`m4a`,`ogg`,`flac`],defaultParameters:()=>({preset:`default`}),validateParameters(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Audio parameters must be an object.`);let t=e;if(typeof t.preset!=`string`||t.preset.length===0)throw Error(`Audio parameters need a non-empty string "preset".`);return{preset:t.preset}}};function Ce(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&typeof e.$asset==`string`&&e.$asset!==``}var E={keyColor:[0,1,0],colorCutoff:.2,colorFeathering:.33,maskFeathering:1,sharpening:.5,despill:1,despillLuminanceAdd:.2},we=[`colorCutoff`,`colorFeathering`,`maskFeathering`,`sharpening`,`despill`,`despillLuminanceAdd`];function D(e){return Math.min(1,Math.max(0,e))}function Te(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`"chromaKey" must be an object.`);let t=e,n=t.keyColor;if(!Array.isArray(n)||n.length!==3||n.some(e=>typeof e!=`number`||!Number.isFinite(e)))throw Error(`"chromaKey.keyColor" must be an array of three numbers (RGB, 0–1 each).`);let r={keyColor:[D(n[0]),D(n[1]),D(n[2])]};for(let e of we){let n=t[e];if(typeof n!=`number`||!Number.isFinite(n))throw Error(`"chromaKey.${e}" must be a number (0–1).`);r[e]=D(n)}return r}var O=[`mp4`,`mov`,`webm`,`m4v`];function k(e,t){if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`${e} parameters must be an object.`);let n=t;if(typeof n.preset!=`string`||n.preset.length===0)throw Error(`${e} parameters need a non-empty string "preset".`);if(n.maxWidth!==void 0&&(typeof n.maxWidth!=`number`||!Number.isInteger(n.maxWidth)||n.maxWidth<=0))throw Error(`${e} "maxWidth" must be a positive integer when set.`);return{preset:n.preset,...n.maxWidth===void 0?{}:{maxWidth:n.maxWidth}}}var A={type:`video`,accepts:[...O],defaultParameters:()=>({preset:`default`}),validateParameters(e){return k(`Video`,e)}};function j(e,t){if(t!==void 0){if(!Ce(t))throw Error(`"${e}" must be an asset reference ({ "$asset": "<id>" }).`);return{$asset:t.$asset}}}var M={type:`chroma-key-video`,accepts:[...O],defaultParameters:()=>({preset:`default`,chromaKey:{...E,keyColor:[...E.keyColor]}}),validateParameters(e){let t=k(`Chroma-key-video`,e),n=e,r=Te(n.chromaKey),i=j(`mask`,n.mask),a=j(`fallback`,n.fallback);return{...t,chromaKey:r,...i===void 0?{}:{mask:i},...a===void 0?{}:{fallback:a}}},collectReferences(e){let t=[];return e.mask&&t.push({field:`mask`,assetId:e.mask.$asset,expectedTypes:[`image`]}),e.fallback&&t.push({field:`fallback`,assetId:e.fallback.$asset,expectedTypes:[`image`]}),t},processingParameters(e){return{preset:e.preset,...e.maxWidth===void 0?{}:{maxWidth:e.maxWidth}}}},N=[`png`,`jpg`,`jpeg`,`webp`,`avif`],P={type:`image`,accepts:[...N],defaultParameters:()=>({preset:`default`}),validateParameters(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Image parameters must be an object.`);let t=e;if(typeof t.preset!=`string`||t.preset.length===0)throw Error(`Image parameters need a non-empty string "preset".`);if(t.targetWidth!==void 0&&(typeof t.targetWidth!=`number`||!Number.isInteger(t.targetWidth)||t.targetWidth<=0))throw Error(`Image "targetWidth" must be a positive integer when set.`);return{preset:t.preset,...t.targetWidth===void 0?{}:{targetWidth:t.targetWidth}}}},F=[`nine`,`three-horizontal`,`three-vertical`,`one`];function I(){return{top:0,right:0,bottom:0,left:0}}function L(e){return{horizontal:e===`nine`||e===`three-horizontal`,vertical:e===`nine`||e===`three-vertical`}}function R(e,t,n,r){return t===`left`?n-e.right:t===`right`?n-e.left:t===`top`?r-e.bottom:r-e.top}function Ee(e,t,n,r){return R(e,t,n,r)-1}function z(e,t,n){return Math.max(t,Math.min(n,e))}function De(e){let t=L(e.mode),n=e.overdraw??{top:0,right:0,bottom:0,left:0},r=t.horizontal&&(e.compression?.x??0)>0,i=t.vertical&&(e.compression?.y??0)>0,a=r?Math.max(e.insets.left,n.left):e.insets.left,o=r?Math.max(e.insets.right,n.right):e.insets.right,s=i?Math.max(e.insets.top,n.top):e.insets.top,c=i?Math.max(e.insets.bottom,n.bottom):e.insets.bottom,l=z(a,0,e.width),u=z(o,0,e.width-l),d=z(s,0,e.height);return{top:d,right:u,bottom:z(c,0,e.height-d),left:l}}function B(e,t){if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`Slice ${e} must be an object with top/right/bottom/left.`);let n=t,r=[`top`,`right`,`bottom`,`left`],i=I();for(let t of r){let r=n[t];if(typeof r!=`number`||!Number.isInteger(r)||r<0)throw Error(`Slice ${e}.${t} must be a non-negative integer.`);i[t]=r}return i}function Oe(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Slice compression must be an object with x/y percentages.`);let t=e,n={x:0,y:0};for(let e of[`x`,`y`]){let r=t[e];if(typeof r!=`number`||!Number.isInteger(r)||r<0||r>100)throw Error(`Slice compression.${e} must be an integer from 0 to 100.`);n[e]=r}return n}var V={type:`slice`,accepts:[...N],defaultParameters:()=>({mode:`nine`,insets:I(),pixelRatio:1,preset:`default`}),validateParameters(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Slice parameters must be an object.`);let t=e;if(typeof t.mode!=`string`||!F.includes(t.mode))throw Error(`Slice "mode" must be one of ${F.map(e=>`'${e}'`).join(` | `)}.`);let n=B(`insets`,t.insets);if(typeof t.pixelRatio!=`number`||!Number.isInteger(t.pixelRatio)||t.pixelRatio<1)throw Error(`Slice "pixelRatio" must be an integer ≥ 1.`);let r=t.overdraw===void 0?void 0:B(`overdraw`,t.overdraw),i=t.compression===void 0?void 0:Oe(t.compression);if(typeof t.preset!=`string`||t.preset.length===0)throw Error(`Slice parameters need a non-empty string "preset".`);return{mode:t.mode,insets:n,pixelRatio:t.pixelRatio,...r===void 0?{}:{overdraw:r},...i===void 0?{}:{compression:i},preset:t.preset}}},H=new class{#e=new Map;register(e){if(this.#e.has(e.type))throw Error(`Plugin type "${e.type}" is already registered.`);this.#e.set(e.type,e)}has(e){return this.#e.has(e)}values(){return[...this.#e.values()]}types(){return[...this.#e.keys()]}project(e,t){let n=Object.create(null);for(let r of this.#e.keys()){if(!Object.hasOwn(e,r))throw Error(`Registered plugin "${r}" has no ${t}.`);n[r]=e[r]}return n}};H.register(P),H.register(V),H.register(A),H.register(M),H.register(T);var U=H.values();function ke(e=U){return[...new Set(e.flatMap(e=>e.accepts))].sort().map(e=>`.${e}`)}function Ae(e,t=U){return t.find(t=>t.type===e)?.accepts.map(e=>`.${e}`).sort()??[]}function je(e,t=U){let n=e.slice(e.lastIndexOf(`.`)+1).toLowerCase();return t.filter(e=>e.accepts.includes(n)).map(e=>e.type)}function Me(e){let t=e.replace(/\.[^.]+$/,``).replace(/(?:@|[-_])\dx$/i,``).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).split(/[^a-zA-Z0-9]+/).filter(Boolean);if(t.length===0)return`asset`;let n=t.map((e,t)=>t===0?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(``).replace(/^[0-9]+/,``);return n?n.charAt(0).toLowerCase()+n.slice(1):`asset`}function W(e){return K(e)}function G(e,t){return e<t?-1:+(e>t)}function K(e){if(e===void 0)return`null`;if(e===null||typeof e==`number`||typeof e==`boolean`||typeof e==`string`)return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(K).join(`,`)}]`;if(typeof e==`object`){let t=e,n=[];for(let e of Object.keys(t).sort())t[e]!==void 0&&n.push(`${JSON.stringify(e)}:${K(t[e])}`);return`{${n.join(`,`)}}`}throw Error(`Cannot canonicalize a ${typeof e} value.`)}function Ne(e,t){let n={};for(let[r,i]of Object.entries(e.assets)){n[r]=[];let e=t[i.type];if(e?.collectReferences)try{n[r]=e.collectReferences(e.validateParameters(i.parameters))}catch{}}return n}function Pe(e,t){let n=new Set,r=[...e];for(;r.length>0;){let e=r.pop();if(!(n.has(e)||!Object.hasOwn(t,e))){n.add(e);for(let n of t[e])r.push(n.assetId)}}return n}function Fe(e,t){let n=new Set(Object.keys(e.manifests));for(let t of Object.values(e.assets))for(let e of t.manifests)n.add(e);let r={};for(let i of[...n].sort(G)){let n=Object.entries(e.assets).filter(([,e])=>e.manifests.includes(i)).map(([e])=>e).sort(G),a=new Set(n),o=new Set(n),s=new Map;for(let e of n)for(let n of Pe([e],t)){if(o.add(n),a.has(n))continue;let t=s.get(n)??[];t.push(e),s.set(n,t)}r[i]={explicitMemberIds:n,passiveMembers:[...s.entries()].map(([e,t])=>({assetId:e,via:t})).sort((e,t)=>G(e.assetId,t.assetId)),deliveredAssetIds:o}}return r}function Ie(e,t,n,r){return n&&q(n,r)?`committed`:t&&q(t,r)?`rolled-back`:`unknown`}function q(e,t){return W(e)===W(t)}var J=Object.fromEntries(H.values().map(e=>[e.type,e]));function Le(e,t,n){let r=e.library.assets[t]?.type,i=r?J[r]:void 0;if(!i)return[`asset:${t}`];try{let e=i.validateParameters(n),r=i.collectReferences?.(e)??[];return[...new Set([`asset:${t}`,...r.map(e=>`asset:${e.assetId}`)])]}catch{return[`asset:${t}`]}}function Y(e,t){let n=new Map(t.assets.map(e=>[e.id,e])),r={...e,assets:e.assets.map(e=>{let t=n.get(e.id);return t?{...e,rawUrl:t.rawUrl,rawHash:t.rawHash,gitStatus:t.gitStatus,importSource:t.importSource,proxy:t.proxy,warnings:t.warnings,passiveManifests:t.passiveManifests,references:t.references}:e}),gitBranch:t.gitBranch,importDefaults:t.importDefaults,issues:t.issues,presetNames:t.presetNames,presetCapabilities:t.presetCapabilities,rawIngestionQueue:t.rawIngestionQueue};return X(r,r.library)}function Re(e,t){let n=structuredClone(e.library);n.folders=[...t.library.folders];for(let[e,r]of Object.entries(n.assets)){let i=t.library.assets[e];i?r.raw=i.raw:delete n.assets[e]}return Y(X(e,n),t)}function X(e,t,n=new Map){let r=new Map(e.assets.map(e=>[e.id,e])),i=new Map([...n.entries()].map(([e,t])=>[t,e])),a=Ne(t,J),o=Fe(t,a),s=ze(o),c=new Map;for(let[e,t]of Object.entries(a))for(let n of t){let t=c.get(n.assetId)??[];t.push({field:n.field,assetId:e}),c.set(n.assetId,t)}let l=Object.entries(t.assets).map(([e,t])=>{let n=r.get(i.get(e)??e);return n?{...n,id:e,raw:t.raw,folder:v(t.raw),parameters:t.parameters,manifests:t.manifests,passiveManifests:s.get(e)??[],references:{outgoing:a[e].map(e=>({field:e.field,assetId:e.assetId})),incoming:c.get(e)??[]}}:null}).filter(e=>e!==null).sort((e,t)=>e.id.localeCompare(t.id)),u=new Map(l.map(e=>[e.id,e.proxy?.fileSize??0])),d=Object.fromEntries(Object.keys(t.manifests).map(e=>{let t=o[e];return[e,{explicitMemberIds:t.explicitMemberIds,passiveMembers:t.passiveMembers}]})),f=Object.fromEntries(Object.keys(t.manifests).map(e=>[e,[...o[e].deliveredAssetIds].reduce((e,t)=>e+(u.get(t)??0),0)]));return{...e,library:t,assets:l,manifestMemberships:d,manifestDeliveredBytes:f,issues:e.issues.map(e=>({...e,...e.assetId&&n.has(e.assetId)?{assetId:n.get(e.assetId)}:{}}))}}function ze(e){let t=new Map;for(let[n,r]of Object.entries(e))for(let e of r.passiveMembers){let{assetId:r,via:i}=e,a=t.get(r)??[];a.push({manifest:n,via:i}),t.set(r,a)}for(let e of t.values())e.sort((e,t)=>e.manifest.localeCompare(t.manifest));return t}function Z(e){return t=>{let n=structuredClone(t.library);return X(t,n,e(n)??new Map)}}function Be(e,t){return Z(n=>{let r=n.assets[e];if(!r)return;t.parameters!==void 0&&(r.parameters=structuredClone(t.parameters)),t.manifests!==void 0&&(r.manifests=[...new Set(t.manifests)].sort());let i=t.renameTo??e;if(!(i!==e&&n.assets[i]))return i!==e&&(delete n.assets[e],n.assets[i]=r),t.folder!==void 0&&(r.raw=_(t.folder,y(r.raw))),i===e?void 0:new Map([[e,i]])})}function Ve(e,t){return Z(n=>{for(let r of new Set(e)){let e=n.assets[r];e&&(e.raw=_(t,y(e.raw)))}})}function He(e){return Z(t=>{for(let n of new Set(e))delete t.assets[n]})}function Ue(e){return Z(t=>{t.folders.includes(e)||t.folders.push(e),t.folders.sort()})}function Q(e,t){return Z(n=>{let r=n.folders.filter(t=>b(t,e)).map(n=>x(n,e,t)),i=new Set(n.folders.filter(t=>!b(t,e)).map(m));if(!r.some(e=>i.has(m(e)))){n.folders=n.folders.map(n=>b(n,e)?x(n,e,t):n).sort();for(let r of Object.values(n.assets)){let n=v(r.raw);b(n,e)&&(r.raw=_(x(n,e,t),y(r.raw)))}}})}function We(e,t){return Q(e,_(h(e),t))}function Ge(e,t){return Q(e,_(t,g(e)))}function Ke(e){return Z(t=>{t.folders=t.folders.filter(t=>!b(t,e));for(let[n,r]of Object.entries(t.assets))b(v(r.raw),e)&&delete t.assets[n]})}function qe(e){return Z(t=>{Object.hasOwn(t.manifests,e)||(t.manifests[e]={})})}function Je(e,t){return Z(n=>{let r=n.manifests[e];if(r&&(t.color!==void 0&&(t.color===null?delete r.color:r.color=t.color),t.emoji!==void 0&&(t.emoji===null?delete r.emoji:r.emoji=t.emoji),!(t.renameTo===void 0||t.renameTo===e)&&!n.manifests[t.renameTo])){delete n.manifests[e],n.manifests[t.renameTo]=r;for(let r of Object.values(n.assets))r.manifests=r.manifests.map(n=>n===e?t.renameTo:n).sort()}})}function Ye(e){return Z(t=>{delete t.manifests[e];for(let n of Object.values(t.assets))n.manifests=n.manifests.filter(t=>t!==e)})}var Xe=class{#e=Promise.resolve();#t=new Map;enqueue(e){let t=this.#e.then(e,e);return this.#e=t.then(()=>{},()=>{}),t}coalesce(e,t){let n=this.#t.get(e);if(n)return n;let r=this.enqueue(t).finally(()=>{this.#t.get(e)===r&&this.#t.delete(e)});return this.#t.set(e,r),r}},Ze=new class{#e=new Xe;#t=new he;#n=0;#r=0;#i=[];#a=n(null);get state(){return e(this.#a)}set state(e){t(this.#a,e,!0)}#o=n(!1);get saving(){return e(this.#o)}set saving(e){t(this.#o,e,!0)}#s=n(null);get error(){return e(this.#s)}set error(e){t(this.#s,e,!0)}#c=n(!1);get loaded(){return e(this.#c)}set loaded(e){t(this.#c,e,!0)}async refresh(){return this.#l(o,{rebaseEditableState:!0})}reconcile(){return this.#l(s,{coalesce:!0})}#l(e,t={}){let n=async()=>{try{let n=await e();this.#t.value===null||t.rebaseEditableState?this.#t.replaceBase(n):this.#t.mergeBase(e=>Re(e,n)),this.#d(),this.error=null}catch(e){this.error=e instanceof Error?e.message:String(e)}finally{this.loaded=!0}};return t.coalesce?this.#e.coalesce(`reconcile`,n):this.#e.enqueue(n)}mutate(e,t,n){return this.#u(e,t,n)}mutateFromServer(e,t){return this.#u(e,void 0,t)}#u(e,t,n={dependencies:[]}){let r=++this.#r,i=this.#t.value?.library,a=t?this.#t.add(t,n.dependencies):null,s=a===null?void 0:this.#t.value?.library;return a!==null&&this.#d(),this.#n+=1,this.saving=!0,this.#e.enqueue(async()=>{this.error=null;try{if(this.#i.some(e=>e.failedMutationId<r&&r<=e.throughMutationId&&p(n.dependencies,e.dependencies)))throw a!==null&&(this.#t.reject(a),this.#d()),new $;let t=await e();a===null?this.#t.replaceBase(t):this.#t.confirm(a,t,e=>Y(e,t)),this.#d()}catch(e){if(e instanceof $)throw this.error=e.message,e;let t=null;try{t=await o();let c=Ie(e,i,s,t.library);if(c===`committed`&&a!==null){let e=t;this.#t.confirm(a,e,t=>Y(t,e)),this.#d(),this.error=null;return}this.#t.replaceBase(t),c===`rolled-back`&&a!==null&&n.invalidatesOnFailure?.length?(this.#i.push({failedMutationId:r,throughMutationId:this.#r,dependencies:n.invalidatesOnFailure}),this.#t.rejectAffectedFrom(a,n.invalidatesOnFailure)):a!==null&&this.#t.reject(a)}catch{a!==null&&this.#t.reject(a)}throw this.#d(),this.error=e instanceof Error?e.message:String(e),e}finally{--this.#n,this.saving=this.#n>0,this.#n===0&&(this.#i=[])}})}#d(){this.state=this.#t.value}get manifestNames(){return Object.keys(this.state?.library.manifests??{}).sort()}manifestAppearance(e){return this.state?.library.manifests[e]??{}}get generalIssues(){return this.state?.issues.filter(e=>e.assetId===void 0).map(e=>e.message)??[]}assetById(e){return this.state?.assets.find(t=>t.id===e)??null}},$=class extends Error{constructor(){super(`Change was cancelled because an earlier structural save failed.`)}};export{re as $,ye as A,ne as B,L as C,T as D,A as E,h as F,pe as G,ce as H,m as I,se as J,u as K,x as L,v as M,b as N,xe as O,_ as P,ee as Q,l as R,Ee as S,M as T,le as U,fe as V,ae as W,oe as X,ie as Y,me as Z,H as _,He as a,I as b,Ve as c,Je as d,te as et,We as f,je as g,Me as h,qe as i,g as j,Se as k,Ge as l,Ae as m,Le as n,de as nt,Ke as o,ke as p,f as q,Ue as r,d as rt,Ye as s,Ze as t,ue as tt,Be as u,De as v,P as w,R as x,V as y,c as z};
@@ -1 +0,0 @@
1
- import{$ as e,I as t,L as n,R as r,X as i,Z as a,n as o,t as s}from"./NblqapDQ.js";var c=class{constructor(e,t){this.status=e,typeof t==`string`?this.body={message:t}:t?this.body=t:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},l=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},u=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function d(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function f(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function p(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(){}function ee(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function g(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var _=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&v.delete(b(e)),_(e,t));var v=new Map;function te(e,t){let n=b(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=g(e));let i=r.getAttribute(`data-ttl`);return i&&v.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function y(e,t,n){if(v.size>0){let t=b(e,n),r=v.get(t);if(r){if(performance.now()<r.ttl&&[`default`,`force-cache`,`only-if-cached`,void 0].includes(n?.cache))return new Response(r.body,r.init);v.delete(t)}}return window.fetch(t,n)}function b(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${ee(...e)}"]`}return n}var ne=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,re=/^\/\((?:[^)]+)\)$/;function x(e){let t=[];return{pattern:e===`/`||re.test(e)?/^\/$/:RegExp(`^${ae(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return se(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return se(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=ne.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return se(e)}).join(``)}).join(``)}/?$`),params:t}}function ie(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ae(e){return e.slice(1).split(`/`).filter(ie)}function oe(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function se(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}var ce=/\[(\[)?(\.\.\.)?(\w+?)(?:=(\w+))?\]\]?/g;function le(e,t){let n=ae(e),r=e!=`/`&&e.endsWith(`/`);return`/`+n.map(n=>n.replace(ce,(n,r,i,a)=>{let o=t[a];if(!o){if(r||i&&o!==void 0)return``;throw Error(`Missing parameter '${a}' in route ${e}`)}if(o.startsWith(`/`)||o.endsWith(`/`))throw Error(`Parameter '${a}' in route ${e} cannot start or end with a slash -- this would cause an invalid route like foo//bar`);return o})).filter(Boolean).join(`/`)+(r?`/`:``)}function ue({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=x(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return oe(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function de(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function fe(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var S=globalThis.__sveltekit_1xhzhw9?.base??``,pe=globalThis.__sveltekit_1xhzhw9?.assets??S??``,me=``;function he(...e){if(!e[0].startsWith(`/`))throw Error(`Cannot use \`resolve(...)\` with a non-absolute pathname or route ID (got "${e[0]}"). \`resolve\` is only for internal pathnames and route IDs; external URLs should be used directly.`);return S+me+le(e[0],e[1])}var ge=`1784632055357`,_e=`sveltekit:snapshot`,ve=`sveltekit:scroll`,ye=`sveltekit:states`,C=`sveltekit:history`,w=`sveltekit:navigation`,T={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},E=location.origin;function be(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function D(){return{x:pageXOffset,y:pageYOffset}}function O(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var xe={...T,"":T.hover};function Se(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function Ce(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=Se(e)}}function we(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||A(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===E&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function k(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=O(s,`preload-code`)),i===null&&(i=O(s,`preload-data`)),t===null&&(t=O(s,`keepfocus`)),n===null&&(n=O(s,`noscroll`)),a===null&&(a=O(s,`reload`)),o===null&&(o=O(s,`replacestate`)),s=Se(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:xe[r??`off`],preload_data:xe[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Te(t){let n=e(t),r=!0;function i(){r=!0,n.update(e=>e)}function a(e){r=!1,n.set(e)}function o(e){let t;return n.subscribe(n=>{(t===void 0||r&&n!==t)&&e(t=n)})}return{notify:i,set:a,subscribe:o}}var Ee={v:h};function De(){let{set:t,subscribe:n}=e(!1);async function r(){clearTimeout(void 0);try{let e=await fetch(`${pe}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!e.ok)return!1;let n=(await e.json()).version!==ge;return n&&(t(!0),Ee.v(),clearTimeout(void 0)),n}catch{return!1}}return{subscribe:n,check:r}}function A(e,t,n){return e.origin!==E||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Oe(e){}var ke=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[...ke],[...new Set([...ke])];function Ae(e){return e.filter(e=>e!=null)}function j(e,t){return e+`/`+t}function je(e){return e instanceof c||e instanceof u?e.status:500}function Me(e){return e instanceof u?e.text:`Internal Error`}var M,N,P,Ne=o.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(o.toString()),Pe=`a:`;Ne?(M={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Pe)},N={current:null},P={current:!1}):(M=new class{#e=a({});get data(){return t(this.#e)}set data(e){i(this.#e,e)}#t=a(null);get form(){return t(this.#t)}set form(e){i(this.#t,e)}#n=a(null);get error(){return t(this.#n)}set error(e){i(this.#n,e)}#r=a({});get params(){return t(this.#r)}set params(e){i(this.#r,e)}#i=a({id:null});get route(){return t(this.#i)}set route(e){i(this.#i,e)}#a=a({});get state(){return t(this.#a)}set state(e){i(this.#a,e)}#o=a(-1);get status(){return t(this.#o)}set status(e){i(this.#o,e)}#s=a(new URL(Pe));get url(){return t(this.#s)}set url(e){i(this.#s,e)}},N=new class{#e=a(null);get current(){return t(this.#e)}set current(e){i(this.#e,e)}},P=new class{#e=a(!1);get current(){return t(this.#e)}set current(e){i(this.#e,e)}},Ee.v=()=>P.current=!0);function Fe(e){Object.assign(M,e)}var{onMount:Ie,tick:Le}=s,Re=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),F=null,I=de(`sveltekit:scroll`)??{},L=de(`sveltekit:snapshot`)??{},R={url:Te({}),page:Te({}),navigating:e(null),updated:De()};function ze(e){I[e]=D()}function Be(e,t){let n=e+1;for(;I[n];)delete I[n],n+=1;for(n=t+1;L[n];)delete L[n],n+=1}function z(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(h)}async function Ve(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(S||`/`);e&&await e.update()}}var He,Ue,We,B,Ge,V,Ke={},qe={},Je=[],Ye=[],H=null;function Xe(){H?.fork?.then(e=>e?.discard()),H=null,Q={element:void 0,href:void 0}}var Ze=new Map,Qe=new Set,$e=new Set,U=new Set,W={branch:[],error:null,url:null,nav:null},et=!1,tt=!1,nt=!0,G=!1,K=!1,rt=!1,it=!1,at,q,J,Y,ot=new Set,st=new Map,ct=new Map;async function lt(e,t,n){if(globalThis.__sveltekit_1xhzhw9.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_1xhzhw9.data;for(let t in e)Ke[t]=e[t];for(let e in n)Ke[e]=n[e];for(let e in r)Ke[e]=r[e];for(let e in t)qe[e]=t[e]}document.URL!==location.href&&(location.href=location.href),V=e,await e.hooks.init?.(),He=ue(e),B=document.documentElement,Ge=t,Ue=e.nodes[0],We=e.nodes[1],Ue(),We(),q=history.state?.[C],J=history.state?.[w],q||(q=J=Date.now(),history.replaceState({...history.state,[C]:q,[w]:J},``));let r=I[q];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Lt(Ge,n)):(await Z({type:`enter`,url:be(V.hash?Ut(new URL(location.href)):location.href),replace_state:!0}),i()),It()}function ut(){Je.length=0,it=!1}function dt(e){Ye.some(e=>e?.snapshot)&&(L[e]=Ye.map(e=>e?.snapshot?.capture()))}function ft(e){L[e]?.forEach((e,t)=>{Ye[t]?.snapshot?.restore(e)})}function pt(){ze(q),fe(ve,I),dt(J),fe(_e,L)}async function mt(e,t,n,i){let a,o;t.invalidateAll&&Xe(),await Z({type:`goto`,url:be(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:i,accept:()=>{if(t.invalidateAll){it=!0,a=new Set;for(let[e,t]of st)for(let[n,r]of t)r.resource?.reset(),a.add(j(e,n));o=new Set;for(let[e,t]of ct)for(let n of t.keys())o.add(j(e,n))}t.invalidate&&t.invalidate.forEach(Ft)}}),t.invalidateAll&&r().then(r).then(()=>{for(let[e,t]of st)for(let[n,{resource:r}]of t)a?.has(j(e,n))&&r.start();for(let[e,t]of ct)for(let[n,{resource:r}]of t)o?.has(j(e,n))&&r.reconnect()})}async function ht(e){if(e.id!==H?.id){Xe();let t={};ot.add(t),H={id:e.id,token:t,promise:Tt({...e,preload:t}).then(e=>(ot.delete(t),e.type===`loaded`&&e.state.error&&Xe(),e)),fork:null}}return H.promise}async function gt(e){let t=(await X(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function _t(e,t,n){let r={params:W.params,route:{id:W.route?.id??null},url:new URL(location.href)};if(W={...e.state,nav:r},Fe(e.props.page),at=new V.root({target:t,props:{...e.props,stores:R,components:Ye},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:I[q]??D()},willUnload:!1,type:`enter`,complete:Promise.resolve()};U.forEach(t=>t(e))}ft(J),tt=!0}async function vt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(S&&(e.pathname===S||e.pathname===S+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=d(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:Ae(n).map(e=>e.node.component),page:Ht(M)}};s!==void 0&&(l.props.form=s);let u={},f=!M,p=0;for(let e=0;e<Math.max(n.length,W.branch.length);e+=1){let t=n[e],r=W.branch[e];t?.data!==r?.data&&(f=!0),t&&(u={...u,...t.data},f&&(l.props[`data_${p}`]=u),p+=1)}return(!W.url||e.href!==W.url.href||W.error!==a||s!==void 0&&s!==M.form||f)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:f?u:M.data}),l}async function yt({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},s=await e();return{node:s,loader:e,server:a,universal:s.universal?.load?{type:`data`,data:null,uses:o}:null,data:a?.data??null,slash:s.universal?.trailingSlash??a?.slash}}function bt(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:tt?y(r,i.href,t):te(r,t)}}function xt(e,t,n,r,i,a){if(it)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==W.params[e])return!0;for(let e of i.dependencies)if(Je.some(t=>t(new URL(e))))return!0;return!1}function St(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function Ct(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function wt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Ht(M),constructors:[]}}}async function Tt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(H?.id===e)return ot.delete(H.token),H.promise;let{errors:o,layouts:s,leaf:u}=i,d=[...s,u];o.forEach(e=>e?.().catch(h)),d.forEach(e=>e?.[1]().catch(h));let f=W.url?e!==At(W.url):!1,p=W.route?i.id!==W.route.id:!1,m=Ct(W.url,n),ee=!1,g=d.map(async(e,t)=>{if(!e)return;let a=W.branch[t];return e[1]===a?.loader&&!xt(ee,p,f,m,a.universal?.uses,r)?a:(ee=!0,yt({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await g[n])?.data);return e},server_data_node:St(e[0]?{type:`skip`}:null,e[0]?a?.server:void 0)}))});for(let e of g)e.catch(h);let _=[];for(let e=0;e<d.length;e+=1)if(d[e])try{_.push(await g[e])}catch(t){if(t instanceof l)return{type:`redirect`,location:t.location};if(a&&ot.has(a))return wt({error:await $(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=je(t),u;if(t instanceof c)u=t.body;else{if(await R.updated.check())return await Ve(),await z(n);u=await $(t,{params:r,url:n,route:{id:i.id}})}let d=await Et(e,_,o);return d?vt({url:n,params:r,branch:_.slice(0,d.idx).concat(d.node),errors:o,status:s,error:u,route:i}):await Mt(n,{id:i.id},u,s)}else _.push(void 0);return vt({url:n,params:r,branch:_,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function Et(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Dt({status:e,error:t,url:n,route:r}){let i={};try{return vt({url:n,params:i,branch:[await yt({loader:Ue,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:St(null)}),{node:await We(),loader:We,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof l){await mt(new URL(t.location,location.href),{},0);return}let a=await V.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function Ot(e){let t=e.href;if(Ze.has(t))return Ze.get(t);let n;try{let r=(async()=>{let t=await V.hooks.reroute({url:new URL(e),fetch:async(t,n)=>bt(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);V.hash?n.hash=t:n.pathname=t,t=n}return t})();Ze.set(t,r),n=await r}catch{Ze.delete(t);return}return n}async function X(e,t){if(e&&!A(e,S,V.hash)){let n=await Ot(e);if(!n)return;let r=kt(n);for(let n of He){let i=n.exec(r);if(i)return{id:At(e),invalidating:t,route:n,params:p(i),url:e}}}}function kt(e){return f(V.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(S.length))||`/`}function At(e){return(V.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function jt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=Vt(W,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return G||Qe.forEach(e=>e(c)),o?null:s}async function Z({type:e,url:t,popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c={},redirect_count:l=0,nav_token:d={},accept:f=h,block:p=h,event:m}){let ee=Y;Y=d;let g=await X(t,!1),_=e===`enter`?Vt(W,g,t,e):jt({url:t,type:e,delta:i?.delta,intent:g,scroll:i?.scroll,event:m});if(!_){p(),Y===d&&(Y=ee);return}let v=q,te=J;f(),G=!0,tt&&_.navigation.type!==`enter`&&R.navigating.set(N.current=_.navigation);let y=g&&await Tt(g);if(!y){if(A(t,S,V.hash))return await z(t,s);y=await Mt(t,{id:null},await $(new u(404,`Not Found`,`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,s)}if(t=g?.url||t,Y!==d){_.reject(Error(`navigation aborted`));return}if(!y)return;if(y.type===`redirect`){if(l<20){await Z({type:e,url:new URL(y.location,t),popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c,redirect_count:l+1,nav_token:d}),_.fulfil(void 0);return}if(y=await Dt({status:500,error:await $(Error(`Redirect loop`),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}}),!y)return}else if(y.props.page.status>=400&&await R.updated.check())return await Ve(),await z(t,s);if(ut(),ze(v),dt(te),y.props.page.url.pathname!==t.pathname&&(t.pathname=y.props.page.url.pathname),c=i?i.state:c,!i){let e=+!s,n={[C]:q+=e,[w]:J+=e,[ye]:c};(s?history.replaceState:history.pushState).call(history,n,``,t),s||Be(q,J)}let b=g&&H?.id===g.id?H.fork:null;H?.fork&&!b?Xe():(H=null,Q={element:void 0,href:void 0}),y.props.page.state=c;let ne;if(tt){let e=(await Promise.all(Array.from($e,e=>e(_.navigation)))).filter(e=>typeof e==`function`);if(e.length>0){function t(){e.forEach(e=>{U.delete(e)})}e.push(t),e.forEach(e=>{U.add(e)})}let r=_.navigation.to;W={...y.state,nav:{params:r.params,route:r.route,url:r.url}},y.props.page&&(y.props.page.url=t),!a&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let i=b&&await b;i?ne=i.commit():(F=null,at.$set(y.props),F&&Object.assign(y.props.page,F),Fe(y.props.page),ne=n?.()),rt=!0}else await _t(y,Ge,!1);let{activeElement:re}=document;if(await ne,await r(),await r(),Y!==d){_.reject(Error(`navigation aborted`));return}y.props.page&&F&&Object.assign(y.props.page,F);let x=null;if(nt){let e=i?i.scroll:o?D():null;e?scrollTo(e.x,e.y):(x=t.hash&&document.getElementById(Wt(t)))?x.scrollIntoView():scrollTo(0,0)}let ie=document.activeElement!==re&&document.activeElement!==document.body;!a&&!ie&&Bt(t,!x),nt=!0,G=!1,_.fulfil(void 0),_.navigation.to&&(_.navigation.to.scroll=D()),U.forEach(e=>e(_.navigation)),e===`popstate`&&ft(J),R.navigating.set(N.current=null)}async function Mt(e,t,n,r,i){return e.origin===E&&e.pathname===location.pathname&&!et?await Dt({status:r,error:n,url:e,route:t}):await z(e,i)}var Q={element:void 0,href:void 0};function Nt(){let e,t;B.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,T.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],T.tap)}B.addEventListener(`mousedown`,n),B.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(gt(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=Ce(e,B),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=we(r,S,V.hash);if(o||s)return;let c=k(r),l=a&&At(W.url)===At(a);if(!(c.reload||l))if(n<=c.preload_data){Q={element:r,href:r.href},t=T.tap;let e=await X(a,!1);if(!e)return;ht(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,gt(a))}function a(){r.disconnect();for(let e of B.querySelectorAll(`a`)){let{url:t,external:n,download:i}=we(e,S,V.hash);if(n||i)continue;let a=k(e);a.reload||(a.preload_code===T.viewport&&r.observe(e),a.preload_code===T.eager&&gt(t))}}U.add(a),a()}function $(e,t){if(e instanceof c)return e.body;let n=je(e),r=Me(e);return V.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Pt(e,t={}){return e=new URL(be(e)),e.origin===E?mt(e,t,0):Promise.reject(Error(`goto: invalid URL`))}function Ft(e){if(typeof e==`function`)Je.push(e);else{let{href:t}=new URL(e,location.href);Je.push(e=>e.href===t)}}function It(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(pt(),!G){let e=Vt(W,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};Qe.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&pt()}),navigator.connection?.saveData||Nt(),B.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=Ce(t.composedPath()[0],B);if(!n)return;let{url:r,external:i,target:a,download:o}=we(n,S,V.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=k(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol===`https:`||r.protocol===`http:`)||o)return;let[c,l]=(V.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){jt({url:r,type:`link`,event:t})?G=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=W.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(K=!0,ze(q),e(r),!s.replace_state)return;K=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),B.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(A(r,S,!1))return;let i=e.target,a=k(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!zt)if(t.state?.[`sveltekit:history`]){let n=t.state[C];if(Y={},n===q)return;let r=I[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[w],s=W.url?m(location)===m(W.url):!1;if(o===J&&(rt||s)){i!==M.state&&(M.state=i),e(a),I[q]=D(),r&&scrollTo(r.x,r.y),q=n;return}let c=n-q;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{q=n,J=o},block:()=>{history.go(-c)},nav_token:Y,event:t})}else K||(e(new URL(location.href)),V.hash&&location.reload())}),addEventListener(`hashchange`,()=>{K&&(K=!1,history.replaceState({...history.state,[C]:++q,[w]:J},``,location.href))});for(let e of document.querySelectorAll(`link`))Re.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&R.navigating.set(N.current=null)});function e(e){W.url=M.url=e,R.page.set(Ht(M)),R.page.notify()}}async function Lt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){et=!0;let u=new URL(location.href),d;({params:i={},route:a={id:null}}=await X(u,!1)||{}),d=He.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Rt(r.uses)),yt({loader:V.nodes[t],url:u,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:St(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await vt({url:u,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof l)return await z(new URL(t.location,location.href));f=await Dt({status:je(t),error:await $(t,{url:u,params:i,route:a}),url:u,route:a}),e.textContent=``,p=!1}f&&(f.props.page&&(f.props.page.state={}),await _t(f,e,p))}function Rt(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}var zt=!1;function Bt(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=Wt(e);if(n&&document.getElementById(n)){let{x:r,y:i}=D();setTimeout(()=>{let a=history.state;zt=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),zt=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function Vt(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(h),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:D()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function Ht(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Ut(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function Wt(e){let t;if(V.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{M as a,he as c,N as i,lt as n,P as o,R as r,Oe as s,Pt as t};
@@ -1 +0,0 @@
1
- I@����t�6Se$�댤����#��v ��o����0{�,� �UCiK~Gb�/�� �q��f�<�"~f� T�t�ʺ65��B����٨,9�7��@�tc�G(D2�+�T�($15/d"i��X�~��&{�'V��