@anvia/studio 1.0.0-rc.2 → 1.0.0-rc.3

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 (92) hide show
  1. package/README.md +38 -0
  2. package/dist/index.d.ts +152 -67
  3. package/dist/index.js +921 -1001
  4. package/dist/index.js.map +1 -1
  5. package/dist/ui/assets/ArrowClockwise.es-CSEY3Qr6.js +2 -0
  6. package/dist/ui/assets/{ArrowClockwise.es-DMJj7Hv0.js.map → ArrowClockwise.es-CSEY3Qr6.js.map} +1 -1
  7. package/dist/ui/assets/CaretDown.es-BHAPbv1R.js +2 -0
  8. package/dist/ui/assets/CaretDown.es-BHAPbv1R.js.map +1 -0
  9. package/dist/ui/assets/Check.es-BLChmggz.js +2 -0
  10. package/dist/ui/assets/Check.es-BLChmggz.js.map +1 -0
  11. package/dist/ui/assets/Wrench.es-BL6BmNv7.js +4 -0
  12. package/dist/ui/assets/Wrench.es-BL6BmNv7.js.map +1 -0
  13. package/dist/ui/assets/agents-page-DQqt45If.js +2 -0
  14. package/dist/ui/assets/{agents-page-CbQpO3Tg.js.map → agents-page-DQqt45If.js.map} +1 -1
  15. package/dist/ui/assets/{badge-BIWy1K8W.js → badge-CcajoiAt.js} +1 -1
  16. package/dist/ui/assets/{badge-BIWy1K8W.js.map → badge-CcajoiAt.js.map} +1 -1
  17. package/dist/ui/assets/button-07gzSO47.js +2 -0
  18. package/dist/ui/assets/button-07gzSO47.js.map +1 -0
  19. package/dist/ui/assets/chunk-D2ECOWN5-fs3ih0yA.js +65 -0
  20. package/dist/ui/assets/chunk-D2ECOWN5-fs3ih0yA.js.map +1 -0
  21. package/dist/ui/assets/dialog-CNNQ3hoF.js +2 -0
  22. package/dist/ui/assets/dialog-CNNQ3hoF.js.map +1 -0
  23. package/dist/ui/assets/dist-CqMdRzwk.js +2 -0
  24. package/dist/ui/assets/dist-CqMdRzwk.js.map +1 -0
  25. package/dist/ui/assets/dist-DWqJwN1i.js +2 -0
  26. package/dist/ui/assets/dist-DWqJwN1i.js.map +1 -0
  27. package/dist/ui/assets/es2015-DsZq7PFO.js +42 -0
  28. package/dist/ui/assets/es2015-DsZq7PFO.js.map +1 -0
  29. package/dist/ui/assets/icon-CqkMSRbt.js +2 -0
  30. package/dist/ui/assets/icon-CqkMSRbt.js.map +1 -0
  31. package/dist/ui/assets/index-BGNC3dLD.css +1 -0
  32. package/dist/ui/assets/index-BLaXiUWO.js +12 -0
  33. package/dist/ui/assets/index-BLaXiUWO.js.map +1 -0
  34. package/dist/ui/assets/{input-BTHDDFpv.js → input-BiI6gsxA.js} +1 -1
  35. package/dist/ui/assets/{input-BTHDDFpv.js.map → input-BiI6gsxA.js.map} +1 -1
  36. package/dist/ui/assets/knowledge-model-S51n2rKh.js +2 -0
  37. package/dist/ui/assets/knowledge-model-S51n2rKh.js.map +1 -0
  38. package/dist/ui/assets/knowledge-page-DzRhA9qQ.js +2 -0
  39. package/dist/ui/assets/{knowledge-page-C8zg8uTL.js.map → knowledge-page-DzRhA9qQ.js.map} +1 -1
  40. package/dist/ui/assets/mcps-page-ZVngljXI.js +2 -0
  41. package/dist/ui/assets/{mcps-page-gNYeqSPB.js.map → mcps-page-ZVngljXI.js.map} +1 -1
  42. package/dist/ui/assets/{memory-page-BLrfOqyU.js → memory-page-DAJk0Zof.js} +3 -3
  43. package/dist/ui/assets/{memory-page-BLrfOqyU.js.map → memory-page-DAJk0Zof.js.map} +1 -1
  44. package/dist/ui/assets/pipelines-page-8osYA129.js +8 -0
  45. package/dist/ui/assets/{pipelines-page-hTEhFZGg.js.map → pipelines-page-8osYA129.js.map} +1 -1
  46. package/dist/ui/assets/{renderers-DC_-TD_X.js → renderers-BPGo4d2i.js} +2 -2
  47. package/dist/ui/assets/{renderers-DC_-TD_X.js.map → renderers-BPGo4d2i.js.map} +1 -1
  48. package/dist/ui/assets/request-7oUPS8zY.js +4 -0
  49. package/dist/ui/assets/request-7oUPS8zY.js.map +1 -0
  50. package/dist/ui/assets/rfb-DiW3PDuT.js +6 -0
  51. package/dist/ui/assets/rfb-DiW3PDuT.js.map +1 -0
  52. package/dist/ui/assets/sandboxes-page-C6kokYwc.js +2 -0
  53. package/dist/ui/assets/sandboxes-page-C6kokYwc.js.map +1 -0
  54. package/dist/ui/assets/select-BOYfrfck.js +2 -0
  55. package/dist/ui/assets/select-BOYfrfck.js.map +1 -0
  56. package/dist/ui/assets/sessions-page-ClXzRM9K.js +2 -0
  57. package/dist/ui/assets/{sessions-page-DBzoP7MV.js.map → sessions-page-ClXzRM9K.js.map} +1 -1
  58. package/dist/ui/assets/status-page-DfuQ0fpa.js +2 -0
  59. package/dist/ui/assets/{status-page-Bf1lq444.js.map → status-page-DfuQ0fpa.js.map} +1 -1
  60. package/dist/ui/assets/studio-CeTsQ4gf.js +2 -0
  61. package/dist/ui/assets/studio-CeTsQ4gf.js.map +1 -0
  62. package/dist/ui/assets/textarea-DESKg_ZK.js +2 -0
  63. package/dist/ui/assets/textarea-DESKg_ZK.js.map +1 -0
  64. package/dist/ui/assets/tool-runner-Cdrcs2v4.js +2 -0
  65. package/dist/ui/assets/{tool-runner-BbUlfPEO.js.map → tool-runner-Cdrcs2v4.js.map} +1 -1
  66. package/dist/ui/assets/tools-page-C865VQmM.js +2 -0
  67. package/dist/ui/assets/{tools-page-BgUz-79v.js.map → tools-page-C865VQmM.js.map} +1 -1
  68. package/dist/ui/assets/trace-browser-D93H7Xxs.js +10 -0
  69. package/dist/ui/assets/{trace-browser-qfYPcdR2.js.map → trace-browser-D93H7Xxs.js.map} +1 -1
  70. package/dist/ui/assets/transcript-item-BadzBIzE.js +3 -0
  71. package/dist/ui/assets/transcript-item-BadzBIzE.js.map +1 -0
  72. package/dist/ui/assets/with-selector-CRZWaZzC.js +2 -0
  73. package/dist/ui/assets/with-selector-CRZWaZzC.js.map +1 -0
  74. package/dist/ui/index.html +19 -2
  75. package/package.json +11 -7
  76. package/dist/ui/assets/ArrowClockwise.es-DMJj7Hv0.js +0 -2
  77. package/dist/ui/assets/agents-page-CbQpO3Tg.js +0 -2
  78. package/dist/ui/assets/index-D-CbFx6c.css +0 -1
  79. package/dist/ui/assets/index-DizotQot.js +0 -119
  80. package/dist/ui/assets/index-DizotQot.js.map +0 -1
  81. package/dist/ui/assets/knowledge-page-C8zg8uTL.js +0 -2
  82. package/dist/ui/assets/mcps-page-gNYeqSPB.js +0 -2
  83. package/dist/ui/assets/pipelines-page-hTEhFZGg.js +0 -8
  84. package/dist/ui/assets/sandboxes-page-DtPnuza7.js +0 -2
  85. package/dist/ui/assets/sandboxes-page-DtPnuza7.js.map +0 -1
  86. package/dist/ui/assets/sessions-page-DBzoP7MV.js +0 -2
  87. package/dist/ui/assets/status-page-Bf1lq444.js +0 -2
  88. package/dist/ui/assets/tool-runner-BbUlfPEO.js +0 -2
  89. package/dist/ui/assets/tools-page-BgUz-79v.js +0 -2
  90. package/dist/ui/assets/trace-browser-qfYPcdR2.js +0 -10
  91. package/dist/ui/assets/transcript-item-HFuuqmKM.js +0 -3
  92. package/dist/ui/assets/transcript-item-HFuuqmKM.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"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zB,OAAO,GAAtB,YACE,EACE,EACS,EAAa,YAAtB,KAAkC,QAAU,SAC5C,EAAa,sBACb,GACD,OACI,EAAO,CACd,EAAwB,EAAc,EAAa,OAAQ,EAAM,OAGnE,GACE,EACA,EACA,EACA,EACD,CACH,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACD,CACD,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACD,CACD,MACF,IAAK,IACH,MACF,IAAK,IACH,EAAyB,EAAa,UACtC,EAAK,EAAa,UACT,EAAa,gBAAtB,KASI,EAAuB,YAAc,EACnC,GACE,EACA,EACA,EACA,EACD,EACC,EAAuB,aAAe,EACxC,GACE,EACA,EACA,EACA,GACO,EAAa,aAAe,QAAnC,GAA6C,CAAC,EAC/C,EAtBH,EAAuB,YAAc,EACnC,GACE,EACA,EACA,EACA,EACD,CACD,GAAwC,EAAc,EAAa,CAgBzE,EAAQ,MAAQ,GAAmC,EAAI,EAAa,CACpE,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACD,CACD,EAAQ,MACN,GAA8B,EAAa,UAAW,EAAa,CACrE,MACF,QACE,GACE,EACA,EACA,EACA,EACD,EAGP,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,CAIA,IAHA,KAEU,EAAY,aAAe,QAAlC,GAA4C,CAAC,EAC3C,EAAc,EAAY,MAAgB,IAAT,MAAwB,CAC5D,IAAI,EAAe,EACjB,EAAe,EACf,EAAiB,EACjB,EAAuB,EACvB,EAAQ,EAAa,MACvB,OAAQ,EAAa,IAArB,CACE,IAAK,GACL,IAAK,IACL,IAAK,IACH,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GAA0B,EAAG,EAAa,CAC1C,MACF,IAAK,IACH,MACF,IAAK,IACH,IAAI,EAAW,EAAa,UACnB,EAAa,gBAAtB,MAaM,EAAS,aAAe,EAC1B,GACE,EACA,EACA,EACA,EACA,EACD,EAnBD,EAAS,YAAc,EACrB,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GACE,EACA,EACD,CASP,GACE,EAAQ,MACR,GACE,EAAa,UACb,EACD,CACH,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GACE,EAAQ,MACR,GAA8B,EAAa,UAAW,EAAa,CACrE,MACF,QACE,GACE,EACA,EACA,EACA,EACA,EACD,CAEL,EAAc,EAAY,SAG9B,SAAS,GACP,EACA,EACA,CACA,GAAI,EAAY,aAAe,MAC7B,IAAK,EAAc,EAAY,MAAgB,IAAT,MAAwB,CAC5D,IAAI,EAAe,EACjB,EAAe,EACf,EAAQ,EAAa,MACvB,OAAQ,EAAa,IAArB,CACE,IAAK,IACH,GAAwC,EAAc,EAAa,CACnE,EAAQ,MACN,GACE,EAAa,UACb,EACD,CACH,MACF,IAAK,IACH,GAAwC,EAAc,EAAa,CACnE,EAAQ,MACN,GAA8B,EAAa,UAAW,EAAa,CACrE,MACF,QACE,GAAwC,EAAc,EAAa,CAEvE,EAAc,EAAY,SAGhC,IAAI,GAAsB,KAC1B,SAAS,GACP,EACA,EACA,EACA,CACA,GAAI,EAAY,aAAe,GAC7B,IAAK,EAAc,EAAY,MAAgB,IAAT,MACpC,GACE,EACA,EACA,EACD,CACE,EAAc,EAAY,QAEnC,SAAS,GACP,EACA,EACA,EACA,CACA,OAAQ,EAAM,IAAd,CACE,IAAK,IACH,GACE,EACA,EACA,EACD,CACD,EAAM,MAAQ,IACH,EAAM,gBAAf,MACA,GACE,EACA,GACA,EAAM,cACN,EAAM,cACP,CACH,MACF,IAAK,GACH,GACE,EACA,EACA,EACD,CACD,MACF,IAAK,GACL,IAAK,GACH,IAAI,EAAwB,GAC5B,GAAuB,GAAiB,EAAM,UAAU,cAAc,CACtE,GACE,EACA,EACA,EACD,CACD,GAAuB,EACvB,MACF,IAAK,IACM,EAAM,gBAAf,OACI,EAAwB,EAAM,UACvB,IAAT,MACS,EAAsB,gBAA/B,MACM,EAAwB,GACzB,GAAsB,SACvB,GACE,EACA,EACA,EACD,CACA,GAAsB,GACvB,GACE,EACA,EACA,EACD,EACP,MACF,QACE,GACE,EACA,EACA,EACD,EAGP,SAAS,GAAwB,EAAa,CAC5C,IAAI,EAAgB,EAAY,UAChC,GACW,IAAT,OACE,EAAc,EAAc,MAAi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CAAC,IAAM,GACG,GAAR,MACe,OAAO,GAAtB,YACa,OAAO,GAApB,SACA,EAAW,aAAa,EAAK,EAAM,CACnC,EAAW,gBAAgB,EAAI,CACrC,MACF,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACK,GAAR,MACe,OAAO,GAAtB,YACa,OAAO,GAApB,UACA,CAAC,MAAM,EAAM,EACb,GAAK,EACD,EAAW,aAAa,EAAK,EAAM,CACnC,EAAW,gBAAgB,EAAI,CACnC,MACF,IAAK,UACL,IAAK,QACK,GAAR,MACe,OAAO,GAAtB,YACa,OAAO,GAApB,UACA,MAAM,EAAM,CACR,EAAW,gBAAgB,EAAI,CAC/B,EAAW,aAAa,EAAK,EAAM,CACvC,MACF,IAAK,UACH,EAA0B,eAAgB,EAAW,CACrD,EAA0B,SAAU,EAAW,CAC/C,GAAqB,EAAY,UAAW,EAAM,CAClD,MACF,IAAK,eACH,GACE,EACA,+BACA,gBACA,EACD,CACD,MACF,IAAK,eACH,GACE,EACA,+BACA,gBACA,EACD,CACD,MACF,IAAK,YACH,GACE,EACA,+BACA,aACA,EACD,CACD,MACF,IAAK,YACH,GACE,EACA,+BACA,aACA,EACD,CACD,MACF,IAAK,aACH,GACE,EACA,+BACA,cACA,EACD,CACD,MACF,IAAK,YACH,GACE,EACA,+BACA,aACA,EACD,CACD,MACF,IAAK,UACH,GACE,EACA,uCACA,WACA,EACD,CACD,MACF,IAAK,UACH,GACE,EACA,uCACA,WACA,EACD,CACD,MACF,IAAK,WACH,GACE,EACA,uCACA,YACA,EACD,CACD,MACF,IAAK,KACH,GAAqB,EAAY,KAAM,EAAM,CAC7C,MACF,IAAK,YACL,IAAK,cACH,MACF,SAEI,EAAE,EAAI,EAAI,SACD,EAAI,KAAZ,KAA0B,EAAI,KAAZ,KACV,EAAI,KAAZ,KAA0B,EAAI,KAAZ,OAElB,EAAM,GAAQ,IAAI,EAAI,EAAI,EACzB,GAAqB,EAAY,EAAK,EAAM,GAGtD,SAAS,GAAuB,EAAY,EAAK,EAAK,EAAO,EAAO,EAAW,CAC7E,OAAQ,EAAR,CACE,IAAK,QACH,GAAk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","names":["useLayoutEffect","trimPathRight","Fragment","e","a","l","t","o","s","r","m","n","c","i","p"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],"sources":["../../../../../node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.js","../../../../../node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.js","../../../../../node_modules/.pnpm/react-dom@19.2.8_react@19.2.8/node_modules/react-dom/cjs/react-dom-client.production.js","../../../../../node_modules/.pnpm/react-dom@19.2.8_react@19.2.8/node_modules/react-dom/client.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/utils.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/utils.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/invariant.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/lru-cache.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/new-process-route-tree.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/path.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/not-found.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/scroll-restoration.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/qss.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/searchParams.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/root.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/redirect.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/rewrite.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/stores.js","../../../../../node_modules/.pnpm/@tanstack+history@1.162.1/node_modules/@tanstack/history/dist/esm/index.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/router.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/load-client.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/link.js","../../../../../node_modules/.pnpm/@tanstack+router-core@1.171.24/node_modules/@tanstack/router-core/dist/esm/route.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/CatchBoundary.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/ClientOnly.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/routerContext.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/useRouter.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/matchContext.js","../../../../../node_modules/.pnpm/@tanstack+store@0.9.3/node_modules/@tanstack/store/dist/esm/alien.js","../../../../../node_modules/.pnpm/@tanstack+store@0.9.3/node_modules/@tanstack/store/dist/esm/atom.js","../../../../../node_modules/.pnpm/@tanstack+react-store@0.9.3_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-store/dist/esm/useStore.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/useMatch.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/useLoaderData.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/useLoaderDeps.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/useParams.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/useSearch.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/useNavigate.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/useRouteContext.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/link.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/route.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/not-found.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/SafeFragment.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/renderRouteNotFound.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/Match.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/Transitioner.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/Matches.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/routerStores.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/router.js","../../../../../node_modules/.pnpm/@tanstack+react-router@1.170.29_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-router/dist/esm/RouterProvider.js","../../../src/ui/app/app-helpers.ts","../../../src/ui/app/app-theme.ts","../../../src/ui/app/modules/agents/use-agent-models.ts","../../../src/ui/app/modules/playground/browser-workspace.ts","../../../../core/dist/chunk-BY4OMNIU.js","../../../../client/dist/index.js","../../../../react/dist/index.js","../../../src/ui/app/modules/playground/use-playground-run.ts","../../../src/ui/app/modules/playground/use-playground-transcript.ts","../../../src/ui/app/modules/sessions/use-studio-sessions.ts","../../../src/ui/app/modules/shared/navigation.ts","../../../src/ui/app/modules/shared/path.ts","../../../src/ui/app/modules/tracing/use-traces.ts","../../../src/ui/app/studio-console-context.tsx","../../../src/ui/app/app-pages.tsx","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Archive.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/ArrowUp.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/BookOpenText.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Browser.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Cube.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Database.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/FlowArrow.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Gauge.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/GithubLogo.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Laptop.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/List.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/ListBullets.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/ListMagnifyingGlass.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Moon.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Paperclip.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Plug.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Stop.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Sun.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/Toolbox.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/defs/X.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Archive.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/ArrowUp.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/BookOpenText.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Browser.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Cube.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Database.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/FlowArrow.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Gauge.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/GithubLogo.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Laptop.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/List.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/ListBullets.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/ListMagnifyingGlass.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Moon.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Paperclip.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Plug.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Stop.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Sun.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/Toolbox.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@phosphor-icons/react/dist/csr/X.es.js","../../../src/ui/app/components/anvia-lens-logo.tsx","../../../src/ui/app/modules/shell/nav-button.tsx","../../../src/ui/app/modules/shell/studio-shell.tsx","../../../src/ui/app/modules/shell/studio-console-layout.tsx","../../../src/ui/app/routes/route-helpers.ts","../../../src/ui/app/routes/agents-route.tsx","../../../src/ui/app/modules/inspectors/inspectors-containers.tsx","../../../src/ui/app/routes/knowledge-route.tsx","../../../src/ui/app/routes/mcps-route.tsx","../../../src/ui/app/routes/memory-route.tsx","../../../src/ui/app/modules/pipelines/use-pipelines.ts","../../../src/ui/app/modules/pipelines/pipelines-container.tsx","../../../src/ui/app/routes/pipelines-route.tsx","../../../src/ui/app/modules/sandboxes/browser-view.tsx","../../../src/ui/app/modules/playground/response-metrics.ts","../../../src/ui/app/modules/playground/transcript-stream.ts","../../../src/ui/app/modules/playground/smoothed-transcript.tsx","../../../src/ui/app/modules/playground/playground-page.tsx","../../../src/ui/app/routes/playground-route.tsx","../../../src/ui/app/routes/sandboxes-route.tsx","../../../src/ui/app/routes/sessions-route.tsx","../../../src/ui/app/routes/status-route.tsx","../../../src/ui/app/routes/tools-route.tsx","../../../src/ui/app/routes/tracing-route.tsx","../../../src/ui/app/studio-router.tsx","../../../src/ui/app/app.tsx","../../../src/ui/app/main.tsx"],"sourcesContent":["/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n a: for (; 0 < index; ) {\n var parentIndex = (index - 1) >>> 1,\n parent = heap[parentIndex];\n if (0 < compare(parent, node))\n (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n else break a;\n }\n}\nfunction peek(heap) {\n return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n if (0 === heap.length) return null;\n var first = heap[0],\n last = heap.pop();\n if (last !== first) {\n heap[0] = last;\n a: for (\n var index = 0, length = heap.length, halfLength = length >>> 1;\n index < halfLength;\n\n ) {\n var leftIndex = 2 * (index + 1) - 1,\n left = heap[leftIndex],\n rightIndex = leftIndex + 1,\n right = heap[rightIndex];\n if (0 > compare(left, last))\n rightIndex < length && 0 > compare(right, left)\n ? ((heap[index] = right),\n (heap[rightIndex] = last),\n (index = rightIndex))\n : ((heap[index] = left),\n (heap[leftIndex] = last),\n (index = leftIndex));\n else if (rightIndex < length && 0 > compare(right, last))\n (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n else break a;\n }\n }\n return first;\n}\nfunction compare(a, b) {\n var diff = a.sortIndex - b.sortIndex;\n return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n var localPerformance = performance;\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date,\n initialTime = localDate.now();\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n}\nvar taskQueue = [],\n timerQueue = [],\n taskIdCounter = 1,\n currentTask = null,\n currentPriorityLevel = 3,\n isPerformingWork = !1,\n isHostCallbackScheduled = !1,\n isHostTimeoutScheduled = !1,\n needsPaint = !1,\n localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n for (var timer = peek(timerQueue); null !== timer; ) {\n if (null === timer.callback) pop(timerQueue);\n else if (timer.startTime <= currentTime)\n pop(timerQueue),\n (timer.sortIndex = timer.expirationTime),\n push(taskQueue, timer);\n else break;\n timer = peek(timerQueue);\n }\n}\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = !1;\n advanceTimers(currentTime);\n if (!isHostCallbackScheduled)\n if (null !== peek(taskQueue))\n (isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n}\nvar isMessageLoopRunning = !1,\n taskTimeoutID = -1,\n frameInterval = 5,\n startTime = -1;\nfunction shouldYieldToHost() {\n return needsPaint\n ? !0\n : exports.unstable_now() - startTime < frameInterval\n ? !1\n : !0;\n}\nfunction performWorkUntilDeadline() {\n needsPaint = !1;\n if (isMessageLoopRunning) {\n var currentTime = exports.unstable_now();\n startTime = currentTime;\n var hasMoreWork = !0;\n try {\n a: {\n isHostCallbackScheduled = !1;\n isHostTimeoutScheduled &&\n ((isHostTimeoutScheduled = !1),\n localClearTimeout(taskTimeoutID),\n (taskTimeoutID = -1));\n isPerformingWork = !0;\n var previousPriorityLevel = currentPriorityLevel;\n try {\n b: {\n advanceTimers(currentTime);\n for (\n currentTask = peek(taskQueue);\n null !== currentTask &&\n !(\n currentTask.expirationTime > currentTime && shouldYieldToHost()\n );\n\n ) {\n var callback = currentTask.callback;\n if (\"function\" === typeof callback) {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var continuationCallback = callback(\n currentTask.expirationTime <= currentTime\n );\n currentTime = exports.unstable_now();\n if (\"function\" === typeof continuationCallback) {\n currentTask.callback = continuationCallback;\n advanceTimers(currentTime);\n hasMoreWork = !0;\n break b;\n }\n currentTask === peek(taskQueue) && pop(taskQueue);\n advanceTimers(currentTime);\n } else pop(taskQueue);\n currentTask = peek(taskQueue);\n }\n if (null !== currentTask) hasMoreWork = !0;\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(\n handleTimeout,\n firstTimer.startTime - currentTime\n );\n hasMoreWork = !1;\n }\n }\n break a;\n } finally {\n (currentTask = null),\n (currentPriorityLevel = previousPriorityLevel),\n (isPerformingWork = !1);\n }\n hasMoreWork = void 0;\n }\n } finally {\n hasMoreWork\n ? schedulePerformWorkUntilDeadline()\n : (isMessageLoopRunning = !1);\n }\n }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\nelse if (\"undefined\" !== typeof MessageChannel) {\n var channel = new MessageChannel(),\n port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n 0 > fps || 125 < fps\n ? console.error(\n \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n )\n : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n switch (currentPriorityLevel) {\n case 1:\n case 2:\n case 3:\n var priorityLevel = 3;\n break;\n default:\n priorityLevel = currentPriorityLevel;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_requestPaint = function () {\n needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n priorityLevel = 3;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_scheduleCallback = function (\n priorityLevel,\n callback,\n options\n) {\n var currentTime = exports.unstable_now();\n \"object\" === typeof options && null !== options\n ? ((options = options.delay),\n (options =\n \"number\" === typeof options && 0 < options\n ? currentTime + options\n : currentTime))\n : (options = currentTime);\n switch (priorityLevel) {\n case 1:\n var timeout = -1;\n break;\n case 2:\n timeout = 250;\n break;\n case 5:\n timeout = 1073741823;\n break;\n case 4:\n timeout = 1e4;\n break;\n default:\n timeout = 5e3;\n }\n timeout = options + timeout;\n priorityLevel = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: options,\n expirationTime: timeout,\n sortIndex: -1\n };\n options > currentTime\n ? ((priorityLevel.sortIndex = options),\n push(timerQueue, priorityLevel),\n null === peek(taskQueue) &&\n priorityLevel === peek(timerQueue) &&\n (isHostTimeoutScheduled\n ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n : (isHostTimeoutScheduled = !0),\n requestHostTimeout(handleTimeout, options - currentTime)))\n : ((priorityLevel.sortIndex = timeout),\n push(taskQueue, priorityLevel),\n isHostCallbackScheduled ||\n isPerformingWork ||\n ((isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n React = require(\"react\"),\n ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction isValidContainer(node) {\n return !(\n !node ||\n (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n );\n}\nfunction getNearestMountedFiber(fiber) {\n var node = fiber,\n nearestMounted = fiber;\n if (fiber.alternate) for (; node.return; ) node = node.return;\n else {\n fiber = node;\n do\n (node = fiber),\n 0 !== (node.flags & 4098) && (nearestMounted = node.return),\n (fiber = node.return);\n while (fiber);\n }\n return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n if (13 === fiber.tag) {\n var suspenseState = fiber.memoizedState;\n null === suspenseState &&\n ((fiber = fiber.alternate),\n null !== fiber && (suspenseState = fiber.memoizedState));\n if (null !== suspenseState) return suspenseState.dehydrated;\n }\n return null;\n}\nfunction getActivityInstanceFromFiber(fiber) {\n if (31 === fiber.tag) {\n var activityState = fiber.memoizedState;\n null === activityState &&\n ((fiber = fiber.alternate),\n null !== fiber && (activityState = fiber.memoizedState));\n if (null !== activityState) return activityState.dehydrated;\n }\n return null;\n}\nfunction assertIsMounted(fiber) {\n if (getNearestMountedFiber(fiber) !== fiber)\n throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate) {\n alternate = getNearestMountedFiber(fiber);\n if (null === alternate) throw Error(formatProdErrorMessage(188));\n return alternate !== fiber ? null : fiber;\n }\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return;\n if (null === parentA) break;\n var parentB = parentA.alternate;\n if (null === parentB) {\n b = parentA.return;\n if (null !== b) {\n a = b;\n continue;\n }\n break;\n }\n if (parentA.child === parentB.child) {\n for (parentB = parentA.child; parentB; ) {\n if (parentB === a) return assertIsMounted(parentA), fiber;\n if (parentB === b) return assertIsMounted(parentA), alternate;\n parentB = parentB.sibling;\n }\n throw Error(formatProdErrorMessage(188));\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentA;\n a = parentB;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) {\n for (child$0 = parentB.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentB;\n a = parentA;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) throw Error(formatProdErrorMessage(189));\n }\n }\n if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n }\n if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n var tag = node.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n for (node = node.child; null !== node; ) {\n tag = findCurrentHostFiberImpl(node);\n if (null !== tag) return tag;\n node = node.sibling;\n }\n return null;\n}\nvar assign = Object.assign,\n REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n}\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n ReactDOMSharedInternals =\n ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n sharedNotPendingObject = {\n pending: !1,\n data: null,\n method: null,\n action: null\n },\n valueStack = [],\n index = -1;\nfunction createCursor(defaultValue) {\n return { current: defaultValue };\n}\nfunction pop(cursor) {\n 0 > index ||\n ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n index++;\n valueStack[index] = cursor.current;\n cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n contextFiberStackCursor = createCursor(null),\n rootInstanceStackCursor = createCursor(null),\n hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance);\n push(contextFiberStackCursor, fiber);\n push(contextStackCursor, null);\n switch (nextRootInstance.nodeType) {\n case 9:\n case 11:\n fiber = (fiber = nextRootInstance.documentElement)\n ? (fiber = fiber.namespaceURI)\n ? getOwnHostContext(fiber)\n : 0\n : 0;\n break;\n default:\n if (\n ((fiber = nextRootInstance.tagName),\n (nextRootInstance = nextRootInstance.namespaceURI))\n )\n (nextRootInstance = getOwnHostContext(nextRootInstance)),\n (fiber = getChildHostContextProd(nextRootInstance, fiber));\n else\n switch (fiber) {\n case \"svg\":\n fiber = 1;\n break;\n case \"math\":\n fiber = 2;\n break;\n default:\n fiber = 0;\n }\n }\n pop(contextStackCursor);\n push(contextStackCursor, fiber);\n}\nfunction popHostContainer() {\n pop(contextStackCursor);\n pop(contextFiberStackCursor);\n pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n var context = contextStackCursor.current;\n var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n context !== JSCompiler_inline_result &&\n (push(contextFiberStackCursor, fiber),\n push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor), pop(contextFiberStackCursor));\n hostTransitionProviderCursor.current === fiber &&\n (pop(hostTransitionProviderCursor),\n (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" (<anonymous>)\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n reentry = !0;\n var previousPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$1) {\n control = x$1;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$2) {\n control = x$2;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n namePropDescriptor = RunInRootFrame = 0;\n RunInRootFrame < sampleLines.length &&\n !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n )\n RunInRootFrame++;\n for (\n ;\n namePropDescriptor < controlLines.length &&\n !controlLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n if (\n RunInRootFrame === sampleLines.length ||\n namePropDescriptor === controlLines.length\n )\n for (\n RunInRootFrame = sampleLines.length - 1,\n namePropDescriptor = controlLines.length - 1;\n 1 <= RunInRootFrame &&\n 0 <= namePropDescriptor &&\n sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n )\n namePropDescriptor--;\n for (\n ;\n 1 <= RunInRootFrame && 0 <= namePropDescriptor;\n RunInRootFrame--, namePropDescriptor--\n )\n if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n do\n if (\n (RunInRootFrame--,\n namePropDescriptor--,\n 0 > namePropDescriptor ||\n sampleLines[RunInRootFrame] !==\n controlLines[namePropDescriptor])\n ) {\n var frame =\n \"\\n\" +\n sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n fn.displayName &&\n frame.includes(\"<anonymous>\") &&\n (frame = frame.replace(\"<anonymous>\", fn.displayName));\n return frame;\n }\n while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n }\n break;\n }\n }\n } finally {\n (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n }\n return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n : \"\";\n}\nfunction describeFiber(fiber, childFiber) {\n switch (fiber.tag) {\n case 26:\n case 27:\n case 5:\n return describeBuiltInComponentFrame(fiber.type);\n case 16:\n return describeBuiltInComponentFrame(\"Lazy\");\n case 13:\n return fiber.child !== childFiber && null !== childFiber\n ? describeBuiltInComponentFrame(\"Suspense Fallback\")\n : describeBuiltInComponentFrame(\"Suspense\");\n case 19:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case 0:\n case 15:\n return describeNativeComponentFrame(fiber.type, !1);\n case 11:\n return describeNativeComponentFrame(fiber.type.render, !1);\n case 1:\n return describeNativeComponentFrame(fiber.type, !0);\n case 31:\n return describeBuiltInComponentFrame(\"Activity\");\n default:\n return \"\";\n }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n try {\n var info = \"\",\n previous = null;\n do\n (info += describeFiber(workInProgress, previous)),\n (previous = workInProgress),\n (workInProgress = workInProgress.return);\n while (workInProgress);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n cancelCallback$1 = Scheduler.unstable_cancelCallback,\n shouldYield = Scheduler.unstable_shouldYield,\n requestPaint = Scheduler.unstable_requestPaint,\n now = Scheduler.unstable_now,\n getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n NormalPriority$1 = Scheduler.unstable_NormalPriority,\n LowPriority = Scheduler.unstable_LowPriority,\n IdlePriority = Scheduler.unstable_IdlePriority,\n log$1 = Scheduler.log,\n unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n rendererID = null,\n injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n try {\n injectedHook.setStrictMode(rendererID, newIsStrictMode);\n } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n log = Math.log,\n LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionUpdateLane = 256,\n nextTransitionDeferredLane = 262144,\n nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n var pendingSyncLanes = lanes & 42;\n if (0 !== pendingSyncLanes) return pendingSyncLanes;\n switch (lanes & -lanes) {\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n return 64;\n case 128:\n return 128;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n return lanes & 261888;\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return lanes & 3932160;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return lanes & 62914560;\n case 67108864:\n return 67108864;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 0;\n default:\n return lanes;\n }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n var pendingLanes = root.pendingLanes;\n if (0 === pendingLanes) return 0;\n var nextLanes = 0,\n suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes;\n root = root.warmLanes;\n var nonIdlePendingLanes = pendingLanes & 134217727;\n 0 !== nonIdlePendingLanes\n ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n 0 !== pendingLanes\n ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n : ((pingedLanes &= nonIdlePendingLanes),\n 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n 0 !== nonIdlePendingLanes\n ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n : 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = pendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n return 0 === nextLanes\n ? 0\n : 0 !== wipLanes &&\n wipLanes !== nextLanes &&\n 0 === (wipLanes & suspendedLanes) &&\n ((suspendedLanes = nextLanes & -nextLanes),\n (rootHasPendingCommit = wipLanes & -wipLanes),\n suspendedLanes >= rootHasPendingCommit ||\n (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n ? wipLanes\n : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n return (\n 0 ===\n (root.pendingLanes &\n ~(root.suspendedLanes & ~root.pingedLanes) &\n renderLanes)\n );\n}\nfunction computeExpirationTime(lane, currentTime) {\n switch (lane) {\n case 1:\n case 2:\n case 4:\n case 8:\n case 64:\n return currentTime + 250;\n case 16:\n case 32:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return currentTime + 5e3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return -1;\n case 67108864:\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return -1;\n }\n}\nfunction claimNextRetryLane() {\n var lane = nextRetryLane;\n nextRetryLane <<= 1;\n 0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n return lane;\n}\nfunction createLaneMap(initial) {\n for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n root.pendingLanes |= updateLane;\n 268435456 !== updateLane &&\n ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n root,\n finishedLanes,\n remainingLanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n var previouslyPendingLanes = root.pendingLanes;\n root.pendingLanes = remainingLanes;\n root.suspendedLanes = 0;\n root.pingedLanes = 0;\n root.warmLanes = 0;\n root.expiredLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n root.errorRecoveryDisabledLanes &= remainingLanes;\n root.shellSuspendCounter = 0;\n var entanglements = root.entanglements,\n expirationTimes = root.expirationTimes,\n hiddenUpdates = root.hiddenUpdates;\n for (\n remainingLanes = previouslyPendingLanes & ~remainingLanes;\n 0 < remainingLanes;\n\n ) {\n var index$7 = 31 - clz32(remainingLanes),\n lane = 1 << index$7;\n entanglements[index$7] = 0;\n expirationTimes[index$7] = -1;\n var hiddenUpdatesForLane = hiddenUpdates[index$7];\n if (null !== hiddenUpdatesForLane)\n for (\n hiddenUpdates[index$7] = null, index$7 = 0;\n index$7 < hiddenUpdatesForLane.length;\n index$7++\n ) {\n var update = hiddenUpdatesForLane[index$7];\n null !== update && (update.lane &= -536870913);\n }\n remainingLanes &= ~lane;\n }\n 0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n 0 !== suspendedRetryLanes &&\n 0 === updatedLanes &&\n 0 !== root.tag &&\n (root.suspendedLanes |=\n suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n root.pendingLanes |= spawnedLane;\n root.suspendedLanes &= ~spawnedLane;\n var spawnedLaneIndex = 31 - clz32(spawnedLane);\n root.entangledLanes |= spawnedLane;\n root.entanglements[spawnedLaneIndex] =\n root.entanglements[spawnedLaneIndex] |\n 1073741824 |\n (entangledLanes & 261930);\n}\nfunction markRootEntangled(root, entangledLanes) {\n var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n for (root = root.entanglements; rootEntangledLanes; ) {\n var index$8 = 31 - clz32(rootEntangledLanes),\n lane = 1 << index$8;\n (lane & entangledLanes) | (root[index$8] & entangledLanes) &&\n (root[index$8] |= entangledLanes);\n rootEntangledLanes &= ~lane;\n }\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n var renderLane = renderLanes & -renderLanes;\n renderLane =\n 0 !== (renderLane & 42) ? 1 : getBumpedLaneForHydrationByLane(renderLane);\n return 0 !== (renderLane & (root.suspendedLanes | renderLanes))\n ? 0\n : renderLane;\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n switch (lane) {\n case 2:\n lane = 1;\n break;\n case 8:\n lane = 4;\n break;\n case 32:\n lane = 16;\n break;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n lane = 128;\n break;\n case 268435456:\n lane = 134217728;\n break;\n default:\n lane = 0;\n }\n return lane;\n}\nfunction lanesToEventPriority(lanes) {\n lanes &= -lanes;\n return 2 < lanes\n ? 8 < lanes\n ? 0 !== (lanes & 134217727)\n ? 32\n : 268435456\n : 8\n : 2;\n}\nfunction resolveUpdatePriority() {\n var updatePriority = ReactDOMSharedInternals.p;\n if (0 !== updatePriority) return updatePriority;\n updatePriority = window.event;\n return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n return (ReactDOMSharedInternals.p = priority), fn();\n } finally {\n ReactDOMSharedInternals.p = previousPriority;\n }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n internalInstanceKey = \"__reactFiber$\" + randomKey,\n internalPropsKey = \"__reactProps$\" + randomKey,\n internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlersKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n var targetInst = targetNode[internalInstanceKey];\n if (targetInst) return targetInst;\n for (var parentNode = targetNode.parentNode; parentNode; ) {\n if (\n (targetInst =\n parentNode[internalContainerInstanceKey] ||\n parentNode[internalInstanceKey])\n ) {\n parentNode = targetInst.alternate;\n if (\n null !== targetInst.child ||\n (null !== parentNode && null !== parentNode.child)\n )\n for (\n targetNode = getParentHydrationBoundary(targetNode);\n null !== targetNode;\n\n ) {\n if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n targetNode = getParentHydrationBoundary(targetNode);\n }\n return targetInst;\n }\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n return null;\n}\nfunction getInstanceFromNode(node) {\n if (\n (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n ) {\n var tag = node.tag;\n if (\n 5 === tag ||\n 6 === tag ||\n 13 === tag ||\n 31 === tag ||\n 26 === tag ||\n 27 === tag ||\n 3 === tag\n )\n return node;\n }\n return null;\n}\nfunction getNodeFromInstance(inst) {\n var tag = inst.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n var resources = root[internalRootNodeResourcesKey];\n resources ||\n (resources = root[internalRootNodeResourcesKey] =\n { hoistableStyles: new Map(), hoistableScripts: new Map() });\n return resources;\n}\nfunction markNodeAsHoistable(node) {\n node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n registrationNameDependencies[registrationName] = dependencies;\n for (\n registrationName = 0;\n registrationName < dependencies.length;\n registrationName++\n )\n allNativeEvents.add(dependencies[registrationName]);\n}\nvar VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n illegalAttributeNameCache = {},\n validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n return !1;\n}\nfunction setValueForAttribute(node, name, value) {\n if (isAttributeNameSafe(name))\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n node.removeAttribute(name);\n return;\n case \"boolean\":\n var prefix$10 = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix$10 && \"aria-\" !== prefix$10) {\n node.removeAttribute(name);\n return;\n }\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttributeNS(namespace, name, \"\" + value);\n }\n}\nfunction getToStringValue(value) {\n switch (typeof value) {\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return value;\n case \"object\":\n return value;\n default:\n return \"\";\n }\n}\nfunction isCheckable(elem) {\n var type = elem.type;\n return (\n (elem = elem.nodeName) &&\n \"input\" === elem.toLowerCase() &&\n (\"checkbox\" === type || \"radio\" === type)\n );\n}\nfunction trackValueOnNode(node, valueField, currentValue) {\n var descriptor = Object.getOwnPropertyDescriptor(\n node.constructor.prototype,\n valueField\n );\n if (\n !node.hasOwnProperty(valueField) &&\n \"undefined\" !== typeof descriptor &&\n \"function\" === typeof descriptor.get &&\n \"function\" === typeof descriptor.set\n ) {\n var get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: !0,\n get: function () {\n return get.call(this);\n },\n set: function (value) {\n currentValue = \"\" + value;\n set.call(this, value);\n }\n });\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n return {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = \"\" + value;\n },\n stopTracking: function () {\n node._valueTracker = null;\n delete node[valueField];\n }\n };\n }\n}\nfunction track(node) {\n if (!node._valueTracker) {\n var valueField = isCheckable(node) ? \"checked\" : \"value\";\n node._valueTracker = trackValueOnNode(\n node,\n valueField,\n \"\" + node[valueField]\n );\n }\n}\nfunction updateValueIfChanged(node) {\n if (!node) return !1;\n var tracker = node._valueTracker;\n if (!tracker) return !0;\n var lastValue = tracker.getValue();\n var value = \"\";\n node &&\n (value = isCheckable(node)\n ? node.checked\n ? \"true\"\n : \"false\"\n : node.value);\n node = value;\n return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof doc) return null;\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n return value.replace(\n escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n function (ch) {\n return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n }\n );\n}\nfunction updateInput(\n element,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n) {\n element.name = \"\";\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type\n ? (element.type = type)\n : element.removeAttribute(\"type\");\n if (null != value)\n if (\"number\" === type) {\n if ((0 === value && \"\" === element.value) || element.value != value)\n element.value = \"\" + getToStringValue(value);\n } else\n element.value !== \"\" + getToStringValue(value) &&\n (element.value = \"\" + getToStringValue(value));\n else\n (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n null != value\n ? setDefaultValue(element, type, getToStringValue(value))\n : null != defaultValue\n ? setDefaultValue(element, type, getToStringValue(defaultValue))\n : null != lastDefaultValue && element.removeAttribute(\"value\");\n null == checked &&\n null != defaultChecked &&\n (element.defaultChecked = !!defaultChecked);\n null != checked &&\n (element.checked =\n checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name\n ? (element.name = \"\" + getToStringValue(name))\n : element.removeAttribute(\"name\");\n}\nfunction initInput(\n element,\n value,\n defaultValue,\n checked,\n defaultChecked,\n type,\n name,\n isHydrating\n) {\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type &&\n (element.type = type);\n if (null != value || null != defaultValue) {\n if (\n !(\n (\"submit\" !== type && \"reset\" !== type) ||\n (void 0 !== value && null !== value)\n )\n ) {\n track(element);\n return;\n }\n defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n isHydrating || value === element.value || (element.value = value);\n element.defaultValue = value;\n }\n checked = null != checked ? checked : defaultChecked;\n checked =\n \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n element.checked = isHydrating ? element.checked : !!checked;\n element.defaultChecked = !!checked;\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name &&\n (element.name = name);\n track(element);\n}\nfunction setDefaultValue(node, type, value) {\n (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n node.defaultValue === \"\" + value ||\n (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n node = node.options;\n if (multiple) {\n multiple = {};\n for (var i = 0; i < propValue.length; i++)\n multiple[\"$\" + propValue[i]] = !0;\n for (propValue = 0; propValue < node.length; propValue++)\n (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n node[propValue].selected !== i && (node[propValue].selected = i),\n i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n } else {\n propValue = \"\" + getToStringValue(propValue);\n multiple = null;\n for (i = 0; i < node.length; i++) {\n if (node[i].value === propValue) {\n node[i].selected = !0;\n setDefaultSelected && (node[i].defaultSelected = !0);\n return;\n }\n null !== multiple || node[i].disabled || (multiple = node[i]);\n }\n null !== multiple && (multiple.selected = !0);\n }\n}\nfunction updateTextarea(element, value, defaultValue) {\n if (\n null != value &&\n ((value = \"\" + getToStringValue(value)),\n value !== element.value && (element.value = value),\n null == defaultValue)\n ) {\n element.defaultValue !== value && (element.defaultValue = value);\n return;\n }\n element.defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n if (null == value) {\n if (null != children) {\n if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n if (isArrayImpl(children)) {\n if (1 < children.length) throw Error(formatProdErrorMessage(93));\n children = children[0];\n }\n defaultValue = children;\n }\n null == defaultValue && (defaultValue = \"\");\n value = defaultValue;\n }\n defaultValue = getToStringValue(value);\n element.defaultValue = defaultValue;\n children = element.textContent;\n children === defaultValue &&\n \"\" !== children &&\n null !== children &&\n (element.value = children);\n track(element);\n}\nfunction setTextContent(node, text) {\n if (text) {\n var firstChild = node.firstChild;\n if (\n firstChild &&\n firstChild === node.lastChild &&\n 3 === firstChild.nodeType\n ) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n \" \"\n )\n);\nfunction setValueForStyle(style, styleName, value) {\n var isCustomProperty = 0 === styleName.indexOf(\"--\");\n null == value || \"boolean\" === typeof value || \"\" === value\n ? isCustomProperty\n ? style.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (style.cssFloat = \"\")\n : (style[styleName] = \"\")\n : isCustomProperty\n ? style.setProperty(styleName, value)\n : \"number\" !== typeof value ||\n 0 === value ||\n unitlessNumbers.has(styleName)\n ? \"float\" === styleName\n ? (style.cssFloat = value)\n : (style[styleName] = (\"\" + value).trim())\n : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n if (null != styles && \"object\" !== typeof styles)\n throw Error(formatProdErrorMessage(62));\n node = node.style;\n if (null != prevStyles) {\n for (var styleName in prevStyles)\n !prevStyles.hasOwnProperty(styleName) ||\n (null != styles && styles.hasOwnProperty(styleName)) ||\n (0 === styleName.indexOf(\"--\")\n ? node.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (node.cssFloat = \"\")\n : (node[styleName] = \"\"));\n for (var styleName$16 in styles)\n (styleName = styles[styleName$16]),\n styles.hasOwnProperty(styleName$16) &&\n prevStyles[styleName$16] !== styleName &&\n setValueForStyle(node, styleName$16, styleName);\n } else\n for (var styleName$17 in styles)\n styles.hasOwnProperty(styleName$17) &&\n setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n if (-1 === tagName.indexOf(\"-\")) return !1;\n switch (tagName) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n default:\n return !0;\n }\n}\nvar aliases = new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]),\n isJavaScriptProtocol =\n /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url)\n ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n : url;\n}\nfunction noop$1() {}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n nativeEvent.correspondingUseElement &&\n (nativeEvent = nativeEvent.correspondingUseElement);\n return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n var internalInstance = getInstanceFromNode(target);\n if (internalInstance && (target = internalInstance.stateNode)) {\n var props = target[internalPropsKey] || null;\n a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n case \"input\":\n updateInput(\n target,\n props.value,\n props.defaultValue,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name\n );\n internalInstance = props.name;\n if (\"radio\" === props.type && null != internalInstance) {\n for (props = target; props.parentNode; ) props = props.parentNode;\n props = props.querySelectorAll(\n 'input[name=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n \"\" + internalInstance\n ) +\n '\"][type=\"radio\"]'\n );\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n ) {\n var otherNode = props[internalInstance];\n if (otherNode !== target && otherNode.form === target.form) {\n var otherProps = otherNode[internalPropsKey] || null;\n if (!otherProps) throw Error(formatProdErrorMessage(90));\n updateInput(\n otherNode,\n otherProps.value,\n otherProps.defaultValue,\n otherProps.defaultValue,\n otherProps.checked,\n otherProps.defaultChecked,\n otherProps.type,\n otherProps.name\n );\n }\n }\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n )\n (otherNode = props[internalInstance]),\n otherNode.form === target.form && updateValueIfChanged(otherNode);\n }\n break a;\n case \"textarea\":\n updateTextarea(target, props.value, props.defaultValue);\n break a;\n case \"select\":\n (internalInstance = props.value),\n null != internalInstance &&\n updateOptions(target, !!props.multiple, internalInstance, !1);\n }\n }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n if (isInsideEventHandler) return fn(a, b);\n isInsideEventHandler = !0;\n try {\n var JSCompiler_inline_result = fn(a);\n return JSCompiler_inline_result;\n } finally {\n if (\n ((isInsideEventHandler = !1),\n null !== restoreTarget || null !== restoreQueue)\n )\n if (\n (flushSyncWork$1(),\n restoreTarget &&\n ((a = restoreTarget),\n (fn = restoreQueue),\n (restoreQueue = restoreTarget = null),\n restoreStateOfTarget(a),\n fn))\n )\n for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n }\n}\nfunction getListener(inst, registrationName) {\n var stateNode = inst.stateNode;\n if (null === stateNode) return null;\n var props = stateNode[internalPropsKey] || null;\n if (null === props) return null;\n stateNode = props[registrationName];\n a: switch (registrationName) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n case \"onMouseEnter\":\n (props = !props.disabled) ||\n ((inst = inst.type),\n (props = !(\n \"button\" === inst ||\n \"input\" === inst ||\n \"select\" === inst ||\n \"textarea\" === inst\n )));\n inst = !props;\n break a;\n default:\n inst = !1;\n }\n if (inst) return null;\n if (stateNode && \"function\" !== typeof stateNode)\n throw Error(\n formatProdErrorMessage(231, registrationName, typeof stateNode)\n );\n return stateNode;\n}\nvar canUseDOM = !(\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ),\n passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n try {\n var options = {};\n Object.defineProperty(options, \"passive\", {\n get: function () {\n passiveBrowserEventsSupported = !0;\n }\n });\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (e) {\n passiveBrowserEventsSupported = !1;\n }\nvar root = null,\n startText = null,\n fallbackText = null;\nfunction getData() {\n if (fallbackText) return fallbackText;\n var start,\n startValue = startText,\n startLength = startValue.length,\n end,\n endValue = \"value\" in root ? root.value : root.textContent,\n endLength = endValue.length;\n for (\n start = 0;\n start < startLength && startValue[start] === endValue[start];\n start++\n );\n var minEnd = startLength - start;\n for (\n end = 1;\n end <= minEnd &&\n startValue[startLength - end] === endValue[endLength - end];\n end++\n );\n return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n var keyCode = nativeEvent.keyCode;\n \"charCode\" in nativeEvent\n ? ((nativeEvent = nativeEvent.charCode),\n 0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n : (nativeEvent = keyCode);\n 10 === nativeEvent && (nativeEvent = 13);\n return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n return !0;\n}\nfunction functionThatReturnsFalse() {\n return !1;\n}\nfunction createSyntheticEvent(Interface) {\n function SyntheticBaseEvent(\n reactName,\n reactEventType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\n this._reactName = reactName;\n this._targetInst = targetInst;\n this.type = reactEventType;\n this.nativeEvent = nativeEvent;\n this.target = nativeEventTarget;\n this.currentTarget = null;\n for (var propName in Interface)\n Interface.hasOwnProperty(propName) &&\n ((reactName = Interface[propName]),\n (this[propName] = reactName\n ? reactName(nativeEvent)\n : nativeEvent[propName]));\n this.isDefaultPrevented = (\n null != nativeEvent.defaultPrevented\n ? nativeEvent.defaultPrevented\n : !1 === nativeEvent.returnValue\n )\n ? functionThatReturnsTrue\n : functionThatReturnsFalse;\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n }\n assign(SyntheticBaseEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = !0;\n var event = this.nativeEvent;\n event &&\n (event.preventDefault\n ? event.preventDefault()\n : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n (this.isDefaultPrevented = functionThatReturnsTrue));\n },\n stopPropagation: function () {\n var event = this.nativeEvent;\n event &&\n (event.stopPropagation\n ? event.stopPropagation()\n : \"unknown\" !== typeof event.cancelBubble &&\n (event.cancelBubble = !0),\n (this.isPropagationStopped = functionThatReturnsTrue));\n },\n persist: function () {},\n isPersistent: functionThatReturnsTrue\n });\n return SyntheticBaseEvent;\n}\nvar EventInterface = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n },\n SyntheticEvent = createSyntheticEvent(EventInterface),\n UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n lastMovementX,\n lastMovementY,\n lastMouseEvent,\n MouseEventInterface = assign({}, UIEventInterface, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: getEventModifierState,\n button: 0,\n buttons: 0,\n relatedTarget: function (event) {\n return void 0 === event.relatedTarget\n ? event.fromElement === event.srcElement\n ? event.toElement\n : event.fromElement\n : event.relatedTarget;\n },\n movementX: function (event) {\n if (\"movementX\" in event) return event.movementX;\n event !== lastMouseEvent &&\n (lastMouseEvent && \"mousemove\" === event.type\n ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n (lastMovementY = event.screenY - lastMouseEvent.screenY))\n : (lastMovementY = lastMovementX = 0),\n (lastMouseEvent = event));\n return lastMovementX;\n },\n movementY: function (event) {\n return \"movementY\" in event ? event.movementY : lastMovementY;\n }\n }),\n SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n AnimationEventInterface = assign({}, EventInterface, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n ClipboardEventInterface = assign({}, EventInterface, {\n clipboardData: function (event) {\n return \"clipboardData\" in event\n ? event.clipboardData\n : window.clipboardData;\n }\n }),\n SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n normalizeKey = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n },\n translateToKey = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n },\n modifierKeyToProp = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n };\nfunction modifierStateGetter(keyArg) {\n var nativeEvent = this.nativeEvent;\n return nativeEvent.getModifierState\n ? nativeEvent.getModifierState(keyArg)\n : (keyArg = modifierKeyToProp[keyArg])\n ? !!nativeEvent[keyArg]\n : !1;\n}\nfunction getEventModifierState() {\n return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n key: function (nativeEvent) {\n if (nativeEvent.key) {\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (\"Unidentified\" !== key) return key;\n }\n return \"keypress\" === nativeEvent.type\n ? ((nativeEvent = getEventCharCode(nativeEvent)),\n 13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n : \"\";\n },\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: getEventModifierState,\n charCode: function (event) {\n return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n },\n keyCode: function (event) {\n return \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n },\n which: function (event) {\n return \"keypress\" === event.type\n ? getEventCharCode(event)\n : \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n }\n }),\n SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n PointerEventInterface = assign({}, MouseEventInterface, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n }),\n SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n TouchEventInterface = assign({}, UIEventInterface, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: getEventModifierState\n }),\n SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n TransitionEventInterface = assign({}, EventInterface, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n WheelEventInterface = assign({}, MouseEventInterface, {\n deltaX: function (event) {\n return \"deltaX\" in event\n ? event.deltaX\n : \"wheelDeltaX\" in event\n ? -event.wheelDeltaX\n : 0;\n },\n deltaY: function (event) {\n return \"deltaY\" in event\n ? event.deltaY\n : \"wheelDeltaY\" in event\n ? -event.wheelDeltaY\n : \"wheelDelta\" in event\n ? -event.wheelDelta\n : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n }),\n SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n ToggleEventInterface = assign({}, EventInterface, {\n newState: 0,\n oldState: 0\n }),\n SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n END_KEYCODES = [9, 13, 27, 32],\n canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n documentMode = null;\ncanUseDOM &&\n \"documentMode\" in document &&\n (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n useFallbackCompositionData =\n canUseDOM &&\n (!canUseCompositionEvent ||\n (documentMode && 8 < documentMode && 11 >= documentMode)),\n SPACEBAR_CHAR = String.fromCharCode(32),\n hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"keyup\":\n return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n case \"keydown\":\n return 229 !== nativeEvent.keyCode;\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n default:\n return !1;\n }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n nativeEvent = nativeEvent.detail;\n return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n ? nativeEvent.data\n : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"compositionend\":\n return getDataFromCustomEvent(nativeEvent);\n case \"keypress\":\n if (32 !== nativeEvent.which) return null;\n hasSpaceKeypress = !0;\n return SPACEBAR_CHAR;\n case \"textInput\":\n return (\n (domEventName = nativeEvent.data),\n domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n );\n default:\n return null;\n }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n if (isComposing)\n return \"compositionend\" === domEventName ||\n (!canUseCompositionEvent &&\n isFallbackCompositionEnd(domEventName, nativeEvent))\n ? ((domEventName = getData()),\n (fallbackText = startText = root = null),\n (isComposing = !1),\n domEventName)\n : null;\n switch (domEventName) {\n case \"paste\":\n return null;\n case \"keypress\":\n if (\n !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n (nativeEvent.ctrlKey && nativeEvent.altKey)\n ) {\n if (nativeEvent.char && 1 < nativeEvent.char.length)\n return nativeEvent.char;\n if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case \"compositionend\":\n return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n ? null\n : nativeEvent.data;\n default:\n return null;\n }\n}\nvar supportedInputTypes = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return \"input\" === nodeName\n ? !!supportedInputTypes[elem.type]\n : \"textarea\" === nodeName\n ? !0\n : !1;\n}\nfunction createAndAccumulateChangeEvent(\n dispatchQueue,\n inst,\n nativeEvent,\n target\n) {\n restoreTarget\n ? restoreQueue\n ? restoreQueue.push(target)\n : (restoreQueue = [target])\n : (restoreTarget = target);\n inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n 0 < inst.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onChange\",\n \"change\",\n null,\n nativeEvent,\n target\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n var targetNode = getNodeFromInstance(targetInst);\n if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n var JSCompiler_inline_result$jscomp$286;\n if (canUseDOM) {\n var isSupported$jscomp$inline_427 = \"oninput\" in document;\n if (!isSupported$jscomp$inline_427) {\n var element$jscomp$inline_428 = document.createElement(\"div\");\n element$jscomp$inline_428.setAttribute(\"oninput\", \"return;\");\n isSupported$jscomp$inline_427 =\n \"function\" === typeof element$jscomp$inline_428.oninput;\n }\n JSCompiler_inline_result$jscomp$286 = isSupported$jscomp$inline_427;\n } else JSCompiler_inline_result$jscomp$286 = !1;\n isInputEventSupported =\n JSCompiler_inline_result$jscomp$286 &&\n (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n activeElement$1 &&\n (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n if (\n \"value\" === nativeEvent.propertyName &&\n getInstIfValueChanged(activeElementInst$1)\n ) {\n var dispatchQueue = [];\n createAndAccumulateChangeEvent(\n dispatchQueue,\n activeElementInst$1,\n nativeEvent,\n getEventTarget(nativeEvent)\n );\n batchedUpdates$1(runEventInBatch, dispatchQueue);\n }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n \"focusin\" === domEventName\n ? (stopWatchingForValueChange(),\n (activeElement$1 = target),\n (activeElementInst$1 = targetInst),\n activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n if (\n \"selectionchange\" === domEventName ||\n \"keyup\" === domEventName ||\n \"keydown\" === domEventName\n )\n return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n if (\"input\" === domEventName || \"change\" === domEventName)\n return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n if (objectIs(objA, objB)) return !0;\n if (\n \"object\" !== typeof objA ||\n null === objA ||\n \"object\" !== typeof objB ||\n null === objB\n )\n return !1;\n var keysA = Object.keys(objA),\n keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return !1;\n for (keysB = 0; keysB < keysA.length; keysB++) {\n var currentKey = keysA[keysB];\n if (\n !hasOwnProperty.call(objB, currentKey) ||\n !objectIs(objA[currentKey], objB[currentKey])\n )\n return !1;\n }\n return !0;\n}\nfunction getLeafNode(node) {\n for (; node && node.firstChild; ) node = node.firstChild;\n return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n root = 0;\n for (var nodeEnd; node; ) {\n if (3 === node.nodeType) {\n nodeEnd = root + node.textContent.length;\n if (root <= offset && nodeEnd >= offset)\n return { node: node, offset: offset - root };\n root = nodeEnd;\n }\n a: {\n for (; node; ) {\n if (node.nextSibling) {\n node = node.nextSibling;\n break a;\n }\n node = node.parentNode;\n }\n node = void 0;\n }\n node = getLeafNode(node);\n }\n}\nfunction containsNode(outerNode, innerNode) {\n return outerNode && innerNode\n ? outerNode === innerNode\n ? !0\n : outerNode && 3 === outerNode.nodeType\n ? !1\n : innerNode && 3 === innerNode.nodeType\n ? containsNode(outerNode, innerNode.parentNode)\n : \"contains\" in outerNode\n ? outerNode.contains(innerNode)\n : outerNode.compareDocumentPosition\n ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n : !1\n : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n containerInfo =\n null != containerInfo &&\n null != containerInfo.ownerDocument &&\n null != containerInfo.ownerDocument.defaultView\n ? containerInfo.ownerDocument.defaultView\n : window;\n for (\n var element = getActiveElement(containerInfo.document);\n element instanceof containerInfo.HTMLIFrameElement;\n\n ) {\n try {\n var JSCompiler_inline_result =\n \"string\" === typeof element.contentWindow.location.href;\n } catch (err) {\n JSCompiler_inline_result = !1;\n }\n if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n else break;\n element = getActiveElement(containerInfo.document);\n }\n return element;\n}\nfunction hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return (\n nodeName &&\n ((\"input\" === nodeName &&\n (\"text\" === elem.type ||\n \"search\" === elem.type ||\n \"tel\" === elem.type ||\n \"url\" === elem.type ||\n \"password\" === elem.type)) ||\n \"textarea\" === nodeName ||\n \"true\" === elem.contentEditable)\n );\n}\nvar skipSelectionChangeEvent =\n canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n activeElement = null,\n activeElementInst = null,\n lastSelection = null,\n mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n var doc =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget.document\n : 9 === nativeEventTarget.nodeType\n ? nativeEventTarget\n : nativeEventTarget.ownerDocument;\n mouseDown ||\n null == activeElement ||\n activeElement !== getActiveElement(doc) ||\n ((doc = activeElement),\n \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n : ((doc = (\n (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n window\n ).getSelection()),\n (doc = {\n anchorNode: doc.anchorNode,\n anchorOffset: doc.anchorOffset,\n focusNode: doc.focusNode,\n focusOffset: doc.focusOffset\n })),\n (lastSelection && shallowEqual(lastSelection, doc)) ||\n ((lastSelection = doc),\n (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n 0 < doc.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onSelect\",\n \"select\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n return prefixes;\n}\nvar vendorPrefixes = {\n animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n },\n prefixedEventNames = {},\n style = {};\ncanUseDOM &&\n ((style = document.createElement(\"div\").style),\n \"AnimationEvent\" in window ||\n (delete vendorPrefixes.animationend.animation,\n delete vendorPrefixes.animationiteration.animation,\n delete vendorPrefixes.animationstart.animation),\n \"TransitionEvent\" in window ||\n delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n if (!vendorPrefixes[eventName]) return eventName;\n var prefixMap = vendorPrefixes[eventName],\n styleProp;\n for (styleProp in prefixMap)\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n topLevelEventsToReactNames = new Map(),\n simpleEventPluginEvents =\n \"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\n \" \"\n );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n topLevelEventsToReactNames.set(domEventName, reactName);\n registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n concurrentQueues = [],\n concurrentQueuesIndex = 0,\n concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n for (\n var endIndex = concurrentQueuesIndex,\n i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n i < endIndex;\n\n ) {\n var fiber = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var queue = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var update = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var lane = concurrentQueues[i];\n concurrentQueues[i++] = null;\n if (null !== queue && null !== update) {\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n }\n 0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n concurrentQueues[concurrentQueuesIndex++] = fiber;\n concurrentQueues[concurrentQueuesIndex++] = queue;\n concurrentQueues[concurrentQueuesIndex++] = update;\n concurrentQueues[concurrentQueuesIndex++] = lane;\n concurrentlyUpdatedLanes |= lane;\n fiber.lanes |= lane;\n fiber = fiber.alternate;\n null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n enqueueUpdate$1(fiber, queue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n enqueueUpdate$1(fiber, null, null, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n sourceFiber.lanes |= lane;\n var alternate = sourceFiber.alternate;\n null !== alternate && (alternate.lanes |= lane);\n for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n (parent.childLanes |= lane),\n (alternate = parent.alternate),\n null !== alternate && (alternate.childLanes |= lane),\n 22 === parent.tag &&\n ((sourceFiber = parent.stateNode),\n null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n (sourceFiber = parent),\n (parent = parent.return);\n return 3 === sourceFiber.tag\n ? ((parent = sourceFiber.stateNode),\n isHidden &&\n null !== update &&\n ((isHidden = 31 - clz32(lane)),\n (sourceFiber = parent.hiddenUpdates),\n (alternate = sourceFiber[isHidden]),\n null === alternate\n ? (sourceFiber[isHidden] = [update])\n : alternate.push(update),\n (update.lane = lane | 536870912)),\n parent)\n : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n if (50 < nestedUpdateCount)\n throw (\n ((nestedUpdateCount = 0),\n (rootWithNestedUpdates = null),\n Error(formatProdErrorMessage(185)))\n );\n for (var parent = sourceFiber.return; null !== parent; )\n (sourceFiber = parent), (parent = sourceFiber.return);\n return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {};\nfunction FiberNode(tag, pendingProps, key, mode) {\n this.tag = tag;\n this.key = key;\n this.sibling =\n this.child =\n this.return =\n this.stateNode =\n this.type =\n this.elementType =\n null;\n this.index = 0;\n this.refCleanup = this.ref = null;\n this.pendingProps = pendingProps;\n this.dependencies =\n this.memoizedState =\n this.updateQueue =\n this.memoizedProps =\n null;\n this.mode = mode;\n this.subtreeFlags = this.flags = 0;\n this.deletions = null;\n this.childLanes = this.lanes = 0;\n this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n Component = Component.prototype;\n return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n var workInProgress = current.alternate;\n null === workInProgress\n ? ((workInProgress = createFiberImplClass(\n current.tag,\n pendingProps,\n current.key,\n current.mode\n )),\n (workInProgress.elementType = current.elementType),\n (workInProgress.type = current.type),\n (workInProgress.stateNode = current.stateNode),\n (workInProgress.alternate = current),\n (current.alternate = workInProgress))\n : ((workInProgress.pendingProps = pendingProps),\n (workInProgress.type = current.type),\n (workInProgress.flags = 0),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null));\n workInProgress.flags = current.flags & 65011712;\n workInProgress.childLanes = current.childLanes;\n workInProgress.lanes = current.lanes;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue;\n pendingProps = current.dependencies;\n workInProgress.dependencies =\n null === pendingProps\n ? null\n : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n workInProgress.refCleanup = current.refCleanup;\n return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n workInProgress.flags &= 65011714;\n var current = workInProgress.alternate;\n null === current\n ? ((workInProgress.childLanes = 0),\n (workInProgress.lanes = renderLanes),\n (workInProgress.child = null),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.memoizedProps = null),\n (workInProgress.memoizedState = null),\n (workInProgress.updateQueue = null),\n (workInProgress.dependencies = null),\n (workInProgress.stateNode = null))\n : ((workInProgress.childLanes = current.childLanes),\n (workInProgress.lanes = current.lanes),\n (workInProgress.child = current.child),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null),\n (workInProgress.memoizedProps = current.memoizedProps),\n (workInProgress.memoizedState = current.memoizedState),\n (workInProgress.updateQueue = current.updateQueue),\n (workInProgress.type = current.type),\n (renderLanes = current.dependencies),\n (workInProgress.dependencies =\n null === renderLanes\n ? null\n : {\n lanes: renderLanes.lanes,\n firstContext: renderLanes.firstContext\n }));\n return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n type,\n key,\n pendingProps,\n owner,\n mode,\n lanes\n) {\n var fiberTag = 0;\n owner = type;\n if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n else if (\"string\" === typeof type)\n fiberTag = isHostHoistableType(\n type,\n pendingProps,\n contextStackCursor.current\n )\n ? 26\n : \"html\" === type || \"head\" === type || \"body\" === type\n ? 27\n : 5;\n else\n a: switch (type) {\n case REACT_ACTIVITY_TYPE:\n return (\n (type = createFiberImplClass(31, pendingProps, key, mode)),\n (type.elementType = REACT_ACTIVITY_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n case REACT_STRICT_MODE_TYPE:\n fiberTag = 8;\n mode |= 24;\n break;\n case REACT_PROFILER_TYPE:\n return (\n (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n (type.elementType = REACT_PROFILER_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_TYPE:\n return (\n (type = createFiberImplClass(13, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_LIST_TYPE:\n return (\n (type = createFiberImplClass(19, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n (type.lanes = lanes),\n type\n );\n default:\n if (\"object\" === typeof type && null !== type)\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n fiberTag = 10;\n break a;\n case REACT_CONSUMER_TYPE:\n fiberTag = 9;\n break a;\n case REACT_FORWARD_REF_TYPE:\n fiberTag = 11;\n break a;\n case REACT_MEMO_TYPE:\n fiberTag = 14;\n break a;\n case REACT_LAZY_TYPE:\n fiberTag = 16;\n owner = null;\n break a;\n }\n fiberTag = 29;\n pendingProps = Error(\n formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n );\n owner = null;\n }\n key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n key.elementType = type;\n key.type = owner;\n key.lanes = lanes;\n return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n elements = createFiberImplClass(7, elements, key, mode);\n elements.lanes = lanes;\n return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n content = createFiberImplClass(6, content, null, mode);\n content.lanes = lanes;\n return content;\n}\nfunction createFiberFromDehydratedFragment(dehydratedNode) {\n var fiber = createFiberImplClass(18, null, null, 0);\n fiber.stateNode = dehydratedNode;\n return fiber;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n mode = createFiberImplClass(\n 4,\n null !== portal.children ? portal.children : [],\n portal.key,\n mode\n );\n mode.lanes = lanes;\n mode.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n implementation: portal.implementation\n };\n return mode;\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n if (\"object\" === typeof value && null !== value) {\n var existing = CapturedStacks.get(value);\n if (void 0 !== existing) return existing;\n source = {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n CapturedStacks.set(value, source);\n return source;\n }\n return {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n}\nvar forkStack = [],\n forkStackIndex = 0,\n treeForkProvider = null,\n treeForkCount = 0,\n idStack = [],\n idStackIndex = 0,\n treeContextProvider = null,\n treeContextId = 1,\n treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n forkStack[forkStackIndex++] = treeForkCount;\n forkStack[forkStackIndex++] = treeForkProvider;\n treeForkProvider = workInProgress;\n treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextProvider = workInProgress;\n var baseIdWithLeadingBit = treeContextId;\n workInProgress = treeContextOverflow;\n var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n baseIdWithLeadingBit &= ~(1 << baseLength);\n index += 1;\n var length = 32 - clz32(totalChildren) + baseLength;\n if (30 < length) {\n var numberOfOverflowBits = baseLength - (baseLength % 5);\n length = (\n baseIdWithLeadingBit &\n ((1 << numberOfOverflowBits) - 1)\n ).toString(32);\n baseIdWithLeadingBit >>= numberOfOverflowBits;\n baseLength -= numberOfOverflowBits;\n treeContextId =\n (1 << (32 - clz32(totalChildren) + baseLength)) |\n (index << baseLength) |\n baseIdWithLeadingBit;\n treeContextOverflow = length + workInProgress;\n } else\n (treeContextId =\n (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n null !== workInProgress.return &&\n (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n for (; workInProgress === treeForkProvider; )\n (treeForkProvider = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null),\n (treeForkCount = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null);\n for (; workInProgress === treeContextProvider; )\n (treeContextProvider = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextOverflow = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextId = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null);\n}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextId = suspendedContext.id;\n treeContextOverflow = suspendedContext.overflow;\n treeContextProvider = workInProgress;\n}\nvar hydrationParentFiber = null,\n nextHydratableInstance = null,\n isHydrating = !1,\n hydrationErrors = null,\n rootOrSingletonContext = !1,\n HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n var error = Error(\n formatProdErrorMessage(\n 418,\n 1 < arguments.length && void 0 !== arguments[1] && arguments[1]\n ? \"text\"\n : \"HTML\",\n \"\"\n )\n );\n queueHydrationError(createCapturedValueAtFiber(error, fiber));\n throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n var instance = fiber.stateNode,\n type = fiber.type,\n props = fiber.memoizedProps;\n instance[internalInstanceKey] = fiber;\n instance[internalPropsKey] = props;\n switch (type) {\n case \"dialog\":\n listenToNonDelegatedEvent(\"cancel\", instance);\n listenToNonDelegatedEvent(\"close\", instance);\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"video\":\n case \"audio\":\n for (type = 0; type < mediaEventTypes.length; type++)\n listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n break;\n case \"source\":\n listenToNonDelegatedEvent(\"error\", instance);\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", instance);\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", instance);\n break;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n initInput(\n instance,\n props.value,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name,\n !0\n );\n break;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n break;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", instance),\n initTextarea(instance, props.value, props.defaultValue, props.children);\n }\n type = props.children;\n (\"string\" !== typeof type &&\n \"number\" !== typeof type &&\n \"bigint\" !== typeof type) ||\n instance.textContent === \"\" + type ||\n !0 === props.suppressHydrationWarning ||\n checkForUnmatchedText(instance.textContent, type)\n ? (null != props.popover &&\n (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n listenToNonDelegatedEvent(\"toggle\", instance)),\n null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n null != props.onScrollEnd &&\n listenToNonDelegatedEvent(\"scrollend\", instance),\n null != props.onClick && (instance.onclick = noop$1),\n (instance = !0))\n : (instance = !1);\n instance || throwOnHydrationMismatch(fiber, !0);\n}\nfunction popToNextHostParent(fiber) {\n for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n switch (hydrationParentFiber.tag) {\n case 5:\n case 31:\n case 13:\n rootOrSingletonContext = !1;\n return;\n case 27:\n case 3:\n rootOrSingletonContext = !0;\n return;\n default:\n hydrationParentFiber = hydrationParentFiber.return;\n }\n}\nfunction popHydrationState(fiber) {\n if (fiber !== hydrationParentFiber) return !1;\n if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n var tag = fiber.tag,\n JSCompiler_temp;\n if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n if ((JSCompiler_temp = 5 === tag))\n (JSCompiler_temp = fiber.type),\n (JSCompiler_temp =\n !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n shouldSetTextContent(fiber.type, fiber.memoizedProps));\n JSCompiler_temp = !JSCompiler_temp;\n }\n JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n popToNextHostParent(fiber);\n if (13 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else if (31 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else\n 27 === tag\n ? ((tag = nextHydratableInstance),\n isSingletonScope(fiber.type)\n ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n (previousHydratableOnEnteringScopedSingleton = null),\n (nextHydratableInstance = fiber))\n : (nextHydratableInstance = tag))\n : (nextHydratableInstance = hydrationParentFiber\n ? getNextHydratable(fiber.stateNode.nextSibling)\n : null);\n return !0;\n}\nfunction resetHydrationState() {\n nextHydratableInstance = hydrationParentFiber = null;\n isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n var queuedErrors = hydrationErrors;\n null !== queuedErrors &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = queuedErrors)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n queuedErrors\n ),\n (hydrationErrors = null));\n return queuedErrors;\n}\nfunction queueHydrationError(error) {\n null === hydrationErrors\n ? (hydrationErrors = [error])\n : hydrationErrors.push(error);\n}\nvar valueCursor = createCursor(null),\n currentlyRenderingFiber$1 = null,\n lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n push(valueCursor, context._currentValue);\n context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n context._currentValue = valueCursor.current;\n pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n for (; null !== parent; ) {\n var alternate = parent.alternate;\n (parent.childLanes & renderLanes) !== renderLanes\n ? ((parent.childLanes |= renderLanes),\n null !== alternate && (alternate.childLanes |= renderLanes))\n : null !== alternate &&\n (alternate.childLanes & renderLanes) !== renderLanes &&\n (alternate.childLanes |= renderLanes);\n if (parent === propagationRoot) break;\n parent = parent.return;\n }\n}\nfunction propagateContextChanges(\n workInProgress,\n contexts,\n renderLanes,\n forcePropagateEntireTree\n) {\n var fiber = workInProgress.child;\n null !== fiber && (fiber.return = workInProgress);\n for (; null !== fiber; ) {\n var list = fiber.dependencies;\n if (null !== list) {\n var nextFiber = fiber.child;\n list = list.firstContext;\n a: for (; null !== list; ) {\n var dependency = list;\n list = fiber;\n for (var i = 0; i < contexts.length; i++)\n if (dependency.context === contexts[i]) {\n list.lanes |= renderLanes;\n dependency = list.alternate;\n null !== dependency && (dependency.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(\n list.return,\n renderLanes,\n workInProgress\n );\n forcePropagateEntireTree || (nextFiber = null);\n break a;\n }\n list = dependency.next;\n }\n } else if (18 === fiber.tag) {\n nextFiber = fiber.return;\n if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n nextFiber.lanes |= renderLanes;\n list = nextFiber.alternate;\n null !== list && (list.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n nextFiber = null;\n } else nextFiber = fiber.child;\n if (null !== nextFiber) nextFiber.return = fiber;\n else\n for (nextFiber = fiber; null !== nextFiber; ) {\n if (nextFiber === workInProgress) {\n nextFiber = null;\n break;\n }\n fiber = nextFiber.sibling;\n if (null !== fiber) {\n fiber.return = nextFiber.return;\n nextFiber = fiber;\n break;\n }\n nextFiber = nextFiber.return;\n }\n fiber = nextFiber;\n }\n}\nfunction propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n forcePropagateEntireTree\n) {\n current = null;\n for (\n var parent = workInProgress, isInsidePropagationBailout = !1;\n null !== parent;\n\n ) {\n if (!isInsidePropagationBailout)\n if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n else if (0 !== (parent.flags & 262144)) break;\n if (10 === parent.tag) {\n var currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent = currentParent.memoizedProps;\n if (null !== currentParent) {\n var context = parent.type;\n objectIs(parent.pendingProps.value, currentParent.value) ||\n (null !== current ? current.push(context) : (current = [context]));\n }\n } else if (parent === hostTransitionProviderCursor.current) {\n currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent.memoizedState.memoizedState !==\n parent.memoizedState.memoizedState &&\n (null !== current\n ? current.push(HostTransitionContext)\n : (current = [HostTransitionContext]));\n }\n parent = parent.return;\n }\n null !== current &&\n propagateContextChanges(\n workInProgress,\n current,\n renderLanes,\n forcePropagateEntireTree\n );\n workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n for (\n currentDependencies = currentDependencies.firstContext;\n null !== currentDependencies;\n\n ) {\n if (\n !objectIs(\n currentDependencies.context._currentValue,\n currentDependencies.memoizedValue\n )\n )\n return !0;\n currentDependencies = currentDependencies.next;\n }\n return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n currentlyRenderingFiber$1 = workInProgress;\n lastContextDependency = null;\n workInProgress = workInProgress.dependencies;\n null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n var value = context._currentValue;\n context = { context: context, memoizedValue: value, next: null };\n if (null === lastContextDependency) {\n if (null === consumer) throw Error(formatProdErrorMessage(308));\n lastContextDependency = context;\n consumer.dependencies = { lanes: 0, firstContext: context };\n consumer.flags |= 524288;\n } else lastContextDependency = lastContextDependency.next = context;\n return value;\n}\nvar AbortControllerLocal =\n \"undefined\" !== typeof AbortController\n ? AbortController\n : function () {\n var listeners = [],\n signal = (this.signal = {\n aborted: !1,\n addEventListener: function (type, listener) {\n listeners.push(listener);\n }\n });\n this.abort = function () {\n signal.aborted = !0;\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n },\n scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n NormalPriority = Scheduler.unstable_NormalPriority,\n CacheContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Consumer: null,\n Provider: null,\n _currentValue: null,\n _currentValue2: null,\n _threadCount: 0\n };\nfunction createCache() {\n return {\n controller: new AbortControllerLocal(),\n data: new Map(),\n refCount: 0\n };\n}\nfunction releaseCache(cache) {\n cache.refCount--;\n 0 === cache.refCount &&\n scheduleCallback$2(NormalPriority, function () {\n cache.controller.abort();\n });\n}\nvar currentEntangledListeners = null,\n currentEntangledPendingCount = 0,\n currentEntangledLane = 0,\n currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n if (null === currentEntangledListeners) {\n var entangledListeners = (currentEntangledListeners = []);\n currentEntangledPendingCount = 0;\n currentEntangledLane = requestTransitionLane();\n currentEntangledActionThenable = {\n status: \"pending\",\n value: void 0,\n then: function (resolve) {\n entangledListeners.push(resolve);\n }\n };\n }\n currentEntangledPendingCount++;\n thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n return thenable;\n}\nfunction pingEngtangledActionScope() {\n if (\n 0 === --currentEntangledPendingCount &&\n null !== currentEntangledListeners\n ) {\n null !== currentEntangledActionThenable &&\n (currentEntangledActionThenable.status = \"fulfilled\");\n var listeners = currentEntangledListeners;\n currentEntangledListeners = null;\n currentEntangledLane = 0;\n currentEntangledActionThenable = null;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n }\n}\nfunction chainThenableValue(thenable, result) {\n var listeners = [],\n thenableWithOverride = {\n status: \"pending\",\n value: null,\n reason: null,\n then: function (resolve) {\n listeners.push(resolve);\n }\n };\n thenable.then(\n function () {\n thenableWithOverride.status = \"fulfilled\";\n thenableWithOverride.value = result;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n },\n function (error) {\n thenableWithOverride.status = \"rejected\";\n thenableWithOverride.reason = error;\n for (error = 0; error < listeners.length; error++)\n (0, listeners[error])(void 0);\n }\n );\n return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n globalMostRecentTransitionTime = now();\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n entangleAsyncAction(transition, returnValue);\n null !== prevOnStartTransitionFinish &&\n prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n var cacheResumedFromPreviousRender = resumedCache.current;\n return null !== cacheResumedFromPreviousRender\n ? cacheResumedFromPreviousRender\n : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n null === prevCachePool\n ? push(resumedCache, resumedCache.current)\n : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n var cacheFromPool = peekCacheFromPool();\n return null === cacheFromPool\n ? null\n : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n SuspenseActionException = Error(formatProdErrorMessage(542)),\n noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n thenable = thenable.status;\n return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction trackUsedThenable(thenableState, thenable, index) {\n index = thenableState[index];\n void 0 === index\n ? thenableState.push(thenable)\n : index !== thenable && (thenable.then(noop$1, noop$1), (thenable = index));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n default:\n if (\"string\" === typeof thenable.status) thenable.then(noop$1, noop$1);\n else {\n thenableState = workInProgressRoot;\n if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n throw Error(formatProdErrorMessage(482));\n thenableState = thenable;\n thenableState.status = \"pending\";\n thenableState.then(\n function (fulfilledValue) {\n if (\"pending\" === thenable.status) {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n },\n function (error) {\n if (\"pending\" === thenable.status) {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n }\n );\n }\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n }\n suspendedThenable = thenable;\n throw SuspenseException;\n }\n}\nfunction resolveLazy(lazyType) {\n try {\n var init = lazyType._init;\n return init(lazyType._payload);\n } catch (x) {\n if (null !== x && \"object\" === typeof x && \"function\" === typeof x.then)\n throw ((suspendedThenable = x), SuspenseException);\n throw x;\n }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n var thenable = suspendedThenable;\n suspendedThenable = null;\n return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n if (\n rejectedReason === SuspenseException ||\n rejectedReason === SuspenseActionException\n )\n throw Error(formatProdErrorMessage(483));\n}\nvar thenableState$1 = null,\n thenableIndexCounter$1 = 0;\nfunction unwrapThenable(thenable) {\n var index = thenableIndexCounter$1;\n thenableIndexCounter$1 += 1;\n null === thenableState$1 && (thenableState$1 = []);\n return trackUsedThenable(thenableState$1, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n element = element.props.ref;\n workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectTypeImpl(returnFiber, newChild) {\n if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n throw Error(formatProdErrorMessage(525));\n returnFiber = Object.prototype.toString.call(newChild);\n throw Error(\n formatProdErrorMessage(\n 31,\n \"[object Object]\" === returnFiber\n ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n : returnFiber\n )\n );\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (shouldTrackSideEffects) {\n var deletions = returnFiber.deletions;\n null === deletions\n ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n : deletions.push(childToDelete);\n }\n }\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) return null;\n for (; null !== currentFirstChild; )\n deleteChild(returnFiber, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return null;\n }\n function mapRemainingChildren(currentFirstChild) {\n for (var existingChildren = new Map(); null !== currentFirstChild; )\n null !== currentFirstChild.key\n ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n : existingChildren.set(currentFirstChild.index, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return existingChildren;\n }\n function useFiber(fiber, pendingProps) {\n fiber = createWorkInProgress(fiber, pendingProps);\n fiber.index = 0;\n fiber.sibling = null;\n return fiber;\n }\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n if (!shouldTrackSideEffects)\n return (newFiber.flags |= 1048576), lastPlacedIndex;\n newIndex = newFiber.alternate;\n if (null !== newIndex)\n return (\n (newIndex = newIndex.index),\n newIndex < lastPlacedIndex\n ? ((newFiber.flags |= 67108866), lastPlacedIndex)\n : newIndex\n );\n newFiber.flags |= 67108866;\n return lastPlacedIndex;\n }\n function placeSingleChild(newFiber) {\n shouldTrackSideEffects &&\n null === newFiber.alternate &&\n (newFiber.flags |= 67108866);\n return newFiber;\n }\n function updateTextNode(returnFiber, current, textContent, lanes) {\n if (null === current || 6 !== current.tag)\n return (\n (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, textContent);\n current.return = returnFiber;\n return current;\n }\n function updateElement(returnFiber, current, element, lanes) {\n var elementType = element.type;\n if (elementType === REACT_FRAGMENT_TYPE)\n return updateFragment(\n returnFiber,\n current,\n element.props.children,\n lanes,\n element.key\n );\n if (\n null !== current &&\n (current.elementType === elementType ||\n (\"object\" === typeof elementType &&\n null !== elementType &&\n elementType.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(elementType) === current.type))\n )\n return (\n (current = useFiber(current, element.props)),\n coerceRef(current, element),\n (current.return = returnFiber),\n current\n );\n current = createFiberFromTypeAndProps(\n element.type,\n element.key,\n element.props,\n null,\n returnFiber.mode,\n lanes\n );\n coerceRef(current, element);\n current.return = returnFiber;\n return current;\n }\n function updatePortal(returnFiber, current, portal, lanes) {\n if (\n null === current ||\n 4 !== current.tag ||\n current.stateNode.containerInfo !== portal.containerInfo ||\n current.stateNode.implementation !== portal.implementation\n )\n return (\n (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, portal.children || []);\n current.return = returnFiber;\n return current;\n }\n function updateFragment(returnFiber, current, fragment, lanes, key) {\n if (null === current || 7 !== current.tag)\n return (\n (current = createFiberFromFragment(\n fragment,\n returnFiber.mode,\n lanes,\n key\n )),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, fragment);\n current.return = returnFiber;\n return current;\n }\n function createChild(returnFiber, newChild, lanes) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (newChild = createFiberFromText(\n \"\" + newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n lanes\n );\n case REACT_PORTAL_TYPE:\n return (\n (newChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n createChild(returnFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (newChild = createFiberFromFragment(\n newChild,\n returnFiber.mode,\n lanes,\n null\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"function\" === typeof newChild.then)\n return createChild(returnFiber, unwrapThenable(newChild), lanes);\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return createChild(\n returnFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n var key = null !== oldFiber ? oldFiber.key : null;\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return null !== key\n ? null\n : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return newChild.key === key\n ? updateElement(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_PORTAL_TYPE:\n return newChild.key === key\n ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateSlot(returnFiber, oldFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return null !== key\n ? null\n : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n if (\"function\" === typeof newChild.then)\n return updateSlot(\n returnFiber,\n oldFiber,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateSlot(\n returnFiber,\n oldFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n ) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updateElement(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_PORTAL_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updatePortal(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n );\n if (\"function\" === typeof newChild.then)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null;\n null !== oldFiber && newIdx < newChildren.length;\n newIdx++\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n newChildren[newIdx],\n lanes\n );\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (newIdx === newChildren.length)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; newIdx < newChildren.length; newIdx++)\n (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n null !== oldFiber &&\n ((currentFirstChild = placeChild(\n oldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = oldFiber)\n : (previousNewFiber.sibling = oldFiber),\n (previousNewFiber = oldFiber));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n newIdx < newChildren.length;\n newIdx++\n )\n (nextOldFiber = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n newChildren[newIdx],\n lanes\n )),\n null !== nextOldFiber &&\n (shouldTrackSideEffects &&\n null !== nextOldFiber.alternate &&\n oldFiber.delete(\n null === nextOldFiber.key ? newIdx : nextOldFiber.key\n ),\n (currentFirstChild = placeChild(\n nextOldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = nextOldFiber)\n : (previousNewFiber.sibling = nextOldFiber),\n (previousNewFiber = nextOldFiber));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n if (null == newChildren) throw Error(formatProdErrorMessage(151));\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null,\n step = newChildren.next();\n null !== oldFiber && !step.done;\n newIdx++, step = newChildren.next()\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (step.done)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; !step.done; newIdx++, step = newChildren.next())\n (step = createChild(returnFiber, step.value, lanes)),\n null !== step &&\n ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n !step.done;\n newIdx++, step = newChildren.next()\n )\n (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n null !== step &&\n (shouldTrackSideEffects &&\n null !== step.alternate &&\n oldFiber.delete(null === step.key ? newIdx : step.key),\n (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n ) {\n \"object\" === typeof newChild &&\n null !== newChild &&\n newChild.type === REACT_FRAGMENT_TYPE &&\n null === newChild.key &&\n (newChild = newChild.props.children);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n a: {\n for (var key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key) {\n key = newChild.type;\n if (key === REACT_FRAGMENT_TYPE) {\n if (7 === currentFirstChild.tag) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(\n currentFirstChild,\n newChild.props.children\n );\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n } else if (\n currentFirstChild.elementType === key ||\n (\"object\" === typeof key &&\n null !== key &&\n key.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(key) === currentFirstChild.type)\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.props);\n coerceRef(lanes, newChild);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n } else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n newChild.type === REACT_FRAGMENT_TYPE\n ? ((lanes = createFiberFromFragment(\n newChild.props.children,\n returnFiber.mode,\n lanes,\n newChild.key\n )),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : ((lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n (returnFiber = lanes));\n }\n return placeSingleChild(returnFiber);\n case REACT_PORTAL_TYPE:\n a: {\n for (key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key)\n if (\n 4 === currentFirstChild.tag &&\n currentFirstChild.stateNode.containerInfo ===\n newChild.containerInfo &&\n currentFirstChild.stateNode.implementation ===\n newChild.implementation\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.children || []);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n } else {\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n }\n else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n lanes.return = returnFiber;\n returnFiber = lanes;\n }\n return placeSingleChild(returnFiber);\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild))\n return reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n if (getIteratorFn(newChild)) {\n key = getIteratorFn(newChild);\n if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n newChild = key.call(newChild);\n return reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n }\n if (\"function\" === typeof newChild.then)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n ? ((newChild = \"\" + newChild),\n null !== currentFirstChild && 6 === currentFirstChild.tag\n ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n (lanes = useFiber(currentFirstChild, newChild)),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : (deleteRemainingChildren(returnFiber, currentFirstChild),\n (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n (lanes.return = returnFiber),\n (returnFiber = lanes)),\n placeSingleChild(returnFiber))\n : deleteRemainingChildren(returnFiber, currentFirstChild);\n }\n return function (returnFiber, currentFirstChild, newChild, lanes) {\n try {\n thenableIndexCounter$1 = 0;\n var firstChildFiber = reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n thenableState$1 = null;\n return firstChildFiber;\n } catch (x) {\n if (x === SuspenseException || x === SuspenseActionException) throw x;\n var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n fiber.lanes = lanes;\n fiber.return = returnFiber;\n return fiber;\n } finally {\n }\n };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n mountChildFibers = createChildReconciler(!1),\n hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n fiber.updateQueue = {\n baseState: fiber.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n callbacks: null\n };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n current = current.updateQueue;\n workInProgress.updateQueue === current &&\n (workInProgress.updateQueue = {\n baseState: current.baseState,\n firstBaseUpdate: current.firstBaseUpdate,\n lastBaseUpdate: current.lastBaseUpdate,\n shared: current.shared,\n callbacks: null\n });\n}\nfunction createUpdate(lane) {\n return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n var updateQueue = fiber.updateQueue;\n if (null === updateQueue) return null;\n updateQueue = updateQueue.shared;\n if (0 !== (executionContext & 2)) {\n var pending = updateQueue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n updateQueue.pending = update;\n update = getRootForUpdatedFiber(fiber);\n markUpdateLaneFromFiberToRoot(fiber, null, lane);\n return update;\n }\n enqueueUpdate$1(fiber, updateQueue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n fiber = fiber.updateQueue;\n if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {\n var queueLanes = fiber.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n fiber.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n var queue = workInProgress.updateQueue,\n current = workInProgress.alternate;\n if (\n null !== current &&\n ((current = current.updateQueue), queue === current)\n ) {\n var newFirst = null,\n newLast = null;\n queue = queue.firstBaseUpdate;\n if (null !== queue) {\n do {\n var clone = {\n lane: queue.lane,\n tag: queue.tag,\n payload: queue.payload,\n callback: null,\n next: null\n };\n null === newLast\n ? (newFirst = newLast = clone)\n : (newLast = newLast.next = clone);\n queue = queue.next;\n } while (null !== queue);\n null === newLast\n ? (newFirst = newLast = capturedUpdate)\n : (newLast = newLast.next = capturedUpdate);\n } else newFirst = newLast = capturedUpdate;\n queue = {\n baseState: current.baseState,\n firstBaseUpdate: newFirst,\n lastBaseUpdate: newLast,\n shared: current.shared,\n callbacks: current.callbacks\n };\n workInProgress.updateQueue = queue;\n return;\n }\n workInProgress = queue.lastBaseUpdate;\n null === workInProgress\n ? (queue.firstBaseUpdate = capturedUpdate)\n : (workInProgress.next = capturedUpdate);\n queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n if (didReadFromEntangledAsyncAction) {\n var entangledActionThenable = currentEntangledActionThenable;\n if (null !== entangledActionThenable) throw entangledActionThenable;\n }\n}\nfunction processUpdateQueue(\n workInProgress$jscomp$0,\n props,\n instance$jscomp$0,\n renderLanes\n) {\n didReadFromEntangledAsyncAction = !1;\n var queue = workInProgress$jscomp$0.updateQueue;\n hasForceUpdate = !1;\n var firstBaseUpdate = queue.firstBaseUpdate,\n lastBaseUpdate = queue.lastBaseUpdate,\n pendingQueue = queue.shared.pending;\n if (null !== pendingQueue) {\n queue.shared.pending = null;\n var lastPendingUpdate = pendingQueue,\n firstPendingUpdate = lastPendingUpdate.next;\n lastPendingUpdate.next = null;\n null === lastBaseUpdate\n ? (firstBaseUpdate = firstPendingUpdate)\n : (lastBaseUpdate.next = firstPendingUpdate);\n lastBaseUpdate = lastPendingUpdate;\n var current = workInProgress$jscomp$0.alternate;\n null !== current &&\n ((current = current.updateQueue),\n (pendingQueue = current.lastBaseUpdate),\n pendingQueue !== lastBaseUpdate &&\n (null === pendingQueue\n ? (current.firstBaseUpdate = firstPendingUpdate)\n : (pendingQueue.next = firstPendingUpdate),\n (current.lastBaseUpdate = lastPendingUpdate)));\n }\n if (null !== firstBaseUpdate) {\n var newState = queue.baseState;\n lastBaseUpdate = 0;\n current = firstPendingUpdate = lastPendingUpdate = null;\n pendingQueue = firstBaseUpdate;\n do {\n var updateLane = pendingQueue.lane & -536870913,\n isHiddenUpdate = updateLane !== pendingQueue.lane;\n if (\n isHiddenUpdate\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n 0 !== updateLane &&\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction = !0);\n null !== current &&\n (current = current.next =\n {\n lane: 0,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: null,\n next: null\n });\n a: {\n var workInProgress = workInProgress$jscomp$0,\n update = pendingQueue;\n updateLane = props;\n var instance = instance$jscomp$0;\n switch (update.tag) {\n case 1:\n workInProgress = update.payload;\n if (\"function\" === typeof workInProgress) {\n newState = workInProgress.call(instance, newState, updateLane);\n break a;\n }\n newState = workInProgress;\n break a;\n case 3:\n workInProgress.flags = (workInProgress.flags & -65537) | 128;\n case 0:\n workInProgress = update.payload;\n updateLane =\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, newState, updateLane)\n : workInProgress;\n if (null === updateLane || void 0 === updateLane) break a;\n newState = assign({}, newState, updateLane);\n break a;\n case 2:\n hasForceUpdate = !0;\n }\n }\n updateLane = pendingQueue.callback;\n null !== updateLane &&\n ((workInProgress$jscomp$0.flags |= 64),\n isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n (isHiddenUpdate = queue.callbacks),\n null === isHiddenUpdate\n ? (queue.callbacks = [updateLane])\n : isHiddenUpdate.push(updateLane));\n } else\n (isHiddenUpdate = {\n lane: updateLane,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: pendingQueue.callback,\n next: null\n }),\n null === current\n ? ((firstPendingUpdate = current = isHiddenUpdate),\n (lastPendingUpdate = newState))\n : (current = current.next = isHiddenUpdate),\n (lastBaseUpdate |= updateLane);\n pendingQueue = pendingQueue.next;\n if (null === pendingQueue)\n if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n break;\n else\n (isHiddenUpdate = pendingQueue),\n (pendingQueue = isHiddenUpdate.next),\n (isHiddenUpdate.next = null),\n (queue.lastBaseUpdate = isHiddenUpdate),\n (queue.shared.pending = null);\n } while (1);\n null === current && (lastPendingUpdate = newState);\n queue.baseState = lastPendingUpdate;\n queue.firstBaseUpdate = firstPendingUpdate;\n queue.lastBaseUpdate = current;\n null === firstBaseUpdate && (queue.shared.lanes = 0);\n workInProgressRootSkippedLanes |= lastBaseUpdate;\n workInProgress$jscomp$0.lanes = lastBaseUpdate;\n workInProgress$jscomp$0.memoizedState = newState;\n }\n}\nfunction callCallback(callback, context) {\n if (\"function\" !== typeof callback)\n throw Error(formatProdErrorMessage(191, callback));\n callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n var callbacks = updateQueue.callbacks;\n if (null !== callbacks)\n for (\n updateQueue.callbacks = null, updateQueue = 0;\n updateQueue < callbacks.length;\n updateQueue++\n )\n callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n fiber = entangledRenderLanes;\n push(prevEntangledRenderLanesCursor, fiber);\n push(currentTreeHiddenStackCursor, context);\n entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n pop(currentTreeHiddenStackCursor);\n pop(prevEntangledRenderLanesCursor);\n}\nvar suspenseHandlerStackCursor = createCursor(null),\n shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n var current = handler.alternate;\n push(suspenseStackCursor, suspenseStackCursor.current & 1);\n push(suspenseHandlerStackCursor, handler);\n null === shellBoundary &&\n (null === current || null !== currentTreeHiddenStackCursor.current\n ? (shellBoundary = handler)\n : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushDehydratedActivitySuspenseHandler(fiber) {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, fiber);\n null === shellBoundary && (shellBoundary = fiber);\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n 22 === fiber.tag\n ? (push(suspenseStackCursor, suspenseStackCursor.current),\n push(suspenseHandlerStackCursor, fiber),\n null === shellBoundary && (shellBoundary = fiber))\n : reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n pop(suspenseHandlerStackCursor);\n shellBoundary === fiber && (shellBoundary = null);\n pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n for (var node = row; null !== node; ) {\n if (13 === node.tag) {\n var state = node.memoizedState;\n if (\n null !== state &&\n ((state = state.dehydrated),\n null === state ||\n isSuspenseInstancePending(state) ||\n isSuspenseInstanceFallback(state))\n )\n return node;\n } else if (\n 19 === node.tag &&\n (\"forwards\" === node.memoizedProps.revealOrder ||\n \"backwards\" === node.memoizedProps.revealOrder ||\n \"unstable_legacy-backwards\" === node.memoizedProps.revealOrder ||\n \"together\" === node.memoizedProps.revealOrder)\n ) {\n if (0 !== (node.flags & 128)) return node;\n } else if (null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === row) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === row) return null;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n return null;\n}\nvar renderLanes = 0,\n currentlyRenderingFiber = null,\n currentHook = null,\n workInProgressHook = null,\n didScheduleRenderPhaseUpdate = !1,\n didScheduleRenderPhaseUpdateDuringThisPass = !1,\n shouldDoubleInvokeUserFnsInHooksDEV = !1,\n localIdCounter = 0,\n thenableIndexCounter = 0,\n thenableState = null,\n globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n if (null === prevDeps) return !1;\n for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n return !0;\n}\nfunction renderWithHooks(\n current,\n workInProgress,\n Component,\n props,\n secondArg,\n nextRenderLanes\n) {\n renderLanes = nextRenderLanes;\n currentlyRenderingFiber = workInProgress;\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.lanes = 0;\n ReactSharedInternals.H =\n null === current || null === current.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate;\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n nextRenderLanes = Component(props, secondArg);\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n didScheduleRenderPhaseUpdateDuringThisPass &&\n (nextRenderLanes = renderWithHooksAgain(\n workInProgress,\n Component,\n props,\n secondArg\n ));\n finishRenderingHooks(current);\n return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n ReactSharedInternals.H = ContextOnlyDispatcher;\n var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdate = !1;\n thenableIndexCounter = 0;\n thenableState = null;\n if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n null === current ||\n didReceiveUpdate ||\n ((current = current.dependencies),\n null !== current &&\n checkIfContextChanged(current) &&\n (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n currentlyRenderingFiber = workInProgress;\n var numberOfReRenders = 0;\n do {\n didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null);\n thenableIndexCounter = 0;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n numberOfReRenders += 1;\n workInProgressHook = currentHook = null;\n if (null != workInProgress.updateQueue) {\n var children = workInProgress.updateQueue;\n children.lastEffect = null;\n children.events = null;\n children.stores = null;\n null != children.memoCache && (children.memoCache.index = 0);\n }\n ReactSharedInternals.H = HooksDispatcherOnRerender;\n children = Component(props, secondArg);\n } while (didScheduleRenderPhaseUpdateDuringThisPass);\n return children;\n}\nfunction TransitionAwareHostComponent() {\n var dispatcher = ReactSharedInternals.H,\n maybeThenable = dispatcher.useState()[0];\n maybeThenable =\n \"function\" === typeof maybeThenable.then\n ? useThenable(maybeThenable)\n : maybeThenable;\n dispatcher = dispatcher.useState()[0];\n (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n (currentlyRenderingFiber.flags |= 1024);\n return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n var didRenderIdHook = 0 !== localIdCounter;\n localIdCounter = 0;\n return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n workInProgress.updateQueue = current.updateQueue;\n workInProgress.flags &= -2053;\n current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n if (didScheduleRenderPhaseUpdate) {\n for (\n workInProgress = workInProgress.memoizedState;\n null !== workInProgress;\n\n ) {\n var queue = workInProgress.queue;\n null !== queue && (queue.pending = null);\n workInProgress = workInProgress.next;\n }\n didScheduleRenderPhaseUpdate = !1;\n }\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n thenableIndexCounter = localIdCounter = 0;\n thenableState = null;\n}\nfunction mountWorkInProgressHook() {\n var hook = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n : (workInProgressHook = workInProgressHook.next = hook);\n return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n if (null === currentHook) {\n var nextCurrentHook = currentlyRenderingFiber.alternate;\n nextCurrentHook =\n null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n } else nextCurrentHook = currentHook.next;\n var nextWorkInProgressHook =\n null === workInProgressHook\n ? currentlyRenderingFiber.memoizedState\n : workInProgressHook.next;\n if (null !== nextWorkInProgressHook)\n (workInProgressHook = nextWorkInProgressHook),\n (currentHook = nextCurrentHook);\n else {\n if (null === nextCurrentHook) {\n if (null === currentlyRenderingFiber.alternate)\n throw Error(formatProdErrorMessage(467));\n throw Error(formatProdErrorMessage(310));\n }\n currentHook = nextCurrentHook;\n nextCurrentHook = {\n memoizedState: currentHook.memoizedState,\n baseState: currentHook.baseState,\n baseQueue: currentHook.baseQueue,\n queue: currentHook.queue,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n nextCurrentHook)\n : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n }\n return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n var index = thenableIndexCounter;\n thenableIndexCounter += 1;\n null === thenableState && (thenableState = []);\n thenable = trackUsedThenable(thenableState, thenable, index);\n index = currentlyRenderingFiber;\n null ===\n (null === workInProgressHook\n ? index.memoizedState\n : workInProgressHook.next) &&\n ((index = index.alternate),\n (ReactSharedInternals.H =\n null === index || null === index.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate));\n return thenable;\n}\nfunction use(usable) {\n if (null !== usable && \"object\" === typeof usable) {\n if (\"function\" === typeof usable.then) return useThenable(usable);\n if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n }\n throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n var memoCache = null,\n updateQueue = currentlyRenderingFiber.updateQueue;\n null !== updateQueue && (memoCache = updateQueue.memoCache);\n if (null == memoCache) {\n var current = currentlyRenderingFiber.alternate;\n null !== current &&\n ((current = current.updateQueue),\n null !== current &&\n ((current = current.memoCache),\n null != current &&\n (memoCache = {\n data: current.data.map(function (array) {\n return array.slice();\n }),\n index: 0\n })));\n }\n null == memoCache && (memoCache = { data: [], index: 0 });\n null === updateQueue &&\n ((updateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = updateQueue));\n updateQueue.memoCache = memoCache;\n updateQueue = memoCache.data[memoCache.index];\n if (void 0 === updateQueue)\n for (\n updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n current < size;\n current++\n )\n updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n memoCache.index++;\n return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n var hook = updateWorkInProgressHook();\n return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n var queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var baseQueue = hook.baseQueue,\n pendingQueue = queue.pending;\n if (null !== pendingQueue) {\n if (null !== baseQueue) {\n var baseFirst = baseQueue.next;\n baseQueue.next = pendingQueue.next;\n pendingQueue.next = baseFirst;\n }\n current.baseQueue = baseQueue = pendingQueue;\n queue.pending = null;\n }\n pendingQueue = hook.baseState;\n if (null === baseQueue) hook.memoizedState = pendingQueue;\n else {\n current = baseQueue.next;\n var newBaseQueueFirst = (baseFirst = null),\n newBaseQueueLast = null,\n update = current,\n didReadFromEntangledAsyncAction$60 = !1;\n do {\n var updateLane = update.lane & -536870913;\n if (\n updateLane !== update.lane\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n var revertLane = update.revertLane;\n if (0 === revertLane)\n null !== newBaseQueueLast &&\n (newBaseQueueLast = newBaseQueueLast.next =\n {\n lane: 0,\n revertLane: 0,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$60 = !0);\n else if ((renderLanes & revertLane) === revertLane) {\n update = update.next;\n revertLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$60 = !0);\n continue;\n } else\n (updateLane = {\n lane: 0,\n revertLane: update.revertLane,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n (currentlyRenderingFiber.lanes |= revertLane),\n (workInProgressRootSkippedLanes |= revertLane);\n updateLane = update.action;\n shouldDoubleInvokeUserFnsInHooksDEV &&\n reducer(pendingQueue, updateLane);\n pendingQueue = update.hasEagerState\n ? update.eagerState\n : reducer(pendingQueue, updateLane);\n } else\n (revertLane = {\n lane: updateLane,\n revertLane: update.revertLane,\n gesture: update.gesture,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n (currentlyRenderingFiber.lanes |= updateLane),\n (workInProgressRootSkippedLanes |= updateLane);\n update = update.next;\n } while (null !== update && update !== current);\n null === newBaseQueueLast\n ? (baseFirst = pendingQueue)\n : (newBaseQueueLast.next = newBaseQueueFirst);\n if (\n !objectIs(pendingQueue, hook.memoizedState) &&\n ((didReceiveUpdate = !0),\n didReadFromEntangledAsyncAction$60 &&\n ((reducer = currentEntangledActionThenable), null !== reducer))\n )\n throw reducer;\n hook.memoizedState = pendingQueue;\n hook.baseState = baseFirst;\n hook.baseQueue = newBaseQueueLast;\n queue.lastRenderedState = pendingQueue;\n }\n null === baseQueue && (queue.lanes = 0);\n return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n var hook = updateWorkInProgressHook(),\n queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var dispatch = queue.dispatch,\n lastRenderPhaseUpdate = queue.pending,\n newState = hook.memoizedState;\n if (null !== lastRenderPhaseUpdate) {\n queue.pending = null;\n var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n do (newState = reducer(newState, update.action)), (update = update.next);\n while (update !== lastRenderPhaseUpdate);\n objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n hook.memoizedState = newState;\n null === hook.baseQueue && (hook.baseState = newState);\n queue.lastRenderedState = newState;\n }\n return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = updateWorkInProgressHook(),\n isHydrating$jscomp$0 = isHydrating;\n if (isHydrating$jscomp$0) {\n if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else getServerSnapshot = getSnapshot();\n var snapshotChanged = !objectIs(\n (currentHook || hook).memoizedState,\n getServerSnapshot\n );\n snapshotChanged &&\n ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n hook = hook.queue;\n updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [\n subscribe\n ]);\n if (\n hook.getSnapshot !== getSnapshot ||\n snapshotChanged ||\n (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n ) {\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n updateStoreInstance.bind(\n null,\n fiber,\n hook,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n isHydrating$jscomp$0 ||\n 0 !== (renderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n fiber.flags |= 16384;\n fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n getSnapshot = currentlyRenderingFiber.updateQueue;\n null === getSnapshot\n ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = getSnapshot),\n (getSnapshot.stores = [fiber]))\n : ((renderedSnapshot = getSnapshot.stores),\n null === renderedSnapshot\n ? (getSnapshot.stores = [fiber])\n : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n inst.value = nextSnapshot;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n });\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction forceStoreRerender(fiber) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n var hook = mountWorkInProgressHook();\n if (\"function\" === typeof initialState) {\n var initialStateInitializer = initialState;\n initialState = initialStateInitializer();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n initialStateInitializer();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n }\n hook.memoizedState = hook.baseState = initialState;\n hook.queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialState\n };\n return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n hook.baseState = passthrough;\n return updateReducerImpl(\n hook,\n currentHook,\n \"function\" === typeof reducer ? reducer : basicStateReducer\n );\n}\nfunction dispatchActionState(\n fiber,\n actionQueue,\n setPendingState,\n setState,\n payload\n) {\n if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n fiber = actionQueue.action;\n if (null !== fiber) {\n var actionNode = {\n payload: payload,\n action: fiber,\n next: null,\n isTransition: !0,\n status: \"pending\",\n value: null,\n reason: null,\n listeners: [],\n then: function (listener) {\n actionNode.listeners.push(listener);\n }\n };\n null !== ReactSharedInternals.T\n ? setPendingState(!0)\n : (actionNode.isTransition = !1);\n setState(actionNode);\n setPendingState = actionQueue.pending;\n null === setPendingState\n ? ((actionNode.next = actionQueue.pending = actionNode),\n runActionStateAction(actionQueue, actionNode))\n : ((actionNode.next = setPendingState.next),\n (actionQueue.pending = setPendingState.next = actionNode));\n }\n}\nfunction runActionStateAction(actionQueue, node) {\n var action = node.action,\n payload = node.payload,\n prevState = actionQueue.state;\n if (node.isTransition) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = action(prevState, payload),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n handleActionReturnValue(actionQueue, node, returnValue);\n } catch (error) {\n onActionError(actionQueue, node, error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n } else\n try {\n (prevTransition = action(prevState, payload)),\n handleActionReturnValue(actionQueue, node, prevTransition);\n } catch (error$66) {\n onActionError(actionQueue, node, error$66);\n }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ? returnValue.then(\n function (nextState) {\n onActionSuccess(actionQueue, node, nextState);\n },\n function (error) {\n return onActionError(actionQueue, node, error);\n }\n )\n : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n actionNode.status = \"fulfilled\";\n actionNode.value = nextState;\n notifyActionListeners(actionNode);\n actionQueue.state = nextState;\n actionNode = actionQueue.pending;\n null !== actionNode &&\n ((nextState = actionNode.next),\n nextState === actionNode\n ? (actionQueue.pending = null)\n : ((nextState = nextState.next),\n (actionNode.next = nextState),\n runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n var last = actionQueue.pending;\n actionQueue.pending = null;\n if (null !== last) {\n last = last.next;\n do\n (actionNode.status = \"rejected\"),\n (actionNode.reason = error),\n notifyActionListeners(actionNode),\n (actionNode = actionNode.next);\n while (actionNode !== last);\n }\n actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n actionNode = actionNode.listeners;\n for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n if (isHydrating) {\n var ssrFormState = workInProgressRoot.formState;\n if (null !== ssrFormState) {\n a: {\n var JSCompiler_inline_result = currentlyRenderingFiber;\n if (isHydrating) {\n if (nextHydratableInstance) {\n b: {\n var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n for (\n var inRootOrSingleton = rootOrSingletonContext;\n 8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n ) {\n if (!inRootOrSingleton) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n if (null === JSCompiler_inline_result$jscomp$0) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n }\n inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n JSCompiler_inline_result$jscomp$0 =\n \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n ? JSCompiler_inline_result$jscomp$0\n : null;\n }\n if (JSCompiler_inline_result$jscomp$0) {\n nextHydratableInstance = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n JSCompiler_inline_result =\n \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n break a;\n }\n }\n throwOnHydrationMismatch(JSCompiler_inline_result);\n }\n JSCompiler_inline_result = !1;\n }\n JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n }\n }\n ssrFormState = mountWorkInProgressHook();\n ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n JSCompiler_inline_result = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: actionStateReducer,\n lastRenderedState: initialStateProp\n };\n ssrFormState.queue = JSCompiler_inline_result;\n ssrFormState = dispatchSetState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result\n );\n JSCompiler_inline_result.dispatch = ssrFormState;\n JSCompiler_inline_result = mountStateImpl(!1);\n inRootOrSingleton = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !1,\n JSCompiler_inline_result.queue\n );\n JSCompiler_inline_result = mountWorkInProgressHook();\n JSCompiler_inline_result$jscomp$0 = {\n state: initialStateProp,\n dispatch: null,\n action: action,\n pending: null\n };\n JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n ssrFormState = dispatchActionState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result$jscomp$0,\n inRootOrSingleton,\n ssrFormState\n );\n JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n JSCompiler_inline_result.memoizedState = action;\n return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n var stateHook = updateWorkInProgressHook();\n return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n currentStateHook = updateReducerImpl(\n stateHook,\n currentStateHook,\n actionStateReducer\n )[0];\n stateHook = updateReducer(basicStateReducer)[0];\n if (\n \"object\" === typeof currentStateHook &&\n null !== currentStateHook &&\n \"function\" === typeof currentStateHook.then\n )\n try {\n var state = useThenable(currentStateHook);\n } catch (x) {\n if (x === SuspenseException) throw SuspenseActionException;\n throw x;\n }\n else state = currentStateHook;\n currentStateHook = updateWorkInProgressHook();\n var actionQueue = currentStateHook.queue,\n dispatch = actionQueue.dispatch;\n action !== currentStateHook.memoizedState &&\n ((currentlyRenderingFiber.flags |= 2048),\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n actionStateActionEffect.bind(null, actionQueue, action),\n null\n ));\n return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n var stateHook = updateWorkInProgressHook(),\n currentStateHook = currentHook;\n if (null !== currentStateHook)\n return updateActionStateImpl(stateHook, currentStateHook, action);\n updateWorkInProgressHook();\n stateHook = stateHook.memoizedState;\n currentStateHook = updateWorkInProgressHook();\n var dispatch = currentStateHook.queue.dispatch;\n currentStateHook.memoizedState = action;\n return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, deps) {\n tag = { tag: tag, create: create, deps: deps, inst: inst, next: null };\n inst = currentlyRenderingFiber.updateQueue;\n null === inst &&\n ((inst = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = inst));\n create = inst.lastEffect;\n null === create\n ? (inst.lastEffect = tag.next = tag)\n : ((deps = create.next),\n (create.next = tag),\n (tag.next = deps),\n (inst.lastEffect = tag));\n return tag;\n}\nfunction updateRef() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = mountWorkInProgressHook();\n currentlyRenderingFiber.flags |= fiberFlags;\n hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n { destroy: void 0 },\n create,\n void 0 === deps ? null : deps\n );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var inst = hook.memoizedState.inst;\n null !== currentHook &&\n null !== deps &&\n areHookInputsEqual(deps, currentHook.memoizedState.deps)\n ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n : ((currentlyRenderingFiber.flags |= fiberFlags),\n (hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n inst,\n create,\n deps\n )));\n}\nfunction mountEffect(create, deps) {\n mountEffectImpl(8390656, 8, create, deps);\n}\nfunction updateEffect(create, deps) {\n updateEffectImpl(2048, 8, create, deps);\n}\nfunction useEffectEventImpl(payload) {\n currentlyRenderingFiber.flags |= 4;\n var componentUpdateQueue = currentlyRenderingFiber.updateQueue;\n if (null === componentUpdateQueue)\n (componentUpdateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = componentUpdateQueue),\n (componentUpdateQueue.events = [payload]);\n else {\n var events = componentUpdateQueue.events;\n null === events\n ? (componentUpdateQueue.events = [payload])\n : events.push(payload);\n }\n}\nfunction updateEvent(callback) {\n var ref = updateWorkInProgressHook().memoizedState;\n useEffectEventImpl({ ref: ref, nextImpl: callback });\n return function () {\n if (0 !== (executionContext & 2)) throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n}\nfunction updateInsertionEffect(create, deps) {\n return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n if (\"function\" === typeof ref) {\n create = create();\n var refCleanup = ref(create);\n return function () {\n \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n };\n }\n if (null !== ref && void 0 !== ref)\n return (\n (create = create()),\n (ref.current = create),\n function () {\n ref.current = null;\n }\n );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n hook.memoizedState = [callback, deps];\n return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n prevState = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [prevState, deps];\n return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n if (\n void 0 === initialValue ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (hook.memoizedState = value);\n hook.memoizedState = initialValue;\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n if (objectIs(value, prevValue)) return value;\n if (null !== currentTreeHiddenStackCursor.current)\n return (\n (hook = mountDeferredValueImpl(hook, value, initialValue)),\n objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n hook\n );\n if (\n 0 === (renderLanes & 42) ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (didReceiveUpdate = !0), (hook.memoizedState = value);\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p =\n 0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n try {\n var returnValue = callback(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n if (\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ) {\n var thenableForFinishedState = chainThenableValue(\n returnValue,\n finishedState\n );\n dispatchSetStateInternal(\n fiber,\n queue,\n thenableForFinishedState,\n requestUpdateLane(fiber)\n );\n } else\n dispatchSetStateInternal(\n fiber,\n queue,\n finishedState,\n requestUpdateLane(fiber)\n );\n } catch (error) {\n dispatchSetStateInternal(\n fiber,\n queue,\n { then: function () {}, status: \"rejected\", reason: error },\n requestUpdateLane()\n );\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction noop() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n var queue = ensureFormComponentIsStateful(formFiber).queue;\n startTransition(\n formFiber,\n queue,\n pendingState,\n sharedNotPendingObject,\n null === action\n ? noop\n : function () {\n requestFormReset$1(formFiber);\n return action(formData);\n }\n );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n var existingStateHook = formFiber.memoizedState;\n if (null !== existingStateHook) return existingStateHook;\n existingStateHook = {\n memoizedState: sharedNotPendingObject,\n baseState: sharedNotPendingObject,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: sharedNotPendingObject\n },\n next: null\n };\n var initialResetState = {};\n existingStateHook.next = {\n memoizedState: initialResetState,\n baseState: initialResetState,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialResetState\n },\n next: null\n };\n formFiber.memoizedState = existingStateHook;\n formFiber = formFiber.alternate;\n null !== formFiber && (formFiber.memoizedState = existingStateHook);\n return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n var stateHook = ensureFormComponentIsStateful(formFiber);\n null === stateHook.next && (stateHook = formFiber.alternate.memoizedState);\n dispatchSetStateInternal(\n formFiber,\n stateHook.next.queue,\n {},\n requestUpdateLane()\n );\n}\nfunction useHostTransitionStatus() {\n return readContext(HostTransitionContext);\n}\nfunction updateId() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n for (var provider = fiber.return; null !== provider; ) {\n switch (provider.tag) {\n case 24:\n case 3:\n var lane = requestUpdateLane();\n fiber = createUpdate(lane);\n var root$69 = enqueueUpdate(provider, fiber, lane);\n null !== root$69 &&\n (scheduleUpdateOnFiber(root$69, provider, lane),\n entangleTransitions(root$69, provider, lane));\n provider = { cache: createCache() };\n fiber.payload = provider;\n return;\n }\n provider = provider.return;\n }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n var lane = requestUpdateLane();\n action = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n isRenderPhaseUpdate(fiber)\n ? enqueueRenderPhaseUpdate(queue, action)\n : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n null !== action &&\n (scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n var lane = requestUpdateLane();\n dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n var update = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n else {\n var alternate = fiber.alternate;\n if (\n 0 === fiber.lanes &&\n (null === alternate || 0 === alternate.lanes) &&\n ((alternate = queue.lastRenderedReducer), null !== alternate)\n )\n try {\n var currentState = queue.lastRenderedState,\n eagerState = alternate(currentState, action);\n update.hasEagerState = !0;\n update.eagerState = eagerState;\n if (objectIs(eagerState, currentState))\n return (\n enqueueUpdate$1(fiber, queue, update, 0),\n null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n !1\n );\n } catch (error) {\n } finally {\n }\n action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n if (null !== action)\n return (\n scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane),\n !0\n );\n }\n return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n action = {\n lane: 2,\n revertLane: requestTransitionLane(),\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) {\n if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n } else\n (throwIfDuringRender = enqueueConcurrentHookUpdate(\n fiber,\n queue,\n action,\n 2\n )),\n null !== throwIfDuringRender &&\n scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n var alternate = fiber.alternate;\n return (\n fiber === currentlyRenderingFiber ||\n (null !== alternate && alternate === currentlyRenderingFiber)\n );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n !0;\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n if (0 !== (lane & 4194048)) {\n var queueLanes = queue.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n queue.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nvar ContextOnlyDispatcher = {\n readContext: readContext,\n use: use,\n useCallback: throwInvalidHookError,\n useContext: throwInvalidHookError,\n useEffect: throwInvalidHookError,\n useImperativeHandle: throwInvalidHookError,\n useLayoutEffect: throwInvalidHookError,\n useInsertionEffect: throwInvalidHookError,\n useMemo: throwInvalidHookError,\n useReducer: throwInvalidHookError,\n useRef: throwInvalidHookError,\n useState: throwInvalidHookError,\n useDebugValue: throwInvalidHookError,\n useDeferredValue: throwInvalidHookError,\n useTransition: throwInvalidHookError,\n useSyncExternalStore: throwInvalidHookError,\n useId: throwInvalidHookError,\n useHostTransitionStatus: throwInvalidHookError,\n useFormState: throwInvalidHookError,\n useActionState: throwInvalidHookError,\n useOptimistic: throwInvalidHookError,\n useMemoCache: throwInvalidHookError,\n useCacheRefresh: throwInvalidHookError\n};\nContextOnlyDispatcher.useEffectEvent = throwInvalidHookError;\nvar HooksDispatcherOnMount = {\n readContext: readContext,\n use: use,\n useCallback: function (callback, deps) {\n mountWorkInProgressHook().memoizedState = [\n callback,\n void 0 === deps ? null : deps\n ];\n return callback;\n },\n useContext: readContext,\n useEffect: mountEffect,\n useImperativeHandle: function (ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n mountEffectImpl(\n 4194308,\n 4,\n imperativeHandleEffect.bind(null, create, ref),\n deps\n );\n },\n useLayoutEffect: function (create, deps) {\n return mountEffectImpl(4194308, 4, create, deps);\n },\n useInsertionEffect: function (create, deps) {\n mountEffectImpl(4, 2, create, deps);\n },\n useMemo: function (nextCreate, deps) {\n var hook = mountWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var nextValue = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [nextValue, deps];\n return nextValue;\n },\n useReducer: function (reducer, initialArg, init) {\n var hook = mountWorkInProgressHook();\n if (void 0 !== init) {\n var initialState = init(initialArg);\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n init(initialArg);\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n } else initialState = initialArg;\n hook.memoizedState = hook.baseState = initialState;\n reducer = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: reducer,\n lastRenderedState: initialState\n };\n hook.queue = reducer;\n reducer = reducer.dispatch = dispatchReducerAction.bind(\n null,\n currentlyRenderingFiber,\n reducer\n );\n return [hook.memoizedState, reducer];\n },\n useRef: function (initialValue) {\n var hook = mountWorkInProgressHook();\n initialValue = { current: initialValue };\n return (hook.memoizedState = initialValue);\n },\n useState: function (initialState) {\n initialState = mountStateImpl(initialState);\n var queue = initialState.queue,\n dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n queue.dispatch = dispatch;\n return [initialState.memoizedState, dispatch];\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = mountWorkInProgressHook();\n return mountDeferredValueImpl(hook, value, initialValue);\n },\n useTransition: function () {\n var stateHook = mountStateImpl(!1);\n stateHook = startTransition.bind(\n null,\n currentlyRenderingFiber,\n stateHook.queue,\n !0,\n !1\n );\n mountWorkInProgressHook().memoizedState = stateHook;\n return [!1, stateHook];\n },\n useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = mountWorkInProgressHook();\n if (isHydrating) {\n if (void 0 === getServerSnapshot)\n throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else {\n getServerSnapshot = getSnapshot();\n if (null === workInProgressRoot)\n throw Error(formatProdErrorMessage(349));\n 0 !== (workInProgressRootRenderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n hook.memoizedState = getServerSnapshot;\n var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n hook.queue = inst;\n mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n subscribe\n ]);\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n updateStoreInstance.bind(\n null,\n fiber,\n inst,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n return getServerSnapshot;\n },\n useId: function () {\n var hook = mountWorkInProgressHook(),\n identifierPrefix = workInProgressRoot.identifierPrefix;\n if (isHydrating) {\n var JSCompiler_inline_result = treeContextOverflow;\n var idWithLeadingBit = treeContextId;\n JSCompiler_inline_result =\n (\n idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n ).toString(32) + JSCompiler_inline_result;\n identifierPrefix =\n \"_\" + identifierPrefix + \"R_\" + JSCompiler_inline_result;\n JSCompiler_inline_result = localIdCounter++;\n 0 < JSCompiler_inline_result &&\n (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n identifierPrefix += \"_\";\n } else\n (JSCompiler_inline_result = globalClientIdCounter++),\n (identifierPrefix =\n \"_\" +\n identifierPrefix +\n \"r_\" +\n JSCompiler_inline_result.toString(32) +\n \"_\");\n return (hook.memoizedState = identifierPrefix);\n },\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: mountActionState,\n useActionState: mountActionState,\n useOptimistic: function (passthrough) {\n var hook = mountWorkInProgressHook();\n hook.memoizedState = hook.baseState = passthrough;\n var queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: null,\n lastRenderedState: null\n };\n hook.queue = queue;\n hook = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !0,\n queue\n );\n queue.dispatch = hook;\n return [passthrough, hook];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: function () {\n return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n null,\n currentlyRenderingFiber\n ));\n },\n useEffectEvent: function (callback) {\n var hook = mountWorkInProgressHook(),\n ref = { impl: callback };\n hook.memoizedState = ref;\n return function () {\n if (0 !== (executionContext & 2))\n throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n }\n },\n HooksDispatcherOnUpdate = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: updateReducer,\n useRef: updateRef,\n useState: function () {\n return updateReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = updateReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: updateActionState,\n useActionState: updateActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n };\nHooksDispatcherOnUpdate.useEffectEvent = updateEvent;\nvar HooksDispatcherOnRerender = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: rerenderReducer,\n useRef: updateRef,\n useState: function () {\n return rerenderReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return null === currentHook\n ? mountDeferredValueImpl(hook, value, initialValue)\n : updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: rerenderActionState,\n useActionState: rerenderActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n if (null !== currentHook)\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n hook.baseState = passthrough;\n return [passthrough, hook.queue.dispatch];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n};\nHooksDispatcherOnRerender.useEffectEvent = updateEvent;\nfunction applyDerivedStateFromProps(\n workInProgress,\n ctor,\n getDerivedStateFromProps,\n nextProps\n) {\n ctor = workInProgress.memoizedState;\n getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n getDerivedStateFromProps =\n null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n ? ctor\n : assign({}, ctor, getDerivedStateFromProps);\n workInProgress.memoizedState = getDerivedStateFromProps;\n 0 === workInProgress.lanes &&\n (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n enqueueSetState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueReplaceState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 1;\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueForceUpdate: function (inst, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 2;\n void 0 !== callback && null !== callback && (update.callback = callback);\n callback = enqueueUpdate(inst, update, lane);\n null !== callback &&\n (scheduleUpdateOnFiber(callback, inst, lane),\n entangleTransitions(callback, inst, lane));\n }\n};\nfunction checkShouldComponentUpdate(\n workInProgress,\n ctor,\n oldProps,\n newProps,\n oldState,\n newState,\n nextContext\n) {\n workInProgress = workInProgress.stateNode;\n return \"function\" === typeof workInProgress.shouldComponentUpdate\n ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n : ctor.prototype && ctor.prototype.isPureReactComponent\n ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n : !0;\n}\nfunction callComponentWillReceiveProps(\n workInProgress,\n instance,\n newProps,\n nextContext\n) {\n workInProgress = instance.state;\n \"function\" === typeof instance.componentWillReceiveProps &&\n instance.componentWillReceiveProps(newProps, nextContext);\n \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n instance.state !== workInProgress &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n var newProps = baseProps;\n if (\"ref\" in baseProps) {\n newProps = {};\n for (var propName in baseProps)\n \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n }\n if ((Component = Component.defaultProps)) {\n newProps === baseProps && (newProps = assign({}, newProps));\n for (var propName$73 in Component)\n void 0 === newProps[propName$73] &&\n (newProps[propName$73] = Component[propName$73]);\n }\n return newProps;\n}\nfunction defaultOnUncaughtError(error) {\n reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n try {\n var onUncaughtError = root.onUncaughtError;\n onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n } catch (e$74) {\n setTimeout(function () {\n throw e$74;\n });\n }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n try {\n var onCaughtError = root.onCaughtError;\n onCaughtError(errorInfo.value, {\n componentStack: errorInfo.stack,\n errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n });\n } catch (e$75) {\n setTimeout(function () {\n throw e$75;\n });\n }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n lane.payload = { element: null };\n lane.callback = function () {\n logUncaughtError(root, errorInfo);\n };\n return lane;\n}\nfunction createClassErrorUpdate(lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n if (\"function\" === typeof getDerivedStateFromError) {\n var error = errorInfo.value;\n update.payload = function () {\n return getDerivedStateFromError(error);\n };\n update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n };\n }\n var inst = fiber.stateNode;\n null !== inst &&\n \"function\" === typeof inst.componentDidCatch &&\n (update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n \"function\" !== typeof getDerivedStateFromError &&\n (null === legacyErrorBoundariesThatAlreadyFailed\n ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n : legacyErrorBoundariesThatAlreadyFailed.add(this));\n var stack = errorInfo.stack;\n this.componentDidCatch(errorInfo.value, {\n componentStack: null !== stack ? stack : \"\"\n });\n });\n}\nfunction throwException(\n root,\n returnFiber,\n sourceFiber,\n value,\n rootRenderLanes\n) {\n sourceFiber.flags |= 32768;\n if (\n null !== value &&\n \"object\" === typeof value &&\n \"function\" === typeof value.then\n ) {\n returnFiber = sourceFiber.alternate;\n null !== returnFiber &&\n propagateParentContextChanges(\n returnFiber,\n sourceFiber,\n rootRenderLanes,\n !0\n );\n sourceFiber = suspenseHandlerStackCursor.current;\n if (null !== sourceFiber) {\n switch (sourceFiber.tag) {\n case 31:\n case 13:\n return (\n null === shellBoundary\n ? renderDidSuspendDelayIfPossible()\n : null === sourceFiber.alternate &&\n 0 === workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 3),\n (sourceFiber.flags &= -257),\n (sourceFiber.flags |= 65536),\n (sourceFiber.lanes = rootRenderLanes),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? (sourceFiber.updateQueue = new Set([value]))\n : returnFiber.add(value),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n case 22:\n return (\n (sourceFiber.flags |= 65536),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? ((returnFiber = {\n transitions: null,\n markerInstances: null,\n retryQueue: new Set([value])\n }),\n (sourceFiber.updateQueue = returnFiber))\n : ((sourceFiber = returnFiber.retryQueue),\n null === sourceFiber\n ? (returnFiber.retryQueue = new Set([value]))\n : sourceFiber.add(value)),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n }\n throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n }\n attachPingListener(root, value, rootRenderLanes);\n renderDidSuspendDelayIfPossible();\n return !1;\n }\n if (isHydrating)\n return (\n (returnFiber = suspenseHandlerStackCursor.current),\n null !== returnFiber\n ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n (returnFiber.flags |= 65536),\n (returnFiber.lanes = rootRenderLanes),\n value !== HydrationMismatchException &&\n ((root = Error(formatProdErrorMessage(422), { cause: value })),\n queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n : (value !== HydrationMismatchException &&\n ((returnFiber = Error(formatProdErrorMessage(423), {\n cause: value\n })),\n queueHydrationError(\n createCapturedValueAtFiber(returnFiber, sourceFiber)\n )),\n (root = root.current.alternate),\n (root.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (root.lanes |= rootRenderLanes),\n (value = createCapturedValueAtFiber(value, sourceFiber)),\n (rootRenderLanes = createRootErrorUpdate(\n root.stateNode,\n value,\n rootRenderLanes\n )),\n enqueueCapturedUpdate(root, rootRenderLanes),\n 4 !== workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 2)),\n !1\n );\n var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n null === workInProgressRootConcurrentErrors\n ? (workInProgressRootConcurrentErrors = [wrapperError])\n : workInProgressRootConcurrentErrors.push(wrapperError);\n 4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n if (null === returnFiber) return !0;\n value = createCapturedValueAtFiber(value, sourceFiber);\n sourceFiber = returnFiber;\n do {\n switch (sourceFiber.tag) {\n case 3:\n return (\n (sourceFiber.flags |= 65536),\n (root = rootRenderLanes & -rootRenderLanes),\n (sourceFiber.lanes |= root),\n (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n enqueueCapturedUpdate(sourceFiber, root),\n !1\n );\n case 1:\n if (\n ((returnFiber = sourceFiber.type),\n (wrapperError = sourceFiber.stateNode),\n 0 === (sourceFiber.flags & 128) &&\n (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n (null !== wrapperError &&\n \"function\" === typeof wrapperError.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n )\n return (\n (sourceFiber.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (sourceFiber.lanes |= rootRenderLanes),\n (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n initializeClassErrorUpdate(\n rootRenderLanes,\n root,\n sourceFiber,\n value\n ),\n enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n !1\n );\n }\n sourceFiber = sourceFiber.return;\n } while (null !== sourceFiber);\n return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n workInProgress.child =\n null === current\n ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n : reconcileChildFibers(\n workInProgress,\n current.child,\n nextChildren,\n renderLanes\n );\n}\nfunction updateForwardRef(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n Component = Component.render;\n var ref = workInProgress.ref;\n if (\"ref\" in nextProps) {\n var propsWithoutRef = {};\n for (var key in nextProps)\n \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n } else propsWithoutRef = nextProps;\n prepareToReadContext(workInProgress);\n nextProps = renderWithHooks(\n current,\n workInProgress,\n Component,\n propsWithoutRef,\n ref,\n renderLanes\n );\n key = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && key && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null === current) {\n var type = Component.type;\n if (\n \"function\" === typeof type &&\n !shouldConstruct(type) &&\n void 0 === type.defaultProps &&\n null === Component.compare\n )\n return (\n (workInProgress.tag = 15),\n (workInProgress.type = type),\n updateSimpleMemoComponent(\n current,\n workInProgress,\n type,\n nextProps,\n renderLanes\n )\n );\n current = createFiberFromTypeAndProps(\n Component.type,\n null,\n nextProps,\n workInProgress,\n workInProgress.mode,\n renderLanes\n );\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n }\n type = current.child;\n if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n var prevProps = type.memoizedProps;\n Component = Component.compare;\n Component = null !== Component ? Component : shallowEqual;\n if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n workInProgress.flags |= 1;\n current = createWorkInProgress(type, nextProps);\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null !== current) {\n var prevProps = current.memoizedProps;\n if (\n shallowEqual(prevProps, nextProps) &&\n current.ref === workInProgress.ref\n )\n if (\n ((didReceiveUpdate = !1),\n (workInProgress.pendingProps = nextProps = prevProps),\n checkScheduledUpdateOrContext(current, renderLanes))\n )\n 0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n else\n return (\n (workInProgress.lanes = current.lanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n }\n return updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n );\n}\nfunction updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n nextProps\n) {\n var nextChildren = nextProps.children,\n prevState = null !== current ? current.memoizedState : null;\n null === current &&\n null === workInProgress.stateNode &&\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n if (\"hidden\" === nextProps.mode) {\n if (0 !== (workInProgress.flags & 128)) {\n prevState =\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n if (null !== current) {\n nextProps = workInProgress.child = current.child;\n for (nextChildren = 0; null !== nextProps; )\n (nextChildren =\n nextChildren | nextProps.lanes | nextProps.childLanes),\n (nextProps = nextProps.sibling);\n nextProps = nextChildren & ~prevState;\n } else (nextProps = 0), (workInProgress.child = null);\n return deferHiddenOffscreenComponent(\n current,\n workInProgress,\n prevState,\n renderLanes,\n nextProps\n );\n }\n if (0 !== (renderLanes & 536870912))\n (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n null !== current &&\n pushTransition(\n workInProgress,\n null !== prevState ? prevState.cachePool : null\n ),\n null !== prevState\n ? pushHiddenContext(workInProgress, prevState)\n : reuseHiddenContextOnStack(),\n pushOffscreenSuspenseHandler(workInProgress);\n else\n return (\n (nextProps = workInProgress.lanes = 536870912),\n deferHiddenOffscreenComponent(\n current,\n workInProgress,\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n renderLanes,\n nextProps\n )\n );\n } else\n null !== prevState\n ? (pushTransition(workInProgress, prevState.cachePool),\n pushHiddenContext(workInProgress, prevState),\n reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.memoizedState = null))\n : (null !== current && pushTransition(workInProgress, null),\n reuseHiddenContextOnStack(),\n reuseSuspenseHandlerOnStack(workInProgress));\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nfunction bailoutOffscreenComponent(current, workInProgress) {\n (null !== current && 22 === current.tag) ||\n null !== workInProgress.stateNode ||\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n return workInProgress.sibling;\n}\nfunction deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextBaseLanes,\n renderLanes,\n remainingChildLanes\n) {\n var JSCompiler_inline_result = peekCacheFromPool();\n JSCompiler_inline_result =\n null === JSCompiler_inline_result\n ? null\n : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n workInProgress.memoizedState = {\n baseLanes: nextBaseLanes,\n cachePool: JSCompiler_inline_result\n };\n null !== current && pushTransition(workInProgress, null);\n reuseHiddenContextOnStack();\n pushOffscreenSuspenseHandler(workInProgress);\n null !== current &&\n propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n workInProgress.childLanes = remainingChildLanes;\n return null;\n}\nfunction mountActivityChildren(workInProgress, nextProps) {\n nextProps = mountWorkInProgressOffscreenFiber(\n { mode: nextProps.mode, children: nextProps.children },\n workInProgress.mode\n );\n nextProps.ref = workInProgress.ref;\n workInProgress.child = nextProps;\n nextProps.return = workInProgress;\n return nextProps;\n}\nfunction retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountActivityChildren(workInProgress, workInProgress.pendingProps);\n current.flags |= 2;\n popSuspenseHandler(workInProgress);\n workInProgress.memoizedState = null;\n return current;\n}\nfunction updateActivityComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n didSuspend = 0 !== (workInProgress.flags & 128);\n workInProgress.flags &= -129;\n if (null === current) {\n if (isHydrating) {\n if (\"hidden\" === nextProps.mode)\n return (\n (current = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.lanes = 536870912),\n bailoutOffscreenComponent(null, current)\n );\n pushDehydratedActivitySuspenseHandler(workInProgress);\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" === current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n workInProgress.lanes = 536870912;\n return null;\n }\n return mountActivityChildren(workInProgress, nextProps);\n }\n var prevState = current.memoizedState;\n if (null !== prevState) {\n var dehydrated = prevState.dehydrated;\n pushDehydratedActivitySuspenseHandler(workInProgress);\n if (didSuspend)\n if (workInProgress.flags & 256)\n (workInProgress.flags &= -257),\n (workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n ));\n else if (null !== workInProgress.memoizedState)\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null);\n else throw Error(formatProdErrorMessage(558));\n else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (didSuspend = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || didSuspend)\n ) {\n nextProps = workInProgressRoot;\n if (\n null !== nextProps &&\n ((dehydrated = getBumpedLaneForHydration(nextProps, renderLanes)),\n 0 !== dehydrated && dehydrated !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = dehydrated),\n enqueueConcurrentRenderForLane(current, dehydrated),\n scheduleUpdateOnFiber(nextProps, current, dehydrated),\n SelectiveHydrationException)\n );\n renderDidSuspendDelayIfPossible();\n workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n (current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(dehydrated.nextSibling)),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.flags |= 4096);\n return workInProgress;\n }\n current = createWorkInProgress(current.child, {\n mode: nextProps.mode,\n children: nextProps.children\n });\n current.ref = workInProgress.ref;\n workInProgress.child = current;\n current.return = workInProgress;\n return current;\n}\nfunction markRef(current, workInProgress) {\n var ref = workInProgress.ref;\n if (null === ref)\n null !== current &&\n null !== current.ref &&\n (workInProgress.flags |= 4194816);\n else {\n if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n throw Error(formatProdErrorMessage(284));\n if (null === current || current.ref !== ref)\n workInProgress.flags |= 4194816;\n }\n}\nfunction updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n Component = renderWithHooks(\n current,\n workInProgress,\n Component,\n nextProps,\n void 0,\n renderLanes\n );\n nextProps = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, Component, renderLanes);\n return workInProgress.child;\n}\nfunction replayFunctionComponent(\n current,\n workInProgress,\n nextProps,\n Component,\n secondArg,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n workInProgress.updateQueue = null;\n nextProps = renderWithHooksAgain(\n workInProgress,\n Component,\n nextProps,\n secondArg\n );\n finishRenderingHooks(current);\n Component = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && Component && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateClassComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n if (null === workInProgress.stateNode) {\n var context = emptyContextObject,\n contextType = Component.contextType;\n \"object\" === typeof contextType &&\n null !== contextType &&\n (context = readContext(contextType));\n context = new Component(nextProps, context);\n workInProgress.memoizedState =\n null !== context.state && void 0 !== context.state ? context.state : null;\n context.updater = classComponentUpdater;\n workInProgress.stateNode = context;\n context._reactInternals = workInProgress;\n context = workInProgress.stateNode;\n context.props = nextProps;\n context.state = workInProgress.memoizedState;\n context.refs = {};\n initializeUpdateQueue(workInProgress);\n contextType = Component.contextType;\n context.context =\n \"object\" === typeof contextType && null !== contextType\n ? readContext(contextType)\n : emptyContextObject;\n context.state = workInProgress.memoizedState;\n contextType = Component.getDerivedStateFromProps;\n \"function\" === typeof contextType &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n contextType,\n nextProps\n ),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof Component.getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n ((contextType = context.state),\n \"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount(),\n contextType !== context.state &&\n classComponentUpdater.enqueueReplaceState(context, context.state, null),\n processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction(),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308);\n nextProps = !0;\n } else if (null === current) {\n context = workInProgress.stateNode;\n var unresolvedOldProps = workInProgress.memoizedProps,\n oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n context.props = oldProps;\n var oldContext = context.context,\n contextType$jscomp$0 = Component.contextType;\n contextType = emptyContextObject;\n \"object\" === typeof contextType$jscomp$0 &&\n null !== contextType$jscomp$0 &&\n (contextType = readContext(contextType$jscomp$0));\n var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n contextType$jscomp$0 =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate;\n unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((unresolvedOldProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n contextType\n ));\n hasForceUpdate = !1;\n var oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n oldContext = workInProgress.memoizedState;\n unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldContext = workInProgress.memoizedState)),\n (oldProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldState,\n oldContext,\n contextType\n ))\n ? (contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n (\"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount()),\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldContext)),\n (context.props = nextProps),\n (context.state = oldContext),\n (context.context = contextType),\n (nextProps = oldProps))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (nextProps = !1));\n } else {\n context = workInProgress.stateNode;\n cloneUpdateQueue(current, workInProgress);\n contextType = workInProgress.memoizedProps;\n contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n context.props = contextType$jscomp$0;\n getDerivedStateFromProps = workInProgress.pendingProps;\n oldState = context.context;\n oldContext = Component.contextType;\n oldProps = emptyContextObject;\n \"object\" === typeof oldContext &&\n null !== oldContext &&\n (oldProps = readContext(oldContext));\n unresolvedOldProps = Component.getDerivedStateFromProps;\n (oldContext =\n \"function\" === typeof unresolvedOldProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n oldProps\n ));\n hasForceUpdate = !1;\n oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n var newState = workInProgress.memoizedState;\n contextType !== getDerivedStateFromProps ||\n oldState !== newState ||\n hasForceUpdate ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies))\n ? (\"function\" === typeof unresolvedOldProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n unresolvedOldProps,\n nextProps\n ),\n (newState = workInProgress.memoizedState)),\n (contextType$jscomp$0 =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n contextType$jscomp$0,\n nextProps,\n oldState,\n newState,\n oldProps\n ) ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies)))\n ? (oldContext ||\n (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n \"function\" !== typeof context.componentWillUpdate) ||\n (\"function\" === typeof context.componentWillUpdate &&\n context.componentWillUpdate(nextProps, newState, oldProps),\n \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n context.UNSAFE_componentWillUpdate(\n nextProps,\n newState,\n oldProps\n )),\n \"function\" === typeof context.componentDidUpdate &&\n (workInProgress.flags |= 4),\n \"function\" === typeof context.getSnapshotBeforeUpdate &&\n (workInProgress.flags |= 1024))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = newState)),\n (context.props = nextProps),\n (context.state = newState),\n (context.context = oldProps),\n (nextProps = contextType$jscomp$0))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (nextProps = !1));\n }\n context = nextProps;\n markRef(current, workInProgress);\n nextProps = 0 !== (workInProgress.flags & 128);\n context || nextProps\n ? ((context = workInProgress.stateNode),\n (Component =\n nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n ? null\n : context.render()),\n (workInProgress.flags |= 1),\n null !== current && nextProps\n ? ((workInProgress.child = reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n )),\n (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n Component,\n renderLanes\n )))\n : reconcileChildren(current, workInProgress, Component, renderLanes),\n (workInProgress.memoizedState = context.state),\n (current = workInProgress.child))\n : (current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n ));\n return current;\n}\nfunction mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextChildren,\n renderLanes\n) {\n resetHydrationState();\n workInProgress.flags |= 256;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n dehydrated: null,\n treeContext: null,\n retryLane: 0,\n hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n current,\n primaryTreeDidDefer,\n renderLanes\n) {\n current = null !== current ? current.childLanes & ~renderLanes : 0;\n primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n showFallback = !1,\n didSuspend = 0 !== (workInProgress.flags & 128),\n JSCompiler_temp;\n (JSCompiler_temp = didSuspend) ||\n (JSCompiler_temp =\n null !== current && null === current.memoizedState\n ? !1\n : 0 !== (suspenseStackCursor.current & 2));\n JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n workInProgress.flags &= -33;\n if (null === current) {\n if (isHydrating) {\n showFallback\n ? pushPrimaryTreeSuspenseHandler(workInProgress)\n : reuseSuspenseHandlerOnStack(workInProgress);\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" !== current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n isSuspenseInstanceFallback(current)\n ? (workInProgress.lanes = 32)\n : (workInProgress.lanes = 536870912);\n return null;\n }\n var nextPrimaryChildren = nextProps.children;\n nextProps = nextProps.fallback;\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = workInProgress.mode),\n (nextPrimaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"hidden\", children: nextPrimaryChildren },\n showFallback\n )),\n (nextProps = createFiberFromFragment(\n nextProps,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.sibling = nextProps),\n (workInProgress.child = nextPrimaryChildren),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(null, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n }\n var prevState = current.memoizedState;\n if (\n null !== prevState &&\n ((nextPrimaryChildren = prevState.dehydrated), null !== nextPrimaryChildren)\n ) {\n if (didSuspend)\n workInProgress.flags & 256\n ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags &= -257),\n (workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n )))\n : null !== workInProgress.memoizedState\n ? (reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null))\n : (reuseSuspenseHandlerOnStack(workInProgress),\n (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (nextProps = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: nextProps.children },\n showFallback\n )),\n (nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\n (workInProgress.child = nextProps),\n reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n ),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState =\n mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n (workInProgress = bailoutOffscreenComponent(null, nextProps)));\n else if (\n (pushPrimaryTreeSuspenseHandler(workInProgress),\n isSuspenseInstanceFallback(nextPrimaryChildren))\n ) {\n JSCompiler_temp =\n nextPrimaryChildren.nextSibling &&\n nextPrimaryChildren.nextSibling.dataset;\n if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n JSCompiler_temp = digest;\n nextProps = Error(formatProdErrorMessage(419));\n nextProps.stack = \"\";\n nextProps.digest = JSCompiler_temp;\n queueHydrationError({ value: nextProps, source: null, stack: null });\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || JSCompiler_temp)\n ) {\n JSCompiler_temp = workInProgressRoot;\n if (\n null !== JSCompiler_temp &&\n ((nextProps = getBumpedLaneForHydration(JSCompiler_temp, renderLanes)),\n 0 !== nextProps && nextProps !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = nextProps),\n enqueueConcurrentRenderForLane(current, nextProps),\n scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n SelectiveHydrationException)\n );\n isSuspenseInstancePending(nextPrimaryChildren) ||\n renderDidSuspendDelayIfPossible();\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n isSuspenseInstancePending(nextPrimaryChildren)\n ? ((workInProgress.flags |= 192),\n (workInProgress.child = current.child),\n (workInProgress = null))\n : ((current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(\n nextPrimaryChildren.nextSibling\n )),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountSuspensePrimaryChildren(\n workInProgress,\n nextProps.children\n )),\n (workInProgress.flags |= 4096));\n return workInProgress;\n }\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (prevState = current.child),\n (digest = prevState.sibling),\n (nextProps = createWorkInProgress(prevState, {\n mode: \"hidden\",\n children: nextProps.children\n })),\n (nextProps.subtreeFlags = prevState.subtreeFlags & 65011712),\n null !== digest\n ? (nextPrimaryChildren = createWorkInProgress(\n digest,\n nextPrimaryChildren\n ))\n : ((nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2)),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\n (workInProgress.child = nextProps),\n bailoutOffscreenComponent(null, nextProps),\n (nextProps = workInProgress.child),\n (nextPrimaryChildren = current.child.memoizedState),\n null === nextPrimaryChildren\n ? (nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes))\n : ((showFallback = nextPrimaryChildren.cachePool),\n null !== showFallback\n ? ((prevState = CacheContext._currentValue),\n (showFallback =\n showFallback.parent !== prevState\n ? { parent: prevState, pool: prevState }\n : showFallback))\n : (showFallback = getSuspendedCache()),\n (nextPrimaryChildren = {\n baseLanes: nextPrimaryChildren.baseLanes | renderLanes,\n cachePool: showFallback\n })),\n (nextProps.memoizedState = nextPrimaryChildren),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(current.child, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n renderLanes = current.child;\n current = renderLanes.sibling;\n renderLanes = createWorkInProgress(renderLanes, {\n mode: \"visible\",\n children: nextProps.children\n });\n renderLanes.return = workInProgress;\n renderLanes.sibling = null;\n null !== current &&\n ((JSCompiler_temp = workInProgress.deletions),\n null === JSCompiler_temp\n ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n : JSCompiler_temp.push(current));\n workInProgress.child = renderLanes;\n workInProgress.memoizedState = null;\n return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n primaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: primaryChildren },\n workInProgress.mode\n );\n primaryChildren.return = workInProgress;\n return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n offscreenProps.lanes = 0;\n return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountSuspensePrimaryChildren(\n workInProgress,\n workInProgress.pendingProps.children\n );\n current.flags |= 2;\n workInProgress.memoizedState = null;\n return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n fiber.lanes |= renderLanes;\n var alternate = fiber.alternate;\n null !== alternate && (alternate.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n workInProgress,\n isBackwards,\n tail,\n lastContentRow,\n tailMode,\n treeForkCount\n) {\n var renderState = workInProgress.memoizedState;\n null === renderState\n ? (workInProgress.memoizedState = {\n isBackwards: isBackwards,\n rendering: null,\n renderingStartTime: 0,\n last: lastContentRow,\n tail: tail,\n tailMode: tailMode,\n treeForkCount: treeForkCount\n })\n : ((renderState.isBackwards = isBackwards),\n (renderState.rendering = null),\n (renderState.renderingStartTime = 0),\n (renderState.last = lastContentRow),\n (renderState.tail = tail),\n (renderState.tailMode = tailMode),\n (renderState.treeForkCount = treeForkCount));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n revealOrder = nextProps.revealOrder,\n tailMode = nextProps.tail;\n nextProps = nextProps.children;\n var suspenseContext = suspenseStackCursor.current,\n shouldForceFallback = 0 !== (suspenseContext & 2);\n shouldForceFallback\n ? ((suspenseContext = (suspenseContext & 1) | 2),\n (workInProgress.flags |= 128))\n : (suspenseContext &= 1);\n push(suspenseStackCursor, suspenseContext);\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n nextProps = isHydrating ? treeForkCount : 0;\n if (!shouldForceFallback && null !== current && 0 !== (current.flags & 128))\n a: for (current = workInProgress.child; null !== current; ) {\n if (13 === current.tag)\n null !== current.memoizedState &&\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (19 === current.tag)\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (null !== current.child) {\n current.child.return = current;\n current = current.child;\n continue;\n }\n if (current === workInProgress) break a;\n for (; null === current.sibling; ) {\n if (null === current.return || current.return === workInProgress)\n break a;\n current = current.return;\n }\n current.sibling.return = current.return;\n current = current.sibling;\n }\n switch (revealOrder) {\n case \"forwards\":\n renderLanes = workInProgress.child;\n for (revealOrder = null; null !== renderLanes; )\n (current = renderLanes.alternate),\n null !== current &&\n null === findFirstSuspended(current) &&\n (revealOrder = renderLanes),\n (renderLanes = renderLanes.sibling);\n renderLanes = revealOrder;\n null === renderLanes\n ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n initSuspenseListRenderState(\n workInProgress,\n !1,\n revealOrder,\n renderLanes,\n tailMode,\n nextProps\n );\n break;\n case \"backwards\":\n case \"unstable_legacy-backwards\":\n renderLanes = null;\n revealOrder = workInProgress.child;\n for (workInProgress.child = null; null !== revealOrder; ) {\n current = revealOrder.alternate;\n if (null !== current && null === findFirstSuspended(current)) {\n workInProgress.child = revealOrder;\n break;\n }\n current = revealOrder.sibling;\n revealOrder.sibling = renderLanes;\n renderLanes = revealOrder;\n revealOrder = current;\n }\n initSuspenseListRenderState(\n workInProgress,\n !0,\n renderLanes,\n null,\n tailMode,\n nextProps\n );\n break;\n case \"together\":\n initSuspenseListRenderState(\n workInProgress,\n !1,\n null,\n null,\n void 0,\n nextProps\n );\n break;\n default:\n workInProgress.memoizedState = null;\n }\n return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n null !== current && (workInProgress.dependencies = current.dependencies);\n workInProgressRootSkippedLanes |= workInProgress.lanes;\n if (0 === (renderLanes & workInProgress.childLanes))\n if (null !== current) {\n if (\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n 0 === (renderLanes & workInProgress.childLanes))\n )\n return null;\n } else return null;\n if (null !== current && workInProgress.child !== current.child)\n throw Error(formatProdErrorMessage(153));\n if (null !== workInProgress.child) {\n current = workInProgress.child;\n renderLanes = createWorkInProgress(current, current.pendingProps);\n workInProgress.child = renderLanes;\n for (renderLanes.return = workInProgress; null !== current.sibling; )\n (current = current.sibling),\n (renderLanes = renderLanes.sibling =\n createWorkInProgress(current, current.pendingProps)),\n (renderLanes.return = workInProgress);\n renderLanes.sibling = null;\n }\n return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n if (0 !== (current.lanes & renderLanes)) return !0;\n current = current.dependencies;\n return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n) {\n switch (workInProgress.tag) {\n case 3:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n resetHydrationState();\n break;\n case 27:\n case 5:\n pushHostContext(workInProgress);\n break;\n case 4:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n break;\n case 10:\n pushProvider(\n workInProgress,\n workInProgress.type,\n workInProgress.memoizedProps.value\n );\n break;\n case 31:\n if (null !== workInProgress.memoizedState)\n return (\n (workInProgress.flags |= 128),\n pushDehydratedActivitySuspenseHandler(workInProgress),\n null\n );\n break;\n case 13:\n var state$102 = workInProgress.memoizedState;\n if (null !== state$102) {\n if (null !== state$102.dehydrated)\n return (\n pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags |= 128),\n null\n );\n if (0 !== (renderLanes & workInProgress.child.childLanes))\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n pushPrimaryTreeSuspenseHandler(workInProgress);\n current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n return null !== current ? current.sibling : null;\n }\n pushPrimaryTreeSuspenseHandler(workInProgress);\n break;\n case 19:\n var didSuspendBefore = 0 !== (current.flags & 128);\n state$102 = 0 !== (renderLanes & workInProgress.childLanes);\n state$102 ||\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n (state$102 = 0 !== (renderLanes & workInProgress.childLanes)));\n if (didSuspendBefore) {\n if (state$102)\n return updateSuspenseListComponent(\n current,\n workInProgress,\n renderLanes\n );\n workInProgress.flags |= 128;\n }\n didSuspendBefore = workInProgress.memoizedState;\n null !== didSuspendBefore &&\n ((didSuspendBefore.rendering = null),\n (didSuspendBefore.tail = null),\n (didSuspendBefore.lastEffect = null));\n push(suspenseStackCursor, suspenseStackCursor.current);\n if (state$102) break;\n else return null;\n case 22:\n return (\n (workInProgress.lanes = 0),\n updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n )\n );\n case 24:\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n }\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n if (null !== current)\n if (current.memoizedProps !== workInProgress.pendingProps)\n didReceiveUpdate = !0;\n else {\n if (\n !checkScheduledUpdateOrContext(current, renderLanes) &&\n 0 === (workInProgress.flags & 128)\n )\n return (\n (didReceiveUpdate = !1),\n attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n )\n );\n didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n }\n else\n (didReceiveUpdate = !1),\n isHydrating &&\n 0 !== (workInProgress.flags & 1048576) &&\n pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n workInProgress.lanes = 0;\n switch (workInProgress.tag) {\n case 16:\n a: {\n var props = workInProgress.pendingProps;\n current = resolveLazy(workInProgress.elementType);\n workInProgress.type = current;\n if (\"function\" === typeof current)\n shouldConstruct(current)\n ? ((props = resolveClassComponentProps(current, props)),\n (workInProgress.tag = 1),\n (workInProgress = updateClassComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )))\n : ((workInProgress.tag = 0),\n (workInProgress = updateFunctionComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )));\n else {\n if (void 0 !== current && null !== current) {\n var $$typeof = current.$$typeof;\n if ($$typeof === REACT_FORWARD_REF_TYPE) {\n workInProgress.tag = 11;\n workInProgress = updateForwardRef(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n } else if ($$typeof === REACT_MEMO_TYPE) {\n workInProgress.tag = 14;\n workInProgress = updateMemoComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n }\n }\n workInProgress = getComponentNameFromType(current) || current;\n throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n }\n }\n return workInProgress;\n case 0:\n return updateFunctionComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 1:\n return (\n (props = workInProgress.type),\n ($$typeof = resolveClassComponentProps(\n props,\n workInProgress.pendingProps\n )),\n updateClassComponent(\n current,\n workInProgress,\n props,\n $$typeof,\n renderLanes\n )\n );\n case 3:\n a: {\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n );\n if (null === current) throw Error(formatProdErrorMessage(387));\n props = workInProgress.pendingProps;\n var prevState = workInProgress.memoizedState;\n $$typeof = prevState.element;\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, props, null, renderLanes);\n var nextState = workInProgress.memoizedState;\n props = nextState.cache;\n pushProvider(workInProgress, CacheContext, props);\n props !== prevState.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n );\n suspendIfUpdateReadFromEntangledAsyncAction();\n props = nextState.element;\n if (prevState.isDehydrated)\n if (\n ((prevState = {\n element: props,\n isDehydrated: !1,\n cache: nextState.cache\n }),\n (workInProgress.updateQueue.baseState = prevState),\n (workInProgress.memoizedState = prevState),\n workInProgress.flags & 256)\n ) {\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else if (props !== $$typeof) {\n $$typeof = createCapturedValueAtFiber(\n Error(formatProdErrorMessage(424)),\n workInProgress\n );\n queueHydrationError($$typeof);\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else {\n current = workInProgress.stateNode.containerInfo;\n switch (current.nodeType) {\n case 9:\n current = current.body;\n break;\n default:\n current =\n \"HTML\" === current.nodeName\n ? current.ownerDocument.body\n : current;\n }\n nextHydratableInstance = getNextHydratable(current.firstChild);\n hydrationParentFiber = workInProgress;\n isHydrating = !0;\n hydrationErrors = null;\n rootOrSingletonContext = !0;\n renderLanes = mountChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n );\n for (workInProgress.child = renderLanes; renderLanes; )\n (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n (renderLanes = renderLanes.sibling);\n }\n else {\n resetHydrationState();\n if (props === $$typeof) {\n workInProgress = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n break a;\n }\n reconcileChildren(current, workInProgress, props, renderLanes);\n }\n workInProgress = workInProgress.child;\n }\n return workInProgress;\n case 26:\n return (\n markRef(current, workInProgress),\n null === current\n ? (renderLanes = getResource(\n workInProgress.type,\n null,\n workInProgress.pendingProps,\n null\n ))\n ? (workInProgress.memoizedState = renderLanes)\n : isHydrating ||\n ((renderLanes = workInProgress.type),\n (current = workInProgress.pendingProps),\n (props = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n ).createElement(renderLanes)),\n (props[internalInstanceKey] = workInProgress),\n (props[internalPropsKey] = current),\n setInitialProperties(props, renderLanes, current),\n markNodeAsHoistable(props),\n (workInProgress.stateNode = props))\n : (workInProgress.memoizedState = getResource(\n workInProgress.type,\n current.memoizedProps,\n workInProgress.pendingProps,\n current.memoizedState\n )),\n null\n );\n case 27:\n return (\n pushHostContext(workInProgress),\n null === current &&\n isHydrating &&\n ((props = workInProgress.stateNode =\n resolveSingletonInstance(\n workInProgress.type,\n workInProgress.pendingProps,\n rootInstanceStackCursor.current\n )),\n (hydrationParentFiber = workInProgress),\n (rootOrSingletonContext = !0),\n ($$typeof = nextHydratableInstance),\n isSingletonScope(workInProgress.type)\n ? ((previousHydratableOnEnteringScopedSingleton = $$typeof),\n (nextHydratableInstance = getNextHydratable(props.firstChild)))\n : (nextHydratableInstance = $$typeof)),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n markRef(current, workInProgress),\n null === current && (workInProgress.flags |= 4194304),\n workInProgress.child\n );\n case 5:\n if (null === current && isHydrating) {\n if (($$typeof = props = nextHydratableInstance))\n (props = canHydrateInstance(\n props,\n workInProgress.type,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== props\n ? ((workInProgress.stateNode = props),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = getNextHydratable(props.firstChild)),\n (rootOrSingletonContext = !1),\n ($$typeof = !0))\n : ($$typeof = !1);\n $$typeof || throwOnHydrationMismatch(workInProgress);\n }\n pushHostContext(workInProgress);\n $$typeof = workInProgress.type;\n prevState = workInProgress.pendingProps;\n nextState = null !== current ? current.memoizedProps : null;\n props = prevState.children;\n shouldSetTextContent($$typeof, prevState)\n ? (props = null)\n : null !== nextState &&\n shouldSetTextContent($$typeof, nextState) &&\n (workInProgress.flags |= 32);\n null !== workInProgress.memoizedState &&\n (($$typeof = renderWithHooks(\n current,\n workInProgress,\n TransitionAwareHostComponent,\n null,\n null,\n renderLanes\n )),\n (HostTransitionContext._currentValue = $$typeof));\n markRef(current, workInProgress);\n reconcileChildren(current, workInProgress, props, renderLanes);\n return workInProgress.child;\n case 6:\n if (null === current && isHydrating) {\n if ((current = renderLanes = nextHydratableInstance))\n (renderLanes = canHydrateTextInstance(\n renderLanes,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== renderLanes\n ? ((workInProgress.stateNode = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (current = !0))\n : (current = !1);\n current || throwOnHydrationMismatch(workInProgress);\n }\n return null;\n case 13:\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n case 4:\n return (\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n ),\n (props = workInProgress.pendingProps),\n null === current\n ? (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n ))\n : reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 11:\n return updateForwardRef(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 7:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps,\n renderLanes\n ),\n workInProgress.child\n );\n case 8:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 12:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 10:\n return (\n (props = workInProgress.pendingProps),\n pushProvider(workInProgress, workInProgress.type, props.value),\n reconcileChildren(current, workInProgress, props.children, renderLanes),\n workInProgress.child\n );\n case 9:\n return (\n ($$typeof = workInProgress.type._context),\n (props = workInProgress.pendingProps.children),\n prepareToReadContext(workInProgress),\n ($$typeof = readContext($$typeof)),\n (props = props($$typeof)),\n (workInProgress.flags |= 1),\n reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 14:\n return updateMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 15:\n return updateSimpleMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 19:\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n case 31:\n return updateActivityComponent(current, workInProgress, renderLanes);\n case 22:\n return updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n );\n case 24:\n return (\n prepareToReadContext(workInProgress),\n (props = readContext(CacheContext)),\n null === current\n ? (($$typeof = peekCacheFromPool()),\n null === $$typeof &&\n (($$typeof = workInProgressRoot),\n (prevState = createCache()),\n ($$typeof.pooledCache = prevState),\n prevState.refCount++,\n null !== prevState && ($$typeof.pooledCacheLanes |= renderLanes),\n ($$typeof = prevState)),\n (workInProgress.memoizedState = { parent: props, cache: $$typeof }),\n initializeUpdateQueue(workInProgress),\n pushProvider(workInProgress, CacheContext, $$typeof))\n : (0 !== (current.lanes & renderLanes) &&\n (cloneUpdateQueue(current, workInProgress),\n processUpdateQueue(workInProgress, null, null, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction()),\n ($$typeof = current.memoizedState),\n (prevState = workInProgress.memoizedState),\n $$typeof.parent !== props\n ? (($$typeof = { parent: props, cache: props }),\n (workInProgress.memoizedState = $$typeof),\n 0 === workInProgress.lanes &&\n (workInProgress.memoizedState =\n workInProgress.updateQueue.baseState =\n $$typeof),\n pushProvider(workInProgress, CacheContext, props))\n : ((props = prevState.cache),\n pushProvider(workInProgress, CacheContext, props),\n props !== $$typeof.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n ))),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 29:\n throw workInProgress.pendingProps;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n workInProgress.flags |= 4;\n}\nfunction preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n oldProps,\n newProps,\n renderLanes\n) {\n if ((type = 0 !== (workInProgress.mode & 32))) type = !1;\n if (type) {\n if (\n ((workInProgress.flags |= 16777216),\n (renderLanes & 335544128) === renderLanes)\n )\n if (workInProgress.stateNode.complete) workInProgress.flags |= 8192;\n else if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n } else workInProgress.flags &= -16777217;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n workInProgress.flags &= -16777217;\n else if (((workInProgress.flags |= 16777216), !preloadResource(resource)))\n if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n null !== retryQueue && (workInProgress.flags |= 4);\n workInProgress.flags & 16384 &&\n ((retryQueue =\n 22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n (workInProgress.lanes |= retryQueue),\n (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n if (!isHydrating)\n switch (renderState.tailMode) {\n case \"hidden\":\n hasRenderedATailFallback = renderState.tail;\n for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n null !== hasRenderedATailFallback.alternate &&\n (lastTailNode = hasRenderedATailFallback),\n (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n null === lastTailNode\n ? (renderState.tail = null)\n : (lastTailNode.sibling = null);\n break;\n case \"collapsed\":\n lastTailNode = renderState.tail;\n for (var lastTailNode$106 = null; null !== lastTailNode; )\n null !== lastTailNode.alternate && (lastTailNode$106 = lastTailNode),\n (lastTailNode = lastTailNode.sibling);\n null === lastTailNode$106\n ? hasRenderedATailFallback || null === renderState.tail\n ? (renderState.tail = null)\n : (renderState.tail.sibling = null)\n : (lastTailNode$106.sibling = null);\n }\n}\nfunction bubbleProperties(completedWork) {\n var didBailout =\n null !== completedWork.alternate &&\n completedWork.alternate.child === completedWork.child,\n newChildLanes = 0,\n subtreeFlags = 0;\n if (didBailout)\n for (var child$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags & 65011712),\n (subtreeFlags |= child$107.flags & 65011712),\n (child$107.return = completedWork),\n (child$107 = child$107.sibling);\n else\n for (child$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags),\n (subtreeFlags |= child$107.flags),\n (child$107.return = completedWork),\n (child$107 = child$107.sibling);\n completedWork.subtreeFlags |= subtreeFlags;\n completedWork.childLanes = newChildLanes;\n return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n var newProps = workInProgress.pendingProps;\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return bubbleProperties(workInProgress), null;\n case 1:\n return bubbleProperties(workInProgress), null;\n case 3:\n renderLanes = workInProgress.stateNode;\n newProps = null;\n null !== current && (newProps = current.memoizedState.cache);\n workInProgress.memoizedState.cache !== newProps &&\n (workInProgress.flags |= 2048);\n popProvider(CacheContext);\n popHostContainer();\n renderLanes.pendingContext &&\n ((renderLanes.context = renderLanes.pendingContext),\n (renderLanes.pendingContext = null));\n if (null === current || null === current.child)\n popHydrationState(workInProgress)\n ? markUpdate(workInProgress)\n : null === current ||\n (current.memoizedState.isDehydrated &&\n 0 === (workInProgress.flags & 256)) ||\n ((workInProgress.flags |= 1024),\n upgradeHydrationErrorsToRecoverable());\n bubbleProperties(workInProgress);\n return null;\n case 26:\n var type = workInProgress.type,\n nextResource = workInProgress.memoizedState;\n null === current\n ? (markUpdate(workInProgress),\n null !== nextResource\n ? (bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n null,\n newProps,\n renderLanes\n )))\n : nextResource\n ? nextResource !== current.memoizedState\n ? (markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217))\n : ((current = current.memoizedProps),\n current !== newProps && markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n current,\n newProps,\n renderLanes\n ));\n return null;\n case 27:\n popHostContext(workInProgress);\n renderLanes = rootInstanceStackCursor.current;\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n current = contextStackCursor.current;\n popHydrationState(workInProgress)\n ? prepareToHydrateHostInstance(workInProgress, current)\n : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n (workInProgress.stateNode = current),\n markUpdate(workInProgress));\n }\n bubbleProperties(workInProgress);\n return null;\n case 5:\n popHostContext(workInProgress);\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n nextResource = contextStackCursor.current;\n if (popHydrationState(workInProgress))\n prepareToHydrateHostInstance(workInProgress, nextResource);\n else {\n var ownerDocument = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n );\n switch (nextResource) {\n case 1:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case 2:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n default:\n switch (type) {\n case \"svg\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case \"math\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n case \"script\":\n nextResource = ownerDocument.createElement(\"div\");\n nextResource.innerHTML = \"<script>\\x3c/script>\";\n nextResource = nextResource.removeChild(\n nextResource.firstChild\n );\n break;\n case \"select\":\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(\"select\", {\n is: newProps.is\n })\n : ownerDocument.createElement(\"select\");\n newProps.multiple\n ? (nextResource.multiple = !0)\n : newProps.size && (nextResource.size = newProps.size);\n break;\n default:\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(type, { is: newProps.is })\n : ownerDocument.createElement(type);\n }\n }\n nextResource[internalInstanceKey] = workInProgress;\n nextResource[internalPropsKey] = newProps;\n a: for (\n ownerDocument = workInProgress.child;\n null !== ownerDocument;\n\n ) {\n if (5 === ownerDocument.tag || 6 === ownerDocument.tag)\n nextResource.appendChild(ownerDocument.stateNode);\n else if (\n 4 !== ownerDocument.tag &&\n 27 !== ownerDocument.tag &&\n null !== ownerDocument.child\n ) {\n ownerDocument.child.return = ownerDocument;\n ownerDocument = ownerDocument.child;\n continue;\n }\n if (ownerDocument === workInProgress) break a;\n for (; null === ownerDocument.sibling; ) {\n if (\n null === ownerDocument.return ||\n ownerDocument.return === workInProgress\n )\n break a;\n ownerDocument = ownerDocument.return;\n }\n ownerDocument.sibling.return = ownerDocument.return;\n ownerDocument = ownerDocument.sibling;\n }\n workInProgress.stateNode = nextResource;\n a: switch (\n (setInitialProperties(nextResource, type, newProps), type)\n ) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n newProps = !!newProps.autoFocus;\n break a;\n case \"img\":\n newProps = !0;\n break a;\n default:\n newProps = !1;\n }\n newProps && markUpdate(workInProgress);\n }\n }\n bubbleProperties(workInProgress);\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n workInProgress.type,\n null === current ? null : current.memoizedProps,\n workInProgress.pendingProps,\n renderLanes\n );\n return null;\n case 6:\n if (current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n current = rootInstanceStackCursor.current;\n if (popHydrationState(workInProgress)) {\n current = workInProgress.stateNode;\n renderLanes = workInProgress.memoizedProps;\n newProps = null;\n type = hydrationParentFiber;\n if (null !== type)\n switch (type.tag) {\n case 27:\n case 5:\n newProps = type.memoizedProps;\n }\n current[internalInstanceKey] = workInProgress;\n current =\n current.nodeValue === renderLanes ||\n (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n checkForUnmatchedText(current.nodeValue, renderLanes)\n ? !0\n : !1;\n current || throwOnHydrationMismatch(workInProgress, !0);\n } else\n (current =\n getOwnerDocumentFromRootContainer(current).createTextNode(\n newProps\n )),\n (current[internalInstanceKey] = workInProgress),\n (workInProgress.stateNode = current);\n }\n bubbleProperties(workInProgress);\n return null;\n case 31:\n renderLanes = workInProgress.memoizedState;\n if (null === current || null !== current.memoizedState) {\n newProps = popHydrationState(workInProgress);\n if (null !== renderLanes) {\n if (null === current) {\n if (!newProps) throw Error(formatProdErrorMessage(318));\n current = workInProgress.memoizedState;\n current = null !== current ? current.dehydrated : null;\n if (!current) throw Error(formatProdErrorMessage(557));\n current[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n current = !1;\n } else\n (renderLanes = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = renderLanes),\n (current = !0);\n if (!current) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n if (0 !== (workInProgress.flags & 128))\n throw Error(formatProdErrorMessage(558));\n }\n bubbleProperties(workInProgress);\n return null;\n case 13:\n newProps = workInProgress.memoizedState;\n if (\n null === current ||\n (null !== current.memoizedState &&\n null !== current.memoizedState.dehydrated)\n ) {\n type = popHydrationState(workInProgress);\n if (null !== newProps && null !== newProps.dehydrated) {\n if (null === current) {\n if (!type) throw Error(formatProdErrorMessage(318));\n type = workInProgress.memoizedState;\n type = null !== type ? type.dehydrated : null;\n if (!type) throw Error(formatProdErrorMessage(317));\n type[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n type = !1;\n } else\n (type = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = type),\n (type = !0);\n if (!type) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n }\n popSuspenseHandler(workInProgress);\n if (0 !== (workInProgress.flags & 128))\n return (workInProgress.lanes = renderLanes), workInProgress;\n renderLanes = null !== newProps;\n current = null !== current && null !== current.memoizedState;\n renderLanes &&\n ((newProps = workInProgress.child),\n (type = null),\n null !== newProps.alternate &&\n null !== newProps.alternate.memoizedState &&\n null !== newProps.alternate.memoizedState.cachePool &&\n (type = newProps.alternate.memoizedState.cachePool.pool),\n (nextResource = null),\n null !== newProps.memoizedState &&\n null !== newProps.memoizedState.cachePool &&\n (nextResource = newProps.memoizedState.cachePool.pool),\n nextResource !== type && (newProps.flags |= 2048));\n renderLanes !== current &&\n renderLanes &&\n (workInProgress.child.flags |= 8192);\n scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n bubbleProperties(workInProgress);\n return null;\n case 4:\n return (\n popHostContainer(),\n null === current &&\n listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n bubbleProperties(workInProgress),\n null\n );\n case 10:\n return (\n popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n );\n case 19:\n pop(suspenseStackCursor);\n newProps = workInProgress.memoizedState;\n if (null === newProps) return bubbleProperties(workInProgress), null;\n type = 0 !== (workInProgress.flags & 128);\n nextResource = newProps.rendering;\n if (null === nextResource)\n if (type) cutOffTailIfNeeded(newProps, !1);\n else {\n if (\n 0 !== workInProgressRootExitStatus ||\n (null !== current && 0 !== (current.flags & 128))\n )\n for (current = workInProgress.child; null !== current; ) {\n nextResource = findFirstSuspended(current);\n if (null !== nextResource) {\n workInProgress.flags |= 128;\n cutOffTailIfNeeded(newProps, !1);\n current = nextResource.updateQueue;\n workInProgress.updateQueue = current;\n scheduleRetryEffect(workInProgress, current);\n workInProgress.subtreeFlags = 0;\n current = renderLanes;\n for (renderLanes = workInProgress.child; null !== renderLanes; )\n resetWorkInProgress(renderLanes, current),\n (renderLanes = renderLanes.sibling);\n push(\n suspenseStackCursor,\n (suspenseStackCursor.current & 1) | 2\n );\n isHydrating &&\n pushTreeFork(workInProgress, newProps.treeForkCount);\n return workInProgress.child;\n }\n current = current.sibling;\n }\n null !== newProps.tail &&\n now() > workInProgressRootRenderTargetTime &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n }\n else {\n if (!type)\n if (\n ((current = findFirstSuspended(nextResource)), null !== current)\n ) {\n if (\n ((workInProgress.flags |= 128),\n (type = !0),\n (current = current.updateQueue),\n (workInProgress.updateQueue = current),\n scheduleRetryEffect(workInProgress, current),\n cutOffTailIfNeeded(newProps, !0),\n null === newProps.tail &&\n \"hidden\" === newProps.tailMode &&\n !nextResource.alternate &&\n !isHydrating)\n )\n return bubbleProperties(workInProgress), null;\n } else\n 2 * now() - newProps.renderingStartTime >\n workInProgressRootRenderTargetTime &&\n 536870912 !== renderLanes &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n newProps.isBackwards\n ? ((nextResource.sibling = workInProgress.child),\n (workInProgress.child = nextResource))\n : ((current = newProps.last),\n null !== current\n ? (current.sibling = nextResource)\n : (workInProgress.child = nextResource),\n (newProps.last = nextResource));\n }\n if (null !== newProps.tail)\n return (\n (current = newProps.tail),\n (newProps.rendering = current),\n (newProps.tail = current.sibling),\n (newProps.renderingStartTime = now()),\n (current.sibling = null),\n (renderLanes = suspenseStackCursor.current),\n push(\n suspenseStackCursor,\n type ? (renderLanes & 1) | 2 : renderLanes & 1\n ),\n isHydrating && pushTreeFork(workInProgress, newProps.treeForkCount),\n current\n );\n bubbleProperties(workInProgress);\n return null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n (newProps = null !== workInProgress.memoizedState),\n null !== current\n ? (null !== current.memoizedState) !== newProps &&\n (workInProgress.flags |= 8192)\n : newProps && (workInProgress.flags |= 8192),\n newProps\n ? 0 !== (renderLanes & 536870912) &&\n 0 === (workInProgress.flags & 128) &&\n (bubbleProperties(workInProgress),\n workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n : bubbleProperties(workInProgress),\n (renderLanes = workInProgress.updateQueue),\n null !== renderLanes &&\n scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n (renderLanes = null),\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (renderLanes = current.memoizedState.cachePool.pool),\n (newProps = null),\n null !== workInProgress.memoizedState &&\n null !== workInProgress.memoizedState.cachePool &&\n (newProps = workInProgress.memoizedState.cachePool.pool),\n newProps !== renderLanes && (workInProgress.flags |= 2048),\n null !== current && pop(resumedCache),\n null\n );\n case 24:\n return (\n (renderLanes = null),\n null !== current && (renderLanes = current.memoizedState.cache),\n workInProgress.memoizedState.cache !== renderLanes &&\n (workInProgress.flags |= 2048),\n popProvider(CacheContext),\n bubbleProperties(workInProgress),\n null\n );\n case 25:\n return null;\n case 30:\n return null;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 1:\n return (\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 3:\n return (\n popProvider(CacheContext),\n popHostContainer(),\n (current = workInProgress.flags),\n 0 !== (current & 65536) && 0 === (current & 128)\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 26:\n case 27:\n case 5:\n return popHostContext(workInProgress), null;\n case 31:\n if (null !== workInProgress.memoizedState) {\n popSuspenseHandler(workInProgress);\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 13:\n popSuspenseHandler(workInProgress);\n current = workInProgress.memoizedState;\n if (null !== current && null !== current.dehydrated) {\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 19:\n return pop(suspenseStackCursor), null;\n case 4:\n return popHostContainer(), null;\n case 10:\n return popProvider(workInProgress.type), null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n null !== current && pop(resumedCache),\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 24:\n return popProvider(CacheContext), null;\n case 25:\n return null;\n default:\n return null;\n }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n popTreeContext(interruptedWork);\n switch (interruptedWork.tag) {\n case 3:\n popProvider(CacheContext);\n popHostContainer();\n break;\n case 26:\n case 27:\n case 5:\n popHostContext(interruptedWork);\n break;\n case 4:\n popHostContainer();\n break;\n case 31:\n null !== interruptedWork.memoizedState &&\n popSuspenseHandler(interruptedWork);\n break;\n case 13:\n popSuspenseHandler(interruptedWork);\n break;\n case 19:\n pop(suspenseStackCursor);\n break;\n case 10:\n popProvider(interruptedWork.type);\n break;\n case 22:\n case 23:\n popSuspenseHandler(interruptedWork);\n popHiddenContext();\n null !== current && pop(resumedCache);\n break;\n case 24:\n popProvider(CacheContext);\n }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n lastEffect = void 0;\n var create = updateQueue.create,\n inst = updateQueue.inst;\n lastEffect = create();\n inst.destroy = lastEffect;\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHookEffectListUnmount(\n flags,\n finishedWork,\n nearestMountedAncestor$jscomp$0\n) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n var inst = updateQueue.inst,\n destroy = inst.destroy;\n if (void 0 !== destroy) {\n inst.destroy = void 0;\n lastEffect = finishedWork;\n var nearestMountedAncestor = nearestMountedAncestor$jscomp$0,\n destroy_ = destroy;\n try {\n destroy_();\n } catch (error) {\n captureCommitPhaseError(\n lastEffect,\n nearestMountedAncestor,\n error\n );\n }\n }\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitClassCallbacks(finishedWork) {\n var updateQueue = finishedWork.updateQueue;\n if (null !== updateQueue) {\n var instance = finishedWork.stateNode;\n try {\n commitCallbacks(updateQueue, instance);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction safelyCallComponentWillUnmount(\n current,\n nearestMountedAncestor,\n instance\n) {\n instance.props = resolveClassComponentProps(\n current.type,\n current.memoizedProps\n );\n instance.state = current.memoizedState;\n try {\n instance.componentWillUnmount();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n try {\n var ref = current.ref;\n if (null !== ref) {\n switch (current.tag) {\n case 26:\n case 27:\n case 5:\n var instanceToUse = current.stateNode;\n break;\n case 30:\n instanceToUse = current.stateNode;\n break;\n default:\n instanceToUse = current.stateNode;\n }\n \"function\" === typeof ref\n ? (current.refCleanup = ref(instanceToUse))\n : (ref.current = instanceToUse);\n }\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n var ref = current.ref,\n refCleanup = current.refCleanup;\n if (null !== ref)\n if (\"function\" === typeof refCleanup)\n try {\n refCleanup();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n } finally {\n (current.refCleanup = null),\n (current = current.alternate),\n null != current && (current.refCleanup = null);\n }\n else if (\"function\" === typeof ref)\n try {\n ref(null);\n } catch (error$140) {\n captureCommitPhaseError(current, nearestMountedAncestor, error$140);\n }\n else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n var type = finishedWork.type,\n props = finishedWork.memoizedProps,\n instance = finishedWork.stateNode;\n try {\n a: switch (type) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n props.autoFocus && instance.focus();\n break a;\n case \"img\":\n props.src\n ? (instance.src = props.src)\n : props.srcSet && (instance.srcset = props.srcSet);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n try {\n var domElement = finishedWork.stateNode;\n updateProperties(domElement, finishedWork.type, oldProps, newProps);\n domElement[internalPropsKey] = newProps;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction isHostParent(fiber) {\n return (\n 5 === fiber.tag ||\n 3 === fiber.tag ||\n 26 === fiber.tag ||\n (27 === fiber.tag && isSingletonScope(fiber.type)) ||\n 4 === fiber.tag\n );\n}\nfunction getHostSibling(fiber) {\n a: for (;;) {\n for (; null === fiber.sibling; ) {\n if (null === fiber.return || isHostParent(fiber.return)) return null;\n fiber = fiber.return;\n }\n fiber.sibling.return = fiber.return;\n for (\n fiber = fiber.sibling;\n 5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag;\n\n ) {\n if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;\n if (fiber.flags & 2) continue a;\n if (null === fiber.child || 4 === fiber.tag) continue a;\n else (fiber.child.return = fiber), (fiber = fiber.child);\n }\n if (!(fiber.flags & 2)) return fiber.stateNode;\n }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before\n ? (9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent\n ).insertBefore(node, before)\n : ((before =\n 9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent),\n before.appendChild(node),\n (parent = parent._reactRootContainer),\n (null !== parent && void 0 !== parent) ||\n null !== before.onclick ||\n (before.onclick = noop$1));\n else if (\n 4 !== tag &&\n (27 === tag &&\n isSingletonScope(node.type) &&\n ((parent = node.stateNode), (before = null)),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before ? parent.insertBefore(node, before) : parent.appendChild(node);\n else if (\n 4 !== tag &&\n (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nfunction commitHostSingletonAcquisition(finishedWork) {\n var singleton = finishedWork.stateNode,\n props = finishedWork.memoizedProps;\n try {\n for (\n var type = finishedWork.type, attributes = singleton.attributes;\n attributes.length;\n\n )\n singleton.removeAttributeNode(attributes[0]);\n setInitialProperties(singleton, type, props);\n singleton[internalInstanceKey] = finishedWork;\n singleton[internalPropsKey] = props;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nvar offscreenSubtreeIsHidden = !1,\n offscreenSubtreeWasHidden = !1,\n needsFormReset = !1,\n PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n nextEffect = null;\nfunction commitBeforeMutationEffects(root, firstChild) {\n root = root.containerInfo;\n eventsEnabled = _enabled;\n root = getActiveElementDeep(root);\n if (hasSelectionCapabilities(root)) {\n if (\"selectionStart\" in root)\n var JSCompiler_temp = {\n start: root.selectionStart,\n end: root.selectionEnd\n };\n else\n a: {\n JSCompiler_temp =\n ((JSCompiler_temp = root.ownerDocument) &&\n JSCompiler_temp.defaultView) ||\n window;\n var selection =\n JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n if (selection && 0 !== selection.rangeCount) {\n JSCompiler_temp = selection.anchorNode;\n var anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode;\n selection = selection.focusOffset;\n try {\n JSCompiler_temp.nodeType, focusNode.nodeType;\n } catch (e$20) {\n JSCompiler_temp = null;\n break a;\n }\n var length = 0,\n start = -1,\n end = -1,\n indexWithinAnchor = 0,\n indexWithinFocus = 0,\n node = root,\n parentNode = null;\n b: for (;;) {\n for (var next; ; ) {\n node !== JSCompiler_temp ||\n (0 !== anchorOffset && 3 !== node.nodeType) ||\n (start = length + anchorOffset);\n node !== focusNode ||\n (0 !== selection && 3 !== node.nodeType) ||\n (end = length + selection);\n 3 === node.nodeType && (length += node.nodeValue.length);\n if (null === (next = node.firstChild)) break;\n parentNode = node;\n node = next;\n }\n for (;;) {\n if (node === root) break b;\n parentNode === JSCompiler_temp &&\n ++indexWithinAnchor === anchorOffset &&\n (start = length);\n parentNode === focusNode &&\n ++indexWithinFocus === selection &&\n (end = length);\n if (null !== (next = node.nextSibling)) break;\n node = parentNode;\n parentNode = node.parentNode;\n }\n node = next;\n }\n JSCompiler_temp =\n -1 === start || -1 === end ? null : { start: start, end: end };\n } else JSCompiler_temp = null;\n }\n JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n } else JSCompiler_temp = null;\n selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n _enabled = !1;\n for (nextEffect = firstChild; null !== nextEffect; )\n if (\n ((firstChild = nextEffect),\n (root = firstChild.child),\n 0 !== (firstChild.subtreeFlags & 1028) && null !== root)\n )\n (root.return = firstChild), (nextEffect = root);\n else\n for (; null !== nextEffect; ) {\n firstChild = nextEffect;\n focusNode = firstChild.alternate;\n root = firstChild.flags;\n switch (firstChild.tag) {\n case 0:\n if (\n 0 !== (root & 4) &&\n ((root = firstChild.updateQueue),\n (root = null !== root ? root.events : null),\n null !== root)\n )\n for (\n JSCompiler_temp = 0;\n JSCompiler_temp < root.length;\n JSCompiler_temp++\n )\n (anchorOffset = root[JSCompiler_temp]),\n (anchorOffset.ref.impl = anchorOffset.nextImpl);\n break;\n case 11:\n case 15:\n break;\n case 1:\n if (0 !== (root & 1024) && null !== focusNode) {\n root = void 0;\n JSCompiler_temp = firstChild;\n anchorOffset = focusNode.memoizedProps;\n focusNode = focusNode.memoizedState;\n selection = JSCompiler_temp.stateNode;\n try {\n var resolvedPrevProps = resolveClassComponentProps(\n JSCompiler_temp.type,\n anchorOffset\n );\n root = selection.getSnapshotBeforeUpdate(\n resolvedPrevProps,\n focusNode\n );\n selection.__reactInternalSnapshotBeforeUpdate = root;\n } catch (error) {\n captureCommitPhaseError(\n JSCompiler_temp,\n JSCompiler_temp.return,\n error\n );\n }\n }\n break;\n case 3:\n if (0 !== (root & 1024))\n if (\n ((root = firstChild.stateNode.containerInfo),\n (JSCompiler_temp = root.nodeType),\n 9 === JSCompiler_temp)\n )\n clearContainerSparingly(root);\n else if (1 === JSCompiler_temp)\n switch (root.nodeName) {\n case \"HEAD\":\n case \"HTML\":\n case \"BODY\":\n clearContainerSparingly(root);\n break;\n default:\n root.textContent = \"\";\n }\n break;\n case 5:\n case 26:\n case 27:\n case 6:\n case 4:\n case 17:\n break;\n default:\n if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n }\n root = firstChild.sibling;\n if (null !== root) {\n root.return = firstChild.return;\n nextEffect = root;\n break;\n }\n nextEffect = firstChild.return;\n }\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitHookEffectListMount(5, finishedWork);\n break;\n case 1:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (flags & 4)\n if (((finishedRoot = finishedWork.stateNode), null === current))\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n else {\n var prevProps = resolveClassComponentProps(\n finishedWork.type,\n current.memoizedProps\n );\n current = current.memoizedState;\n try {\n finishedRoot.componentDidUpdate(\n prevProps,\n current,\n finishedRoot.__reactInternalSnapshotBeforeUpdate\n );\n } catch (error$139) {\n captureCommitPhaseError(\n finishedWork,\n finishedWork.return,\n error$139\n );\n }\n }\n flags & 64 && commitClassCallbacks(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (\n flags & 64 &&\n ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)\n ) {\n current = null;\n if (null !== finishedWork.child)\n switch (finishedWork.child.tag) {\n case 27:\n case 5:\n current = finishedWork.child.stateNode;\n break;\n case 1:\n current = finishedWork.child.stateNode;\n }\n try {\n commitCallbacks(finishedRoot, current);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 27:\n null === current &&\n flags & 4 &&\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n null === current && flags & 4 && commitHostMount(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n break;\n case 31:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n flags & 64 &&\n ((finishedRoot = finishedWork.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated),\n null !== finishedRoot &&\n ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n null,\n finishedWork\n )),\n registerSuspenseInstanceRetry(finishedRoot, finishedWork))));\n break;\n case 22:\n flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n if (!flags) {\n current =\n (null !== current && null !== current.memoizedState) ||\n offscreenSubtreeWasHidden;\n prevProps = offscreenSubtreeIsHidden;\n var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = flags;\n (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n ? recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n 0 !== (finishedWork.subtreeFlags & 8772)\n )\n : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n offscreenSubtreeIsHidden = prevProps;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n }\n break;\n case 30:\n break;\n default:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n }\n}\nfunction detachFiberAfterEffects(fiber) {\n var alternate = fiber.alternate;\n null !== alternate &&\n ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n fiber.child = null;\n fiber.deletions = null;\n fiber.sibling = null;\n 5 === fiber.tag &&\n ((alternate = fiber.stateNode),\n null !== alternate && detachDeletedInstance(alternate));\n fiber.stateNode = null;\n fiber.return = null;\n fiber.dependencies = null;\n fiber.memoizedProps = null;\n fiber.memoizedState = null;\n fiber.pendingProps = null;\n fiber.stateNode = null;\n fiber.updateQueue = null;\n}\nvar hostParent = null,\n hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n parent\n) {\n for (parent = parent.child; null !== parent; )\n commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n) {\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n try {\n injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n } catch (err) {}\n switch (deletedFiber.tag) {\n case 26:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n deletedFiber.memoizedState\n ? deletedFiber.memoizedState.count--\n : deletedFiber.stateNode &&\n ((deletedFiber = deletedFiber.stateNode),\n deletedFiber.parentNode.removeChild(deletedFiber));\n break;\n case 27:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n var prevHostParent = hostParent,\n prevHostParentIsContainer = hostParentIsContainer;\n isSingletonScope(deletedFiber.type) &&\n ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = !1));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n releaseSingletonInstance(deletedFiber.stateNode);\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 5:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n case 6:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = null;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n if (null !== hostParent)\n if (hostParentIsContainer)\n try {\n (9 === hostParent.nodeType\n ? hostParent.body\n : \"HTML\" === hostParent.nodeName\n ? hostParent.ownerDocument.body\n : hostParent\n ).removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n else\n try {\n hostParent.removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n break;\n case 18:\n null !== hostParent &&\n (hostParentIsContainer\n ? ((finishedRoot = hostParent),\n clearHydrationBoundary(\n 9 === finishedRoot.nodeType\n ? finishedRoot.body\n : \"HTML\" === finishedRoot.nodeName\n ? finishedRoot.ownerDocument.body\n : finishedRoot,\n deletedFiber.stateNode\n ),\n retryIfBlockedOn(finishedRoot))\n : clearHydrationBoundary(hostParent, deletedFiber.stateNode));\n break;\n case 4:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = deletedFiber.stateNode.containerInfo;\n hostParentIsContainer = !0;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n offscreenSubtreeWasHidden ||\n commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 1:\n offscreenSubtreeWasHidden ||\n (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n (prevHostParent = deletedFiber.stateNode),\n \"function\" === typeof prevHostParent.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n deletedFiber,\n nearestMountedAncestor,\n prevHostParent\n ));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 21:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 22:\n offscreenSubtreeWasHidden =\n (prevHostParent = offscreenSubtreeWasHidden) ||\n null !== deletedFiber.memoizedState;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n offscreenSubtreeWasHidden = prevHostParent;\n break;\n default:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n }\n}\nfunction commitActivityHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState), null !== finishedRoot))\n ) {\n finishedRoot = finishedRoot.dehydrated;\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n )\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction getRetryCache(finishedWork) {\n switch (finishedWork.tag) {\n case 31:\n case 13:\n case 19:\n var retryCache = finishedWork.stateNode;\n null === retryCache &&\n (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n return retryCache;\n case 22:\n return (\n (finishedWork = finishedWork.stateNode),\n (retryCache = finishedWork._retryCache),\n null === retryCache &&\n (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n retryCache\n );\n default:\n throw Error(formatProdErrorMessage(435, finishedWork.tag));\n }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n var retryCache = getRetryCache(finishedWork);\n wakeables.forEach(function (wakeable) {\n if (!retryCache.has(wakeable)) {\n retryCache.add(wakeable);\n var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n wakeable.then(retry, retry);\n }\n });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n var deletions = parentFiber.deletions;\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i],\n root = root$jscomp$0,\n returnFiber = parentFiber,\n parent = returnFiber;\n a: for (; null !== parent; ) {\n switch (parent.tag) {\n case 27:\n if (isSingletonScope(parent.type)) {\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n }\n break;\n case 5:\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n case 3:\n case 4:\n hostParent = parent.stateNode.containerInfo;\n hostParentIsContainer = !0;\n break a;\n }\n parent = parent.return;\n }\n if (null === hostParent) throw Error(formatProdErrorMessage(160));\n commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n hostParent = null;\n hostParentIsContainer = !1;\n root = childToDelete.alternate;\n null !== root && (root.return = null);\n childToDelete.return = null;\n }\n if (parentFiber.subtreeFlags & 13886)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\n var current = finishedWork.alternate,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n commitHookEffectListMount(3, finishedWork),\n commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n break;\n case 1:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n flags & 64 &&\n offscreenSubtreeIsHidden &&\n ((finishedWork = finishedWork.updateQueue),\n null !== finishedWork &&\n ((flags = finishedWork.callbacks),\n null !== flags &&\n ((current = finishedWork.shared.hiddenCallbacks),\n (finishedWork.shared.hiddenCallbacks =\n null === current ? flags : current.concat(flags)))));\n break;\n case 26:\n var hoistableRoot = currentHoistableRoot;\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (flags & 4) {\n var currentResource = null !== current ? current.memoizedState : null;\n flags = finishedWork.memoizedState;\n if (null === current)\n if (null === flags)\n if (null === finishedWork.stateNode) {\n a: {\n flags = finishedWork.type;\n current = finishedWork.memoizedProps;\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n b: switch (flags) {\n case \"title\":\n currentResource =\n hoistableRoot.getElementsByTagName(\"title\")[0];\n if (\n !currentResource ||\n currentResource[internalHoistableMarker] ||\n currentResource[internalInstanceKey] ||\n \"http://www.w3.org/2000/svg\" ===\n currentResource.namespaceURI ||\n currentResource.hasAttribute(\"itemprop\")\n )\n (currentResource = hoistableRoot.createElement(flags)),\n hoistableRoot.head.insertBefore(\n currentResource,\n hoistableRoot.querySelector(\"head > title\")\n );\n setInitialProperties(currentResource, flags, current);\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n break a;\n case \"link\":\n var maybeNodes = getHydratableHoistableCache(\n \"link\",\n \"href\",\n hoistableRoot\n ).get(flags + (current.href || \"\"));\n if (maybeNodes)\n for (var i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"href\") ===\n (null == current.href || \"\" === current.href\n ? null\n : current.href) &&\n currentResource.getAttribute(\"rel\") ===\n (null == current.rel ? null : current.rel) &&\n currentResource.getAttribute(\"title\") ===\n (null == current.title ? null : current.title) &&\n currentResource.getAttribute(\"crossorigin\") ===\n (null == current.crossOrigin\n ? null\n : current.crossOrigin))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n case \"meta\":\n if (\n (maybeNodes = getHydratableHoistableCache(\n \"meta\",\n \"content\",\n hoistableRoot\n ).get(flags + (current.content || \"\")))\n )\n for (i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"content\") ===\n (null == current.content\n ? null\n : \"\" + current.content) &&\n currentResource.getAttribute(\"name\") ===\n (null == current.name ? null : current.name) &&\n currentResource.getAttribute(\"property\") ===\n (null == current.property\n ? null\n : current.property) &&\n currentResource.getAttribute(\"http-equiv\") ===\n (null == current.httpEquiv\n ? null\n : current.httpEquiv) &&\n currentResource.getAttribute(\"charset\") ===\n (null == current.charSet\n ? null\n : current.charSet))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n default:\n throw Error(formatProdErrorMessage(468, flags));\n }\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n }\n finishedWork.stateNode = flags;\n } else\n mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n );\n else\n finishedWork.stateNode = acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n );\n else\n currentResource !== flags\n ? (null === currentResource\n ? null !== current.stateNode &&\n ((current = current.stateNode),\n current.parentNode.removeChild(current))\n : currentResource.count--,\n null === flags\n ? mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n )\n : acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n ))\n : null === flags &&\n null !== finishedWork.stateNode &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n }\n break;\n case 27:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n null !== current &&\n flags & 4 &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n break;\n case 5:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (finishedWork.flags & 32) {\n hoistableRoot = finishedWork.stateNode;\n try {\n setTextContent(hoistableRoot, \"\");\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n flags & 4 &&\n null != finishedWork.stateNode &&\n ((hoistableRoot = finishedWork.memoizedProps),\n commitHostUpdate(\n finishedWork,\n hoistableRoot,\n null !== current ? current.memoizedProps : hoistableRoot\n ));\n flags & 1024 && (needsFormReset = !0);\n break;\n case 6:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n if (flags & 4) {\n if (null === finishedWork.stateNode)\n throw Error(formatProdErrorMessage(162));\n flags = finishedWork.memoizedProps;\n current = finishedWork.stateNode;\n try {\n current.nodeValue = flags;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 3:\n tagCaches = null;\n hoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(root.containerInfo);\n recursivelyTraverseMutationEffects(root, finishedWork);\n currentHoistableRoot = hoistableRoot;\n commitReconciliationEffects(finishedWork);\n if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n try {\n retryIfBlockedOn(root.containerInfo);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n needsFormReset &&\n ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n break;\n case 4:\n flags = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(\n finishedWork.stateNode.containerInfo\n );\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n currentHoistableRoot = flags;\n break;\n case 12:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n break;\n case 31:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 13:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n finishedWork.child.flags & 8192 &&\n (null !== finishedWork.memoizedState) !==\n (null !== current && null !== current.memoizedState) &&\n (globalMostRecentFallbackTime = now());\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 22:\n hoistableRoot = null !== finishedWork.memoizedState;\n var wasHidden = null !== current && null !== current.memoizedState,\n prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || hoistableRoot;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;\n recursivelyTraverseMutationEffects(root, finishedWork);\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n commitReconciliationEffects(finishedWork);\n if (flags & 8192)\n a: for (\n root = finishedWork.stateNode,\n root._visibility = hoistableRoot\n ? root._visibility & -2\n : root._visibility | 1,\n hoistableRoot &&\n (null === current ||\n wasHidden ||\n offscreenSubtreeIsHidden ||\n offscreenSubtreeWasHidden ||\n recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n current = null,\n root = finishedWork;\n ;\n\n ) {\n if (5 === root.tag || 26 === root.tag) {\n if (null === current) {\n wasHidden = current = root;\n try {\n if (((currentResource = wasHidden.stateNode), hoistableRoot))\n (maybeNodes = currentResource.style),\n \"function\" === typeof maybeNodes.setProperty\n ? maybeNodes.setProperty(\"display\", \"none\", \"important\")\n : (maybeNodes.display = \"none\");\n else {\n i = wasHidden.stateNode;\n var styleProp = wasHidden.memoizedProps.style,\n display =\n void 0 !== styleProp &&\n null !== styleProp &&\n styleProp.hasOwnProperty(\"display\")\n ? styleProp.display\n : null;\n i.style.display =\n null == display || \"boolean\" === typeof display\n ? \"\"\n : (\"\" + display).trim();\n }\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (6 === root.tag) {\n if (null === current) {\n wasHidden = root;\n try {\n wasHidden.stateNode.nodeValue = hoistableRoot\n ? \"\"\n : wasHidden.memoizedProps;\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (18 === root.tag) {\n if (null === current) {\n wasHidden = root;\n try {\n var instance = wasHidden.stateNode;\n hoistableRoot\n ? hideOrUnhideDehydratedBoundary(instance, !0)\n : hideOrUnhideDehydratedBoundary(wasHidden.stateNode, !1);\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (\n ((22 !== root.tag && 23 !== root.tag) ||\n null === root.memoizedState ||\n root === finishedWork) &&\n null !== root.child\n ) {\n root.child.return = root;\n root = root.child;\n continue;\n }\n if (root === finishedWork) break a;\n for (; null === root.sibling; ) {\n if (null === root.return || root.return === finishedWork) break a;\n current === root && (current = null);\n root = root.return;\n }\n current === root && (current = null);\n root.sibling.return = root.return;\n root = root.sibling;\n }\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((current = flags.retryQueue),\n null !== current &&\n ((flags.retryQueue = null),\n attachSuspenseRetryListeners(finishedWork, current))));\n break;\n case 19:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 30:\n break;\n case 21:\n break;\n default:\n recursivelyTraverseMutationEffects(root, finishedWork),\n commitReconciliationEffects(finishedWork);\n }\n}\nfunction commitReconciliationEffects(finishedWork) {\n var flags = finishedWork.flags;\n if (flags & 2) {\n try {\n for (\n var hostParentFiber, parentFiber = finishedWork.return;\n null !== parentFiber;\n\n ) {\n if (isHostParent(parentFiber)) {\n hostParentFiber = parentFiber;\n break;\n }\n parentFiber = parentFiber.return;\n }\n if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));\n switch (hostParentFiber.tag) {\n case 27:\n var parent = hostParentFiber.stateNode,\n before = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before, parent);\n break;\n case 5:\n var parent$141 = hostParentFiber.stateNode;\n hostParentFiber.flags & 32 &&\n (setTextContent(parent$141, \"\"), (hostParentFiber.flags &= -33));\n var before$142 = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before$142, parent$141);\n break;\n case 3:\n case 4:\n var parent$143 = hostParentFiber.stateNode.containerInfo,\n before$144 = getHostSibling(finishedWork);\n insertOrAppendPlacementNodeIntoContainer(\n finishedWork,\n before$144,\n parent$143\n );\n break;\n default:\n throw Error(formatProdErrorMessage(161));\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n finishedWork.flags &= -3;\n }\n flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n if (parentFiber.subtreeFlags & 1024)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var fiber = parentFiber;\n recursivelyResetForms(fiber);\n 5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n if (parentFiber.subtreeFlags & 8772)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedWork = parentFiber;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 1:\n safelyDetachRef(finishedWork, finishedWork.return);\n var instance = finishedWork.stateNode;\n \"function\" === typeof instance.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n finishedWork,\n finishedWork.return,\n instance\n );\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 27:\n releaseSingletonInstance(finishedWork.stateNode);\n case 26:\n case 5:\n safelyDetachRef(finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 30:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n default:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var current = parentFiber.alternate,\n finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(4, finishedWork);\n break;\n case 1:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n current = finishedWork;\n finishedRoot = current.stateNode;\n if (\"function\" === typeof finishedRoot.componentDidMount)\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n current = finishedWork;\n finishedRoot = current.updateQueue;\n if (null !== finishedRoot) {\n var instance = current.stateNode;\n try {\n var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n if (null !== hiddenCallbacks)\n for (\n finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n finishedRoot < hiddenCallbacks.length;\n finishedRoot++\n )\n callCallback(hiddenCallbacks[finishedRoot], instance);\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n }\n includeWorkInProgressEffects &&\n flags & 64 &&\n commitClassCallbacks(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 27:\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n null === current &&\n flags & 4 &&\n commitHostMount(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n break;\n case 31:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 30:\n break;\n default:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n var previousCache = null;\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (previousCache = current.memoizedState.cachePool.pool);\n current = null;\n null !== finishedWork.memoizedState &&\n null !== finishedWork.memoizedState.cachePool &&\n (current = finishedWork.memoizedState.cachePool.pool);\n current !== previousCache &&\n (null != current && current.refCount++,\n null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n current = null;\n null !== finishedWork.alternate &&\n (current = finishedWork.alternate.memoizedState.cache);\n finishedWork = finishedWork.memoizedState.cache;\n finishedWork !== current &&\n (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveMountOnFiber(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 && commitHookEffectListMount(9, finishedWork);\n break;\n case 1:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 3:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n ((finishedRoot = null),\n null !== finishedWork.alternate &&\n (finishedRoot = finishedWork.alternate.memoizedState.cache),\n (finishedWork = finishedWork.memoizedState.cache),\n finishedWork !== finishedRoot &&\n (finishedWork.refCount++,\n null != finishedRoot && releaseCache(finishedRoot)));\n break;\n case 12:\n if (flags & 2048) {\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n finishedRoot = finishedWork.stateNode;\n try {\n var _finishedWork$memoize2 = finishedWork.memoizedProps,\n id = _finishedWork$memoize2.id,\n onPostCommit = _finishedWork$memoize2.onPostCommit;\n \"function\" === typeof onPostCommit &&\n onPostCommit(\n id,\n null === finishedWork.alternate ? \"mount\" : \"update\",\n finishedRoot.passiveEffectDuration,\n -0\n );\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n } else\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 31:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 13:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 23:\n break;\n case 22:\n _finishedWork$memoize2 = finishedWork.stateNode;\n id = finishedWork.alternate;\n null !== finishedWork.memoizedState\n ? _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n : _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : ((_finishedWork$memoize2._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n 0 !== (finishedWork.subtreeFlags & 10256) || !1\n ));\n flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n break;\n case 24:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n committedLanes$jscomp$0,\n committedTransitions$jscomp$0,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects &&\n (0 !== (parentFiber.subtreeFlags & 10256) || !1);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n committedLanes = committedLanes$jscomp$0,\n committedTransitions = committedTransitions$jscomp$0,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(8, finishedWork);\n break;\n case 23:\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState\n ? instance._visibility & 2\n ? recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n )\n : recursivelyTraverseAtomicPassiveEffects(\n finishedRoot,\n finishedWork\n )\n : ((instance._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n ));\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 22:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(\n parentFiber,\n committedLanes,\n suspendedState\n) {\n if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n accumulateSuspenseyCommitOnFiber(\n parentFiber,\n committedLanes,\n suspendedState\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(\n fiber,\n committedLanes,\n suspendedState\n) {\n switch (fiber.tag) {\n case 26:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n fiber.flags & suspenseyCommitFlag &&\n null !== fiber.memoizedState &&\n suspendResource(\n suspendedState,\n currentHoistableRoot,\n fiber.memoizedState,\n fiber.memoizedProps\n );\n break;\n case 5:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n break;\n case 3:\n case 4:\n var previousHoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n currentHoistableRoot = previousHoistableRoot;\n break;\n case 22:\n null === fiber.memoizedState &&\n ((previousHoistableRoot = fiber.alternate),\n null !== previousHoistableRoot &&\n null !== previousHoistableRoot.memoizedState\n ? ((previousHoistableRoot = suspenseyCommitFlag),\n (suspenseyCommitFlag = 16777216),\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n ),\n (suspenseyCommitFlag = previousHoistableRoot))\n : recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n ));\n break;\n default:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n }\n}\nfunction detachAlternateSiblings(parentFiber) {\n var previousFiber = parentFiber.alternate;\n if (\n null !== previousFiber &&\n ((parentFiber = previousFiber.child), null !== parentFiber)\n ) {\n previousFiber.child = null;\n do\n (previousFiber = parentFiber.sibling),\n (parentFiber.sibling = null),\n (parentFiber = previousFiber);\n while (null !== parentFiber);\n }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveUnmountOnFiber(parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n finishedWork.flags & 2048 &&\n commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 12:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState &&\n instance._visibility & 2 &&\n (null === finishedWork.return || 13 !== finishedWork.return.tag)\n ? ((instance._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n : recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n default:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n deletions = parentFiber;\n switch (deletions.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, deletions, deletions.return);\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n break;\n case 22:\n i = deletions.stateNode;\n i._visibility & 2 &&\n ((i._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(deletions));\n break;\n default:\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n deletedSubtreeRoot,\n nearestMountedAncestor\n) {\n for (; null !== nextEffect; ) {\n var fiber = nextEffect;\n switch (fiber.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n break;\n case 23:\n case 22:\n if (\n null !== fiber.memoizedState &&\n null !== fiber.memoizedState.cachePool\n ) {\n var cache = fiber.memoizedState.cachePool.pool;\n null != cache && cache.refCount++;\n }\n break;\n case 24:\n releaseCache(fiber.memoizedState.cache);\n }\n cache = fiber.child;\n if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n else\n a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n cache = nextEffect;\n var sibling = cache.sibling,\n returnFiber = cache.return;\n detachFiberAfterEffects(cache);\n if (cache === fiber) {\n nextEffect = null;\n break a;\n }\n if (null !== sibling) {\n sibling.return = returnFiber;\n nextEffect = sibling;\n break a;\n }\n nextEffect = returnFiber;\n }\n }\n}\nvar DefaultAsyncDispatcher = {\n getCacheForType: function (resourceType) {\n var cache = readContext(CacheContext),\n cacheForType = cache.data.get(resourceType);\n void 0 === cacheForType &&\n ((cacheForType = resourceType()),\n cache.data.set(resourceType, cacheForType));\n return cacheForType;\n },\n cacheSignal: function () {\n return readContext(CacheContext).controller.signal;\n }\n },\n PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n executionContext = 0,\n workInProgressRoot = null,\n workInProgress = null,\n workInProgressRootRenderLanes = 0,\n workInProgressSuspendedReason = 0,\n workInProgressThrownValue = null,\n workInProgressRootDidSkipSuspendedSiblings = !1,\n workInProgressRootIsPrerendering = !1,\n workInProgressRootDidAttachPingListener = !1,\n entangledRenderLanes = 0,\n workInProgressRootExitStatus = 0,\n workInProgressRootSkippedLanes = 0,\n workInProgressRootInterleavedUpdatedLanes = 0,\n workInProgressRootPingedLanes = 0,\n workInProgressDeferredLane = 0,\n workInProgressSuspendedRetryLanes = 0,\n workInProgressRootConcurrentErrors = null,\n workInProgressRootRecoverableErrors = null,\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n globalMostRecentFallbackTime = 0,\n globalMostRecentTransitionTime = 0,\n workInProgressRootRenderTargetTime = Infinity,\n workInProgressTransitions = null,\n legacyErrorBoundariesThatAlreadyFailed = null,\n pendingEffectsStatus = 0,\n pendingEffectsRoot = null,\n pendingFinishedWork = null,\n pendingEffectsLanes = 0,\n pendingEffectsRemainingLanes = 0,\n pendingPassiveTransitions = null,\n pendingRecoverableErrors = null,\n nestedUpdateCount = 0,\n rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n return 0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes\n ? workInProgressRootRenderLanes & -workInProgressRootRenderLanes\n : null !== ReactSharedInternals.T\n ? requestTransitionLane()\n : resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n if (0 === workInProgressDeferredLane)\n if (0 === (workInProgressRootRenderLanes & 536870912) || isHydrating) {\n var lane = nextTransitionDeferredLane;\n nextTransitionDeferredLane <<= 1;\n 0 === (nextTransitionDeferredLane & 3932160) &&\n (nextTransitionDeferredLane = 262144);\n workInProgressDeferredLane = lane;\n } else workInProgressDeferredLane = 536870912;\n lane = suspenseHandlerStackCursor.current;\n null !== lane && (lane.flags |= 32);\n return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n if (\n (root === workInProgressRoot &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n prepareFreshStack(root, 0),\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n markRootUpdated$1(root, lane);\n if (0 === (executionContext & 2) || root !== workInProgressRoot)\n root === workInProgressRoot &&\n (0 === (executionContext & 2) &&\n (workInProgressRootInterleavedUpdatedLanes |= lane),\n 4 === workInProgressRootExitStatus &&\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n )),\n ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n var shouldTimeSlice =\n (!forceSync &&\n 0 === (lanes & 127) &&\n 0 === (lanes & root$jscomp$0.expiredLanes)) ||\n checkIfRootIsPrerendering(root$jscomp$0, lanes),\n exitStatus = shouldTimeSlice\n ? renderRootConcurrent(root$jscomp$0, lanes)\n : renderRootSync(root$jscomp$0, lanes, !0),\n renderWasConcurrent = shouldTimeSlice;\n do {\n if (0 === exitStatus) {\n workInProgressRootIsPrerendering &&\n !shouldTimeSlice &&\n markRootSuspended(root$jscomp$0, lanes, 0, !1);\n break;\n } else {\n forceSync = root$jscomp$0.current.alternate;\n if (\n renderWasConcurrent &&\n !isRenderConsistentWithExternalStores(forceSync)\n ) {\n exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n renderWasConcurrent = !1;\n continue;\n }\n if (2 === exitStatus) {\n renderWasConcurrent = lanes;\n if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n var JSCompiler_inline_result = 0;\n else\n (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n (JSCompiler_inline_result =\n 0 !== JSCompiler_inline_result\n ? JSCompiler_inline_result\n : JSCompiler_inline_result & 536870912\n ? 536870912\n : 0);\n if (0 !== JSCompiler_inline_result) {\n lanes = JSCompiler_inline_result;\n a: {\n var root = root$jscomp$0;\n exitStatus = workInProgressRootConcurrentErrors;\n var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n wasRootDehydrated &&\n (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n JSCompiler_inline_result = renderRootSync(\n root,\n JSCompiler_inline_result,\n !1\n );\n if (2 !== JSCompiler_inline_result) {\n if (\n workInProgressRootDidAttachPingListener &&\n !wasRootDehydrated\n ) {\n root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n workInProgressRootInterleavedUpdatedLanes |=\n renderWasConcurrent;\n exitStatus = 4;\n break a;\n }\n renderWasConcurrent = workInProgressRootRecoverableErrors;\n workInProgressRootRecoverableErrors = exitStatus;\n null !== renderWasConcurrent &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = renderWasConcurrent)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n renderWasConcurrent\n ));\n }\n exitStatus = JSCompiler_inline_result;\n }\n renderWasConcurrent = !1;\n if (2 !== exitStatus) continue;\n }\n }\n if (1 === exitStatus) {\n prepareFreshStack(root$jscomp$0, 0);\n markRootSuspended(root$jscomp$0, lanes, 0, !0);\n break;\n }\n a: {\n shouldTimeSlice = root$jscomp$0;\n renderWasConcurrent = exitStatus;\n switch (renderWasConcurrent) {\n case 0:\n case 1:\n throw Error(formatProdErrorMessage(345));\n case 4:\n if ((lanes & 4194048) !== lanes) break;\n case 6:\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n break a;\n case 2:\n workInProgressRootRecoverableErrors = null;\n break;\n case 3:\n case 5:\n break;\n default:\n throw Error(formatProdErrorMessage(329));\n }\n if (\n (lanes & 62914560) === lanes &&\n ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n 10 < exitStatus)\n ) {\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n pendingEffectsLanes = lanes;\n shouldTimeSlice.timeoutHandle = scheduleTimeout(\n commitRootWhenReady.bind(\n null,\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n \"Throttled\",\n -0,\n 0\n ),\n exitStatus\n );\n break a;\n }\n commitRootWhenReady(\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n null,\n -0,\n 0\n );\n }\n }\n break;\n } while (1);\n ensureRootIsScheduled(root$jscomp$0);\n}\nfunction commitRootWhenReady(\n root,\n finishedWork,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n lanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n didSkipSuspendedSiblings,\n exitStatus,\n suspendedCommitReason,\n completedRenderStartTime,\n completedRenderEndTime\n) {\n root.timeoutHandle = -1;\n suspendedCommitReason = finishedWork.subtreeFlags;\n if (\n suspendedCommitReason & 8192 ||\n 16785408 === (suspendedCommitReason & 16785408)\n ) {\n suspendedCommitReason = {\n stylesheets: null,\n count: 0,\n imgCount: 0,\n imgBytes: 0,\n suspenseyImages: [],\n waitingForImages: !0,\n waitingForViewTransition: !1,\n unsuspend: noop$1\n };\n accumulateSuspenseyCommitOnFiber(\n finishedWork,\n lanes,\n suspendedCommitReason\n );\n var timeoutOffset =\n (lanes & 62914560) === lanes\n ? globalMostRecentFallbackTime - now()\n : (lanes & 4194048) === lanes\n ? globalMostRecentTransitionTime - now()\n : 0;\n timeoutOffset = waitForCommitToBeReady(\n suspendedCommitReason,\n timeoutOffset\n );\n if (null !== timeoutOffset) {\n pendingEffectsLanes = lanes;\n root.cancelPendingCommit = timeoutOffset(\n commitRoot.bind(\n null,\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n exitStatus,\n suspendedCommitReason,\n null,\n completedRenderStartTime,\n completedRenderEndTime\n )\n );\n markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n return;\n }\n }\n commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n for (var node = finishedWork; ; ) {\n var tag = node.tag;\n if (\n (0 === tag || 11 === tag || 15 === tag) &&\n node.flags & 16384 &&\n ((tag = node.updateQueue),\n null !== tag && ((tag = tag.stores), null !== tag))\n )\n for (var i = 0; i < tag.length; i++) {\n var check = tag[i],\n getSnapshot = check.getSnapshot;\n check = check.value;\n try {\n if (!objectIs(getSnapshot(), check)) return !1;\n } catch (error) {\n return !1;\n }\n }\n tag = node.child;\n if (node.subtreeFlags & 16384 && null !== tag)\n (tag.return = node), (node = tag);\n else {\n if (node === finishedWork) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === finishedWork) return !0;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n return !0;\n}\nfunction markRootSuspended(\n root,\n suspendedLanes,\n spawnedLane,\n didAttemptEntireTree\n) {\n suspendedLanes &= ~workInProgressRootPingedLanes;\n suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n root.suspendedLanes |= suspendedLanes;\n root.pingedLanes &= ~suspendedLanes;\n didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n didAttemptEntireTree = root.expirationTimes;\n for (var lanes = suspendedLanes; 0 < lanes; ) {\n var index$6 = 31 - clz32(lanes),\n lane = 1 << index$6;\n didAttemptEntireTree[index$6] = -1;\n lanes &= ~lane;\n }\n 0 !== spawnedLane &&\n markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n return 0 === (executionContext & 6)\n ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n : !0;\n}\nfunction resetWorkInProgressStack() {\n if (null !== workInProgress) {\n if (0 === workInProgressSuspendedReason)\n var interruptedWork = workInProgress.return;\n else\n (interruptedWork = workInProgress),\n (lastContextDependency = currentlyRenderingFiber$1 = null),\n resetHooksOnUnwind(interruptedWork),\n (thenableState$1 = null),\n (thenableIndexCounter$1 = 0),\n (interruptedWork = workInProgress);\n for (; null !== interruptedWork; )\n unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n (interruptedWork = interruptedWork.return);\n workInProgress = null;\n }\n}\nfunction prepareFreshStack(root, lanes) {\n var timeoutHandle = root.timeoutHandle;\n -1 !== timeoutHandle &&\n ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n timeoutHandle = root.cancelPendingCommit;\n null !== timeoutHandle &&\n ((root.cancelPendingCommit = null), timeoutHandle());\n pendingEffectsLanes = 0;\n resetWorkInProgressStack();\n workInProgressRoot = root;\n workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n workInProgressRootRenderLanes = lanes;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n workInProgressRootDidSkipSuspendedSiblings = !1;\n workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n workInProgressRootDidAttachPingListener = !1;\n workInProgressSuspendedRetryLanes =\n workInProgressDeferredLane =\n workInProgressRootPingedLanes =\n workInProgressRootInterleavedUpdatedLanes =\n workInProgressRootSkippedLanes =\n workInProgressRootExitStatus =\n 0;\n workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n null;\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n 0 !== (lanes & 8) && (lanes |= lanes & 32);\n var allEntangledLanes = root.entangledLanes;\n if (0 !== allEntangledLanes)\n for (\n root = root.entanglements, allEntangledLanes &= lanes;\n 0 < allEntangledLanes;\n\n ) {\n var index$4 = 31 - clz32(allEntangledLanes),\n lane = 1 << index$4;\n lanes |= root[index$4];\n allEntangledLanes &= ~lane;\n }\n entangledRenderLanes = lanes;\n finishQueueingConcurrentUpdates();\n return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n currentlyRenderingFiber = null;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n thrownValue === SuspenseException || thrownValue === SuspenseActionException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 3))\n : thrownValue === SuspenseyCommitException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 4))\n : (workInProgressSuspendedReason =\n thrownValue === SelectiveHydrationException\n ? 8\n : null !== thrownValue &&\n \"object\" === typeof thrownValue &&\n \"function\" === typeof thrownValue.then\n ? 6\n : 1);\n workInProgressThrownValue = thrownValue;\n null === workInProgress &&\n ((workInProgressRootExitStatus = 1),\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n ));\n}\nfunction shouldRemainOnPreviousScreen() {\n var handler = suspenseHandlerStackCursor.current;\n return null === handler\n ? !0\n : (workInProgressRootRenderLanes & 4194048) ===\n workInProgressRootRenderLanes\n ? null === shellBoundary\n ? !0\n : !1\n : (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n ? handler === shellBoundary\n : !1;\n}\nfunction pushDispatcher() {\n var prevDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n var prevAsyncDispatcher = ReactSharedInternals.A;\n ReactSharedInternals.A = DefaultAsyncDispatcher;\n return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n workInProgressRootExitStatus = 4;\n workInProgressRootDidSkipSuspendedSiblings ||\n ((workInProgressRootRenderLanes & 4194048) !==\n workInProgressRootRenderLanes &&\n null !== suspenseHandlerStackCursor.current) ||\n (workInProgressRootIsPrerendering = !0);\n (0 === (workInProgressRootSkippedLanes & 134217727) &&\n 0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n null === workInProgressRoot ||\n markRootSuspended(\n workInProgressRoot,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n lanes = !1;\n var exitStatus = workInProgressRootExitStatus;\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n var unitOfWork = workInProgress,\n thrownValue = workInProgressThrownValue;\n switch (workInProgressSuspendedReason) {\n case 8:\n resetWorkInProgressStack();\n exitStatus = 6;\n break a;\n case 3:\n case 2:\n case 9:\n case 6:\n null === suspenseHandlerStackCursor.current && (lanes = !0);\n var reason = workInProgressSuspendedReason;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n if (\n shouldYieldForPrerendering &&\n workInProgressRootIsPrerendering\n ) {\n exitStatus = 0;\n break a;\n }\n break;\n default:\n (reason = workInProgressSuspendedReason),\n (workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n }\n }\n workLoopSync();\n exitStatus = workInProgressRootExitStatus;\n break;\n } catch (thrownValue$165) {\n handleThrow(root, thrownValue$165);\n }\n while (1);\n lanes && root.shellSuspendCounter++;\n lastContextDependency = currentlyRenderingFiber$1 = null;\n executionContext = prevExecutionContext;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n null === workInProgress &&\n ((workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0),\n finishQueueingConcurrentUpdates());\n return exitStatus;\n}\nfunction workLoopSync() {\n for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n ? ((workInProgressTransitions = null),\n (workInProgressRootRenderTargetTime = now() + 500),\n prepareFreshStack(root, lanes))\n : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n root,\n lanes\n ));\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n lanes = workInProgress;\n var thrownValue = workInProgressThrownValue;\n b: switch (workInProgressSuspendedReason) {\n case 1:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n break;\n case 2:\n case 9:\n if (isThenableResolved(thrownValue)) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n replaySuspendedUnitOfWork(lanes);\n break;\n }\n lanes = function () {\n (2 !== workInProgressSuspendedReason &&\n 9 !== workInProgressSuspendedReason) ||\n workInProgressRoot !== root ||\n (workInProgressSuspendedReason = 7);\n ensureRootIsScheduled(root);\n };\n thrownValue.then(lanes, lanes);\n break a;\n case 3:\n workInProgressSuspendedReason = 7;\n break a;\n case 4:\n workInProgressSuspendedReason = 5;\n break a;\n case 7:\n isThenableResolved(thrownValue)\n ? ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n replaySuspendedUnitOfWork(lanes))\n : ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n break;\n case 5:\n var resource = null;\n switch (workInProgress.tag) {\n case 26:\n resource = workInProgress.memoizedState;\n case 5:\n case 27:\n var hostFiber = workInProgress;\n if (\n resource\n ? preloadResource(resource)\n : hostFiber.stateNode.complete\n ) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n var sibling = hostFiber.sibling;\n if (null !== sibling) workInProgress = sibling;\n else {\n var returnFiber = hostFiber.return;\n null !== returnFiber\n ? ((workInProgress = returnFiber),\n completeUnitOfWork(returnFiber))\n : (workInProgress = null);\n }\n break b;\n }\n }\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n break;\n case 6:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n break;\n case 8:\n resetWorkInProgressStack();\n workInProgressRootExitStatus = 6;\n break a;\n default:\n throw Error(formatProdErrorMessage(462));\n }\n }\n workLoopConcurrentByScheduler();\n break;\n } catch (thrownValue$167) {\n handleThrow(root, thrownValue$167);\n }\n while (1);\n lastContextDependency = currentlyRenderingFiber$1 = null;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n executionContext = prevExecutionContext;\n if (null !== workInProgress) return 0;\n workInProgressRoot = null;\n workInProgressRootRenderLanes = 0;\n finishQueueingConcurrentUpdates();\n return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n for (; null !== workInProgress && !shouldYield(); )\n performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n var next = unitOfWork;\n var current = next.alternate;\n switch (next.tag) {\n case 15:\n case 0:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type,\n void 0,\n workInProgressRootRenderLanes\n );\n break;\n case 11:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type.render,\n next.ref,\n workInProgressRootRenderLanes\n );\n break;\n case 5:\n resetHooksOnUnwind(next);\n default:\n unwindInterruptedWork(current, next),\n (next = workInProgress =\n resetWorkInProgress(next, entangledRenderLanes)),\n (next = beginWork(current, next, entangledRenderLanes));\n }\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n root,\n unitOfWork,\n thrownValue,\n suspendedReason\n) {\n lastContextDependency = currentlyRenderingFiber$1 = null;\n resetHooksOnUnwind(unitOfWork);\n thenableState$1 = null;\n thenableIndexCounter$1 = 0;\n var returnFiber = unitOfWork.return;\n try {\n if (\n throwException(\n root,\n returnFiber,\n unitOfWork,\n thrownValue,\n workInProgressRootRenderLanes\n )\n ) {\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n } catch (error) {\n if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n if (unitOfWork.flags & 32768) {\n if (isHydrating || 1 === suspendedReason) root = !0;\n else if (\n workInProgressRootIsPrerendering ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n )\n root = !1;\n else if (\n ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n 2 === suspendedReason ||\n 9 === suspendedReason ||\n 3 === suspendedReason ||\n 6 === suspendedReason)\n )\n (suspendedReason = suspenseHandlerStackCursor.current),\n null !== suspendedReason &&\n 13 === suspendedReason.tag &&\n (suspendedReason.flags |= 16384);\n unwindUnitOfWork(unitOfWork, root);\n } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n var completedWork = unitOfWork;\n do {\n if (0 !== (completedWork.flags & 32768)) {\n unwindUnitOfWork(\n completedWork,\n workInProgressRootDidSkipSuspendedSiblings\n );\n return;\n }\n unitOfWork = completedWork.return;\n var next = completeWork(\n completedWork.alternate,\n completedWork,\n entangledRenderLanes\n );\n if (null !== next) {\n workInProgress = next;\n return;\n }\n completedWork = completedWork.sibling;\n if (null !== completedWork) {\n workInProgress = completedWork;\n return;\n }\n workInProgress = completedWork = unitOfWork;\n } while (null !== completedWork);\n 0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n do {\n var next = unwindWork(unitOfWork.alternate, unitOfWork);\n if (null !== next) {\n next.flags &= 32767;\n workInProgress = next;\n return;\n }\n next = unitOfWork.return;\n null !== next &&\n ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n if (\n !skipSiblings &&\n ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n ) {\n workInProgress = unitOfWork;\n return;\n }\n workInProgress = unitOfWork = next;\n } while (null !== unitOfWork);\n workInProgressRootExitStatus = 6;\n workInProgress = null;\n}\nfunction commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n root.cancelPendingCommit = null;\n do flushPendingEffects();\n while (0 !== pendingEffectsStatus);\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n if (null !== finishedWork) {\n if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;\n didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;\n markRootFinished(\n root,\n lanes,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n root === workInProgressRoot &&\n ((workInProgress = workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0));\n pendingFinishedWork = finishedWork;\n pendingEffectsRoot = root;\n pendingEffectsLanes = lanes;\n pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;\n pendingPassiveTransitions = transitions;\n pendingRecoverableErrors = recoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? ((root.callbackNode = null),\n (root.callbackPriority = 0),\n scheduleCallback$1(NormalPriority$1, function () {\n flushPassiveEffects();\n return null;\n }))\n : ((root.callbackNode = null), (root.callbackPriority = 0));\n recoverableErrors = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {\n recoverableErrors = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n transitions = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n spawnedLane = executionContext;\n executionContext |= 4;\n try {\n commitBeforeMutationEffects(root, finishedWork, lanes);\n } finally {\n (executionContext = spawnedLane),\n (ReactDOMSharedInternals.p = transitions),\n (ReactSharedInternals.T = recoverableErrors);\n }\n }\n pendingEffectsStatus = 1;\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n }\n}\nfunction flushMutationEffects() {\n if (1 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {\n rootMutationHasEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitMutationEffectsOnFiber(finishedWork, root);\n var priorSelectionInformation = selectionInformation,\n curFocusedElem = getActiveElementDeep(root.containerInfo),\n priorFocusedElem = priorSelectionInformation.focusedElem,\n priorSelectionRange = priorSelectionInformation.selectionRange;\n if (\n curFocusedElem !== priorFocusedElem &&\n priorFocusedElem &&\n priorFocusedElem.ownerDocument &&\n containsNode(\n priorFocusedElem.ownerDocument.documentElement,\n priorFocusedElem\n )\n ) {\n if (\n null !== priorSelectionRange &&\n hasSelectionCapabilities(priorFocusedElem)\n ) {\n var start = priorSelectionRange.start,\n end = priorSelectionRange.end;\n void 0 === end && (end = start);\n if (\"selectionStart\" in priorFocusedElem)\n (priorFocusedElem.selectionStart = start),\n (priorFocusedElem.selectionEnd = Math.min(\n end,\n priorFocusedElem.value.length\n ));\n else {\n var doc = priorFocusedElem.ownerDocument || document,\n win = (doc && doc.defaultView) || window;\n if (win.getSelection) {\n var selection = win.getSelection(),\n length = priorFocusedElem.textContent.length,\n start$jscomp$0 = Math.min(priorSelectionRange.start, length),\n end$jscomp$0 =\n void 0 === priorSelectionRange.end\n ? start$jscomp$0\n : Math.min(priorSelectionRange.end, length);\n !selection.extend &&\n start$jscomp$0 > end$jscomp$0 &&\n ((curFocusedElem = end$jscomp$0),\n (end$jscomp$0 = start$jscomp$0),\n (start$jscomp$0 = curFocusedElem));\n var startMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n start$jscomp$0\n ),\n endMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n end$jscomp$0\n );\n if (\n startMarker &&\n endMarker &&\n (1 !== selection.rangeCount ||\n selection.anchorNode !== startMarker.node ||\n selection.anchorOffset !== startMarker.offset ||\n selection.focusNode !== endMarker.node ||\n selection.focusOffset !== endMarker.offset)\n ) {\n var range = doc.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n start$jscomp$0 > end$jscomp$0\n ? (selection.addRange(range),\n selection.extend(endMarker.node, endMarker.offset))\n : (range.setEnd(endMarker.node, endMarker.offset),\n selection.addRange(range));\n }\n }\n }\n }\n doc = [];\n for (\n selection = priorFocusedElem;\n (selection = selection.parentNode);\n\n )\n 1 === selection.nodeType &&\n doc.push({\n element: selection,\n left: selection.scrollLeft,\n top: selection.scrollTop\n });\n \"function\" === typeof priorFocusedElem.focus &&\n priorFocusedElem.focus();\n for (\n priorFocusedElem = 0;\n priorFocusedElem < doc.length;\n priorFocusedElem++\n ) {\n var info = doc[priorFocusedElem];\n info.element.scrollLeft = info.left;\n info.element.scrollTop = info.top;\n }\n }\n _enabled = !!eventsEnabled;\n selectionInformation = eventsEnabled = null;\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootMutationHasEffect);\n }\n }\n root.current = finishedWork;\n pendingEffectsStatus = 2;\n }\n}\nfunction flushLayoutEffects() {\n if (2 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);\n if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {\n rootHasLayoutEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootHasLayoutEffect);\n }\n }\n pendingEffectsStatus = 3;\n }\n}\nfunction flushSpawnedWork() {\n if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n requestPaint();\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n lanes = pendingEffectsLanes,\n recoverableErrors = pendingRecoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? (pendingEffectsStatus = 5)\n : ((pendingEffectsStatus = 0),\n (pendingFinishedWork = pendingEffectsRoot = null),\n releaseRootPooledCache(root, root.pendingLanes));\n var remainingLanes = root.pendingLanes;\n 0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n lanesToEventPriority(lanes);\n finishedWork = finishedWork.stateNode;\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n try {\n injectedHook.onCommitFiberRoot(\n rendererID,\n finishedWork,\n void 0,\n 128 === (finishedWork.current.flags & 128)\n );\n } catch (err) {}\n if (null !== recoverableErrors) {\n finishedWork = ReactSharedInternals.T;\n remainingLanes = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n ReactSharedInternals.T = null;\n try {\n for (\n var onRecoverableError = root.onRecoverableError, i = 0;\n i < recoverableErrors.length;\n i++\n ) {\n var recoverableError = recoverableErrors[i];\n onRecoverableError(recoverableError.value, {\n componentStack: recoverableError.stack\n });\n }\n } finally {\n (ReactSharedInternals.T = finishedWork),\n (ReactDOMSharedInternals.p = remainingLanes);\n }\n }\n 0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n ensureRootIsScheduled(root);\n remainingLanes = root.pendingLanes;\n 0 !== (lanes & 261930) && 0 !== (remainingLanes & 42)\n ? root === rootWithNestedUpdates\n ? nestedUpdateCount++\n : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n : (nestedUpdateCount = 0);\n flushSyncWorkAcrossRoots_impl(0, !1);\n }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n 0 === (root.pooledCacheLanes &= remainingLanes) &&\n ((remainingLanes = root.pooledCache),\n null != remainingLanes &&\n ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects() {\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n return flushPassiveEffects();\n}\nfunction flushPassiveEffects() {\n if (5 !== pendingEffectsStatus) return !1;\n var root = pendingEffectsRoot,\n remainingLanes = pendingEffectsRemainingLanes;\n pendingEffectsRemainingLanes = 0;\n var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n prevTransition = ReactSharedInternals.T,\n previousPriority = ReactDOMSharedInternals.p;\n try {\n ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n ReactSharedInternals.T = null;\n renderPriority = pendingPassiveTransitions;\n pendingPassiveTransitions = null;\n var root$jscomp$0 = pendingEffectsRoot,\n lanes = pendingEffectsLanes;\n pendingEffectsStatus = 0;\n pendingFinishedWork = pendingEffectsRoot = null;\n pendingEffectsLanes = 0;\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n commitPassiveUnmountOnFiber(root$jscomp$0.current);\n commitPassiveMountOnFiber(\n root$jscomp$0,\n root$jscomp$0.current,\n lanes,\n renderPriority\n );\n executionContext = prevExecutionContext;\n flushSyncWorkAcrossRoots_impl(0, !1);\n if (\n injectedHook &&\n \"function\" === typeof injectedHook.onPostCommitFiberRoot\n )\n try {\n injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);\n } catch (err) {}\n return !0;\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition),\n releaseRootPooledCache(root, remainingLanes);\n }\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n null !== rootFiber &&\n (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n if (3 === sourceFiber.tag)\n captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n else\n for (; null !== nearestMountedAncestor; ) {\n if (3 === nearestMountedAncestor.tag) {\n captureCommitPhaseErrorOnRoot(\n nearestMountedAncestor,\n sourceFiber,\n error\n );\n break;\n } else if (1 === nearestMountedAncestor.tag) {\n var instance = nearestMountedAncestor.stateNode;\n if (\n \"function\" ===\n typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n (\"function\" === typeof instance.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n ) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n error = createClassErrorUpdate(2);\n instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n null !== instance &&\n (initializeClassErrorUpdate(\n error,\n instance,\n nearestMountedAncestor,\n sourceFiber\n ),\n markRootUpdated$1(instance, 2),\n ensureRootIsScheduled(instance));\n break;\n }\n }\n nearestMountedAncestor = nearestMountedAncestor.return;\n }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n var pingCache = root.pingCache;\n if (null === pingCache) {\n pingCache = root.pingCache = new PossiblyWeakMap();\n var threadIDs = new Set();\n pingCache.set(wakeable, threadIDs);\n } else\n (threadIDs = pingCache.get(wakeable)),\n void 0 === threadIDs &&\n ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n threadIDs.has(lanes) ||\n ((workInProgressRootDidAttachPingListener = !0),\n threadIDs.add(lanes),\n (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n var pingCache = root.pingCache;\n null !== pingCache && pingCache.delete(wakeable);\n root.pingedLanes |= root.suspendedLanes & pingedLanes;\n root.warmLanes &= ~pingedLanes;\n workInProgressRoot === root &&\n (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n (4 === workInProgressRootExitStatus ||\n (3 === workInProgressRootExitStatus &&\n (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes &&\n 300 > now() - globalMostRecentFallbackTime)\n ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)\n : (workInProgressRootPingedLanes |= pingedLanes),\n workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n (workInProgressSuspendedRetryLanes = 0));\n ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n 0 === retryLane && (retryLane = claimNextRetryLane());\n boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n null !== boundaryFiber &&\n (markRootUpdated$1(boundaryFiber, retryLane),\n ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n var suspenseState = boundaryFiber.memoizedState,\n retryLane = 0;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n var retryLane = 0;\n switch (boundaryFiber.tag) {\n case 31:\n case 13:\n var retryCache = boundaryFiber.stateNode;\n var suspenseState = boundaryFiber.memoizedState;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n break;\n case 19:\n retryCache = boundaryFiber.stateNode;\n break;\n case 22:\n retryCache = boundaryFiber.stateNode._retryCache;\n break;\n default:\n throw Error(formatProdErrorMessage(314));\n }\n null !== retryCache && retryCache.delete(wakeable);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n lastScheduledRoot = null,\n didScheduleMicrotask = !1,\n mightHavePendingSyncWork = !1,\n isFlushingWork = !1,\n currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n root !== lastScheduledRoot &&\n null === root.next &&\n (null === lastScheduledRoot\n ? (firstScheduledRoot = lastScheduledRoot = root)\n : (lastScheduledRoot = lastScheduledRoot.next = root));\n mightHavePendingSyncWork = !0;\n didScheduleMicrotask ||\n ((didScheduleMicrotask = !0), scheduleImmediateRootScheduleTask());\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n if (!isFlushingWork && mightHavePendingSyncWork) {\n isFlushingWork = !0;\n do {\n var didPerformSomeWork = !1;\n for (var root$170 = firstScheduledRoot; null !== root$170; ) {\n if (!onlyLegacy)\n if (0 !== syncTransitionLanes) {\n var pendingLanes = root$170.pendingLanes;\n if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n else {\n var suspendedLanes = root$170.suspendedLanes,\n pingedLanes = root$170.pingedLanes;\n JSCompiler_inline_result =\n (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n JSCompiler_inline_result &=\n pendingLanes & ~(suspendedLanes & ~pingedLanes);\n JSCompiler_inline_result =\n JSCompiler_inline_result & 201326741\n ? (JSCompiler_inline_result & 201326741) | 1\n : JSCompiler_inline_result\n ? JSCompiler_inline_result | 2\n : 0;\n }\n 0 !== JSCompiler_inline_result &&\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n } else\n (JSCompiler_inline_result = workInProgressRootRenderLanes),\n (JSCompiler_inline_result = getNextLanes(\n root$170,\n root$170 === workInProgressRoot ? JSCompiler_inline_result : 0,\n null !== root$170.cancelPendingCommit ||\n -1 !== root$170.timeoutHandle\n )),\n 0 === (JSCompiler_inline_result & 3) ||\n checkIfRootIsPrerendering(root$170, JSCompiler_inline_result) ||\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n root$170 = root$170.next;\n }\n } while (didPerformSomeWork);\n isFlushingWork = !1;\n }\n}\nfunction processRootScheduleInImmediateTask() {\n processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n mightHavePendingSyncWork = didScheduleMicrotask = !1;\n var syncTransitionLanes = 0;\n 0 !== currentEventTransitionLane &&\n shouldAttemptEagerTransition() &&\n (syncTransitionLanes = currentEventTransitionLane);\n for (\n var currentTime = now(), prev = null, root = firstScheduledRoot;\n null !== root;\n\n ) {\n var next = root.next,\n nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n if (0 === nextLanes)\n (root.next = null),\n null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n null === next && (lastScheduledRoot = prev);\n else if (\n ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n )\n mightHavePendingSyncWork = !0;\n root = next;\n }\n (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus) ||\n flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n 0 !== currentEventTransitionLane && (currentEventTransitionLane = 0);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n for (\n var suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes,\n expirationTimes = root.expirationTimes,\n lanes = root.pendingLanes & -62914561;\n 0 < lanes;\n\n ) {\n var index$5 = 31 - clz32(lanes),\n lane = 1 << index$5,\n expirationTime = expirationTimes[index$5];\n if (-1 === expirationTime) {\n if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n expirationTimes[index$5] = computeExpirationTime(lane, currentTime);\n } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n lanes &= ~lane;\n }\n currentTime = workInProgressRoot;\n suspendedLanes = workInProgressRootRenderLanes;\n suspendedLanes = getNextLanes(\n root,\n root === currentTime ? suspendedLanes : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n pingedLanes = root.callbackNode;\n if (\n 0 === suspendedLanes ||\n (root === currentTime &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n return (\n null !== pingedLanes &&\n null !== pingedLanes &&\n cancelCallback$1(pingedLanes),\n (root.callbackNode = null),\n (root.callbackPriority = 0)\n );\n if (\n 0 === (suspendedLanes & 3) ||\n checkIfRootIsPrerendering(root, suspendedLanes)\n ) {\n currentTime = suspendedLanes & -suspendedLanes;\n if (currentTime === root.callbackPriority) return currentTime;\n null !== pingedLanes && cancelCallback$1(pingedLanes);\n switch (lanesToEventPriority(suspendedLanes)) {\n case 2:\n case 8:\n suspendedLanes = UserBlockingPriority;\n break;\n case 32:\n suspendedLanes = NormalPriority$1;\n break;\n case 268435456:\n suspendedLanes = IdlePriority;\n break;\n default:\n suspendedLanes = NormalPriority$1;\n }\n pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n root.callbackPriority = currentTime;\n root.callbackNode = suspendedLanes;\n return currentTime;\n }\n null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n root.callbackPriority = 2;\n root.callbackNode = null;\n return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n return (root.callbackNode = null), (root.callbackPriority = 0), null;\n var originalCallbackNode = root.callbackNode;\n if (flushPendingEffects() && root.callbackNode !== originalCallbackNode)\n return null;\n var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n root,\n root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n scheduleTaskForRootDuringMicrotask(root, now());\n return null != root.callbackNode && root.callbackNode === originalCallbackNode\n ? performWorkOnRootViaSchedulerTask.bind(null, root)\n : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n if (flushPendingEffects()) return null;\n performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n scheduleMicrotask(function () {\n 0 !== (executionContext & 6)\n ? scheduleCallback$3(\n ImmediatePriority,\n processRootScheduleInImmediateTask\n )\n : processRootScheduleInMicrotask();\n });\n}\nfunction requestTransitionLane() {\n if (0 === currentEventTransitionLane) {\n var actionScopeLane = currentEntangledLane;\n 0 === actionScopeLane &&\n ((actionScopeLane = nextTransitionUpdateLane),\n (nextTransitionUpdateLane <<= 1),\n 0 === (nextTransitionUpdateLane & 261888) &&\n (nextTransitionUpdateLane = 256));\n currentEventTransitionLane = actionScopeLane;\n }\n return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n return null == actionProp ||\n \"symbol\" === typeof actionProp ||\n \"boolean\" === typeof actionProp\n ? null\n : \"function\" === typeof actionProp\n ? actionProp\n : sanitizeURL(\"\" + actionProp);\n}\nfunction createFormDataWithSubmitter(form, submitter) {\n var temp = submitter.ownerDocument.createElement(\"input\");\n temp.name = submitter.name;\n temp.value = submitter.value;\n form.id && temp.setAttribute(\"form\", form.id);\n submitter.parentNode.insertBefore(temp, submitter);\n form = new FormData(form);\n temp.parentNode.removeChild(temp);\n return form;\n}\nfunction extractEvents$1(\n dispatchQueue,\n domEventName,\n maybeTargetInst,\n nativeEvent,\n nativeEventTarget\n) {\n if (\n \"submit\" === domEventName &&\n maybeTargetInst &&\n maybeTargetInst.stateNode === nativeEventTarget\n ) {\n var action = coerceFormActionProp(\n (nativeEventTarget[internalPropsKey] || null).action\n ),\n submitter = nativeEvent.submitter;\n submitter &&\n ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n ? coerceFormActionProp(domEventName.formAction)\n : submitter.getAttribute(\"formAction\")),\n null !== domEventName && ((action = domEventName), (submitter = null)));\n var event = new SyntheticEvent(\n \"action\",\n \"action\",\n null,\n nativeEvent,\n nativeEventTarget\n );\n dispatchQueue.push({\n event: event,\n listeners: [\n {\n instance: null,\n listener: function () {\n if (nativeEvent.defaultPrevented) {\n if (0 !== currentEventTransitionLane) {\n var formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget);\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n null,\n formData\n );\n }\n } else\n \"function\" === typeof action &&\n (event.preventDefault(),\n (formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget)),\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n action,\n formData\n ));\n },\n currentTarget: nativeEventTarget\n }\n ]\n });\n }\n}\nfor (\n var i$jscomp$inline_1577 = 0;\n i$jscomp$inline_1577 < simpleEventPluginEvents.length;\n i$jscomp$inline_1577++\n) {\n var eventName$jscomp$inline_1578 =\n simpleEventPluginEvents[i$jscomp$inline_1577],\n domEventName$jscomp$inline_1579 =\n eventName$jscomp$inline_1578.toLowerCase(),\n capitalizedEvent$jscomp$inline_1580 =\n eventName$jscomp$inline_1578[0].toUpperCase() +\n eventName$jscomp$inline_1578.slice(1);\n registerSimpleEvent(\n domEventName$jscomp$inline_1579,\n \"on\" + capitalizedEvent$jscomp$inline_1580\n );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n \"onChange\",\n \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onSelect\",\n \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n \" \"\n )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n \"compositionend\",\n \"keypress\",\n \"textInput\",\n \"paste\"\n]);\nregisterTwoPhaseEvent(\n \"onCompositionEnd\",\n \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionStart\",\n \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionUpdate\",\n \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\n \" \"\n ),\n nonDelegatedEvents = new Set(\n \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n .split(\" \")\n .concat(mediaEventTypes)\n );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n eventSystemFlags = 0 !== (eventSystemFlags & 4);\n for (var i = 0; i < dispatchQueue.length; i++) {\n var _dispatchQueue$i = dispatchQueue[i],\n event = _dispatchQueue$i.event;\n _dispatchQueue$i = _dispatchQueue$i.listeners;\n a: {\n var previousInstance = void 0;\n if (eventSystemFlags)\n for (\n var i$jscomp$0 = _dispatchQueue$i.length - 1;\n 0 <= i$jscomp$0;\n i$jscomp$0--\n ) {\n var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n instance = _dispatchListeners$i.instance,\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n else\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < _dispatchQueue$i.length;\n i$jscomp$0++\n ) {\n _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n instance = _dispatchListeners$i.instance;\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n }\n }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n void 0 === JSCompiler_inline_result &&\n (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n new Set());\n var listenerSetKey = domEventName + \"__bubble\";\n JSCompiler_inline_result.has(listenerSetKey) ||\n (addTrappedEventListener(targetElement, domEventName, 2, !1),\n JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n var eventSystemFlags = 0;\n isCapturePhaseListener && (eventSystemFlags |= 4);\n addTrappedEventListener(\n target,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n if (!rootContainerElement[listeningMarker]) {\n rootContainerElement[listeningMarker] = !0;\n allNativeEvents.forEach(function (domEventName) {\n \"selectionchange\" !== domEventName &&\n (nonDelegatedEvents.has(domEventName) ||\n listenToNativeEvent(domEventName, !1, rootContainerElement),\n listenToNativeEvent(domEventName, !0, rootContainerElement));\n });\n var ownerDocument =\n 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n null === ownerDocument ||\n ownerDocument[listeningMarker] ||\n ((ownerDocument[listeningMarker] = !0),\n listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n }\n}\nfunction addTrappedEventListener(\n targetContainer,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n) {\n switch (getEventPriority(domEventName)) {\n case 2:\n var listenerWrapper = dispatchDiscreteEvent;\n break;\n case 8:\n listenerWrapper = dispatchContinuousEvent;\n break;\n default:\n listenerWrapper = dispatchEvent;\n }\n eventSystemFlags = listenerWrapper.bind(\n null,\n domEventName,\n eventSystemFlags,\n targetContainer\n );\n listenerWrapper = void 0;\n !passiveBrowserEventsSupported ||\n (\"touchstart\" !== domEventName &&\n \"touchmove\" !== domEventName &&\n \"wheel\" !== domEventName) ||\n (listenerWrapper = !0);\n isCapturePhaseListener\n ? void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n capture: !0,\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n : void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n targetInst$jscomp$0,\n targetContainer\n) {\n var ancestorInst = targetInst$jscomp$0;\n if (\n 0 === (eventSystemFlags & 1) &&\n 0 === (eventSystemFlags & 2) &&\n null !== targetInst$jscomp$0\n )\n a: for (;;) {\n if (null === targetInst$jscomp$0) return;\n var nodeTag = targetInst$jscomp$0.tag;\n if (3 === nodeTag || 4 === nodeTag) {\n var container = targetInst$jscomp$0.stateNode.containerInfo;\n if (container === targetContainer) break;\n if (4 === nodeTag)\n for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n var grandTag = nodeTag.tag;\n if (\n (3 === grandTag || 4 === grandTag) &&\n nodeTag.stateNode.containerInfo === targetContainer\n )\n return;\n nodeTag = nodeTag.return;\n }\n for (; null !== container; ) {\n nodeTag = getClosestInstanceFromNode(container);\n if (null === nodeTag) return;\n grandTag = nodeTag.tag;\n if (\n 5 === grandTag ||\n 6 === grandTag ||\n 26 === grandTag ||\n 27 === grandTag\n ) {\n targetInst$jscomp$0 = ancestorInst = nodeTag;\n continue a;\n }\n container = container.parentNode;\n }\n }\n targetInst$jscomp$0 = targetInst$jscomp$0.return;\n }\n batchedUpdates$1(function () {\n var targetInst = ancestorInst,\n nativeEventTarget = getEventTarget(nativeEvent),\n dispatchQueue = [];\n a: {\n var reactName = topLevelEventsToReactNames.get(domEventName);\n if (void 0 !== reactName) {\n var SyntheticEventCtor = SyntheticEvent,\n reactEventType = domEventName;\n switch (domEventName) {\n case \"keypress\":\n if (0 === getEventCharCode(nativeEvent)) break a;\n case \"keydown\":\n case \"keyup\":\n SyntheticEventCtor = SyntheticKeyboardEvent;\n break;\n case \"focusin\":\n reactEventType = \"focus\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"focusout\":\n reactEventType = \"blur\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"beforeblur\":\n case \"afterblur\":\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"click\":\n if (2 === nativeEvent.button) break a;\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n SyntheticEventCtor = SyntheticMouseEvent;\n break;\n case \"drag\":\n case \"dragend\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"dragstart\":\n case \"drop\":\n SyntheticEventCtor = SyntheticDragEvent;\n break;\n case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n SyntheticEventCtor = SyntheticTouchEvent;\n break;\n case ANIMATION_END:\n case ANIMATION_ITERATION:\n case ANIMATION_START:\n SyntheticEventCtor = SyntheticAnimationEvent;\n break;\n case TRANSITION_END:\n SyntheticEventCtor = SyntheticTransitionEvent;\n break;\n case \"scroll\":\n case \"scrollend\":\n SyntheticEventCtor = SyntheticUIEvent;\n break;\n case \"wheel\":\n SyntheticEventCtor = SyntheticWheelEvent;\n break;\n case \"copy\":\n case \"cut\":\n case \"paste\":\n SyntheticEventCtor = SyntheticClipboardEvent;\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"pointerup\":\n SyntheticEventCtor = SyntheticPointerEvent;\n break;\n case \"toggle\":\n case \"beforetoggle\":\n SyntheticEventCtor = SyntheticToggleEvent;\n }\n var inCapturePhase = 0 !== (eventSystemFlags & 4),\n accumulateTargetOnly =\n !inCapturePhase &&\n (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n reactEventName = inCapturePhase\n ? null !== reactName\n ? reactName + \"Capture\"\n : null\n : reactName;\n inCapturePhase = [];\n for (\n var instance = targetInst, lastHostComponent;\n null !== instance;\n\n ) {\n var _instance = instance;\n lastHostComponent = _instance.stateNode;\n _instance = _instance.tag;\n (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n null === lastHostComponent ||\n null === reactEventName ||\n ((_instance = getListener(instance, reactEventName)),\n null != _instance &&\n inCapturePhase.push(\n createDispatchListener(instance, _instance, lastHostComponent)\n ));\n if (accumulateTargetOnly) break;\n instance = instance.return;\n }\n 0 < inCapturePhase.length &&\n ((reactName = new SyntheticEventCtor(\n reactName,\n reactEventType,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n }\n }\n if (0 === (eventSystemFlags & 7)) {\n a: {\n reactName =\n \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n SyntheticEventCtor =\n \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n if (\n reactName &&\n nativeEvent !== currentReplayingEvent &&\n (reactEventType =\n nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n (getClosestInstanceFromNode(reactEventType) ||\n reactEventType[internalContainerInstanceKey])\n )\n break a;\n if (SyntheticEventCtor || reactName) {\n reactName =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget\n : (reactName = nativeEventTarget.ownerDocument)\n ? reactName.defaultView || reactName.parentWindow\n : window;\n if (SyntheticEventCtor) {\n if (\n ((reactEventType =\n nativeEvent.relatedTarget || nativeEvent.toElement),\n (SyntheticEventCtor = targetInst),\n (reactEventType = reactEventType\n ? getClosestInstanceFromNode(reactEventType)\n : null),\n null !== reactEventType &&\n ((accumulateTargetOnly =\n getNearestMountedFiber(reactEventType)),\n (inCapturePhase = reactEventType.tag),\n reactEventType !== accumulateTargetOnly ||\n (5 !== inCapturePhase &&\n 27 !== inCapturePhase &&\n 6 !== inCapturePhase)))\n )\n reactEventType = null;\n } else (SyntheticEventCtor = null), (reactEventType = targetInst);\n if (SyntheticEventCtor !== reactEventType) {\n inCapturePhase = SyntheticMouseEvent;\n _instance = \"onMouseLeave\";\n reactEventName = \"onMouseEnter\";\n instance = \"mouse\";\n if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n (inCapturePhase = SyntheticPointerEvent),\n (_instance = \"onPointerLeave\"),\n (reactEventName = \"onPointerEnter\"),\n (instance = \"pointer\");\n accumulateTargetOnly =\n null == SyntheticEventCtor\n ? reactName\n : getNodeFromInstance(SyntheticEventCtor);\n lastHostComponent =\n null == reactEventType\n ? reactName\n : getNodeFromInstance(reactEventType);\n reactName = new inCapturePhase(\n _instance,\n instance + \"leave\",\n SyntheticEventCtor,\n nativeEvent,\n nativeEventTarget\n );\n reactName.target = accumulateTargetOnly;\n reactName.relatedTarget = lastHostComponent;\n _instance = null;\n getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n ((inCapturePhase = new inCapturePhase(\n reactEventName,\n instance + \"enter\",\n reactEventType,\n nativeEvent,\n nativeEventTarget\n )),\n (inCapturePhase.target = lastHostComponent),\n (inCapturePhase.relatedTarget = accumulateTargetOnly),\n (_instance = inCapturePhase));\n accumulateTargetOnly = _instance;\n if (SyntheticEventCtor && reactEventType)\n b: {\n inCapturePhase = getParent;\n reactEventName = SyntheticEventCtor;\n instance = reactEventType;\n lastHostComponent = 0;\n for (\n _instance = reactEventName;\n _instance;\n _instance = inCapturePhase(_instance)\n )\n lastHostComponent++;\n _instance = 0;\n for (var tempB = instance; tempB; tempB = inCapturePhase(tempB))\n _instance++;\n for (; 0 < lastHostComponent - _instance; )\n (reactEventName = inCapturePhase(reactEventName)),\n lastHostComponent--;\n for (; 0 < _instance - lastHostComponent; )\n (instance = inCapturePhase(instance)), _instance--;\n for (; lastHostComponent--; ) {\n if (\n reactEventName === instance ||\n (null !== instance && reactEventName === instance.alternate)\n ) {\n inCapturePhase = reactEventName;\n break b;\n }\n reactEventName = inCapturePhase(reactEventName);\n instance = inCapturePhase(instance);\n }\n inCapturePhase = null;\n }\n else inCapturePhase = null;\n null !== SyntheticEventCtor &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n reactName,\n SyntheticEventCtor,\n inCapturePhase,\n !1\n );\n null !== reactEventType &&\n null !== accumulateTargetOnly &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n accumulateTargetOnly,\n reactEventType,\n inCapturePhase,\n !0\n );\n }\n }\n }\n a: {\n reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n SyntheticEventCtor =\n reactName.nodeName && reactName.nodeName.toLowerCase();\n if (\n \"select\" === SyntheticEventCtor ||\n (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n )\n var getTargetInstFunc = getTargetInstForChangeEvent;\n else if (isTextInputElement(reactName))\n if (isInputEventSupported)\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n var handleEventFunc = handleEventsForInputEventPolyfill;\n }\n else\n (SyntheticEventCtor = reactName.nodeName),\n !SyntheticEventCtor ||\n \"input\" !== SyntheticEventCtor.toLowerCase() ||\n (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n ? targetInst &&\n isCustomElement(targetInst.elementType) &&\n (getTargetInstFunc = getTargetInstForChangeEvent)\n : (getTargetInstFunc = getTargetInstForClickEvent);\n if (\n getTargetInstFunc &&\n (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n ) {\n createAndAccumulateChangeEvent(\n dispatchQueue,\n getTargetInstFunc,\n nativeEvent,\n nativeEventTarget\n );\n break a;\n }\n handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n \"focusout\" === domEventName &&\n targetInst &&\n \"number\" === reactName.type &&\n null != targetInst.memoizedProps.value &&\n setDefaultValue(reactName, \"number\", reactName.value);\n }\n handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n switch (domEventName) {\n case \"focusin\":\n if (\n isTextInputElement(handleEventFunc) ||\n \"true\" === handleEventFunc.contentEditable\n )\n (activeElement = handleEventFunc),\n (activeElementInst = targetInst),\n (lastSelection = null);\n break;\n case \"focusout\":\n lastSelection = activeElementInst = activeElement = null;\n break;\n case \"mousedown\":\n mouseDown = !0;\n break;\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n mouseDown = !1;\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n break;\n case \"selectionchange\":\n if (skipSelectionChangeEvent) break;\n case \"keydown\":\n case \"keyup\":\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n }\n var fallbackData;\n if (canUseCompositionEvent)\n b: {\n switch (domEventName) {\n case \"compositionstart\":\n var eventType = \"onCompositionStart\";\n break b;\n case \"compositionend\":\n eventType = \"onCompositionEnd\";\n break b;\n case \"compositionupdate\":\n eventType = \"onCompositionUpdate\";\n break b;\n }\n eventType = void 0;\n }\n else\n isComposing\n ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n (eventType = \"onCompositionEnd\")\n : \"keydown\" === domEventName &&\n 229 === nativeEvent.keyCode &&\n (eventType = \"onCompositionStart\");\n eventType &&\n (useFallbackCompositionData &&\n \"ko\" !== nativeEvent.locale &&\n (isComposing || \"onCompositionStart\" !== eventType\n ? \"onCompositionEnd\" === eventType &&\n isComposing &&\n (fallbackData = getData())\n : ((root = nativeEventTarget),\n (startText = \"value\" in root ? root.value : root.textContent),\n (isComposing = !0))),\n (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n 0 < handleEventFunc.length &&\n ((eventType = new SyntheticCompositionEvent(\n eventType,\n domEventName,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n fallbackData\n ? (eventType.data = fallbackData)\n : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n null !== fallbackData && (eventType.data = fallbackData))));\n if (\n (fallbackData = canUseTextInputEvent\n ? getNativeBeforeInputChars(domEventName, nativeEvent)\n : getFallbackBeforeInputChars(domEventName, nativeEvent))\n )\n (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n 0 < eventType.length &&\n ((handleEventFunc = new SyntheticCompositionEvent(\n \"onBeforeInput\",\n \"beforeinput\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({\n event: handleEventFunc,\n listeners: eventType\n }),\n (handleEventFunc.data = fallbackData));\n extractEvents$1(\n dispatchQueue,\n domEventName,\n targetInst,\n nativeEvent,\n nativeEventTarget\n );\n }\n processDispatchQueue(dispatchQueue, eventSystemFlags);\n });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n return {\n instance: instance,\n listener: listener,\n currentTarget: currentTarget\n };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n for (\n var captureName = reactName + \"Capture\", listeners = [];\n null !== targetFiber;\n\n ) {\n var _instance2 = targetFiber,\n stateNode = _instance2.stateNode;\n _instance2 = _instance2.tag;\n (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n null === stateNode ||\n ((_instance2 = getListener(targetFiber, captureName)),\n null != _instance2 &&\n listeners.unshift(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ),\n (_instance2 = getListener(targetFiber, reactName)),\n null != _instance2 &&\n listeners.push(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ));\n if (3 === targetFiber.tag) return listeners;\n targetFiber = targetFiber.return;\n }\n return [];\n}\nfunction getParent(inst) {\n if (null === inst) return null;\n do inst = inst.return;\n while (inst && 5 !== inst.tag && 27 !== inst.tag);\n return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n event,\n target,\n common,\n inCapturePhase\n) {\n for (\n var registrationName = event._reactName, listeners = [];\n null !== target && target !== common;\n\n ) {\n var _instance3 = target,\n alternate = _instance3.alternate,\n stateNode = _instance3.stateNode;\n _instance3 = _instance3.tag;\n if (null !== alternate && alternate === common) break;\n (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n null === stateNode ||\n ((alternate = stateNode),\n inCapturePhase\n ? ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.unshift(\n createDispatchListener(target, stateNode, alternate)\n ))\n : inCapturePhase ||\n ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.push(\n createDispatchListener(target, stateNode, alternate)\n )));\n target = target.return;\n }\n 0 !== listeners.length &&\n dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n return (\"string\" === typeof markup ? markup : \"\" + markup)\n .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n clientText = normalizeMarkupForTextOrAttribute(clientText);\n return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"children\":\n \"string\" === typeof value\n ? \"body\" === tag ||\n (\"textarea\" === tag && \"\" === value) ||\n setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n \"body\" !== tag &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"className\":\n setValueForKnownAttribute(domElement, \"class\", value);\n break;\n case \"tabIndex\":\n setValueForKnownAttribute(domElement, \"tabindex\", value);\n break;\n case \"dir\":\n case \"role\":\n case \"viewBox\":\n case \"width\":\n case \"height\":\n setValueForKnownAttribute(domElement, key, value);\n break;\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"data\":\n if (\"object\" !== tag) {\n setValueForKnownAttribute(domElement, \"data\", value);\n break;\n }\n case \"src\":\n case \"href\":\n if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n domElement.removeAttribute(key);\n break;\n }\n if (\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"action\":\n case \"formAction\":\n if (\"function\" === typeof value) {\n domElement.setAttribute(\n key,\n \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n );\n break;\n } else\n \"function\" === typeof prevValue &&\n (\"formAction\" === key\n ? (\"input\" !== tag &&\n setProp(domElement, tag, \"name\", props.name, props, null),\n setProp(\n domElement,\n tag,\n \"formEncType\",\n props.formEncType,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formMethod\",\n props.formMethod,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formTarget\",\n props.formTarget,\n props,\n null\n ))\n : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n setProp(domElement, tag, \"method\", props.method, props, null),\n setProp(domElement, tag, \"target\", props.target, props, null)));\n if (\n null == value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"multiple\":\n domElement.multiple =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"muted\":\n domElement.muted =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"autoFocus\":\n break;\n case \"xlinkHref\":\n if (\n null == value ||\n \"function\" === typeof value ||\n \"boolean\" === typeof value ||\n \"symbol\" === typeof value\n ) {\n domElement.removeAttribute(\"xlink:href\");\n break;\n }\n key = sanitizeURL(\"\" + value);\n domElement.setAttributeNS(\n \"http://www.w3.org/1999/xlink\",\n \"xlink:href\",\n key\n );\n break;\n case \"contentEditable\":\n case \"spellCheck\":\n case \"draggable\":\n case \"value\":\n case \"autoReverse\":\n case \"externalResourcesRequired\":\n case \"focusable\":\n case \"preserveAlpha\":\n null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\" + value)\n : domElement.removeAttribute(key);\n break;\n case \"inert\":\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\")\n : domElement.removeAttribute(key);\n break;\n case \"capture\":\n case \"download\":\n !0 === value\n ? domElement.setAttribute(key, \"\")\n : !1 !== value &&\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"cols\":\n case \"rows\":\n case \"size\":\n case \"span\":\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n !isNaN(value) &&\n 1 <= value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"rowSpan\":\n case \"start\":\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n isNaN(value)\n ? domElement.removeAttribute(key)\n : domElement.setAttribute(key, value);\n break;\n case \"popover\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n setValueForAttribute(domElement, \"popover\", value);\n break;\n case \"xlinkActuate\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:actuate\",\n value\n );\n break;\n case \"xlinkArcrole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:arcrole\",\n value\n );\n break;\n case \"xlinkRole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:role\",\n value\n );\n break;\n case \"xlinkShow\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:show\",\n value\n );\n break;\n case \"xlinkTitle\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:title\",\n value\n );\n break;\n case \"xlinkType\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:type\",\n value\n );\n break;\n case \"xmlBase\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:base\",\n value\n );\n break;\n case \"xmlLang\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:lang\",\n value\n );\n break;\n case \"xmlSpace\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:space\",\n value\n );\n break;\n case \"is\":\n setValueForAttribute(domElement, \"is\", value);\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (\n !(2 < key.length) ||\n (\"o\" !== key[0] && \"O\" !== key[0]) ||\n (\"n\" !== key[1] && \"N\" !== key[1])\n )\n (key = aliases.get(key) || key),\n setValueForAttribute(domElement, key, value);\n }\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"children\":\n \"string\" === typeof value\n ? setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (!registrationNameDependencies.hasOwnProperty(key))\n a: {\n if (\n \"o\" === key[0] &&\n \"n\" === key[1] &&\n ((props = key.endsWith(\"Capture\")),\n (tag = key.slice(2, props ? key.length - 7 : void 0)),\n (prevValue = domElement[internalPropsKey] || null),\n (prevValue = null != prevValue ? prevValue[key] : null),\n \"function\" === typeof prevValue &&\n domElement.removeEventListener(tag, prevValue, props),\n \"function\" === typeof value)\n ) {\n \"function\" !== typeof prevValue &&\n null !== prevValue &&\n (key in domElement\n ? (domElement[key] = null)\n : domElement.hasAttribute(key) &&\n domElement.removeAttribute(key));\n domElement.addEventListener(tag, value, props);\n break a;\n }\n key in domElement\n ? (domElement[key] = value)\n : !0 === value\n ? domElement.setAttribute(key, \"\")\n : setValueForAttribute(domElement, key, value);\n }\n }\n}\nfunction setInitialProperties(domElement, tag, props) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"img\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n var hasSrc = !1,\n hasSrcSet = !1,\n propKey;\n for (propKey in props)\n if (props.hasOwnProperty(propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"src\":\n hasSrc = !0;\n break;\n case \"srcSet\":\n hasSrcSet = !0;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n }\n hasSrcSet &&\n setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n return;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n var defaultValue = (propKey = propValue = hasSrcSet = null),\n checked = null,\n defaultChecked = null;\n for (hasSrc in props)\n if (props.hasOwnProperty(hasSrc)) {\n var propValue$184 = props[hasSrc];\n if (null != propValue$184)\n switch (hasSrc) {\n case \"name\":\n hasSrcSet = propValue$184;\n break;\n case \"type\":\n propValue = propValue$184;\n break;\n case \"checked\":\n checked = propValue$184;\n break;\n case \"defaultChecked\":\n defaultChecked = propValue$184;\n break;\n case \"value\":\n propKey = propValue$184;\n break;\n case \"defaultValue\":\n defaultValue = propValue$184;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propValue$184)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(domElement, tag, hasSrc, propValue$184, props, null);\n }\n }\n initInput(\n domElement,\n propKey,\n defaultValue,\n checked,\n defaultChecked,\n propValue,\n hasSrcSet,\n !1\n );\n return;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n hasSrc = propValue = propKey = null;\n for (hasSrcSet in props)\n if (\n props.hasOwnProperty(hasSrcSet) &&\n ((defaultValue = props[hasSrcSet]), null != defaultValue)\n )\n switch (hasSrcSet) {\n case \"value\":\n propKey = defaultValue;\n break;\n case \"defaultValue\":\n propValue = defaultValue;\n break;\n case \"multiple\":\n hasSrc = defaultValue;\n default:\n setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n }\n tag = propKey;\n props = propValue;\n domElement.multiple = !!hasSrc;\n null != tag\n ? updateOptions(domElement, !!hasSrc, tag, !1)\n : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n return;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n propKey = hasSrcSet = hasSrc = null;\n for (propValue in props)\n if (\n props.hasOwnProperty(propValue) &&\n ((defaultValue = props[propValue]), null != defaultValue)\n )\n switch (propValue) {\n case \"value\":\n hasSrc = defaultValue;\n break;\n case \"defaultValue\":\n hasSrcSet = defaultValue;\n break;\n case \"children\":\n propKey = defaultValue;\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n break;\n default:\n setProp(domElement, tag, propValue, defaultValue, props, null);\n }\n initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n return;\n case \"option\":\n for (checked in props)\n if (\n props.hasOwnProperty(checked) &&\n ((hasSrc = props[checked]), null != hasSrc)\n )\n switch (checked) {\n case \"selected\":\n domElement.selected =\n hasSrc &&\n \"function\" !== typeof hasSrc &&\n \"symbol\" !== typeof hasSrc;\n break;\n default:\n setProp(domElement, tag, checked, hasSrc, props, null);\n }\n return;\n case \"dialog\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n listenToNonDelegatedEvent(\"cancel\", domElement);\n listenToNonDelegatedEvent(\"close\", domElement);\n break;\n case \"iframe\":\n case \"object\":\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"video\":\n case \"audio\":\n for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n break;\n case \"image\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", domElement);\n break;\n case \"embed\":\n case \"source\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", domElement),\n listenToNonDelegatedEvent(\"load\", domElement);\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (defaultChecked in props)\n if (\n props.hasOwnProperty(defaultChecked) &&\n ((hasSrc = props[defaultChecked]), null != hasSrc)\n )\n switch (defaultChecked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (propValue$184 in props)\n props.hasOwnProperty(propValue$184) &&\n ((hasSrc = props[propValue$184]),\n void 0 !== hasSrc &&\n setPropOnCustomElement(\n domElement,\n tag,\n propValue$184,\n hasSrc,\n props,\n void 0\n ));\n return;\n }\n }\n for (defaultValue in props)\n props.hasOwnProperty(defaultValue) &&\n ((hasSrc = props[defaultValue]),\n null != hasSrc &&\n setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"input\":\n var name = null,\n type = null,\n value = null,\n defaultValue = null,\n lastDefaultValue = null,\n checked = null,\n defaultChecked = null;\n for (propKey in lastProps) {\n var lastProp = lastProps[propKey];\n if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n switch (propKey) {\n case \"checked\":\n break;\n case \"value\":\n break;\n case \"defaultValue\":\n lastDefaultValue = lastProp;\n default:\n nextProps.hasOwnProperty(propKey) ||\n setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n for (var propKey$201 in nextProps) {\n var propKey = nextProps[propKey$201];\n lastProp = lastProps[propKey$201];\n if (\n nextProps.hasOwnProperty(propKey$201) &&\n (null != propKey || null != lastProp)\n )\n switch (propKey$201) {\n case \"type\":\n type = propKey;\n break;\n case \"name\":\n name = propKey;\n break;\n case \"checked\":\n checked = propKey;\n break;\n case \"defaultChecked\":\n defaultChecked = propKey;\n break;\n case \"value\":\n value = propKey;\n break;\n case \"defaultValue\":\n defaultValue = propKey;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n propKey !== lastProp &&\n setProp(\n domElement,\n tag,\n propKey$201,\n propKey,\n nextProps,\n lastProp\n );\n }\n }\n updateInput(\n domElement,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n );\n return;\n case \"select\":\n propKey = value = defaultValue = propKey$201 = null;\n for (type in lastProps)\n if (\n ((lastDefaultValue = lastProps[type]),\n lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n )\n switch (type) {\n case \"value\":\n break;\n case \"multiple\":\n propKey = lastDefaultValue;\n default:\n nextProps.hasOwnProperty(type) ||\n setProp(\n domElement,\n tag,\n type,\n null,\n nextProps,\n lastDefaultValue\n );\n }\n for (name in nextProps)\n if (\n ((type = nextProps[name]),\n (lastDefaultValue = lastProps[name]),\n nextProps.hasOwnProperty(name) &&\n (null != type || null != lastDefaultValue))\n )\n switch (name) {\n case \"value\":\n propKey$201 = type;\n break;\n case \"defaultValue\":\n defaultValue = type;\n break;\n case \"multiple\":\n value = type;\n default:\n type !== lastDefaultValue &&\n setProp(\n domElement,\n tag,\n name,\n type,\n nextProps,\n lastDefaultValue\n );\n }\n tag = defaultValue;\n lastProps = value;\n nextProps = propKey;\n null != propKey$201\n ? updateOptions(domElement, !!lastProps, propKey$201, !1)\n : !!nextProps !== !!lastProps &&\n (null != tag\n ? updateOptions(domElement, !!lastProps, tag, !0)\n : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n return;\n case \"textarea\":\n propKey = propKey$201 = null;\n for (defaultValue in lastProps)\n if (\n ((name = lastProps[defaultValue]),\n lastProps.hasOwnProperty(defaultValue) &&\n null != name &&\n !nextProps.hasOwnProperty(defaultValue))\n )\n switch (defaultValue) {\n case \"value\":\n break;\n case \"children\":\n break;\n default:\n setProp(domElement, tag, defaultValue, null, nextProps, name);\n }\n for (value in nextProps)\n if (\n ((name = nextProps[value]),\n (type = lastProps[value]),\n nextProps.hasOwnProperty(value) && (null != name || null != type))\n )\n switch (value) {\n case \"value\":\n propKey$201 = name;\n break;\n case \"defaultValue\":\n propKey = name;\n break;\n case \"children\":\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != name) throw Error(formatProdErrorMessage(91));\n break;\n default:\n name !== type &&\n setProp(domElement, tag, value, name, nextProps, type);\n }\n updateTextarea(domElement, propKey$201, propKey);\n return;\n case \"option\":\n for (var propKey$217 in lastProps)\n if (\n ((propKey$201 = lastProps[propKey$217]),\n lastProps.hasOwnProperty(propKey$217) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$217))\n )\n switch (propKey$217) {\n case \"selected\":\n domElement.selected = !1;\n break;\n default:\n setProp(\n domElement,\n tag,\n propKey$217,\n null,\n nextProps,\n propKey$201\n );\n }\n for (lastDefaultValue in nextProps)\n if (\n ((propKey$201 = nextProps[lastDefaultValue]),\n (propKey = lastProps[lastDefaultValue]),\n nextProps.hasOwnProperty(lastDefaultValue) &&\n propKey$201 !== propKey &&\n (null != propKey$201 || null != propKey))\n )\n switch (lastDefaultValue) {\n case \"selected\":\n domElement.selected =\n propKey$201 &&\n \"function\" !== typeof propKey$201 &&\n \"symbol\" !== typeof propKey$201;\n break;\n default:\n setProp(\n domElement,\n tag,\n lastDefaultValue,\n propKey$201,\n nextProps,\n propKey\n );\n }\n return;\n case \"img\":\n case \"link\":\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"embed\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"source\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (var propKey$222 in lastProps)\n (propKey$201 = lastProps[propKey$222]),\n lastProps.hasOwnProperty(propKey$222) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$222) &&\n setProp(domElement, tag, propKey$222, null, nextProps, propKey$201);\n for (checked in nextProps)\n if (\n ((propKey$201 = nextProps[checked]),\n (propKey = lastProps[checked]),\n nextProps.hasOwnProperty(checked) &&\n propKey$201 !== propKey &&\n (null != propKey$201 || null != propKey))\n )\n switch (checked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey$201)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(\n domElement,\n tag,\n checked,\n propKey$201,\n nextProps,\n propKey\n );\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (var propKey$227 in lastProps)\n (propKey$201 = lastProps[propKey$227]),\n lastProps.hasOwnProperty(propKey$227) &&\n void 0 !== propKey$201 &&\n !nextProps.hasOwnProperty(propKey$227) &&\n setPropOnCustomElement(\n domElement,\n tag,\n propKey$227,\n void 0,\n nextProps,\n propKey$201\n );\n for (defaultChecked in nextProps)\n (propKey$201 = nextProps[defaultChecked]),\n (propKey = lastProps[defaultChecked]),\n !nextProps.hasOwnProperty(defaultChecked) ||\n propKey$201 === propKey ||\n (void 0 === propKey$201 && void 0 === propKey) ||\n setPropOnCustomElement(\n domElement,\n tag,\n defaultChecked,\n propKey$201,\n nextProps,\n propKey\n );\n return;\n }\n }\n for (var propKey$232 in lastProps)\n (propKey$201 = lastProps[propKey$232]),\n lastProps.hasOwnProperty(propKey$232) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$232) &&\n setProp(domElement, tag, propKey$232, null, nextProps, propKey$201);\n for (lastProp in nextProps)\n (propKey$201 = nextProps[lastProp]),\n (propKey = lastProps[lastProp]),\n !nextProps.hasOwnProperty(lastProp) ||\n propKey$201 === propKey ||\n (null == propKey$201 && null == propKey) ||\n setProp(domElement, tag, lastProp, propKey$201, nextProps, propKey);\n}\nfunction isLikelyStaticResource(initiatorType) {\n switch (initiatorType) {\n case \"css\":\n case \"script\":\n case \"font\":\n case \"img\":\n case \"image\":\n case \"input\":\n case \"link\":\n return !0;\n default:\n return !1;\n }\n}\nfunction estimateBandwidth() {\n if (\"function\" === typeof performance.getEntriesByType) {\n for (\n var count = 0,\n bits = 0,\n resourceEntries = performance.getEntriesByType(\"resource\"),\n i = 0;\n i < resourceEntries.length;\n i++\n ) {\n var entry = resourceEntries[i],\n transferSize = entry.transferSize,\n initiatorType = entry.initiatorType,\n duration = entry.duration;\n if (transferSize && duration && isLikelyStaticResource(initiatorType)) {\n initiatorType = 0;\n duration = entry.responseEnd;\n for (i += 1; i < resourceEntries.length; i++) {\n var overlapEntry = resourceEntries[i],\n overlapStartTime = overlapEntry.startTime;\n if (overlapStartTime > duration) break;\n var overlapTransferSize = overlapEntry.transferSize,\n overlapInitiatorType = overlapEntry.initiatorType;\n overlapTransferSize &&\n isLikelyStaticResource(overlapInitiatorType) &&\n ((overlapEntry = overlapEntry.responseEnd),\n (initiatorType +=\n overlapTransferSize *\n (overlapEntry < duration\n ? 1\n : (duration - overlapStartTime) /\n (overlapEntry - overlapStartTime))));\n }\n --i;\n bits += (8 * (transferSize + initiatorType)) / (entry.duration / 1e3);\n count++;\n if (10 < count) break;\n }\n }\n if (0 < count) return bits / count / 1e6;\n }\n return navigator.connection &&\n ((count = navigator.connection.downlink), \"number\" === typeof count)\n ? count\n : 5;\n}\nvar eventsEnabled = null,\n selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n return 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n switch (namespaceURI) {\n case \"http://www.w3.org/2000/svg\":\n return 1;\n case \"http://www.w3.org/1998/Math/MathML\":\n return 2;\n default:\n return 0;\n }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n if (0 === parentNamespace)\n switch (type) {\n case \"svg\":\n return 1;\n case \"math\":\n return 2;\n default:\n return 0;\n }\n return 1 === parentNamespace && \"foreignObject\" === type\n ? 0\n : parentNamespace;\n}\nfunction shouldSetTextContent(type, props) {\n return (\n \"textarea\" === type ||\n \"noscript\" === type ||\n \"string\" === typeof props.children ||\n \"number\" === typeof props.children ||\n \"bigint\" === typeof props.children ||\n (\"object\" === typeof props.dangerouslySetInnerHTML &&\n null !== props.dangerouslySetInnerHTML &&\n null != props.dangerouslySetInnerHTML.__html)\n );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n var event = window.event;\n if (event && \"popstate\" === event.type) {\n if (event === currentPopstateTransitionEvent) return !1;\n currentPopstateTransitionEvent = event;\n return !0;\n }\n currentPopstateTransitionEvent = null;\n return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n localPromise = \"function\" === typeof Promise ? Promise : void 0,\n scheduleMicrotask =\n \"function\" === typeof queueMicrotask\n ? queueMicrotask\n : \"undefined\" !== typeof localPromise\n ? function (callback) {\n return localPromise\n .resolve(null)\n .then(callback)\n .catch(handleErrorInNextTick);\n }\n : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n setTimeout(function () {\n throw error;\n });\n}\nfunction isSingletonScope(type) {\n return \"head\" === type;\n}\nfunction clearHydrationBoundary(parentInstance, hydrationInstance) {\n var node = hydrationInstance,\n depth = 0;\n do {\n var nextNode = node.nextSibling;\n parentInstance.removeChild(node);\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node || \"/&\" === node)) {\n if (0 === depth) {\n parentInstance.removeChild(nextNode);\n retryIfBlockedOn(hydrationInstance);\n return;\n }\n depth--;\n } else if (\n \"$\" === node ||\n \"$?\" === node ||\n \"$~\" === node ||\n \"$!\" === node ||\n \"&\" === node\n )\n depth++;\n else if (\"html\" === node)\n releaseSingletonInstance(parentInstance.ownerDocument.documentElement);\n else if (\"head\" === node) {\n node = parentInstance.ownerDocument.head;\n releaseSingletonInstance(node);\n for (var node$jscomp$0 = node.firstChild; node$jscomp$0; ) {\n var nextNode$jscomp$0 = node$jscomp$0.nextSibling,\n nodeName = node$jscomp$0.nodeName;\n node$jscomp$0[internalHoistableMarker] ||\n \"SCRIPT\" === nodeName ||\n \"STYLE\" === nodeName ||\n (\"LINK\" === nodeName &&\n \"stylesheet\" === node$jscomp$0.rel.toLowerCase()) ||\n node.removeChild(node$jscomp$0);\n node$jscomp$0 = nextNode$jscomp$0;\n }\n } else\n \"body\" === node &&\n releaseSingletonInstance(parentInstance.ownerDocument.body);\n node = nextNode;\n } while (node);\n retryIfBlockedOn(hydrationInstance);\n}\nfunction hideOrUnhideDehydratedBoundary(suspenseInstance, isHidden) {\n var node = suspenseInstance;\n suspenseInstance = 0;\n do {\n var nextNode = node.nextSibling;\n 1 === node.nodeType\n ? isHidden\n ? ((node._stashedDisplay = node.style.display),\n (node.style.display = \"none\"))\n : ((node.style.display = node._stashedDisplay || \"\"),\n \"\" === node.getAttribute(\"style\") && node.removeAttribute(\"style\"))\n : 3 === node.nodeType &&\n (isHidden\n ? ((node._stashedText = node.nodeValue), (node.nodeValue = \"\"))\n : (node.nodeValue = node._stashedText || \"\"));\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node))\n if (0 === suspenseInstance) break;\n else suspenseInstance--;\n else\n (\"$\" !== node && \"$?\" !== node && \"$~\" !== node && \"$!\" !== node) ||\n suspenseInstance++;\n node = nextNode;\n } while (node);\n}\nfunction clearContainerSparingly(container) {\n var nextNode = container.firstChild;\n nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n for (; nextNode; ) {\n var node = nextNode;\n nextNode = nextNode.nextSibling;\n switch (node.nodeName) {\n case \"HTML\":\n case \"HEAD\":\n case \"BODY\":\n clearContainerSparingly(node);\n detachDeletedInstance(node);\n continue;\n case \"SCRIPT\":\n case \"STYLE\":\n continue;\n case \"LINK\":\n if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n }\n container.removeChild(node);\n }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n for (; 1 === instance.nodeType; ) {\n var anyProps = props;\n if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n if (\n !inRootOrSingleton &&\n (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n )\n break;\n } else if (!inRootOrSingleton)\n if (\"input\" === type && \"hidden\" === instance.type) {\n var name = null == anyProps.name ? null : \"\" + anyProps.name;\n if (\n \"hidden\" === anyProps.type &&\n instance.getAttribute(\"name\") === name\n )\n return instance;\n } else return instance;\n else if (!instance[internalHoistableMarker])\n switch (type) {\n case \"meta\":\n if (!instance.hasAttribute(\"itemprop\")) break;\n return instance;\n case \"link\":\n name = instance.getAttribute(\"rel\");\n if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n break;\n else if (\n name !== anyProps.rel ||\n instance.getAttribute(\"href\") !==\n (null == anyProps.href || \"\" === anyProps.href\n ? null\n : anyProps.href) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n instance.getAttribute(\"title\") !==\n (null == anyProps.title ? null : anyProps.title)\n )\n break;\n return instance;\n case \"style\":\n if (instance.hasAttribute(\"data-precedence\")) break;\n return instance;\n case \"script\":\n name = instance.getAttribute(\"src\");\n if (\n (name !== (null == anyProps.src ? null : anyProps.src) ||\n instance.getAttribute(\"type\") !==\n (null == anyProps.type ? null : anyProps.type) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n name &&\n instance.hasAttribute(\"async\") &&\n !instance.hasAttribute(\"itemprop\")\n )\n break;\n return instance;\n default:\n return instance;\n }\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) break;\n }\n return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n if (\"\" === text) return null;\n for (; 3 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction canHydrateHydrationBoundary(instance, inRootOrSingleton) {\n for (; 8 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction isSuspenseInstancePending(instance) {\n return \"$?\" === instance.data || \"$~\" === instance.data;\n}\nfunction isSuspenseInstanceFallback(instance) {\n return (\n \"$!\" === instance.data ||\n (\"$?\" === instance.data && \"loading\" !== instance.ownerDocument.readyState)\n );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n var ownerDocument = instance.ownerDocument;\n if (\"$~\" === instance.data) instance._reactRetry = callback;\n else if (\"$?\" !== instance.data || \"loading\" !== ownerDocument.readyState)\n callback();\n else {\n var listener = function () {\n callback();\n ownerDocument.removeEventListener(\"DOMContentLoaded\", listener);\n };\n ownerDocument.addEventListener(\"DOMContentLoaded\", listener);\n instance._reactRetry = listener;\n }\n}\nfunction getNextHydratable(node) {\n for (; null != node; node = node.nextSibling) {\n var nodeType = node.nodeType;\n if (1 === nodeType || 3 === nodeType) break;\n if (8 === nodeType) {\n nodeType = node.data;\n if (\n \"$\" === nodeType ||\n \"$!\" === nodeType ||\n \"$?\" === nodeType ||\n \"$~\" === nodeType ||\n \"&\" === nodeType ||\n \"F!\" === nodeType ||\n \"F\" === nodeType\n )\n break;\n if (\"/$\" === nodeType || \"/&\" === nodeType) return null;\n }\n }\n return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getNextHydratableInstanceAfterHydrationBoundary(hydrationInstance) {\n hydrationInstance = hydrationInstance.nextSibling;\n for (var depth = 0; hydrationInstance; ) {\n if (8 === hydrationInstance.nodeType) {\n var data = hydrationInstance.data;\n if (\"/$\" === data || \"/&\" === data) {\n if (0 === depth)\n return getNextHydratable(hydrationInstance.nextSibling);\n depth--;\n } else\n (\"$\" !== data &&\n \"$!\" !== data &&\n \"$?\" !== data &&\n \"$~\" !== data &&\n \"&\" !== data) ||\n depth++;\n }\n hydrationInstance = hydrationInstance.nextSibling;\n }\n return null;\n}\nfunction getParentHydrationBoundary(targetInstance) {\n targetInstance = targetInstance.previousSibling;\n for (var depth = 0; targetInstance; ) {\n if (8 === targetInstance.nodeType) {\n var data = targetInstance.data;\n if (\n \"$\" === data ||\n \"$!\" === data ||\n \"$?\" === data ||\n \"$~\" === data ||\n \"&\" === data\n ) {\n if (0 === depth) return targetInstance;\n depth--;\n } else (\"/$\" !== data && \"/&\" !== data) || depth++;\n }\n targetInstance = targetInstance.previousSibling;\n }\n return null;\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n switch (type) {\n case \"html\":\n type = props.documentElement;\n if (!type) throw Error(formatProdErrorMessage(452));\n return type;\n case \"head\":\n type = props.head;\n if (!type) throw Error(formatProdErrorMessage(453));\n return type;\n case \"body\":\n type = props.body;\n if (!type) throw Error(formatProdErrorMessage(454));\n return type;\n default:\n throw Error(formatProdErrorMessage(451));\n }\n}\nfunction releaseSingletonInstance(instance) {\n for (var attributes = instance.attributes; attributes.length; )\n instance.removeAttributeNode(attributes[0]);\n detachDeletedInstance(instance);\n}\nvar preloadPropsMap = new Map(),\n preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n return \"function\" === typeof container.getRootNode\n ? container.getRootNode()\n : 9 === container.nodeType\n ? container\n : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n f: flushSyncWork,\n r: requestFormReset,\n D: prefetchDNS,\n C: preconnect,\n L: preload,\n m: preloadModule,\n X: preinitScript,\n S: preinitStyle,\n M: preinitModuleScript\n};\nfunction flushSyncWork() {\n var previousWasRendering = previousDispatcher.f(),\n wasRendering = flushSyncWork$1();\n return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n var formInst = getInstanceFromNode(form);\n null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n ? requestFormReset$1(formInst)\n : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n var ownerDocument = globalDocument;\n if (ownerDocument && \"string\" === typeof href && href) {\n var limitedEscapedHref =\n escapeSelectorAttributeValueInsideDoubleQuotes(href);\n limitedEscapedHref =\n 'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n \"string\" === typeof crossOrigin &&\n (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n preconnectsSet.has(limitedEscapedHref) ||\n (preconnectsSet.add(limitedEscapedHref),\n (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n null === ownerDocument.querySelector(limitedEscapedHref) &&\n ((href = ownerDocument.createElement(\"link\")),\n setInitialProperties(href, \"link\", rel),\n markNodeAsHoistable(href),\n ownerDocument.head.appendChild(href)));\n }\n}\nfunction prefetchDNS(href) {\n previousDispatcher.D(href);\n preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n previousDispatcher.C(href, crossOrigin);\n preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n previousDispatcher.L(href, as, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href && as) {\n var preloadSelector =\n 'link[rel=\"preload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"]';\n \"image\" === as\n ? options && options.imageSrcSet\n ? ((preloadSelector +=\n '[imagesrcset=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSrcSet\n ) +\n '\"]'),\n \"string\" === typeof options.imageSizes &&\n (preloadSelector +=\n '[imagesizes=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSizes\n ) +\n '\"]'))\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]')\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]');\n var key = preloadSelector;\n switch (as) {\n case \"style\":\n key = getStyleKey(href);\n break;\n case \"script\":\n key = getScriptKey(href);\n }\n preloadPropsMap.has(key) ||\n ((href = assign(\n {\n rel: \"preload\",\n href:\n \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n as: as\n },\n options\n )),\n preloadPropsMap.set(key, href),\n null !== ownerDocument.querySelector(preloadSelector) ||\n (\"style\" === as &&\n ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n (\"script\" === as &&\n ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||\n ((as = ownerDocument.createElement(\"link\")),\n setInitialProperties(as, \"link\", href),\n markNodeAsHoistable(as),\n ownerDocument.head.appendChild(as)));\n }\n}\nfunction preloadModule(href, options) {\n previousDispatcher.m(href, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n preloadSelector =\n 'link[rel=\"modulepreload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"][href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]',\n key = preloadSelector;\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n key = getScriptKey(href);\n }\n if (\n !preloadPropsMap.has(key) &&\n ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n preloadPropsMap.set(key, href),\n null === ownerDocument.querySelector(preloadSelector))\n ) {\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n return;\n }\n as = ownerDocument.createElement(\"link\");\n setInitialProperties(as, \"link\", href);\n markNodeAsHoistable(as);\n ownerDocument.head.appendChild(as);\n }\n }\n}\nfunction preinitStyle(href, precedence, options) {\n previousDispatcher.S(href, precedence, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n key = getStyleKey(href);\n precedence = precedence || \"default\";\n var resource = styles.get(key);\n if (!resource) {\n var state = { loading: 0, preload: null };\n if (\n (resource = ownerDocument.querySelector(\n getStylesheetSelectorFromKey(key)\n ))\n )\n state.loading = 5;\n else {\n href = assign(\n { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n options\n );\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(href, options);\n var link = (resource = ownerDocument.createElement(\"link\"));\n markNodeAsHoistable(link);\n setInitialProperties(link, \"link\", href);\n link._p = new Promise(function (resolve, reject) {\n link.onload = resolve;\n link.onerror = reject;\n });\n link.addEventListener(\"load\", function () {\n state.loading |= 1;\n });\n link.addEventListener(\"error\", function () {\n state.loading |= 2;\n });\n state.loading |= 4;\n insertStylesheet(resource, precedence, ownerDocument);\n }\n resource = {\n type: \"stylesheet\",\n instance: resource,\n count: 1,\n state: state\n };\n styles.set(key, resource);\n }\n }\n}\nfunction preinitScript(src, options) {\n previousDispatcher.X(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0 }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction preinitModuleScript(src, options) {\n previousDispatcher.M(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n var JSCompiler_inline_result = (JSCompiler_inline_result =\n rootInstanceStackCursor.current)\n ? getHoistableRoot(JSCompiler_inline_result)\n : null;\n if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n switch (type) {\n case \"meta\":\n case \"title\":\n return null;\n case \"style\":\n return \"string\" === typeof pendingProps.precedence &&\n \"string\" === typeof pendingProps.href\n ? ((currentProps = getStyleKey(pendingProps.href)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"style\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null };\n case \"link\":\n if (\n \"stylesheet\" === pendingProps.rel &&\n \"string\" === typeof pendingProps.href &&\n \"string\" === typeof pendingProps.precedence\n ) {\n type = getStyleKey(pendingProps.href);\n var styles$243 = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles,\n resource$244 = styles$243.get(type);\n resource$244 ||\n ((JSCompiler_inline_result =\n JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n (resource$244 = {\n type: \"stylesheet\",\n instance: null,\n count: 0,\n state: { loading: 0, preload: null }\n }),\n styles$243.set(type, resource$244),\n (styles$243 = JSCompiler_inline_result.querySelector(\n getStylesheetSelectorFromKey(type)\n )) &&\n !styles$243._p &&\n ((resource$244.instance = styles$243),\n (resource$244.state.loading = 5)),\n preloadPropsMap.has(type) ||\n ((pendingProps = {\n rel: \"preload\",\n as: \"style\",\n href: pendingProps.href,\n crossOrigin: pendingProps.crossOrigin,\n integrity: pendingProps.integrity,\n media: pendingProps.media,\n hrefLang: pendingProps.hrefLang,\n referrerPolicy: pendingProps.referrerPolicy\n }),\n preloadPropsMap.set(type, pendingProps),\n styles$243 ||\n preloadStylesheet(\n JSCompiler_inline_result,\n type,\n pendingProps,\n resource$244.state\n )));\n if (currentProps && null === currentResource)\n throw Error(formatProdErrorMessage(528, \"\"));\n return resource$244;\n }\n if (currentProps && null !== currentResource)\n throw Error(formatProdErrorMessage(529, \"\"));\n return null;\n case \"script\":\n return (\n (currentProps = pendingProps.async),\n (pendingProps = pendingProps.src),\n \"string\" === typeof pendingProps &&\n currentProps &&\n \"function\" !== typeof currentProps &&\n \"symbol\" !== typeof currentProps\n ? ((currentProps = getScriptKey(pendingProps)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableScripts),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"script\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null }\n );\n default:\n throw Error(formatProdErrorMessage(444, type));\n }\n}\nfunction getStyleKey(href) {\n return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n return assign({}, rawProps, {\n \"data-precedence\": rawProps.precedence,\n precedence: null\n });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n ownerDocument.querySelector('link[rel=\"preload\"][as=\"style\"][' + key + \"]\")\n ? (state.loading = 1)\n : ((key = ownerDocument.createElement(\"link\")),\n (state.preload = key),\n key.addEventListener(\"load\", function () {\n return (state.loading |= 1);\n }),\n key.addEventListener(\"error\", function () {\n return (state.loading |= 2);\n }),\n setInitialProperties(key, \"link\", preloadProps),\n markNodeAsHoistable(key),\n ownerDocument.head.appendChild(key));\n}\nfunction getScriptKey(src) {\n return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n resource.count++;\n if (null === resource.instance)\n switch (resource.type) {\n case \"style\":\n var instance = hoistableRoot.querySelector(\n 'style[data-href~=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n '\"]'\n );\n if (instance)\n return (\n (resource.instance = instance),\n markNodeAsHoistable(instance),\n instance\n );\n var styleProps = assign({}, props, {\n \"data-href\": props.href,\n \"data-precedence\": props.precedence,\n href: null,\n precedence: null\n });\n instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n \"style\"\n );\n markNodeAsHoistable(instance);\n setInitialProperties(instance, \"style\", styleProps);\n insertStylesheet(instance, props.precedence, hoistableRoot);\n return (resource.instance = instance);\n case \"stylesheet\":\n styleProps = getStyleKey(props.href);\n var instance$249 = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(styleProps)\n );\n if (instance$249)\n return (\n (resource.state.loading |= 4),\n (resource.instance = instance$249),\n markNodeAsHoistable(instance$249),\n instance$249\n );\n instance = stylesheetPropsFromRawProps(props);\n (styleProps = preloadPropsMap.get(styleProps)) &&\n adoptPreloadPropsForStylesheet(instance, styleProps);\n instance$249 = (\n hoistableRoot.ownerDocument || hoistableRoot\n ).createElement(\"link\");\n markNodeAsHoistable(instance$249);\n var linkInstance = instance$249;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance$249, \"link\", instance);\n resource.state.loading |= 4;\n insertStylesheet(instance$249, props.precedence, hoistableRoot);\n return (resource.instance = instance$249);\n case \"script\":\n instance$249 = getScriptKey(props.src);\n if (\n (styleProps = hoistableRoot.querySelector(\n getScriptSelectorFromKey(instance$249)\n ))\n )\n return (\n (resource.instance = styleProps),\n markNodeAsHoistable(styleProps),\n styleProps\n );\n instance = props;\n if ((styleProps = preloadPropsMap.get(instance$249)))\n (instance = assign({}, props)),\n adoptPreloadPropsForScript(instance, styleProps);\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n styleProps = hoistableRoot.createElement(\"script\");\n markNodeAsHoistable(styleProps);\n setInitialProperties(styleProps, \"link\", instance);\n hoistableRoot.head.appendChild(styleProps);\n return (resource.instance = styleProps);\n case \"void\":\n return null;\n default:\n throw Error(formatProdErrorMessage(443, resource.type));\n }\n else\n \"stylesheet\" === resource.type &&\n 0 === (resource.state.loading & 4) &&\n ((instance = resource.instance),\n (resource.state.loading |= 4),\n insertStylesheet(instance, props.precedence, hoistableRoot));\n return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n for (\n var nodes = root.querySelectorAll(\n 'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n ),\n last = nodes.length ? nodes[nodes.length - 1] : null,\n prior = last,\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (node.dataset.precedence === precedence) prior = node;\n else if (prior !== last) break;\n }\n prior\n ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n : ((precedence = 9 === root.nodeType ? root.head : root),\n precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n null == stylesheetProps.crossOrigin &&\n (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n null == stylesheetProps.referrerPolicy &&\n (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n null == scriptProps.crossOrigin &&\n (scriptProps.crossOrigin = preloadProps.crossOrigin);\n null == scriptProps.referrerPolicy &&\n (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n null == scriptProps.integrity &&\n (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n if (null === tagCaches) {\n var cache = new Map();\n var caches = (tagCaches = new Map());\n caches.set(ownerDocument, cache);\n } else\n (caches = tagCaches),\n (cache = caches.get(ownerDocument)),\n cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n if (cache.has(type)) return cache;\n cache.set(type, null);\n ownerDocument = ownerDocument.getElementsByTagName(type);\n for (caches = 0; caches < ownerDocument.length; caches++) {\n var node = ownerDocument[caches];\n if (\n !(\n node[internalHoistableMarker] ||\n node[internalInstanceKey] ||\n (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n ) &&\n \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n ) {\n var nodeKey = node.getAttribute(keyAttribute) || \"\";\n nodeKey = type + nodeKey;\n var existing = cache.get(nodeKey);\n existing ? existing.push(node) : cache.set(nodeKey, [node]);\n }\n }\n return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n hoistableRoot.head.insertBefore(\n instance,\n \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n if (1 === hostContext || null != props.itemProp) return !1;\n switch (type) {\n case \"meta\":\n case \"title\":\n return !0;\n case \"style\":\n if (\n \"string\" !== typeof props.precedence ||\n \"string\" !== typeof props.href ||\n \"\" === props.href\n )\n break;\n return !0;\n case \"link\":\n if (\n \"string\" !== typeof props.rel ||\n \"string\" !== typeof props.href ||\n \"\" === props.href ||\n props.onLoad ||\n props.onError\n )\n break;\n switch (props.rel) {\n case \"stylesheet\":\n return (\n (type = props.disabled),\n \"string\" === typeof props.precedence && null == type\n );\n default:\n return !0;\n }\n case \"script\":\n if (\n props.async &&\n \"function\" !== typeof props.async &&\n \"symbol\" !== typeof props.async &&\n !props.onLoad &&\n !props.onError &&\n props.src &&\n \"string\" === typeof props.src\n )\n return !0;\n }\n return !1;\n}\nfunction preloadResource(resource) {\n return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n ? !1\n : !0;\n}\nfunction suspendResource(state, hoistableRoot, resource, props) {\n if (\n \"stylesheet\" === resource.type &&\n (\"string\" !== typeof props.media ||\n !1 !== matchMedia(props.media).matches) &&\n 0 === (resource.state.loading & 4)\n ) {\n if (null === resource.instance) {\n var key = getStyleKey(props.href),\n instance = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(key)\n );\n if (instance) {\n hoistableRoot = instance._p;\n null !== hoistableRoot &&\n \"object\" === typeof hoistableRoot &&\n \"function\" === typeof hoistableRoot.then &&\n (state.count++,\n (state = onUnsuspend.bind(state)),\n hoistableRoot.then(state, state));\n resource.state.loading |= 4;\n resource.instance = instance;\n markNodeAsHoistable(instance);\n return;\n }\n instance = hoistableRoot.ownerDocument || hoistableRoot;\n props = stylesheetPropsFromRawProps(props);\n (key = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(props, key);\n instance = instance.createElement(\"link\");\n markNodeAsHoistable(instance);\n var linkInstance = instance;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance, \"link\", props);\n resource.instance = instance;\n }\n null === state.stylesheets && (state.stylesheets = new Map());\n state.stylesheets.set(resource, hoistableRoot);\n (hoistableRoot = resource.state.preload) &&\n 0 === (resource.state.loading & 3) &&\n (state.count++,\n (resource = onUnsuspend.bind(state)),\n hoistableRoot.addEventListener(\"load\", resource),\n hoistableRoot.addEventListener(\"error\", resource));\n }\n}\nvar estimatedBytesWithinLimit = 0;\nfunction waitForCommitToBeReady(state, timeoutOffset) {\n state.stylesheets &&\n 0 === state.count &&\n insertSuspendedStylesheets(state, state.stylesheets);\n return 0 < state.count || 0 < state.imgCount\n ? function (commit) {\n var stylesheetTimer = setTimeout(function () {\n state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets);\n if (state.unsuspend) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n }, 6e4 + timeoutOffset);\n 0 < state.imgBytes &&\n 0 === estimatedBytesWithinLimit &&\n (estimatedBytesWithinLimit = 62500 * estimateBandwidth());\n var imgTimer = setTimeout(\n function () {\n state.waitingForImages = !1;\n if (\n 0 === state.count &&\n (state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets),\n state.unsuspend)\n ) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n },\n (state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) +\n timeoutOffset\n );\n state.unsuspend = commit;\n return function () {\n state.unsuspend = null;\n clearTimeout(stylesheetTimer);\n clearTimeout(imgTimer);\n };\n }\n : null;\n}\nfunction onUnsuspend() {\n this.count--;\n if (0 === this.count && (0 === this.imgCount || !this.waitingForImages))\n if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);\n else if (this.unsuspend) {\n var unsuspend = this.unsuspend;\n this.unsuspend = null;\n unsuspend();\n }\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n state.stylesheets = null;\n null !== state.unsuspend &&\n (state.count++,\n (precedencesByRoot = new Map()),\n resources.forEach(insertStylesheetIntoRoot, state),\n (precedencesByRoot = null),\n onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n if (!(resource.state.loading & 4)) {\n var precedences = precedencesByRoot.get(root);\n if (precedences) var last = precedences.get(null);\n else {\n precedences = new Map();\n precedencesByRoot.set(root, precedences);\n for (\n var nodes = root.querySelectorAll(\n \"link[data-precedence],style[data-precedence]\"\n ),\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (\n \"LINK\" === node.nodeName ||\n \"not all\" !== node.getAttribute(\"media\")\n )\n precedences.set(node.dataset.precedence, node), (last = node);\n }\n last && precedences.set(null, last);\n }\n nodes = resource.instance;\n node = nodes.getAttribute(\"data-precedence\");\n i = precedences.get(node) || last;\n i === last && precedences.set(null, nodes);\n precedences.set(node, nodes);\n this.count++;\n last = onUnsuspend.bind(this);\n nodes.addEventListener(\"load\", last);\n nodes.addEventListener(\"error\", last);\n i\n ? i.parentNode.insertBefore(nodes, i.nextSibling)\n : ((root = 9 === root.nodeType ? root.head : root),\n root.insertBefore(nodes, root.firstChild));\n resource.state.loading |= 4;\n }\n}\nvar HostTransitionContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Provider: null,\n Consumer: null,\n _currentValue: sharedNotPendingObject,\n _currentValue2: sharedNotPendingObject,\n _threadCount: 0\n};\nfunction FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator,\n formState\n) {\n this.tag = 1;\n this.containerInfo = containerInfo;\n this.pingCache = this.current = this.pendingChildren = null;\n this.timeoutHandle = -1;\n this.callbackNode =\n this.next =\n this.pendingContext =\n this.context =\n this.cancelPendingCommit =\n null;\n this.callbackPriority = 0;\n this.expirationTimes = createLaneMap(-1);\n this.entangledLanes =\n this.shellSuspendCounter =\n this.errorRecoveryDisabledLanes =\n this.expiredLanes =\n this.warmLanes =\n this.pingedLanes =\n this.suspendedLanes =\n this.pendingLanes =\n 0;\n this.entanglements = createLaneMap(0);\n this.hiddenUpdates = createLaneMap(null);\n this.identifierPrefix = identifierPrefix;\n this.onUncaughtError = onUncaughtError;\n this.onCaughtError = onCaughtError;\n this.onRecoverableError = onRecoverableError;\n this.pooledCache = null;\n this.pooledCacheLanes = 0;\n this.formState = formState;\n this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n containerInfo,\n tag,\n hydrate,\n initialChildren,\n hydrationCallbacks,\n isStrictMode,\n identifierPrefix,\n formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator\n) {\n containerInfo = new FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator,\n formState\n );\n tag = 1;\n !0 === isStrictMode && (tag |= 24);\n isStrictMode = createFiberImplClass(3, null, null, tag);\n containerInfo.current = isStrictMode;\n isStrictMode.stateNode = containerInfo;\n tag = createCache();\n tag.refCount++;\n containerInfo.pooledCache = tag;\n tag.refCount++;\n isStrictMode.memoizedState = {\n element: initialChildren,\n isDehydrated: hydrate,\n cache: tag\n };\n initializeUpdateQueue(isStrictMode);\n return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n if (!parentComponent) return emptyContextObject;\n parentComponent = emptyContextObject;\n return parentComponent;\n}\nfunction updateContainerImpl(\n rootFiber,\n lane,\n element,\n container,\n parentComponent,\n callback\n) {\n parentComponent = getContextForSubtree(parentComponent);\n null === container.context\n ? (container.context = parentComponent)\n : (container.pendingContext = parentComponent);\n container = createUpdate(lane);\n container.payload = { element: element };\n callback = void 0 === callback ? null : callback;\n null !== callback && (container.callback = callback);\n element = enqueueUpdate(rootFiber, container, lane);\n null !== element &&\n (scheduleUpdateOnFiber(element, rootFiber, lane),\n entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n fiber = fiber.memoizedState;\n if (null !== fiber && null !== fiber.dehydrated) {\n var a = fiber.retryLane;\n fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n markRetryLaneImpl(fiber, retryLane);\n (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n if (13 === fiber.tag || 31 === fiber.tag) {\n var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n markRetryLaneIfNotHydrated(fiber, 67108864);\n }\n}\nfunction attemptHydrationAtCurrentPriority(fiber) {\n if (13 === fiber.tag || 31 === fiber.tag) {\n var lane = requestUpdateLane();\n lane = getBumpedLaneForHydrationByLane(lane);\n var root = enqueueConcurrentRenderForLane(fiber, lane);\n null !== root && scheduleUpdateOnFiber(root, fiber, lane);\n markRetryLaneIfNotHydrated(fiber, lane);\n }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 2),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchContinuousEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 8),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchEvent(\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (_enabled) {\n var blockedOn = findInstanceBlockingEvent(nativeEvent);\n if (null === blockedOn)\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n ),\n clearIfContinuousEvent(domEventName, nativeEvent);\n else if (\n queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n )\n nativeEvent.stopPropagation();\n else if (\n (clearIfContinuousEvent(domEventName, nativeEvent),\n eventSystemFlags & 4 &&\n -1 < discreteReplayableEvents.indexOf(domEventName))\n ) {\n for (; null !== blockedOn; ) {\n var fiber = getInstanceFromNode(blockedOn);\n if (null !== fiber)\n switch (fiber.tag) {\n case 3:\n fiber = fiber.stateNode;\n if (fiber.current.memoizedState.isDehydrated) {\n var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n if (0 !== lanes) {\n var root = fiber;\n root.pendingLanes |= 2;\n for (root.entangledLanes |= 2; lanes; ) {\n var lane = 1 << (31 - clz32(lanes));\n root.entanglements[1] |= lane;\n lanes &= ~lane;\n }\n ensureRootIsScheduled(fiber);\n 0 === (executionContext & 6) &&\n ((workInProgressRootRenderTargetTime = now() + 500),\n flushSyncWorkAcrossRoots_impl(0, !1));\n }\n }\n break;\n case 31:\n case 13:\n (root = enqueueConcurrentRenderForLane(fiber, 2)),\n null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n flushSyncWork$1(),\n markRetryLaneIfNotHydrated(fiber, 2);\n }\n fiber = findInstanceBlockingEvent(nativeEvent);\n null === fiber &&\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n );\n if (fiber === blockedOn) break;\n blockedOn = fiber;\n }\n null !== blockedOn && nativeEvent.stopPropagation();\n } else\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n null,\n targetContainer\n );\n }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n nativeEvent = getEventTarget(nativeEvent);\n return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n return_targetInst = null;\n targetNode = getClosestInstanceFromNode(targetNode);\n if (null !== targetNode) {\n var nearestMounted = getNearestMountedFiber(targetNode);\n if (null === nearestMounted) targetNode = null;\n else {\n var tag = nearestMounted.tag;\n if (13 === tag) {\n targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (31 === tag) {\n targetNode = getActivityInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (3 === tag) {\n if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n return 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n targetNode = null;\n } else nearestMounted !== targetNode && (targetNode = null);\n }\n }\n return_targetInst = targetNode;\n return null;\n}\nfunction getEventPriority(domEventName) {\n switch (domEventName) {\n case \"beforetoggle\":\n case \"cancel\":\n case \"click\":\n case \"close\":\n case \"contextmenu\":\n case \"copy\":\n case \"cut\":\n case \"auxclick\":\n case \"dblclick\":\n case \"dragend\":\n case \"dragstart\":\n case \"drop\":\n case \"focusin\":\n case \"focusout\":\n case \"input\":\n case \"invalid\":\n case \"keydown\":\n case \"keypress\":\n case \"keyup\":\n case \"mousedown\":\n case \"mouseup\":\n case \"paste\":\n case \"pause\":\n case \"play\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointerup\":\n case \"ratechange\":\n case \"reset\":\n case \"resize\":\n case \"seeked\":\n case \"submit\":\n case \"toggle\":\n case \"touchcancel\":\n case \"touchend\":\n case \"touchstart\":\n case \"volumechange\":\n case \"change\":\n case \"selectionchange\":\n case \"textInput\":\n case \"compositionstart\":\n case \"compositionend\":\n case \"compositionupdate\":\n case \"beforeblur\":\n case \"afterblur\":\n case \"beforeinput\":\n case \"blur\":\n case \"fullscreenchange\":\n case \"focus\":\n case \"hashchange\":\n case \"popstate\":\n case \"select\":\n case \"selectstart\":\n return 2;\n case \"drag\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"mousemove\":\n case \"mouseout\":\n case \"mouseover\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"scroll\":\n case \"touchmove\":\n case \"wheel\":\n case \"mouseenter\":\n case \"mouseleave\":\n case \"pointerenter\":\n case \"pointerleave\":\n return 8;\n case \"message\":\n switch (getCurrentPriorityLevel()) {\n case ImmediatePriority:\n return 2;\n case UserBlockingPriority:\n return 8;\n case NormalPriority$1:\n case LowPriority:\n return 32;\n case IdlePriority:\n return 268435456;\n default:\n return 32;\n }\n default:\n return 32;\n }\n}\nvar hasScheduledReplayAttempt = !1,\n queuedFocus = null,\n queuedDrag = null,\n queuedMouse = null,\n queuedPointers = new Map(),\n queuedPointerCaptures = new Map(),\n queuedExplicitHydrationTargets = [],\n discreteReplayableEvents =\n \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset\".split(\n \" \"\n );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"focusin\":\n case \"focusout\":\n queuedFocus = null;\n break;\n case \"dragenter\":\n case \"dragleave\":\n queuedDrag = null;\n break;\n case \"mouseover\":\n case \"mouseout\":\n queuedMouse = null;\n break;\n case \"pointerover\":\n case \"pointerout\":\n queuedPointers.delete(nativeEvent.pointerId);\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n queuedPointerCaptures.delete(nativeEvent.pointerId);\n }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n existingQueuedEvent,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (\n null === existingQueuedEvent ||\n existingQueuedEvent.nativeEvent !== nativeEvent\n )\n return (\n (existingQueuedEvent = {\n blockedOn: blockedOn,\n domEventName: domEventName,\n eventSystemFlags: eventSystemFlags,\n nativeEvent: nativeEvent,\n targetContainers: [targetContainer]\n }),\n null !== blockedOn &&\n ((blockedOn = getInstanceFromNode(blockedOn)),\n null !== blockedOn && attemptContinuousHydration(blockedOn)),\n existingQueuedEvent\n );\n existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n blockedOn = existingQueuedEvent.targetContainers;\n null !== targetContainer &&\n -1 === blockedOn.indexOf(targetContainer) &&\n blockedOn.push(targetContainer);\n return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n switch (domEventName) {\n case \"focusin\":\n return (\n (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedFocus,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"dragenter\":\n return (\n (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedDrag,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"mouseover\":\n return (\n (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedMouse,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"pointerover\":\n var pointerId = nativeEvent.pointerId;\n queuedPointers.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointers.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n );\n return !0;\n case \"gotpointercapture\":\n return (\n (pointerId = nativeEvent.pointerId),\n queuedPointerCaptures.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointerCaptures.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n ),\n !0\n );\n }\n return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n if (null !== targetInst) {\n var nearestMounted = getNearestMountedFiber(targetInst);\n if (null !== nearestMounted)\n if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n if (\n ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (31 === targetInst) {\n if (\n ((targetInst = getActivityInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (\n 3 === targetInst &&\n nearestMounted.stateNode.current.memoizedState.isDehydrated\n ) {\n queuedTarget.blockedOn =\n 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n return;\n }\n }\n queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n if (null !== queuedEvent.blockedOn) return !1;\n for (\n var targetContainers = queuedEvent.targetContainers;\n 0 < targetContainers.length;\n\n ) {\n var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n if (null === nextBlockedOn) {\n nextBlockedOn = queuedEvent.nativeEvent;\n var nativeEventClone = new nextBlockedOn.constructor(\n nextBlockedOn.type,\n nextBlockedOn\n );\n currentReplayingEvent = nativeEventClone;\n nextBlockedOn.target.dispatchEvent(nativeEventClone);\n currentReplayingEvent = null;\n } else\n return (\n (targetContainers = getInstanceFromNode(nextBlockedOn)),\n null !== targetContainers &&\n attemptContinuousHydration(targetContainers),\n (queuedEvent.blockedOn = nextBlockedOn),\n !1\n );\n targetContainers.shift();\n }\n return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n hasScheduledReplayAttempt = !1;\n null !== queuedFocus &&\n attemptReplayContinuousQueuedEvent(queuedFocus) &&\n (queuedFocus = null);\n null !== queuedDrag &&\n attemptReplayContinuousQueuedEvent(queuedDrag) &&\n (queuedDrag = null);\n null !== queuedMouse &&\n attemptReplayContinuousQueuedEvent(queuedMouse) &&\n (queuedMouse = null);\n queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n queuedEvent.blockedOn === unblocked &&\n ((queuedEvent.blockedOn = null),\n hasScheduledReplayAttempt ||\n ((hasScheduledReplayAttempt = !0),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n replayUnblockedEvents\n )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n lastScheduledReplayQueue !== formReplayingQueue &&\n ((lastScheduledReplayQueue = formReplayingQueue),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n function () {\n lastScheduledReplayQueue === formReplayingQueue &&\n (lastScheduledReplayQueue = null);\n for (var i = 0; i < formReplayingQueue.length; i += 3) {\n var form = formReplayingQueue[i],\n submitterOrAction = formReplayingQueue[i + 1],\n formData = formReplayingQueue[i + 2];\n if (\"function\" !== typeof submitterOrAction)\n if (null === findInstanceBlockingTarget(submitterOrAction || form))\n continue;\n else break;\n var formInst = getInstanceFromNode(form);\n null !== formInst &&\n (formReplayingQueue.splice(i, 3),\n (i -= 3),\n startHostTransition(\n formInst,\n {\n pending: !0,\n data: formData,\n method: form.method,\n action: submitterOrAction\n },\n submitterOrAction,\n formData\n ));\n }\n }\n ));\n}\nfunction retryIfBlockedOn(unblocked) {\n function unblock(queuedEvent) {\n return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n }\n null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n queuedPointers.forEach(unblock);\n queuedPointerCaptures.forEach(unblock);\n for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n var queuedTarget = queuedExplicitHydrationTargets[i];\n queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n }\n for (\n ;\n 0 < queuedExplicitHydrationTargets.length &&\n ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n )\n attemptExplicitHydrationTarget(i),\n null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n if (null != i)\n for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n var form = i[queuedTarget],\n submitterOrAction = i[queuedTarget + 1],\n formProps = form[internalPropsKey] || null;\n if (\"function\" === typeof submitterOrAction)\n formProps || scheduleReplayQueueIfNeeded(i);\n else if (formProps) {\n var action = null;\n if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n if (\n ((form = submitterOrAction),\n (formProps = submitterOrAction[internalPropsKey] || null))\n )\n action = formProps.formAction;\n else {\n if (null !== findInstanceBlockingTarget(form)) continue;\n }\n else action = formProps.action;\n \"function\" === typeof action\n ? (i[queuedTarget + 1] = action)\n : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n scheduleReplayQueueIfNeeded(i);\n }\n }\n}\nfunction defaultOnDefaultTransitionIndicator() {\n function handleNavigate(event) {\n event.canIntercept &&\n \"react-transition\" === event.info &&\n event.intercept({\n handler: function () {\n return new Promise(function (resolve) {\n return (pendingResolve = resolve);\n });\n },\n focusReset: \"manual\",\n scroll: \"manual\"\n });\n }\n function handleNavigateComplete() {\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n isCancelled || setTimeout(startFakeNavigation, 20);\n }\n function startFakeNavigation() {\n if (!isCancelled && !navigation.transition) {\n var currentEntry = navigation.currentEntry;\n currentEntry &&\n null != currentEntry.url &&\n navigation.navigate(currentEntry.url, {\n state: currentEntry.getState(),\n info: \"react-transition\",\n history: \"replace\"\n });\n }\n }\n if (\"object\" === typeof navigation) {\n var isCancelled = !1,\n pendingResolve = null;\n navigation.addEventListener(\"navigate\", handleNavigate);\n navigation.addEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.addEventListener(\"navigateerror\", handleNavigateComplete);\n setTimeout(startFakeNavigation, 100);\n return function () {\n isCancelled = !0;\n navigation.removeEventListener(\"navigate\", handleNavigate);\n navigation.removeEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.removeEventListener(\"navigateerror\", handleNavigateComplete);\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n };\n }\n}\nfunction ReactDOMRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n function (children) {\n var root = this._internalRoot;\n if (null === root) throw Error(formatProdErrorMessage(409));\n var current = root.current,\n lane = requestUpdateLane();\n updateContainerImpl(current, lane, children, root, null, null);\n };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n function () {\n var root = this._internalRoot;\n if (null !== root) {\n this._internalRoot = null;\n var container = root.containerInfo;\n updateContainerImpl(root.current, 2, null, root, null, null);\n flushSyncWork$1();\n container[internalContainerInstanceKey] = null;\n }\n };\nfunction ReactDOMHydrationRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n if (target) {\n var updatePriority = resolveUpdatePriority();\n target = { blockedOn: null, target: target, priority: updatePriority };\n for (\n var i = 0;\n i < queuedExplicitHydrationTargets.length &&\n 0 !== updatePriority &&\n updatePriority < queuedExplicitHydrationTargets[i].priority;\n i++\n );\n queuedExplicitHydrationTargets.splice(i, 0, target);\n 0 === i && attemptExplicitHydrationTarget(target);\n }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_1840 = React.version;\nif (\n \"19.2.8\" !==\n isomorphicReactPackageVersion$jscomp$inline_1840\n)\n throw Error(\n formatProdErrorMessage(\n 527,\n isomorphicReactPackageVersion$jscomp$inline_1840,\n \"19.2.8\"\n )\n );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n var fiber = componentOrElement._reactInternals;\n if (void 0 === fiber) {\n if (\"function\" === typeof componentOrElement.render)\n throw Error(formatProdErrorMessage(188));\n componentOrElement = Object.keys(componentOrElement).join(\",\");\n throw Error(formatProdErrorMessage(268, componentOrElement));\n }\n componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n componentOrElement =\n null !== componentOrElement\n ? findCurrentHostFiberImpl(componentOrElement)\n : null;\n componentOrElement =\n null === componentOrElement ? null : componentOrElement.stateNode;\n return componentOrElement;\n};\nvar internals$jscomp$inline_2347 = {\n bundleType: 0,\n version: \"19.2.8\",\n rendererPackageName: \"react-dom\",\n currentDispatcherRef: ReactSharedInternals,\n reconcilerVersion: \"19.2.8\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n var hook$jscomp$inline_2348 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (\n !hook$jscomp$inline_2348.isDisabled &&\n hook$jscomp$inline_2348.supportsFiber\n )\n try {\n (rendererID = hook$jscomp$inline_2348.inject(\n internals$jscomp$inline_2347\n )),\n (injectedHook = hook$jscomp$inline_2348);\n } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError));\n options = createFiberRoot(\n container,\n 1,\n !1,\n null,\n null,\n isStrictMode,\n identifierPrefix,\n null,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\n );\n container[internalContainerInstanceKey] = options.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError,\n formState = null;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError),\n void 0 !== options.formState && (formState = options.formState));\n initialChildren = createFiberRoot(\n container,\n 1,\n !0,\n initialChildren,\n null != options ? options : null,\n isStrictMode,\n identifierPrefix,\n formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\n );\n initialChildren.context = getContextForSubtree(null);\n options = initialChildren.current;\n isStrictMode = requestUpdateLane();\n isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);\n identifierPrefix = createUpdate(isStrictMode);\n identifierPrefix.callback = null;\n enqueueUpdate(options, identifierPrefix, isStrictMode);\n options = isStrictMode;\n initialChildren.current.lanes = options;\n markRootUpdated$1(initialChildren, options);\n ensureRootIsScheduled(initialChildren);\n container[internalContainerInstanceKey] = initialChildren.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.2.8\";\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom-client.production.js');\n} else {\n module.exports = require('./cjs/react-dom-client.development.js');\n}\n","\"use client\";\nimport * as React$1 from \"react\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n/**\n* React.use if available (React 19+), undefined otherwise.\n* Use dynamic lookup to avoid Webpack compilation errors with React 18.\n*/\nvar reactUse = React$1[\"use\"];\nvar useLayoutEffect = isServer ?? typeof window === \"undefined\" ? React$1.useEffect : React$1.useLayoutEffect;\n/**\n* React hook to wrap `IntersectionObserver`.\n*\n* This hook will create an `IntersectionObserver` and observe the ref passed to it.\n*\n* When the intersection changes, the callback will be called with the `IntersectionObserverEntry`.\n*\n* @param ref - The ref to observe\n* @param callback - The callback to call when the intersection changes\n* @param disabled - Whether observation is disabled\n* @returns The IntersectionObserver instance\n* @example\n* ```tsx\n* const MyComponent = () => {\n* const ref = React.useRef<HTMLDivElement>(null)\n* useIntersectionObserver(\n* ref,\n* (entry) => { doSomething(entry) },\n* false\n* )\n* return <div ref={ref} />\n* ```\n*/\nfunction useIntersectionObserver(ref, callback, disabled) {\n\tReact$1.useEffect(() => {\n\t\tif (!ref.current || disabled || typeof IntersectionObserver !== \"function\") return () => callback();\n\t\tconst observer = new IntersectionObserver((entries) => {\n\t\t\tcallback(entries.pop());\n\t\t}, { rootMargin: \"100px\" });\n\t\tobserver.observe(ref.current);\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t\tcallback();\n\t\t};\n\t}, [\n\t\tcallback,\n\t\tdisabled,\n\t\tref\n\t]);\n}\n/**\n* React hook to take a `React.ForwardedRef` and returns a `ref` that can be used on a DOM element.\n*\n* @param ref - The forwarded ref\n* @returns The inner ref returned by `useRef`\n* @example\n* ```tsx\n* const MyComponent = React.forwardRef((props, ref) => {\n* const innerRef = useForwardedRef(ref)\n* return <div ref={innerRef} />\n* })\n* ```\n*/\nfunction useForwardedRef(ref) {\n\tconst innerRef = React$1.useRef(null);\n\tReact$1.useImperativeHandle(ref, () => innerRef.current, []);\n\treturn innerRef;\n}\n//#endregion\nexport { reactUse, useForwardedRef, useIntersectionObserver, useLayoutEffect };\n\n//# sourceMappingURL=utils.js.map","import { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/utils.ts\n/**\n* Return the last element of an array.\n* Intended for non-empty arrays used within router internals.\n*/\nfunction last(arr) {\n\treturn arr[arr.length - 1];\n}\n/**\n* Apply a value-or-updater to a previous value.\n* Accepts either a literal value or a function of the previous value.\n*/\nfunction functionalUpdate(updater, previous) {\n\tif (typeof updater === \"function\") return updater(previous);\n\treturn updater;\n}\nconst hasOwn = Object.prototype.hasOwnProperty;\nconst isEnumerable = Object.prototype.propertyIsEnumerable;\nfunction hasKeys(obj) {\n\tfor (const key in obj) if (hasOwn.call(obj, key)) return true;\n\treturn false;\n}\nconst createNull = () => Object.create(null);\nconst nullReplaceEqualDeep = (prev, next) => replaceEqualDeep(prev, next, createNull);\n/**\n* This function returns `prev` if `_next` is deeply equal.\n* If not, it will replace any deeply equal children of `b` with those of `a`.\n* This can be used for structural sharing between immutable JSON values for example.\n* Do not use this with signals\n*/\nfunction replaceEqualDeep(prev, _next, _makeObj = () => ({}), _depth = 0) {\n\tif (isServer) return _next;\n\tif (prev === _next) return prev;\n\tif (_depth > 500) return _next;\n\tconst next = _next;\n\tconst array = isPlainArray(prev) && isPlainArray(next);\n\tif (!array && !(isPlainObject(prev) && isPlainObject(next))) return next;\n\tconst prevItems = array ? prev : getEnumerableOwnKeys(prev);\n\tif (!prevItems) return next;\n\tconst nextItems = array ? next : getEnumerableOwnKeys(next);\n\tif (!nextItems) return next;\n\tconst prevSize = prevItems.length;\n\tconst nextSize = nextItems.length;\n\tconst copy = array ? new Array(nextSize) : _makeObj();\n\tlet equalItems = 0;\n\tfor (let i = 0; i < nextSize; i++) {\n\t\tconst key = array ? i : nextItems[i];\n\t\tconst p = prev[key];\n\t\tconst n = next[key];\n\t\tif (p === n) {\n\t\t\tcopy[key] = p;\n\t\t\tif (array ? i < prevSize : hasOwn.call(prev, key)) equalItems++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (p === null || n === null || typeof p !== \"object\" || typeof n !== \"object\") {\n\t\t\tcopy[key] = n;\n\t\t\tcontinue;\n\t\t}\n\t\tconst v = replaceEqualDeep(p, n, _makeObj, _depth + 1);\n\t\tcopy[key] = v;\n\t\tif (v === p) equalItems++;\n\t}\n\treturn prevSize === nextSize && equalItems === prevSize ? prev : copy;\n}\n/**\n* Equivalent to `Reflect.ownKeys`, but ensures that objects are \"clone-friendly\":\n* will return false if object has any non-enumerable properties.\n*\n* Optimized for the common case where objects have no symbol properties.\n*/\nfunction getEnumerableOwnKeys(o) {\n\tconst keys = Object.keys(o);\n\tif (keys.length !== Object.getOwnPropertyNames(o).length) return false;\n\tconst symbols = Object.getOwnPropertySymbols(o);\n\tif (symbols.length === 0) return keys;\n\tfor (const symbol of symbols) {\n\t\tif (!isEnumerable.call(o, symbol)) return false;\n\t\tkeys.push(symbol);\n\t}\n\treturn keys;\n}\nfunction isPlainObject(o) {\n\tif (!hasObjectPrototype(o)) return false;\n\tconst ctor = o.constructor;\n\tif (typeof ctor === \"undefined\") return true;\n\tconst prot = ctor.prototype;\n\tif (!hasObjectPrototype(prot)) return false;\n\tif (!prot.hasOwnProperty(\"isPrototypeOf\")) return false;\n\treturn true;\n}\nfunction hasObjectPrototype(o) {\n\treturn Object.prototype.toString.call(o) === \"[object Object]\";\n}\n/**\n* Check if a value is a \"plain\" array (no extra enumerable keys).\n*/\nfunction isPlainArray(value) {\n\treturn Array.isArray(value) && value.length === Object.keys(value).length;\n}\n/**\n* Perform a deep equality check with options for partial comparison and\n* ignoring `undefined` values. Optimized for router state comparisons.\n*/\nfunction deepEqual(a, b, opts) {\n\tif (a === b) return true;\n\tif (typeof a !== typeof b) return false;\n\tif (Array.isArray(a) && Array.isArray(b)) {\n\t\tif (a.length !== b.length) return false;\n\t\tfor (let i = 0, l = a.length; i < l; i++) if (!deepEqual(a[i], b[i], opts)) return false;\n\t\treturn true;\n\t}\n\tif (isPlainObject(a) && isPlainObject(b)) {\n\t\tconst ignoreUndefined = opts?.ignoreUndefined ?? true;\n\t\tif (opts?.partial) {\n\t\t\tfor (const k in b) if (!ignoreUndefined || b[k] !== void 0) {\n\t\t\t\tif (!deepEqual(a[k], b[k], opts)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tlet aCount = 0;\n\t\tif (!ignoreUndefined) aCount = Object.keys(a).length;\n\t\telse for (const k in a) if (a[k] !== void 0) aCount++;\n\t\tlet bCount = 0;\n\t\tfor (const k in b) if (!ignoreUndefined || b[k] !== void 0) {\n\t\t\tbCount++;\n\t\t\tif (bCount > aCount || !deepEqual(a[k], b[k], opts)) return false;\n\t\t}\n\t\treturn aCount === bCount;\n\t}\n\treturn false;\n}\n/**\n* Create a promise with exposed resolve/reject and status fields.\n* Useful for coordinating async router lifecycle operations.\n*/\nfunction createControlledPromise(onResolve) {\n\tlet resolveLoadPromise;\n\tlet rejectLoadPromise;\n\tconst controlledPromise = new Promise((resolve, reject) => {\n\t\tresolveLoadPromise = resolve;\n\t\trejectLoadPromise = reject;\n\t});\n\tcontrolledPromise.status = \"pending\";\n\tcontrolledPromise.resolve = (value) => {\n\t\tcontrolledPromise.status = \"resolved\";\n\t\tcontrolledPromise.value = value;\n\t\tresolveLoadPromise(value);\n\t\tonResolve?.(value);\n\t};\n\tcontrolledPromise.reject = (e) => {\n\t\tcontrolledPromise.status = \"rejected\";\n\t\trejectLoadPromise(e);\n\t};\n\treturn controlledPromise;\n}\n/**\n* Heuristically detect dynamic import \"module not found\" errors\n* across major browsers for lazy route component handling.\n*/\nfunction isModuleNotFoundError(error) {\n\tif (typeof error?.message !== \"string\") return false;\n\treturn error.message.startsWith(\"Failed to fetch dynamically imported module\") || error.message.startsWith(\"error loading dynamically imported module\") || error.message.startsWith(\"Importing a module script failed\");\n}\nfunction findLast(array, predicate) {\n\tfor (let i = array.length - 1; i >= 0; i--) {\n\t\tconst item = array[i];\n\t\tif (predicate(item)) return item;\n\t}\n}\n/**\n* Re-encode characters that are unsafe in URL paths.\n* Includes ASCII control characters (0x00-0x1F, 0x7F) and a subset of the\n* WHATWG URL \"path percent-encode set\" (\", <, >, `, {, }).\n*\n* Space (0x20) is intentionally excluded — decodeURI decodes %20 to space\n* and the router stores decoded spaces in location.pathname. The existing\n* encodePathLikeUrl already handles re-encoding spaces for outgoing URLs.\n*\n* These characters are decoded by decodeURI but must remain percent-encoded\n* in paths to match how upstream layers (CDNs, edge middleware, browsers)\n* interpret the URL, preventing infinite redirect loops and path mismatches.\n*/\nconst PATH_UNSAFE_RE = /[\\x00-\\x1f\\x7f\"<>`{}]/g;\nfunction sanitizePathSegment(segment) {\n\treturn segment.replace(PATH_UNSAFE_RE, (ch) => \"%\" + ch.charCodeAt(0).toString(16).toUpperCase().padStart(2, \"0\"));\n}\nfunction decodeSegment(segment) {\n\tlet decoded;\n\ttry {\n\t\tdecoded = decodeURI(segment);\n\t} catch {\n\t\tdecoded = segment.replaceAll(/%[0-9A-F]{2}/gi, (match) => {\n\t\t\ttry {\n\t\t\t\treturn decodeURI(match);\n\t\t\t} catch {\n\t\t\t\treturn match;\n\t\t\t}\n\t\t});\n\t}\n\treturn sanitizePathSegment(decoded);\n}\n/**\n* Default list of URL protocols to allow in links, redirects, and navigation.\n* Any absolute URL protocol not in this list is treated as dangerous by default.\n*/\nconst DEFAULT_PROTOCOL_ALLOWLIST = [\n\t\"http:\",\n\t\"https:\",\n\t\"mailto:\",\n\t\"tel:\"\n];\n/**\n* Check if a URL string uses a protocol that is not in the allowlist.\n* Returns true for blocked protocols like javascript:, blob:, data:, etc.\n*\n* The URL constructor correctly normalizes:\n* - Mixed case (JavaScript: → javascript:)\n* - Whitespace/control characters (java\\nscript: → javascript:)\n* - Leading whitespace\n*\n* For relative URLs (no protocol), returns false (safe).\n*\n* @param url - The URL string to check\n* @param allowlist - Set of protocols to allow\n* @returns true if the URL uses a protocol that is not allowed\n*/\nfunction isDangerousProtocol(url, allowlist) {\n\tif (!url) return false;\n\ttry {\n\t\tconst parsed = new URL(url);\n\t\treturn !allowlist.has(parsed.protocol);\n\t} catch {\n\t\treturn false;\n\t}\n}\nconst HTML_ESCAPE_LOOKUP = {\n\t\"&\": \"\\\\u0026\",\n\t\">\": \"\\\\u003e\",\n\t\"<\": \"\\\\u003c\",\n\t\"\\u2028\": \"\\\\u2028\",\n\t\"\\u2029\": \"\\\\u2029\"\n};\nconst HTML_ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\n/**\n* Escape HTML special characters in a string to prevent XSS attacks\n* when embedding strings in script tags during SSR.\n*\n* This is essential for preventing XSS vulnerabilities when user-controlled\n* content is embedded in inline scripts.\n*/\nfunction escapeHtml(str) {\n\treturn str.replace(HTML_ESCAPE_REGEX, (match) => HTML_ESCAPE_LOOKUP[match]);\n}\nfunction decodePath(path) {\n\tif (!path) return {\n\t\tpath,\n\t\thandledProtocolRelativeURL: false\n\t};\n\tif (!/[%\\\\\\x00-\\x1f\\x7f]/.test(path) && !path.startsWith(\"//\")) return {\n\t\tpath,\n\t\thandledProtocolRelativeURL: false\n\t};\n\tconst re = /%25|%5C/gi;\n\tlet cursor = 0;\n\tlet result = \"\";\n\tlet match;\n\twhile (null !== (match = re.exec(path))) {\n\t\tresult += decodeSegment(path.slice(cursor, match.index)) + match[0];\n\t\tcursor = re.lastIndex;\n\t}\n\tresult = result + decodeSegment(cursor ? path.slice(cursor) : path);\n\tlet handledProtocolRelativeURL = false;\n\tif (result.startsWith(\"//\")) {\n\t\thandledProtocolRelativeURL = true;\n\t\tresult = \"/\" + result.replace(/^\\/+/, \"\");\n\t}\n\treturn {\n\t\tpath: result,\n\t\thandledProtocolRelativeURL\n\t};\n}\n/**\n* Encodes a path the same way `new URL()` would, but without the overhead of full URL parsing.\n*\n* This function encodes:\n* - Whitespace characters (spaces → %20, tabs → %09, etc.)\n* - Non-ASCII/Unicode characters (emojis, accented characters, etc.)\n*\n* It preserves:\n* - Already percent-encoded sequences (won't double-encode %2F, %25, etc.)\n* - ASCII special characters valid in URL paths (@, $, &, +, etc.)\n* - Forward slashes as path separators\n*\n* Used to generate proper href values for SSR without constructing URL objects.\n*\n* @example\n* encodePathLikeUrl('/path/file name.pdf') // '/path/file%20name.pdf'\n* encodePathLikeUrl('/path/日本語') // '/path/%E6%97%A5%E6%9C%AC%E8%AA%9E'\n* encodePathLikeUrl('/path/already%20encoded') // '/path/already%20encoded' (preserved)\n*/\nfunction encodePathLikeUrl(path) {\n\tif (!/\\s|[^\\u0000-\\u007F]/.test(path)) return path;\n\treturn path.replace(/\\s|[^\\u0000-\\u007F]/gu, encodeURIComponent);\n}\n/**\n* Builds the dev-mode CSS styles URL for route-scoped CSS collection.\n* Used by HeadContent components in all framework implementations to construct\n* the URL for the `/@tanstack-start/styles.css` endpoint.\n*\n* @param basepath - The router's basepath (may or may not have leading slash)\n* @param routeIds - Array of matched route IDs to include in the CSS collection\n* @returns The full URL path for the dev styles CSS endpoint\n*/\nfunction buildDevStylesUrl(basepath, routeIds) {\n\tconst trimmedBasepath = basepath.replace(/^\\/+|\\/+$/g, \"\");\n\treturn `${trimmedBasepath === \"\" ? \"\" : `/${trimmedBasepath}`}/@tanstack-start/styles.css?routes=${encodeURIComponent(routeIds.join(\",\"))}`;\n}\nfunction arraysEqual(a, b) {\n\tif (a === b) return true;\n\tif (a.length !== b.length) return false;\n\tfor (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;\n\treturn true;\n}\n//#endregion\nexport { DEFAULT_PROTOCOL_ALLOWLIST, arraysEqual, buildDevStylesUrl, createControlledPromise, decodePath, deepEqual, encodePathLikeUrl, escapeHtml, findLast, functionalUpdate, hasKeys, hasOwn, isDangerousProtocol, isModuleNotFoundError, isPlainArray, isPlainObject, last, nullReplaceEqualDeep, replaceEqualDeep };\n\n//# sourceMappingURL=utils.js.map","//#region src/invariant.ts\nfunction invariant() {\n\tthrow new Error(\"Invariant failed\");\n}\n//#endregion\nexport { invariant };\n\n//# sourceMappingURL=invariant.js.map","//#region src/lru-cache.ts\nfunction createLRUCache(max) {\n\tconst cache = /* @__PURE__ */ new Map();\n\tlet oldest;\n\tlet newest;\n\tconst touch = (entry) => {\n\t\tif (!entry.next) return;\n\t\tif (!entry.prev) {\n\t\t\tentry.next.prev = void 0;\n\t\t\toldest = entry.next;\n\t\t\tentry.next = void 0;\n\t\t\tif (newest) {\n\t\t\t\tentry.prev = newest;\n\t\t\t\tnewest.next = entry;\n\t\t\t}\n\t\t} else {\n\t\t\tentry.prev.next = entry.next;\n\t\t\tentry.next.prev = entry.prev;\n\t\t\tentry.next = void 0;\n\t\t\tif (newest) {\n\t\t\t\tnewest.next = entry;\n\t\t\t\tentry.prev = newest;\n\t\t\t}\n\t\t}\n\t\tnewest = entry;\n\t};\n\treturn {\n\t\tget(key) {\n\t\t\tconst entry = cache.get(key);\n\t\t\tif (!entry) return void 0;\n\t\t\ttouch(entry);\n\t\t\treturn entry.value;\n\t\t},\n\t\tset(key, value) {\n\t\t\tif (cache.size >= max && oldest) {\n\t\t\t\tconst toDelete = oldest;\n\t\t\t\tcache.delete(toDelete.key);\n\t\t\t\tif (toDelete.next) {\n\t\t\t\t\toldest = toDelete.next;\n\t\t\t\t\ttoDelete.next.prev = void 0;\n\t\t\t\t}\n\t\t\t\tif (toDelete === newest) newest = void 0;\n\t\t\t}\n\t\t\tconst existing = cache.get(key);\n\t\t\tif (existing) {\n\t\t\t\texisting.value = value;\n\t\t\t\ttouch(existing);\n\t\t\t} else {\n\t\t\t\tconst entry = {\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tprev: newest\n\t\t\t\t};\n\t\t\t\tif (newest) newest.next = entry;\n\t\t\t\tnewest = entry;\n\t\t\t\tif (!oldest) oldest = entry;\n\t\t\t\tcache.set(key, entry);\n\t\t\t}\n\t\t},\n\t\tclear() {\n\t\t\tcache.clear();\n\t\t\toldest = void 0;\n\t\t\tnewest = void 0;\n\t\t}\n\t};\n}\n//#endregion\nexport { createLRUCache };\n\n//# sourceMappingURL=lru-cache.js.map","import { last } from \"./utils.js\";\nimport { invariant } from \"./invariant.js\";\nimport { createLRUCache } from \"./lru-cache.js\";\nconst SEGMENT_TYPE_INDEX = 4;\nconst SEGMENT_TYPE_PATHLESS = 5;\n/**\n* Populates the `output` array with the parsed representation of the given `segment` string.\n*\n* Usage:\n* ```ts\n* let output\n* let cursor = 0\n* while (cursor < path.length) {\n* output = parseSegment(path, cursor, output)\n* const end = output[5]\n* cursor = end + 1\n* ```\n*\n* `output` is stored outside to avoid allocations during repeated calls. It doesn't need to be typed\n* or initialized, it will be done automatically.\n*/\nfunction parseSegment(path, start, output = new Uint16Array(6)) {\n\tconst next = path.indexOf(\"/\", start);\n\tconst end = next === -1 ? path.length : next;\n\tconst part = path.substring(start, end);\n\tif (!part || !part.includes(\"$\")) {\n\t\toutput[0] = 0;\n\t\toutput[1] = start;\n\t\toutput[2] = start;\n\t\toutput[3] = end;\n\t\toutput[4] = end;\n\t\toutput[5] = end;\n\t\treturn output;\n\t}\n\tif (part === \"$\") {\n\t\tconst total = path.length;\n\t\toutput[0] = 2;\n\t\toutput[1] = start;\n\t\toutput[2] = start;\n\t\toutput[3] = total;\n\t\toutput[4] = total;\n\t\toutput[5] = total;\n\t\treturn output;\n\t}\n\tif (part.charCodeAt(0) === 36) {\n\t\toutput[0] = 1;\n\t\toutput[1] = start;\n\t\toutput[2] = start + 1;\n\t\toutput[3] = end;\n\t\toutput[4] = end;\n\t\toutput[5] = end;\n\t\treturn output;\n\t}\n\tconst openBrace = part.indexOf(\"{\");\n\tlet closeBrace;\n\tif (openBrace !== -1 && openBrace + 1 < part.length && (closeBrace = part.indexOf(\"}\", openBrace)) !== -1) {\n\t\tconst firstChar = part.charCodeAt(openBrace + 1);\n\t\tif (firstChar === 45) {\n\t\t\tif (openBrace + 2 < part.length && part.charCodeAt(openBrace + 2) === 36) {\n\t\t\t\tconst paramStart = openBrace + 3;\n\t\t\t\tconst paramEnd = closeBrace;\n\t\t\t\tif (paramStart < paramEnd) {\n\t\t\t\t\toutput[0] = 3;\n\t\t\t\t\toutput[1] = start + openBrace;\n\t\t\t\t\toutput[2] = start + paramStart;\n\t\t\t\t\toutput[3] = start + paramEnd;\n\t\t\t\t\toutput[4] = start + closeBrace + 1;\n\t\t\t\t\toutput[5] = end;\n\t\t\t\t\treturn output;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (firstChar === 36) {\n\t\t\tconst dollarPos = openBrace + 1;\n\t\t\tconst afterDollar = openBrace + 2;\n\t\t\tif (afterDollar === closeBrace) {\n\t\t\t\toutput[0] = 2;\n\t\t\t\toutput[1] = start + openBrace;\n\t\t\t\toutput[2] = start + dollarPos;\n\t\t\t\toutput[3] = start + afterDollar;\n\t\t\t\toutput[4] = start + closeBrace + 1;\n\t\t\t\toutput[5] = path.length;\n\t\t\t\treturn output;\n\t\t\t}\n\t\t\toutput[0] = 1;\n\t\t\toutput[1] = start + openBrace;\n\t\t\toutput[2] = start + afterDollar;\n\t\t\toutput[3] = start + closeBrace;\n\t\t\toutput[4] = start + closeBrace + 1;\n\t\t\toutput[5] = end;\n\t\t\treturn output;\n\t\t}\n\t}\n\toutput[0] = 0;\n\toutput[1] = start;\n\toutput[2] = start;\n\toutput[3] = end;\n\toutput[4] = end;\n\toutput[5] = end;\n\treturn output;\n}\n/**\n* Recursively parses the segments of the given route tree and populates a segment trie.\n*\n* @param data A reusable Uint16Array for parsing segments. (non important, we're just avoiding allocations)\n* @param route The current route to parse.\n* @param start The starting index for parsing within the route's full path.\n* @param node The current segment node in the trie to populate.\n* @param onRoute Callback invoked for each route processed.\n*/\nfunction parseSegments(defaultCaseSensitive, data, route, start, node, depth, dynamicListsToSort, onRoute) {\n\tonRoute?.(route);\n\tlet cursor = start;\n\t{\n\t\tconst path = route.fullPath ?? route.from;\n\t\tconst options = route.options;\n\t\tconst length = path.length;\n\t\tconst caseSensitive = options?.caseSensitive ?? defaultCaseSensitive;\n\t\tconst parseParams = options?.params?.parse ?? options?.parseParams;\n\t\twhile (cursor < length) {\n\t\t\tconst segment = parseSegment(path, cursor, data);\n\t\t\tlet nextNode;\n\t\t\tconst start = cursor;\n\t\t\tconst end = segment[5];\n\t\t\tcursor = end + 1;\n\t\t\tdepth++;\n\t\t\tconst kind = segment[0];\n\t\t\tswitch (kind) {\n\t\t\t\tcase 0: {\n\t\t\t\t\tconst value = path.substring(segment[2], segment[3]);\n\t\t\t\t\tlet name = value;\n\t\t\t\t\tlet staticChildren;\n\t\t\t\t\tif (caseSensitive) staticChildren = node.static ??= /* @__PURE__ */ new Map();\n\t\t\t\t\telse {\n\t\t\t\t\t\tname = value.toLowerCase();\n\t\t\t\t\t\tstaticChildren = node.staticInsensitive ??= /* @__PURE__ */ new Map();\n\t\t\t\t\t}\n\t\t\t\t\tconst existingNode = staticChildren.get(name);\n\t\t\t\t\tif (existingNode) nextNode = existingNode;\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst next = createStaticNode(path);\n\t\t\t\t\t\tnext.parent = node;\n\t\t\t\t\t\tnext.depth = depth;\n\t\t\t\t\t\tnextNode = next;\n\t\t\t\t\t\tstaticChildren.set(name, next);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 1:\n\t\t\t\tcase 3:\n\t\t\t\tcase 2: {\n\t\t\t\t\tconst prefix_raw = path.substring(start, segment[1]);\n\t\t\t\t\tconst suffix_raw = path.substring(segment[4], end);\n\t\t\t\t\tconst actuallyCaseSensitive = caseSensitive && !!(prefix_raw || suffix_raw);\n\t\t\t\t\tconst prefix = !prefix_raw ? void 0 : actuallyCaseSensitive ? prefix_raw : prefix_raw.toLowerCase();\n\t\t\t\t\tconst suffix = !suffix_raw ? void 0 : actuallyCaseSensitive ? suffix_raw : suffix_raw.toLowerCase();\n\t\t\t\t\tconst siblings = kind === 1 ? node.dynamic : kind === 3 ? node.optional : node.wildcard;\n\t\t\t\t\tconst existingNode = kind !== 2 && !parseParams && siblings?.find((s) => !s.parse && s.caseSensitive === actuallyCaseSensitive && s.prefix === prefix && s.suffix === suffix);\n\t\t\t\t\tif (existingNode) nextNode = existingNode;\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst next = createDynamicNode(kind, path, actuallyCaseSensitive, prefix, suffix);\n\t\t\t\t\t\tnextNode = next;\n\t\t\t\t\t\tnext.parent = node;\n\t\t\t\t\t\tnext.depth = depth;\n\t\t\t\t\t\tlet nodes;\n\t\t\t\t\t\tif (kind === 1) nodes = node.dynamic ??= [];\n\t\t\t\t\t\telse if (kind === 3) nodes = node.optional ??= [];\n\t\t\t\t\t\telse nodes = node.wildcard ??= [];\n\t\t\t\t\t\tnodes.push(next);\n\t\t\t\t\t\tif (nodes.length === 2) dynamicListsToSort?.push(nodes);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tnode = nextNode;\n\t\t}\n\t\tif (parseParams && route.children && !route.isRoot && route.id && route.id.charCodeAt(route.id.lastIndexOf(\"/\") + 1) === 95) {\n\t\t\tconst pathlessNode = createStaticNode(path);\n\t\t\tpathlessNode.kind = SEGMENT_TYPE_PATHLESS;\n\t\t\tpathlessNode.parent = node;\n\t\t\tdepth++;\n\t\t\tpathlessNode.depth = depth;\n\t\t\tnode.pathless ??= [];\n\t\t\tnode.pathless.push(pathlessNode);\n\t\t\tnode = pathlessNode;\n\t\t}\n\t\tconst isLeaf = (route.path || !route.children) && !route.isRoot;\n\t\tif (isLeaf && path.endsWith(\"/\")) {\n\t\t\tconst indexNode = createStaticNode(path);\n\t\t\tindexNode.kind = SEGMENT_TYPE_INDEX;\n\t\t\tindexNode.parent = node;\n\t\t\tdepth++;\n\t\t\tindexNode.depth = depth;\n\t\t\tnode.index = indexNode;\n\t\t\tnode = indexNode;\n\t\t}\n\t\tnode.parse = parseParams ?? null;\n\t\tnode.priority = options?.params?.priority ?? 0;\n\t\tif (isLeaf && !node.route) {\n\t\t\tnode.route = route;\n\t\t\tnode.fullPath = path;\n\t\t}\n\t}\n\tif (route.children) for (const child of route.children) parseSegments(defaultCaseSensitive, data, child, cursor, node, depth, dynamicListsToSort, onRoute);\n}\nfunction sortDynamic(a, b) {\n\tif (a.parse && !b.parse) return -1;\n\tif (!a.parse && b.parse) return 1;\n\tif (a.parse && b.parse && (a.priority || b.priority)) return b.priority - a.priority;\n\tif (a.prefix && b.prefix && a.prefix !== b.prefix) {\n\t\tif (a.prefix.startsWith(b.prefix)) return -1;\n\t\tif (b.prefix.startsWith(a.prefix)) return 1;\n\t}\n\tif (a.suffix && b.suffix && a.suffix !== b.suffix) {\n\t\tif (a.suffix.endsWith(b.suffix)) return -1;\n\t\tif (b.suffix.endsWith(a.suffix)) return 1;\n\t}\n\tif (a.prefix && !b.prefix) return -1;\n\tif (!a.prefix && b.prefix) return 1;\n\tif (a.suffix && !b.suffix) return -1;\n\tif (!a.suffix && b.suffix) return 1;\n\tif (a.caseSensitive && !b.caseSensitive) return -1;\n\tif (!a.caseSensitive && b.caseSensitive) return 1;\n\treturn 0;\n}\nfunction createStaticNode(fullPath) {\n\treturn {\n\t\tkind: 0,\n\t\tdepth: 0,\n\t\tpathless: null,\n\t\tindex: null,\n\t\tstatic: null,\n\t\tstaticInsensitive: null,\n\t\tdynamic: null,\n\t\toptional: null,\n\t\twildcard: null,\n\t\troute: null,\n\t\tfullPath,\n\t\tparent: null,\n\t\tparse: null,\n\t\tpriority: 0\n\t};\n}\n/**\n* Keys must be declared in the same order as in `SegmentNode` type,\n* to ensure they are represented as the same object class in the engine.\n*/\nfunction createDynamicNode(kind, fullPath, caseSensitive, prefix, suffix) {\n\treturn {\n\t\tkind,\n\t\tdepth: 0,\n\t\tpathless: null,\n\t\tindex: null,\n\t\tstatic: null,\n\t\tstaticInsensitive: null,\n\t\tdynamic: null,\n\t\toptional: null,\n\t\twildcard: null,\n\t\troute: null,\n\t\tfullPath,\n\t\tparent: null,\n\t\tparse: null,\n\t\tpriority: 0,\n\t\tcaseSensitive,\n\t\tprefix,\n\t\tsuffix\n\t};\n}\nfunction processRouteMasks(routeList, processedTree) {\n\tconst segmentTree = createStaticNode(\"/\");\n\tconst data = new Uint16Array(6);\n\tconst dynamicListsToSort = [];\n\tfor (const route of routeList) parseSegments(false, data, route, 1, segmentTree, 0, dynamicListsToSort);\n\tfor (const nodes of dynamicListsToSort) nodes.sort(sortDynamic);\n\tprocessedTree.masksTree = segmentTree;\n\tprocessedTree.flatCache = createLRUCache(1e3);\n}\n/**\n* Take an arbitrary list of routes, create a tree from them (if it hasn't been created already), and match a path against it.\n*/\nfunction findFlatMatch(path, processedTree) {\n\tpath ||= \"/\";\n\tconst cached = processedTree.flatCache.get(path);\n\tif (cached) return cached;\n\tconst result = findMatch(path, processedTree.masksTree);\n\tprocessedTree.flatCache.set(path, result);\n\treturn result;\n}\n/**\n* @deprecated keep until v2 so that `router.matchRoute` can keep not caring about the actual route tree\n*/\nfunction findSingleMatch(from, caseSensitive, fuzzy, path, processedTree) {\n\tfrom ||= \"/\";\n\tpath ||= \"/\";\n\tconst key = caseSensitive ? `case\\0${from}` : from;\n\tlet tree = processedTree.singleCache.get(key);\n\tif (!tree) {\n\t\ttree = createStaticNode(\"/\");\n\t\tparseSegments(caseSensitive, new Uint16Array(6), { from }, 1, tree, 0);\n\t\tprocessedTree.singleCache.set(key, tree);\n\t}\n\treturn findMatch(path, tree, fuzzy);\n}\nfunction findRouteMatch(path, processedTree, fuzzy = false) {\n\tconst key = fuzzy ? path : `nofuzz\\0${path}`;\n\tconst cached = processedTree.matchCache.get(key);\n\tif (cached !== void 0) return cached;\n\tpath ||= \"/\";\n\tlet result;\n\ttry {\n\t\tresult = findMatch(path, processedTree.segmentTree, fuzzy);\n\t} catch (err) {\n\t\tif (err instanceof URIError) result = null;\n\t\telse throw err;\n\t}\n\tif (result) result.branch = buildRouteBranch(result.route);\n\tprocessedTree.matchCache.set(key, result);\n\treturn result;\n}\n/** Trim trailing slashes (except preserving root '/'). */\nfunction trimPathRight(path) {\n\treturn path === \"/\" ? path : path.replace(/\\/{1,}$/, \"\");\n}\n/**\n* Processes a route tree into a segment trie for efficient path matching.\n* Also builds lookup maps for routes by ID and by trimmed full path.\n*/\nfunction processRouteTree(routeTree, caseSensitive = false, initRoute) {\n\tconst segmentTree = createStaticNode(routeTree.fullPath);\n\tconst data = new Uint16Array(6);\n\tconst dynamicListsToSort = [];\n\tconst routesById = {};\n\tconst routesByPath = {};\n\tlet index = 0;\n\tparseSegments(caseSensitive, data, routeTree, 1, segmentTree, 0, dynamicListsToSort, (route) => {\n\t\tinitRoute?.(route, index);\n\t\tif (route.id in routesById) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Duplicate routes found with id: ${String(route.id)}`);\n\t\t\tinvariant();\n\t\t}\n\t\troutesById[route.id] = route;\n\t\tif (index !== 0 && route.path) {\n\t\t\tconst trimmedFullPath = trimPathRight(route.fullPath);\n\t\t\tif (!routesByPath[trimmedFullPath] || route.fullPath.endsWith(\"/\")) routesByPath[trimmedFullPath] = route;\n\t\t}\n\t\tindex++;\n\t});\n\tfor (const nodes of dynamicListsToSort) nodes.sort(sortDynamic);\n\treturn {\n\t\tprocessedTree: {\n\t\t\tsegmentTree,\n\t\t\tsingleCache: createLRUCache(1e3),\n\t\t\tmatchCache: createLRUCache(1e3),\n\t\t\tflatCache: null,\n\t\t\tmasksTree: null\n\t\t},\n\t\troutesById,\n\t\troutesByPath\n\t};\n}\nfunction findMatch(path, segmentTree, fuzzy = false) {\n\tconst parts = path.split(\"/\");\n\tconst leaf = getNodeMatch(path, parts, segmentTree, fuzzy);\n\tif (!leaf) return null;\n\tconst [rawParams] = extractParams(path, parts, leaf);\n\treturn {\n\t\troute: leaf.node.route,\n\t\trawParams\n\t};\n}\n/**\n* This function is \"resumable\":\n* - the `leaf` input can contain `extract` and `rawParams` properties from a previous `extractParams` call\n* - the returned `state` can be passed back as `extract` in a future call to continue extracting params from where we left off\n*\n* Inputs are *not* mutated.\n*/\nfunction extractParams(path, parts, leaf) {\n\tconst list = buildBranch(leaf.node);\n\tlet nodeParts = null;\n\tconst rawParams = Object.create(null);\n\t/** which segment of the path we're currently processing */\n\tlet partIndex = leaf.extract?.part ?? 0;\n\t/** which node of the route tree branch we're currently processing */\n\tlet nodeIndex = leaf.extract?.node ?? 0;\n\t/** index of the 1st character of the segment we're processing in the path string */\n\tlet pathIndex = leaf.extract?.path ?? 0;\n\t/** which fullPath segment we're currently processing */\n\tlet segmentCount = leaf.extract?.segment ?? 0;\n\tfor (; nodeIndex < list.length; partIndex++, nodeIndex++, pathIndex++, segmentCount++) {\n\t\tconst node = list[nodeIndex];\n\t\tif (node.kind === SEGMENT_TYPE_INDEX) break;\n\t\tif (node.kind === SEGMENT_TYPE_PATHLESS) {\n\t\t\tsegmentCount--;\n\t\t\tpartIndex--;\n\t\t\tpathIndex--;\n\t\t\tcontinue;\n\t\t}\n\t\tconst part = parts[partIndex];\n\t\tconst currentPathIndex = pathIndex;\n\t\tif (part) pathIndex += part.length;\n\t\tif (node.kind === 1) {\n\t\t\tnodeParts ??= leaf.node.fullPath.split(\"/\");\n\t\t\tconst nodePart = nodeParts[segmentCount];\n\t\t\tconst preLength = node.prefix?.length ?? 0;\n\t\t\tif (nodePart.charCodeAt(preLength) === 123) {\n\t\t\t\tconst sufLength = node.suffix?.length ?? 0;\n\t\t\t\tconst name = nodePart.substring(preLength + 2, nodePart.length - sufLength - 1);\n\t\t\t\tconst value = part.substring(preLength, part.length - sufLength);\n\t\t\t\trawParams[name] = decodeURIComponent(value);\n\t\t\t} else {\n\t\t\t\tconst name = nodePart.substring(1);\n\t\t\t\trawParams[name] = decodeURIComponent(part);\n\t\t\t}\n\t\t} else if (node.kind === 3) {\n\t\t\tif (leaf.skipped & 1 << nodeIndex) {\n\t\t\t\tpartIndex--;\n\t\t\t\tpathIndex = currentPathIndex - 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tnodeParts ??= leaf.node.fullPath.split(\"/\");\n\t\t\tconst nodePart = nodeParts[segmentCount];\n\t\t\tconst preLength = node.prefix?.length ?? 0;\n\t\t\tconst sufLength = node.suffix?.length ?? 0;\n\t\t\tconst name = nodePart.substring(preLength + 3, nodePart.length - sufLength - 1);\n\t\t\tconst value = node.suffix || node.prefix ? part.substring(preLength, part.length - sufLength) : part;\n\t\t\tif (value) rawParams[name] = decodeURIComponent(value);\n\t\t} else if (node.kind === 2) {\n\t\t\tconst n = node;\n\t\t\tconst value = path.substring(currentPathIndex + (n.prefix?.length ?? 0), path.length - (n.suffix?.length ?? 0));\n\t\t\tconst splat = decodeURIComponent(value);\n\t\t\trawParams[\"*\"] = splat;\n\t\t\trawParams._splat = splat;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (leaf.rawParams) Object.assign(rawParams, leaf.rawParams);\n\treturn [rawParams, {\n\t\tpart: partIndex,\n\t\tnode: nodeIndex,\n\t\tpath: pathIndex,\n\t\tsegment: segmentCount\n\t}];\n}\nfunction buildRouteBranch(route) {\n\tconst list = [route];\n\twhile (route.parentRoute) {\n\t\troute = route.parentRoute;\n\t\tlist.push(route);\n\t}\n\tlist.reverse();\n\treturn list;\n}\nfunction buildBranch(node) {\n\tconst list = Array(node.depth + 1);\n\tdo {\n\t\tlist[node.depth] = node;\n\t\tnode = node.parent;\n\t} while (node);\n\treturn list;\n}\nfunction getNodeMatch(path, parts, segmentTree, fuzzy) {\n\tif (path === \"/\" && segmentTree.index) return {\n\t\tnode: segmentTree.index,\n\t\tskipped: 0\n\t};\n\tconst trailingSlash = !last(parts);\n\tconst pathIsIndex = trailingSlash && path !== \"/\";\n\tconst partsLength = parts.length - (trailingSlash ? 1 : 0);\n\tconst stack = [{\n\t\tnode: segmentTree,\n\t\tindex: 1,\n\t\tskipped: 0,\n\t\tstatics: 0,\n\t\tdynamics: 0,\n\t\toptionals: 0\n\t}];\n\tlet bestFuzzy = null;\n\tlet bestMatch = null;\n\twhile (stack.length) {\n\t\tconst frame = stack.pop();\n\t\tconst { node, index, skipped, statics, dynamics, optionals } = frame;\n\t\tlet { extract, rawParams } = frame;\n\t\tif (node.kind === 2 && node.route && !isFrameMoreSpecific(bestMatch, frame)) continue;\n\t\tif (node.parse) {\n\t\t\tif (!validateParseParams(path, parts, frame)) continue;\n\t\t\trawParams = frame.rawParams;\n\t\t\textract = frame.extract;\n\t\t}\n\t\tif (fuzzy && node.route && node.kind !== SEGMENT_TYPE_INDEX && isFrameMoreSpecific(bestFuzzy, frame)) bestFuzzy = frame;\n\t\tconst isBeyondPath = index === partsLength;\n\t\tif (isBeyondPath) {\n\t\t\tif (node.route && (!pathIsIndex || node.kind === SEGMENT_TYPE_INDEX || node.kind === 2) && isFrameMoreSpecific(bestMatch, frame)) bestMatch = frame;\n\t\t\tif (!node.optional && !node.wildcard && !node.index && !node.pathless) continue;\n\t\t}\n\t\tconst part = isBeyondPath ? void 0 : parts[index];\n\t\tlet lowerPart;\n\t\tif (isBeyondPath && node.index) {\n\t\t\tconst indexFrame = {\n\t\t\t\tnode: node.index,\n\t\t\t\tindex,\n\t\t\t\tskipped,\n\t\t\t\tstatics,\n\t\t\t\tdynamics,\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t};\n\t\t\tlet indexValid = true;\n\t\t\tif (node.index.parse) {\n\t\t\t\tif (!validateParseParams(path, parts, indexFrame)) indexValid = false;\n\t\t\t}\n\t\t\tif (indexValid) {\n\t\t\t\tif (!dynamics && !optionals && !skipped && isPerfectStaticMatch(statics, partsLength)) return indexFrame;\n\t\t\t\tif (isFrameMoreSpecific(bestMatch, indexFrame)) bestMatch = indexFrame;\n\t\t\t}\n\t\t}\n\t\tif (node.wildcard) for (let i = node.wildcard.length - 1; i >= 0; i--) {\n\t\t\tconst segment = node.wildcard[i];\n\t\t\tconst { prefix, suffix } = segment;\n\t\t\tif (prefix) {\n\t\t\t\tif (isBeyondPath) continue;\n\t\t\t\tif (!(segment.caseSensitive ? part : lowerPart ??= part.toLowerCase()).startsWith(prefix)) continue;\n\t\t\t}\n\t\t\tif (suffix) {\n\t\t\t\tif (isBeyondPath) continue;\n\t\t\t\tconst end = parts.slice(index).join(\"/\").slice(-suffix.length);\n\t\t\t\tif ((segment.caseSensitive ? end : end.toLowerCase()) !== suffix) continue;\n\t\t\t}\n\t\t\tstack.push({\n\t\t\t\tnode: segment,\n\t\t\t\tindex: partsLength,\n\t\t\t\tskipped,\n\t\t\t\tstatics,\n\t\t\t\tdynamics,\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t});\n\t\t}\n\t\tif (node.optional) {\n\t\t\tconst nextSkipped = skipped | 1 << node.depth + 1;\n\t\t\tfor (let i = node.optional.length - 1; i >= 0; i--) {\n\t\t\t\tconst segment = node.optional[i];\n\t\t\t\tstack.push({\n\t\t\t\t\tnode: segment,\n\t\t\t\t\tindex,\n\t\t\t\t\tskipped: nextSkipped,\n\t\t\t\t\tstatics,\n\t\t\t\t\tdynamics,\n\t\t\t\t\toptionals,\n\t\t\t\t\textract,\n\t\t\t\t\trawParams\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (!isBeyondPath) for (let i = node.optional.length - 1; i >= 0; i--) {\n\t\t\t\tconst segment = node.optional[i];\n\t\t\t\tconst { prefix, suffix } = segment;\n\t\t\t\tif (prefix || suffix) {\n\t\t\t\t\tconst casePart = segment.caseSensitive ? part : lowerPart ??= part.toLowerCase();\n\t\t\t\t\tif (prefix && !casePart.startsWith(prefix)) continue;\n\t\t\t\t\tif (suffix && !casePart.endsWith(suffix)) continue;\n\t\t\t\t}\n\t\t\t\tstack.push({\n\t\t\t\t\tnode: segment,\n\t\t\t\t\tindex: index + 1,\n\t\t\t\t\tskipped,\n\t\t\t\t\tstatics,\n\t\t\t\t\tdynamics,\n\t\t\t\t\toptionals: optionals + segmentScore(partsLength, index),\n\t\t\t\t\textract,\n\t\t\t\t\trawParams\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (!isBeyondPath && node.dynamic && part) for (let i = node.dynamic.length - 1; i >= 0; i--) {\n\t\t\tconst segment = node.dynamic[i];\n\t\t\tconst { prefix, suffix } = segment;\n\t\t\tif (prefix || suffix) {\n\t\t\t\tconst casePart = segment.caseSensitive ? part : lowerPart ??= part.toLowerCase();\n\t\t\t\tif (prefix && !casePart.startsWith(prefix)) continue;\n\t\t\t\tif (suffix && !casePart.endsWith(suffix)) continue;\n\t\t\t}\n\t\t\tstack.push({\n\t\t\t\tnode: segment,\n\t\t\t\tindex: index + 1,\n\t\t\t\tskipped,\n\t\t\t\tstatics,\n\t\t\t\tdynamics: dynamics + segmentScore(partsLength, index),\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t});\n\t\t}\n\t\tif (!isBeyondPath && node.staticInsensitive) {\n\t\t\tconst match = node.staticInsensitive.get(lowerPart ??= part.toLowerCase());\n\t\t\tif (match) stack.push({\n\t\t\t\tnode: match,\n\t\t\t\tindex: index + 1,\n\t\t\t\tskipped,\n\t\t\t\tstatics: statics + segmentScore(partsLength, index),\n\t\t\t\tdynamics,\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t});\n\t\t}\n\t\tif (!isBeyondPath && node.static) {\n\t\t\tconst match = node.static.get(part);\n\t\t\tif (match) stack.push({\n\t\t\t\tnode: match,\n\t\t\t\tindex: index + 1,\n\t\t\t\tskipped,\n\t\t\t\tstatics: statics + segmentScore(partsLength, index),\n\t\t\t\tdynamics,\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t});\n\t\t}\n\t\tif (node.pathless) for (let i = node.pathless.length - 1; i >= 0; i--) {\n\t\t\tconst segment = node.pathless[i];\n\t\t\tstack.push({\n\t\t\t\tnode: segment,\n\t\t\t\tindex,\n\t\t\t\tskipped,\n\t\t\t\tstatics,\n\t\t\t\tdynamics,\n\t\t\t\toptionals,\n\t\t\t\textract,\n\t\t\t\trawParams\n\t\t\t});\n\t\t}\n\t}\n\tif (bestMatch) return bestMatch;\n\tif (fuzzy && bestFuzzy) {\n\t\tlet sliceIndex = bestFuzzy.index;\n\t\tfor (let i = 0; i < bestFuzzy.index; i++) sliceIndex += parts[i].length;\n\t\tconst splat = sliceIndex === path.length ? \"/\" : path.slice(sliceIndex);\n\t\tbestFuzzy.rawParams ??= Object.create(null);\n\t\tbestFuzzy.rawParams[\"**\"] = decodeURIComponent(splat);\n\t\treturn bestFuzzy;\n\t}\n\treturn null;\n}\nfunction segmentScore(partsLength, index) {\n\treturn 2 ** (partsLength - index - 1);\n}\nfunction isPerfectStaticMatch(statics, partsLength) {\n\treturn statics === 2 ** (partsLength - 1) - 1;\n}\nfunction validateParseParams(path, parts, frame) {\n\tlet rawParams;\n\tlet state;\n\ttry {\n\t\t[rawParams, state] = extractParams(path, parts, frame);\n\t} catch {\n\t\treturn null;\n\t}\n\tframe.rawParams = rawParams;\n\tframe.extract = state;\n\tif (!frame.node.parse) return true;\n\ttry {\n\t\tif (frame.node.parse(rawParams) === false) return null;\n\t} catch {}\n\treturn true;\n}\nfunction isFrameMoreSpecific(prev, next) {\n\tif (!prev) return true;\n\treturn next.statics > prev.statics || next.statics === prev.statics && (next.dynamics > prev.dynamics || next.dynamics === prev.dynamics && (next.optionals > prev.optionals || next.optionals === prev.optionals && ((next.node.kind === SEGMENT_TYPE_INDEX) > (prev.node.kind === SEGMENT_TYPE_INDEX) || next.node.kind === SEGMENT_TYPE_INDEX === (prev.node.kind === SEGMENT_TYPE_INDEX) && next.node.depth > prev.node.depth)));\n}\n//#endregion\nexport { buildRouteBranch, findFlatMatch, findRouteMatch, findSingleMatch, parseSegment, processRouteMasks, processRouteTree };\n\n//# sourceMappingURL=new-process-route-tree.js.map","import { last } from \"./utils.js\";\nimport { parseSegment } from \"./new-process-route-tree.js\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/path.ts\n/** Join path segments, cleaning duplicate slashes between parts. */\nfunction joinPaths(paths) {\n\treturn cleanPath(paths.filter((val) => {\n\t\treturn val !== void 0;\n\t}).join(\"/\"));\n}\n/** Remove repeated slashes from a path string. */\nfunction cleanPath(path) {\n\treturn path.replace(/\\/{2,}/g, \"/\");\n}\n/** Trim leading slashes (except preserving root '/'). */\nfunction trimPathLeft(path) {\n\treturn path === \"/\" ? path : path.replace(/^\\/{1,}/, \"\");\n}\n/** Trim trailing slashes (except preserving root '/'). */\nfunction trimPathRight(path) {\n\tconst len = path.length;\n\treturn len > 1 && path[len - 1] === \"/\" ? path.replace(/\\/{1,}$/, \"\") : path;\n}\n/** Trim both leading and trailing slashes. */\nfunction trimPath(path) {\n\treturn trimPathRight(trimPathLeft(path));\n}\n/** Remove a trailing slash from value when appropriate for comparisons. */\nfunction removeTrailingSlash(value, basepath) {\n\tif (value?.endsWith(\"/\") && value !== \"/\" && value !== `${basepath}/`) return value.slice(0, -1);\n\treturn value;\n}\n/**\n* Compare two pathnames for exact equality after normalizing trailing slashes\n* relative to the provided `basepath`.\n*/\nfunction exactPathTest(pathName1, pathName2, basepath) {\n\treturn removeTrailingSlash(pathName1, basepath) === removeTrailingSlash(pathName2, basepath);\n}\n/**\n* Resolve a destination path against a base, honoring trailing-slash policy\n* and supporting relative segments (`.`/`..`) and absolute `to` values.\n*/\nfunction resolvePath({ base, to, trailingSlash = \"never\", cache }) {\n\tconst isBase = to === \".\";\n\tconst isAbsolute = to.startsWith(\"/\");\n\tlet key;\n\tif (cache) {\n\t\tkey = isAbsolute ? to : isBase ? base : base + \"\\0\" + to;\n\t\tconst cached = cache.get(key);\n\t\tif (cached) return cached;\n\t}\n\tlet baseSegments;\n\tif (isBase) baseSegments = base.split(\"/\");\n\telse if (isAbsolute) baseSegments = to.split(\"/\");\n\telse {\n\t\tbaseSegments = base.split(\"/\");\n\t\twhile (baseSegments.length > 1 && last(baseSegments) === \"\") baseSegments.pop();\n\t\tconst toSegments = to.split(\"/\");\n\t\tfor (let index = 0, length = toSegments.length; index < length; index++) {\n\t\t\tconst value = toSegments[index];\n\t\t\tif (value === \"\") {\n\t\t\t\tif (!index) baseSegments = [value];\n\t\t\t\telse if (index === length - 1) baseSegments.push(value);\n\t\t\t} else if (value === \"..\") if (baseSegments.length > 1) baseSegments.pop();\n\t\t\telse baseSegments = [\"\"];\n\t\t\telse if (value === \".\") {} else baseSegments.push(value);\n\t\t}\n\t}\n\tif (baseSegments.length > 1) {\n\t\tif (last(baseSegments) === \"\") {\n\t\t\tif (trailingSlash === \"never\") baseSegments.pop();\n\t\t} else if (trailingSlash === \"always\") baseSegments.push(\"\");\n\t}\n\tconst result = cleanPath(baseSegments.join(\"/\")) || \"/\";\n\tif (key && cache) cache.set(key, result);\n\treturn result;\n}\n/**\n* Create a pre-compiled decode config from allowed characters.\n* This should be called once at router initialization.\n*/\nfunction compileDecodeCharMap(pathParamsAllowedCharacters) {\n\tconst charMap = new Map(pathParamsAllowedCharacters.map((char) => [encodeURIComponent(char), char]));\n\tconst pattern = Array.from(charMap.keys()).map((key) => key.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")).join(\"|\");\n\tconst regex = new RegExp(pattern, \"g\");\n\treturn (encoded) => encoded.replace(regex, (match) => charMap.get(match) ?? match);\n}\nfunction encodeParam(key, params, decoder) {\n\tconst value = params[key];\n\tif (typeof value !== \"string\") return value;\n\tif (key === \"_splat\") {\n\t\tif (/^[a-zA-Z0-9\\-._~!/]*$/.test(value)) return value;\n\t\treturn value.split(\"/\").map((segment) => encodePathParam(segment, decoder)).join(\"/\");\n\t} else return encodePathParam(value, decoder);\n}\n/**\n* Interpolate params and wildcards into a route path template.\n*\n* - Encodes params safely (configurable allowed characters)\n* - Supports `{-$optional}` segments, `{prefix{$id}suffix}` and `{$}` wildcards\n*/\nfunction interpolatePath({ path, params, decoder, ...rest }) {\n\tlet isMissingParams = false;\n\tconst usedParams = Object.create(null);\n\tif (!path || path === \"/\") return {\n\t\tinterpolatedPath: \"/\",\n\t\tusedParams,\n\t\tisMissingParams\n\t};\n\tif (!path.includes(\"$\")) return {\n\t\tinterpolatedPath: path,\n\t\tusedParams,\n\t\tisMissingParams\n\t};\n\tif (isServer ?? rest.server) {\n\t\tif (path.indexOf(\"{\") === -1) {\n\t\t\tconst length = path.length;\n\t\t\tlet cursor = 0;\n\t\t\tlet joined = \"\";\n\t\t\twhile (cursor < length) {\n\t\t\t\twhile (cursor < length && path.charCodeAt(cursor) === 47) cursor++;\n\t\t\t\tif (cursor >= length) break;\n\t\t\t\tconst start = cursor;\n\t\t\t\tlet end = path.indexOf(\"/\", cursor);\n\t\t\t\tif (end === -1) end = length;\n\t\t\t\tcursor = end;\n\t\t\t\tconst part = path.substring(start, end);\n\t\t\t\tif (!part) continue;\n\t\t\t\tif (part.charCodeAt(0) === 36) if (part.length === 1) {\n\t\t\t\t\tconst splat = params._splat;\n\t\t\t\t\tusedParams._splat = splat;\n\t\t\t\t\tusedParams[\"*\"] = splat;\n\t\t\t\t\tif (!splat) {\n\t\t\t\t\t\tisMissingParams = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst value = encodeParam(\"_splat\", params, decoder);\n\t\t\t\t\tjoined += \"/\" + value;\n\t\t\t\t} else {\n\t\t\t\t\tconst key = part.substring(1);\n\t\t\t\t\tif (!isMissingParams && !(key in params)) isMissingParams = true;\n\t\t\t\t\tusedParams[key] = params[key];\n\t\t\t\t\tconst value = encodeParam(key, params, decoder) ?? \"undefined\";\n\t\t\t\t\tjoined += \"/\" + value;\n\t\t\t\t}\n\t\t\t\telse joined += \"/\" + part;\n\t\t\t}\n\t\t\tif (path.endsWith(\"/\")) joined += \"/\";\n\t\t\treturn {\n\t\t\t\tusedParams,\n\t\t\t\tinterpolatedPath: joined || \"/\",\n\t\t\t\tisMissingParams\n\t\t\t};\n\t\t}\n\t}\n\tconst length = path.length;\n\tlet cursor = 0;\n\tlet segment;\n\tlet joined = \"\";\n\twhile (cursor < length) {\n\t\tconst start = cursor;\n\t\tsegment = parseSegment(path, start, segment);\n\t\tconst end = segment[5];\n\t\tcursor = end + 1;\n\t\tif (start === end) continue;\n\t\tconst kind = segment[0];\n\t\tif (kind === 0) {\n\t\t\tjoined += \"/\" + path.substring(start, end);\n\t\t\tcontinue;\n\t\t}\n\t\tif (kind === 2) {\n\t\t\tconst splat = params._splat;\n\t\t\tusedParams._splat = splat;\n\t\t\tusedParams[\"*\"] = splat;\n\t\t\tconst prefix = path.substring(start, segment[1]);\n\t\t\tconst suffix = path.substring(segment[4], end);\n\t\t\tif (!splat) {\n\t\t\t\tisMissingParams = true;\n\t\t\t\tif (prefix || suffix) joined += \"/\" + prefix + suffix;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst value = encodeParam(\"_splat\", params, decoder);\n\t\t\tjoined += \"/\" + prefix + value + suffix;\n\t\t\tcontinue;\n\t\t}\n\t\tif (kind === 1) {\n\t\t\tconst key = path.substring(segment[2], segment[3]);\n\t\t\tif (!isMissingParams && !(key in params)) isMissingParams = true;\n\t\t\tusedParams[key] = params[key];\n\t\t\tconst prefix = path.substring(start, segment[1]);\n\t\t\tconst suffix = path.substring(segment[4], end);\n\t\t\tconst value = encodeParam(key, params, decoder) ?? \"undefined\";\n\t\t\tjoined += \"/\" + prefix + value + suffix;\n\t\t\tcontinue;\n\t\t}\n\t\tif (kind === 3) {\n\t\t\tconst key = path.substring(segment[2], segment[3]);\n\t\t\tconst valueRaw = params[key];\n\t\t\tif (valueRaw == null) continue;\n\t\t\tusedParams[key] = valueRaw;\n\t\t\tconst prefix = path.substring(start, segment[1]);\n\t\t\tconst suffix = path.substring(segment[4], end);\n\t\t\tconst value = encodeParam(key, params, decoder) ?? \"\";\n\t\t\tjoined += \"/\" + prefix + value + suffix;\n\t\t\tcontinue;\n\t\t}\n\t}\n\tif (path.endsWith(\"/\")) joined += \"/\";\n\treturn {\n\t\tusedParams,\n\t\tinterpolatedPath: joined || \"/\",\n\t\tisMissingParams\n\t};\n}\nfunction encodePathParam(value, decoder) {\n\tconst encoded = encodeURIComponent(value);\n\treturn decoder?.(encoded) ?? encoded;\n}\n//#endregion\nexport { cleanPath, compileDecodeCharMap, exactPathTest, interpolatePath, joinPaths, removeTrailingSlash, resolvePath, trimPath, trimPathLeft, trimPathRight };\n\n//# sourceMappingURL=path.js.map","//#region src/not-found.ts\n/**\n* Create a not-found error object recognized by TanStack Router.\n*\n* Throw this from loaders/actions to trigger the nearest `notFoundComponent`.\n* Use `routeId` to target a specific route's not-found boundary. If `throw`\n* is true, the error is thrown instead of returned.\n*\n* @param options Optional settings including `routeId`, `headers`, and `throw`.\n* @returns A not-found error object that can be thrown or returned.\n* @link https://tanstack.com/router/latest/docs/router/framework/react/api/router/notFoundFunction\n*/\nfunction notFound(options = {}) {\n\toptions.isNotFound = true;\n\tif (options.throw) throw options;\n\treturn options;\n}\n/** Determine if a value is a TanStack Router not-found error. */\nfunction isNotFound(obj) {\n\treturn obj?.isNotFound === true;\n}\n//#endregion\nexport { isNotFound, notFound };\n\n//# sourceMappingURL=not-found.js.map","import { isServer } from \"@tanstack/router-core/isServer\";\n//#region src/scroll-restoration.ts\nfunction getSafeSessionStorage() {\n\ttry {\n\t\treturn sessionStorage;\n\t} catch {\n\t\treturn;\n\t}\n}\nconst storageKey = \"tsr-scroll-restoration-v1_3\";\nconst safeSessionStorage = getSafeSessionStorage();\nfunction createScrollRestorationCache() {\n\ttry {\n\t\treturn JSON.parse(safeSessionStorage?.getItem(\"tsr-scroll-restoration-v1_3\") || \"{}\");\n\t} catch {\n\t\treturn {};\n\t}\n}\nfunction persistScrollRestorationCache() {\n\ttry {\n\t\tsafeSessionStorage?.setItem(storageKey, JSON.stringify(scrollRestorationCache));\n\t} catch {\n\t\tif (process.env.NODE_ENV !== \"production\") console.warn(\"[ts-router] Could not persist scroll restoration state to sessionStorage.\");\n\t}\n}\nconst scrollRestorationCache = /* @__PURE__ */ createScrollRestorationCache();\nconst scrollRestorationIdAttribute = \"data-scroll-restoration-id\";\n/**\n* The default `getKey` function for `useScrollRestoration`.\n* It returns the `key` from the location state or the `href` of the location.\n*\n* The `location.href` is used as a fallback to support the use case where the location state is not available like the initial render.\n*/\nconst defaultGetScrollRestorationKey = (location) => {\n\treturn location.state.__TSR_key || location.href;\n};\nfunction getScrollRestorationSelector(element) {\n\tconst attrId = element.getAttribute(scrollRestorationIdAttribute);\n\tif (attrId) return `[${scrollRestorationIdAttribute}=\"${attrId}\"]`;\n\tlet selector = \"\";\n\tlet el = element;\n\tlet parent;\n\twhile (parent = el.parentNode) {\n\t\tlet index = 1;\n\t\tlet sibling = el;\n\t\twhile (sibling = sibling.previousElementSibling) index++;\n\t\tconst part = `${el.localName}:nth-child(${index})`;\n\t\tselector = selector ? `${part} > ${selector}` : part;\n\t\tel = parent;\n\t}\n\treturn selector;\n}\nfunction getElementScrollRestorationEntry(router, options) {\n\tconst entries = scrollRestorationCache[(options.getKey || defaultGetScrollRestorationKey)(router.latestLocation)];\n\tif (!entries) return;\n\tif (options.id) return entries[`[${scrollRestorationIdAttribute}=\"${options.id}\"]`];\n\tconst element = options.getElement?.();\n\tif (!element) return;\n\treturn entries[element === window ? windowScrollTarget : getScrollRestorationSelector(element)];\n}\nlet ignoreScroll = false;\nconst windowScrollTarget = \"window\";\nfunction getElement(selector) {\n\ttry {\n\t\treturn typeof selector === \"function\" ? selector() : document.querySelector(selector);\n\t} catch {}\n}\nfunction getScrollToTopElements(scrollToTopSelectors) {\n\tconst elements = /* @__PURE__ */ new Set();\n\tfor (const selector of scrollToTopSelectors) {\n\t\tif (selector === windowScrollTarget) continue;\n\t\tconst element = getElement(selector);\n\t\tif (element) elements.add(element);\n\t}\n\treturn elements;\n}\nfunction setupScrollRestoration(router, force) {\n\tconst shouldSetupScrollRestoration = force ?? router.options.scrollRestoration;\n\tconst scroll = router._scroll;\n\tif (shouldSetupScrollRestoration) scroll.restoring = true;\n\tif (isServer ?? router.isServer) return;\n\tconst getKey = router.options.getScrollRestorationKey || defaultGetScrollRestorationKey;\n\tconst trackedScrollTargets = /* @__PURE__ */ new Set();\n\tconst snapshotCurrentScrollTargets = (restoreKey) => {\n\t\tconst keyEntry = scrollRestorationCache[restoreKey] ||= {};\n\t\tfor (const target of trackedScrollTargets) if (target === document) keyEntry[windowScrollTarget] = {\n\t\t\tscrollX,\n\t\t\tscrollY\n\t\t};\n\t\telse if (target.isConnected) keyEntry[getScrollRestorationSelector(target)] = {\n\t\t\tscrollX: target.scrollLeft,\n\t\t\tscrollY: target.scrollTop\n\t\t};\n\t};\n\tif (shouldSetupScrollRestoration && !scroll.restoration) {\n\t\tscroll.restoration = true;\n\t\tignoreScroll = false;\n\t\thistory.scrollRestoration = \"manual\";\n\t\tdocument.addEventListener(\"scroll\", (event) => {\n\t\t\tif (ignoreScroll) return;\n\t\t\ttrackedScrollTargets.add(event.target);\n\t\t}, true);\n\t\trouter.subscribe(\"onBeforeLoad\", (event) => {\n\t\t\tif (event.fromLocation) snapshotCurrentScrollTargets(getKey(event.fromLocation));\n\t\t\ttrackedScrollTargets.clear();\n\t\t});\n\t\taddEventListener(\"pagehide\", () => {\n\t\t\tsnapshotCurrentScrollTargets(getKey(router.stores.resolvedLocation.get() ?? router.stores.location.get()));\n\t\t\tpersistScrollRestorationCache();\n\t\t});\n\t}\n\tif (scroll.reset) return;\n\tscroll.reset = true;\n\trouter.subscribe(\"onRendered\", (event) => {\n\t\tconst behavior = router.options.scrollRestorationBehavior;\n\t\tconst scrollToTopSelectors = router.options.scrollToTopSelectors;\n\t\tconst shouldResetScroll = scroll.next;\n\t\tconst hashNavigation = scroll.hash;\n\t\tlet scrollToTopElements;\n\t\ttrackedScrollTargets.clear();\n\t\tscroll.next = true;\n\t\tscroll.hash = false;\n\t\tif (typeof router.options.scrollRestoration === \"function\" && !router.options.scrollRestoration({ location: router.latestLocation })) return;\n\t\tconst cacheKey = getKey(event.toLocation);\n\t\tconst fromCacheKey = event.fromLocation && getKey(event.fromLocation);\n\t\tif (scroll.restoring && fromCacheKey && fromCacheKey !== cacheKey) {\n\t\t\tconst fromElementEntries = scrollRestorationCache[fromCacheKey];\n\t\t\tif (fromElementEntries) {\n\t\t\t\tlet toElementEntries = scrollRestorationCache[cacheKey];\n\t\t\t\tfor (const elementSelector in fromElementEntries) {\n\t\t\t\t\tif (elementSelector === windowScrollTarget) {\n\t\t\t\t\t\tif (shouldResetScroll) continue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst element = getElement(elementSelector);\n\t\t\t\t\t\tif (!element) continue;\n\t\t\t\t\t\tif (shouldResetScroll && scrollToTopSelectors) {\n\t\t\t\t\t\t\tscrollToTopElements ??= getScrollToTopElements(scrollToTopSelectors);\n\t\t\t\t\t\t\tif (scrollToTopElements.has(element)) continue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!toElementEntries) toElementEntries = scrollRestorationCache[cacheKey] = {};\n\t\t\t\t\ttoElementEntries[elementSelector] ??= fromElementEntries[elementSelector];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tignoreScroll = true;\n\t\ttry {\n\t\t\tconst hash = event.toLocation.hash;\n\t\t\tconst hashScrollIntoViewOptions = event.toLocation.state.__hashScrollIntoViewOptions ?? true;\n\t\t\tlet windowRestored = false;\n\t\t\tif (shouldResetScroll) {\n\t\t\t\tif (!hash && scrollToTopSelectors) scrollToTopElements ??= getScrollToTopElements(scrollToTopSelectors);\n\t\t\t\tconst skipWindowRestore = hash && hashScrollIntoViewOptions && hashNavigation;\n\t\t\t\tconst elementEntries = scroll.restoring ? scrollRestorationCache[cacheKey] : void 0;\n\t\t\t\tif (elementEntries) for (const elementSelector in elementEntries) {\n\t\t\t\t\tconst { scrollX, scrollY } = elementEntries[elementSelector];\n\t\t\t\t\tif (elementSelector === windowScrollTarget) {\n\t\t\t\t\t\tif (skipWindowRestore) continue;\n\t\t\t\t\t\tscrollTo({\n\t\t\t\t\t\t\ttop: scrollY,\n\t\t\t\t\t\t\tleft: scrollX,\n\t\t\t\t\t\t\tbehavior\n\t\t\t\t\t\t});\n\t\t\t\t\t\twindowRestored = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst element = getElement(elementSelector);\n\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\telement.scrollLeft = scrollX;\n\t\t\t\t\t\t\telement.scrollTop = scrollY;\n\t\t\t\t\t\t\tscrollToTopElements?.delete(element);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!hash) {\n\t\t\t\t\tconst scrollOptions = {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\tbehavior\n\t\t\t\t\t};\n\t\t\t\t\tif (!windowRestored) scrollTo(scrollOptions);\n\t\t\t\t\tif (scrollToTopElements) for (const element of scrollToTopElements) element.scrollTo(scrollOptions);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!windowRestored && hash && hashScrollIntoViewOptions) document.getElementById(hash)?.scrollIntoView(hashScrollIntoViewOptions);\n\t\t} finally {\n\t\t\tignoreScroll = false;\n\t\t}\n\t});\n}\n//#endregion\nexport { defaultGetScrollRestorationKey, getElementScrollRestorationEntry, setupScrollRestoration, storageKey };\n\n//# sourceMappingURL=scroll-restoration.js.map","//#region src/qss.ts\n/**\n* Program is a reimplementation of the `qss` package:\n* Copyright (c) Luke Edwards luke.edwards05@gmail.com, MIT License\n* https://github.com/lukeed/qss/blob/master/license.md\n*\n* This reimplementation uses modern browser APIs\n* (namely URLSearchParams) and TypeScript while still\n* maintaining the original functionality and interface.\n*\n* Update: this implementation has also been mangled to\n* fit exactly our use-case (single value per key in encoding).\n*/\n/**\n* Encodes an object into a query string.\n* @param obj - The object to encode into a query string.\n* @param stringify - An optional custom stringify function.\n* @returns The encoded query string.\n* @example\n* ```\n* // Example input: encode({ token: 'foo', key: 'value' })\n* // Expected output: \"token=foo&key=value\"\n* ```\n*/\nfunction encode(obj, stringify = String) {\n\tconst result = new URLSearchParams();\n\tfor (const key in obj) {\n\t\tconst val = obj[key];\n\t\tif (val !== void 0) result.set(key, stringify(val));\n\t}\n\treturn result.toString();\n}\n/**\n* Converts a string value to its appropriate type (string, number, boolean).\n* @param mix - The string value to convert.\n* @returns The converted value.\n* @example\n* // Example input: toValue(\"123\")\n* // Expected output: 123\n*/\nfunction toValue(str) {\n\tif (!str) return \"\";\n\tif (str === \"false\") return false;\n\tif (str === \"true\") return true;\n\treturn +str * 0 === 0 && +str + \"\" === str ? +str : str;\n}\n/**\n* Decodes a query string into an object.\n* @param str - The query string to decode.\n* @returns The decoded key-value pairs in an object format.\n* @example\n* // Example input: decode(\"token=foo&key=value\")\n* // Expected output: { \"token\": \"foo\", \"key\": \"value\" }\n*/\nfunction decode(str) {\n\tconst searchParams = new URLSearchParams(str);\n\tconst result = Object.create(null);\n\tfor (const [key, value] of searchParams.entries()) {\n\t\tconst previousValue = result[key];\n\t\tif (previousValue == null) result[key] = toValue(value);\n\t\telse if (Array.isArray(previousValue)) previousValue.push(toValue(value));\n\t\telse result[key] = [previousValue, toValue(value)];\n\t}\n\treturn result;\n}\n//#endregion\nexport { decode, encode };\n\n//# sourceMappingURL=qss.js.map","import { decode, encode } from \"./qss.js\";\n//#region src/searchParams.ts\nconst jsonStart = /^(?:\\s|[\"[{\\d-]|fa|nu|tr)/;\n/** Default `parseSearch` that strips leading '?' and JSON-parses values. */\nconst defaultParseSearch = parseSearchWith(JSON.parse);\n/** Default `stringifySearch` using JSON.stringify for complex values. */\nconst defaultStringifySearch = stringifySearchWith(JSON.stringify, JSON.parse);\n/**\n* Build a `parseSearch` function using a provided JSON-like parser.\n*\n* The returned function strips a leading `?`, decodes values, and attempts to\n* JSON-parse string values using the given `parser`.\n*\n* @param parser Function to parse a string value (e.g. `JSON.parse`).\n* @returns A `parseSearch` function compatible with `Router` options.\n* @link https://tanstack.com/router/latest/docs/framework/react/guide/custom-search-param-serialization\n*/\nfunction parseSearchWith(parser) {\n\treturn (searchStr) => {\n\t\tif (searchStr[0] === \"?\") searchStr = searchStr.substring(1);\n\t\tconst query = decode(searchStr);\n\t\tfor (const key in query) {\n\t\t\tconst value = query[key];\n\t\t\tif (typeof value === \"string\") try {\n\t\t\t\tquery[key] = parser(value);\n\t\t\t} catch (_err) {}\n\t\t}\n\t\treturn query;\n\t};\n}\n/**\n* Build a `stringifySearch` function using a provided serializer.\n*\n* Non-primitive values are serialized with `stringify`. If a `parser` is\n* supplied, string values that are parseable are re-serialized to ensure\n* symmetry with `parseSearch`.\n*\n* @param stringify Function to serialize a value (e.g. `JSON.stringify`).\n* @param parser Optional parser to detect parseable strings.\n* @returns A `stringifySearch` function compatible with `Router` options.\n* @link https://tanstack.com/router/latest/docs/framework/react/guide/custom-search-param-serialization\n*/\nfunction stringifySearchWith(stringify, parser) {\n\tconst isJsonParser = parser === JSON.parse;\n\tfunction stringifyValue(val) {\n\t\tif (val && typeof val === \"object\") try {\n\t\t\treturn stringify(val);\n\t\t} catch (_err) {}\n\t\telse if (parser && typeof val === \"string\") {\n\t\t\tif (isJsonParser && !jsonStart.test(val)) return val;\n\t\t\ttry {\n\t\t\t\tparser(val);\n\t\t\t\treturn stringify(val);\n\t\t\t} catch (_err) {}\n\t\t}\n\t\treturn val;\n\t}\n\treturn (search) => {\n\t\tconst searchStr = encode(search, stringifyValue);\n\t\treturn searchStr ? `?${searchStr}` : \"\";\n\t};\n}\n//#endregion\nexport { defaultParseSearch, defaultStringifySearch, parseSearchWith, stringifySearchWith };\n\n//# sourceMappingURL=searchParams.js.map","//#region src/root.ts\n/** Stable identifier used for the root route in a route tree. */\nconst rootRouteId = \"__root__\";\n//#endregion\nexport { rootRouteId };\n\n//# sourceMappingURL=root.js.map","//#region src/redirect.ts\n/**\n* Create a redirect Response understood by TanStack Router.\n*\n* Use from route `loader`/`beforeLoad` or server functions to trigger a\n* navigation. If `throw: true` is set, the redirect is thrown instead of\n* returned. When an absolute `href` is supplied and `reloadDocument` is not\n* set, a full-document navigation is inferred.\n*\n* @param opts Options for the redirect. Common fields:\n* - `href`: absolute URL for external redirects; infers `reloadDocument`.\n* - `statusCode`: HTTP status code to use (defaults to 307).\n* - `headers`: additional headers to include on the Response.\n* - Standard navigation options like `to`, `params`, `search`, `replace`,\n* and `reloadDocument` for internal redirects.\n* @returns A Response augmented with router navigation options.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/redirectFunction\n*/\nfunction redirect(opts) {\n\topts.statusCode = opts.statusCode || opts.code || 307;\n\tif (!opts._builtLocation && !opts.reloadDocument && typeof opts.href === \"string\") try {\n\t\tnew URL(opts.href);\n\t\topts.reloadDocument = true;\n\t} catch {}\n\tconst headers = new Headers(opts.headers);\n\tif (opts.href && headers.get(\"Location\") === null) headers.set(\"Location\", opts.href);\n\tconst response = new Response(null, {\n\t\tstatus: opts.statusCode,\n\t\theaders\n\t});\n\tresponse.options = opts;\n\tif (opts.throw) throw response;\n\treturn response;\n}\n/** Check whether a value is a TanStack Router redirect Response. */\n/** Check whether a value is a TanStack Router redirect Response. */\nfunction isRedirect(obj) {\n\treturn obj instanceof Response && !!obj.options;\n}\n/** True if value is a redirect with a resolved `href` location. */\n/** True if value is a redirect with a resolved `href` location. */\nfunction isResolvedRedirect(obj) {\n\treturn isRedirect(obj) && !!obj.options.href;\n}\n/** Parse a serialized redirect object back into a redirect Response. */\n/** Parse a serialized redirect object back into a redirect Response. */\nfunction parseRedirect(obj) {\n\tif (obj !== null && typeof obj === \"object\" && obj.isSerializedRedirect) return redirect(obj);\n}\n//#endregion\nexport { isRedirect, isResolvedRedirect, parseRedirect, redirect };\n\n//# sourceMappingURL=redirect.js.map","import { joinPaths, trimPath } from \"./path.js\";\n//#region src/rewrite.ts\n/** Compose multiple rewrite pairs into a single in/out rewrite. */\nfunction composeRewrites(rewrites) {\n\treturn {\n\t\tinput: ({ url }) => {\n\t\t\tfor (const rewrite of rewrites) url = executeRewriteInput(rewrite, url);\n\t\t\treturn url;\n\t\t},\n\t\toutput: ({ url }) => {\n\t\t\tfor (let i = rewrites.length - 1; i >= 0; i--) url = executeRewriteOutput(rewrites[i], url);\n\t\t\treturn url;\n\t\t}\n\t};\n}\n/** Create a rewrite pair that strips/adds a basepath on input/output. */\nfunction rewriteBasepath(opts) {\n\tconst trimmedBasepath = trimPath(opts.basepath);\n\tconst normalizedBasepath = `/${trimmedBasepath}`;\n\tconst checkBasepath = opts.caseSensitive ? normalizedBasepath : normalizedBasepath.toLowerCase();\n\tconst checkBasepathWithSlash = `${checkBasepath}/`;\n\treturn {\n\t\tinput: ({ url }) => {\n\t\t\tconst pathname = opts.caseSensitive ? url.pathname : url.pathname.toLowerCase();\n\t\t\tif (pathname === checkBasepath) url.pathname = \"/\";\n\t\t\telse if (pathname.startsWith(checkBasepathWithSlash)) url.pathname = url.pathname.slice(normalizedBasepath.length);\n\t\t\treturn url;\n\t\t},\n\t\toutput: ({ url }) => {\n\t\t\turl.pathname = joinPaths([\n\t\t\t\t\"/\",\n\t\t\t\ttrimmedBasepath,\n\t\t\t\turl.pathname\n\t\t\t]);\n\t\t\treturn url;\n\t\t}\n\t};\n}\n/** Execute a location input rewrite if provided. */\nfunction executeRewriteInput(rewrite, url) {\n\tconst res = rewrite?.input?.({ url });\n\tif (res) {\n\t\tif (typeof res === \"string\") return new URL(res);\n\t\telse if (res instanceof URL) return res;\n\t}\n\treturn url;\n}\n/** Execute a location output rewrite if provided. */\nfunction executeRewriteOutput(rewrite, url) {\n\tconst res = rewrite?.output?.({ url });\n\tif (res) {\n\t\tif (typeof res === \"string\") return new URL(res);\n\t\telse if (res instanceof URL) return res;\n\t}\n\treturn url;\n}\n//#endregion\nexport { composeRewrites, executeRewriteInput, executeRewriteOutput, rewriteBasepath };\n\n//# sourceMappingURL=rewrite.js.map","import { arraysEqual, functionalUpdate } from \"./utils.js\";\n//#region src/stores.ts\n/** SSR non-reactive createMutableStore */\nfunction createNonReactiveMutableStore(initialValue) {\n\tlet value = initialValue;\n\treturn {\n\t\tget() {\n\t\t\treturn value;\n\t\t},\n\t\tset(nextOrUpdater) {\n\t\t\tvalue = functionalUpdate(nextOrUpdater, value);\n\t\t}\n\t};\n}\n/** SSR non-reactive createReadonlyStore */\nfunction createNonReactiveReadonlyStore(read) {\n\treturn { get() {\n\t\treturn read();\n\t} };\n}\nfunction createRouterStores(initialLocation, config) {\n\tconst { createMutableStore, createReadonlyStore, batch } = config;\n\tconst byRoute = /* @__PURE__ */ new Map();\n\tconst status = createMutableStore(\"idle\");\n\tconst location = createMutableStore(initialLocation);\n\tconst resolvedLocation = createMutableStore(void 0);\n\tconst ids = createMutableStore([]);\n\tconst matches = createReadonlyStore(() => ids.get().map((id) => byRoute.get(id).get()));\n\tconst __store = createReadonlyStore(() => ({\n\t\tstatus: status.get(),\n\t\tisLoading: status.get() === \"pending\",\n\t\tmatches: matches.get(),\n\t\tlocation: location.get(),\n\t\tresolvedLocation: resolvedLocation.get()\n\t}));\n\tfunction getMatchStore(routeId) {\n\t\tlet matchStore = byRoute.get(routeId);\n\t\tif (!matchStore) {\n\t\t\tmatchStore = createMutableStore(void 0);\n\t\t\tbyRoute.set(routeId, matchStore);\n\t\t}\n\t\treturn matchStore;\n\t}\n\tconst store = {\n\t\tstatus,\n\t\tlocation,\n\t\tresolvedLocation,\n\t\tids,\n\t\tmatches,\n\t\tbyRoute,\n\t\t__store,\n\t\tgetMatchStore,\n\t\tsetMatches\n\t};\n\tfunction setMatches(nextMatches) {\n\t\tconst previousIds = ids.get();\n\t\tconst nextIds = nextMatches.map((match) => match.routeId);\n\t\tbatch(() => {\n\t\t\tif (!arraysEqual(previousIds, nextIds)) ids.set(nextIds);\n\t\t\tfor (const id of previousIds) if (!nextIds.includes(id)) byRoute.get(id).set(() => void 0);\n\t\t\tfor (const nextMatch of nextMatches) {\n\t\t\t\tconst matchStore = getMatchStore(nextMatch.routeId);\n\t\t\t\tif (matchStore.get() !== nextMatch) matchStore.set(nextMatch);\n\t\t\t}\n\t\t});\n\t}\n\treturn store;\n}\n//#endregion\nexport { createNonReactiveMutableStore, createNonReactiveReadonlyStore, createRouterStores };\n\n//# sourceMappingURL=stores.js.map","//#region src/index.ts\nvar stateIndexKey = \"__TSR_index\";\nvar popStateEvent = \"popstate\";\nvar beforeUnloadEvent = \"beforeunload\";\nfunction createHistory(opts) {\n\tlet location = opts.getLocation();\n\tconst subscribers = /* @__PURE__ */ new Set();\n\tconst notify = (action) => {\n\t\tlocation = opts.getLocation();\n\t\tsubscribers.forEach((subscriber) => subscriber({\n\t\t\tlocation,\n\t\t\taction\n\t\t}));\n\t};\n\tconst handleIndexChange = (action) => {\n\t\tif (opts.notifyOnIndexChange ?? true) notify(action);\n\t\telse location = opts.getLocation();\n\t};\n\tconst tryNavigation = async ({ task, navigateOpts, ...actionInfo }) => {\n\t\tif (navigateOpts?.ignoreBlocker ?? false) {\n\t\t\ttask();\n\t\t\treturn;\n\t\t}\n\t\tconst blockers = opts.getBlockers?.() ?? [];\n\t\tconst isPushOrReplace = actionInfo.type === \"PUSH\" || actionInfo.type === \"REPLACE\";\n\t\tif (typeof document !== \"undefined\" && blockers.length && isPushOrReplace) for (const blocker of blockers) {\n\t\t\tconst nextLocation = parseHref(actionInfo.path, actionInfo.state);\n\t\t\tif (await blocker.blockerFn({\n\t\t\t\tcurrentLocation: location,\n\t\t\t\tnextLocation,\n\t\t\t\taction: actionInfo.type\n\t\t\t})) {\n\t\t\t\topts.onBlocked?.();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\ttask();\n\t};\n\treturn {\n\t\tget location() {\n\t\t\treturn location;\n\t\t},\n\t\tget length() {\n\t\t\treturn opts.getLength();\n\t\t},\n\t\tsubscribers,\n\t\tsubscribe: (cb) => {\n\t\t\tsubscribers.add(cb);\n\t\t\treturn () => {\n\t\t\t\tsubscribers.delete(cb);\n\t\t\t};\n\t\t},\n\t\tpush: (path, state, navigateOpts) => {\n\t\t\tconst currentIndex = location.state[stateIndexKey];\n\t\t\tstate = assignKeyAndIndex(currentIndex + 1, state);\n\t\t\ttryNavigation({\n\t\t\t\ttask: () => {\n\t\t\t\t\topts.pushState(path, state);\n\t\t\t\t\tnotify({ type: \"PUSH\" });\n\t\t\t\t},\n\t\t\t\tnavigateOpts,\n\t\t\t\ttype: \"PUSH\",\n\t\t\t\tpath,\n\t\t\t\tstate\n\t\t\t});\n\t\t},\n\t\treplace: (path, state, navigateOpts) => {\n\t\t\tconst currentIndex = location.state[stateIndexKey];\n\t\t\tstate = assignKeyAndIndex(currentIndex, state);\n\t\t\ttryNavigation({\n\t\t\t\ttask: () => {\n\t\t\t\t\topts.replaceState(path, state);\n\t\t\t\t\tnotify({ type: \"REPLACE\" });\n\t\t\t\t},\n\t\t\t\tnavigateOpts,\n\t\t\t\ttype: \"REPLACE\",\n\t\t\t\tpath,\n\t\t\t\tstate\n\t\t\t});\n\t\t},\n\t\tgo: (index, navigateOpts) => {\n\t\t\ttryNavigation({\n\t\t\t\ttask: () => {\n\t\t\t\t\topts.go(index);\n\t\t\t\t\thandleIndexChange({\n\t\t\t\t\t\ttype: \"GO\",\n\t\t\t\t\t\tindex\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tnavigateOpts,\n\t\t\t\ttype: \"GO\"\n\t\t\t});\n\t\t},\n\t\tback: (navigateOpts) => {\n\t\t\ttryNavigation({\n\t\t\t\ttask: () => {\n\t\t\t\t\topts.back(navigateOpts?.ignoreBlocker ?? false);\n\t\t\t\t\thandleIndexChange({ type: \"BACK\" });\n\t\t\t\t},\n\t\t\t\tnavigateOpts,\n\t\t\t\ttype: \"BACK\"\n\t\t\t});\n\t\t},\n\t\tforward: (navigateOpts) => {\n\t\t\ttryNavigation({\n\t\t\t\ttask: () => {\n\t\t\t\t\topts.forward(navigateOpts?.ignoreBlocker ?? false);\n\t\t\t\t\thandleIndexChange({ type: \"FORWARD\" });\n\t\t\t\t},\n\t\t\t\tnavigateOpts,\n\t\t\t\ttype: \"FORWARD\"\n\t\t\t});\n\t\t},\n\t\tcanGoBack: () => location.state[stateIndexKey] !== 0,\n\t\tcreateHref: (str) => opts.createHref(str),\n\t\tblock: (blocker) => {\n\t\t\tif (!opts.setBlockers) return () => {};\n\t\t\tconst blockers = opts.getBlockers?.() ?? [];\n\t\t\topts.setBlockers([...blockers, blocker]);\n\t\t\treturn () => {\n\t\t\t\tconst blockers = opts.getBlockers?.() ?? [];\n\t\t\t\topts.setBlockers?.(blockers.filter((b) => b !== blocker));\n\t\t\t};\n\t\t},\n\t\tflush: () => opts.flush?.(),\n\t\tdestroy: () => opts.destroy?.(),\n\t\tnotify\n\t};\n}\nfunction assignKeyAndIndex(index, state) {\n\tif (!state) state = {};\n\tconst key = createRandomKey();\n\treturn {\n\t\t...state,\n\t\tkey,\n\t\t__TSR_key: key,\n\t\t[stateIndexKey]: index\n\t};\n}\n/**\n* Creates a history object that can be used to interact with the browser's\n* navigation. This is a lightweight API wrapping the browser's native methods.\n* It is designed to work with TanStack Router, but could be used as a standalone API as well.\n* IMPORTANT: This API implements history throttling via a microtask to prevent\n* excessive calls to the history API. In some browsers, calling history.pushState or\n* history.replaceState in quick succession can cause the browser to ignore subsequent\n* calls. This API smooths out those differences and ensures that your application\n* state will *eventually* match the browser state. In most cases, this is not a problem,\n* but if you need to ensure that the browser state is up to date, you can use the\n* `history.flush` method to immediately flush all pending state changes to the browser URL.\n* @param opts\n* @param opts.getHref A function that returns the current href (path + search + hash)\n* @param opts.createHref A function that takes a path and returns a href (path + search + hash)\n* @returns A history instance\n*/\nfunction createBrowserHistory(opts) {\n\tconst win = opts?.window ?? (typeof document !== \"undefined\" ? window : void 0);\n\tconst originalPushState = win.history.pushState;\n\tconst originalReplaceState = win.history.replaceState;\n\tlet blockers = [];\n\tconst _getBlockers = () => blockers;\n\tconst _setBlockers = (newBlockers) => blockers = newBlockers;\n\tconst createHref = opts?.createHref ?? ((path) => path);\n\tconst parseLocation = opts?.parseLocation ?? (() => parseHref(`${win.location.pathname}${win.location.search}${win.location.hash}`, win.history.state));\n\tif (!win.history.state?.__TSR_key && !win.history.state?.key) {\n\t\tconst addedKey = createRandomKey();\n\t\twin.history.replaceState({\n\t\t\t[stateIndexKey]: 0,\n\t\t\tkey: addedKey,\n\t\t\t__TSR_key: addedKey\n\t\t}, \"\");\n\t}\n\tlet currentLocation = parseLocation();\n\tlet rollbackLocation;\n\tlet nextPopIsGo = false;\n\tlet ignoreNextPop = false;\n\tlet skipBlockerNextPop = false;\n\tlet ignoreNextBeforeUnload = false;\n\tconst getLocation = () => currentLocation;\n\tlet next;\n\tconst flush = () => {\n\t\tif (!next) return;\n\t\thistory._ignoreSubscribers = true;\n\t\t(next[2] ? win.history.pushState : win.history.replaceState)(next[1], \"\", next[0]);\n\t\thistory._ignoreSubscribers = false;\n\t\tnext = void 0;\n\t\trollbackLocation = void 0;\n\t};\n\tconst queueHistoryAction = (isPush, destHref, state) => {\n\t\tconst href = createHref(destHref);\n\t\tconst hasPendingAction = !!next;\n\t\tif (!hasPendingAction) rollbackLocation = currentLocation;\n\t\tcurrentLocation = parseHref(destHref, state);\n\t\tnext = [\n\t\t\thref,\n\t\t\tstate,\n\t\t\tnext?.[2] || isPush\n\t\t];\n\t\tif (!hasPendingAction) queueMicrotask(() => flush());\n\t};\n\tconst onPushPop = (type) => {\n\t\tcurrentLocation = parseLocation();\n\t\thistory.notify({ type });\n\t};\n\tconst onPushPopEvent = async () => {\n\t\tif (ignoreNextPop) {\n\t\t\tignoreNextPop = false;\n\t\t\treturn;\n\t\t}\n\t\tconst nextLocation = parseLocation();\n\t\tconst delta = nextLocation.state[stateIndexKey] - currentLocation.state[stateIndexKey];\n\t\tconst isForward = delta === 1;\n\t\tconst isBack = delta === -1;\n\t\tconst isGo = !isForward && !isBack || nextPopIsGo;\n\t\tnextPopIsGo = false;\n\t\tconst action = isGo ? \"GO\" : isBack ? \"BACK\" : \"FORWARD\";\n\t\tconst notify = isGo ? {\n\t\t\ttype: \"GO\",\n\t\t\tindex: delta\n\t\t} : { type: isBack ? \"BACK\" : \"FORWARD\" };\n\t\tif (skipBlockerNextPop) skipBlockerNextPop = false;\n\t\telse {\n\t\t\tconst blockers = _getBlockers();\n\t\t\tif (typeof document !== \"undefined\" && blockers.length) {\n\t\t\t\tfor (const blocker of blockers) if (await blocker.blockerFn({\n\t\t\t\t\tcurrentLocation,\n\t\t\t\t\tnextLocation,\n\t\t\t\t\taction\n\t\t\t\t})) {\n\t\t\t\t\tignoreNextPop = true;\n\t\t\t\t\twin.history.go(1);\n\t\t\t\t\thistory.notify(notify);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcurrentLocation = parseLocation();\n\t\thistory.notify(notify);\n\t};\n\tconst onBeforeUnload = (e) => {\n\t\tif (ignoreNextBeforeUnload) {\n\t\t\tignoreNextBeforeUnload = false;\n\t\t\treturn;\n\t\t}\n\t\tlet shouldBlock = false;\n\t\tconst blockers = _getBlockers();\n\t\tif (typeof document !== \"undefined\" && blockers.length) for (const blocker of blockers) {\n\t\t\tconst shouldHaveBeforeUnload = blocker.enableBeforeUnload ?? true;\n\t\t\tif (shouldHaveBeforeUnload === true) {\n\t\t\t\tshouldBlock = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (typeof shouldHaveBeforeUnload === \"function\" && shouldHaveBeforeUnload() === true) {\n\t\t\t\tshouldBlock = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (shouldBlock) {\n\t\t\te.preventDefault();\n\t\t\treturn e.returnValue = \"\";\n\t\t}\n\t};\n\tconst history = createHistory({\n\t\tgetLocation,\n\t\tgetLength: () => win.history.length,\n\t\tpushState: (href, state) => queueHistoryAction(true, href, state),\n\t\treplaceState: (href, state) => queueHistoryAction(false, href, state),\n\t\tback: (ignoreBlocker) => {\n\t\t\tif (ignoreBlocker) skipBlockerNextPop = true;\n\t\t\tignoreNextBeforeUnload = true;\n\t\t\treturn win.history.back();\n\t\t},\n\t\tforward: (ignoreBlocker) => {\n\t\t\tif (ignoreBlocker) skipBlockerNextPop = true;\n\t\t\tignoreNextBeforeUnload = true;\n\t\t\twin.history.forward();\n\t\t},\n\t\tgo: (n) => {\n\t\t\tnextPopIsGo = true;\n\t\t\twin.history.go(n);\n\t\t},\n\t\tcreateHref: (href) => createHref(href),\n\t\tflush,\n\t\tdestroy: () => {\n\t\t\twin.history.pushState = originalPushState;\n\t\t\twin.history.replaceState = originalReplaceState;\n\t\t\twin.removeEventListener(beforeUnloadEvent, onBeforeUnload, { capture: true });\n\t\t\twin.removeEventListener(popStateEvent, onPushPopEvent);\n\t\t},\n\t\tonBlocked: () => {\n\t\t\tif (rollbackLocation && currentLocation !== rollbackLocation) currentLocation = rollbackLocation;\n\t\t},\n\t\tgetBlockers: _getBlockers,\n\t\tsetBlockers: _setBlockers,\n\t\tnotifyOnIndexChange: false\n\t});\n\twin.addEventListener(beforeUnloadEvent, onBeforeUnload, { capture: true });\n\twin.addEventListener(popStateEvent, onPushPopEvent);\n\twin.history.pushState = function(...args) {\n\t\tconst res = originalPushState.apply(win.history, args);\n\t\tif (!history._ignoreSubscribers) onPushPop(\"PUSH\");\n\t\treturn res;\n\t};\n\twin.history.replaceState = function(...args) {\n\t\tconst res = originalReplaceState.apply(win.history, args);\n\t\tif (!history._ignoreSubscribers) onPushPop(\"REPLACE\");\n\t\treturn res;\n\t};\n\treturn history;\n}\n/**\n* Create a hash-based history implementation.\n* Useful for static hosts or environments without server URL rewriting.\n* @link https://tanstack.com/router/latest/docs/framework/react/guide/history-types\n*/\nfunction createHashHistory(opts) {\n\tconst win = opts?.window ?? (typeof document !== \"undefined\" ? window : void 0);\n\treturn createBrowserHistory({\n\t\twindow: win,\n\t\tparseLocation: () => {\n\t\t\tconst hashSplit = win.location.hash.split(\"#\").slice(1);\n\t\t\tconst pathPart = hashSplit[0] ?? \"/\";\n\t\t\tconst searchPart = win.location.search;\n\t\t\tconst hashEntries = hashSplit.slice(1);\n\t\t\treturn parseHref(`${pathPart}${searchPart}${hashEntries.length === 0 ? \"\" : `#${hashEntries.join(\"#\")}`}`, win.history.state);\n\t\t},\n\t\tcreateHref: (href) => `${win.location.pathname}${win.location.search}#${href}`\n\t});\n}\n/**\n* Create an in-memory history implementation.\n* Ideal for server rendering, tests, and non-DOM environments.\n* @link https://tanstack.com/router/latest/docs/framework/react/guide/history-types\n*/\nfunction createMemoryHistory(opts = { initialEntries: [\"/\"] }) {\n\tconst entries = opts.initialEntries;\n\tlet index = opts.initialIndex ? Math.min(Math.max(opts.initialIndex, 0), entries.length - 1) : entries.length - 1;\n\tconst states = entries.map((_entry, index) => assignKeyAndIndex(index, void 0));\n\tconst getLocation = () => parseHref(entries[index], states[index]);\n\tlet blockers = [];\n\tconst _getBlockers = () => blockers;\n\tconst _setBlockers = (newBlockers) => blockers = newBlockers;\n\treturn createHistory({\n\t\tgetLocation,\n\t\tgetLength: () => entries.length,\n\t\tpushState: (path, state) => {\n\t\t\tif (index < entries.length - 1) {\n\t\t\t\tentries.splice(index + 1);\n\t\t\t\tstates.splice(index + 1);\n\t\t\t}\n\t\t\tstates.push(state);\n\t\t\tentries.push(path);\n\t\t\tindex = Math.max(entries.length - 1, 0);\n\t\t},\n\t\treplaceState: (path, state) => {\n\t\t\tstates[index] = state;\n\t\t\tentries[index] = path;\n\t\t},\n\t\tback: () => {\n\t\t\tindex = Math.max(index - 1, 0);\n\t\t},\n\t\tforward: () => {\n\t\t\tindex = Math.min(index + 1, entries.length - 1);\n\t\t},\n\t\tgo: (n) => {\n\t\t\tindex = Math.min(Math.max(index + n, 0), entries.length - 1);\n\t\t},\n\t\tcreateHref: (path) => path,\n\t\tgetBlockers: _getBlockers,\n\t\tsetBlockers: _setBlockers\n\t});\n}\n/**\n* Sanitize a path to prevent open redirect vulnerabilities.\n* Removes control characters and collapses leading double slashes.\n*/\nfunction sanitizePath(path) {\n\tlet sanitized = path.replace(/[\\x00-\\x1f\\x7f]/g, \"\");\n\tif (sanitized.startsWith(\"//\")) sanitized = \"/\" + sanitized.replace(/^\\/+/, \"\");\n\treturn sanitized;\n}\nfunction parseHref(href, state) {\n\tconst sanitizedHref = sanitizePath(href);\n\tconst hashIndex = sanitizedHref.indexOf(\"#\");\n\tconst searchIndex = sanitizedHref.indexOf(\"?\");\n\tconst addedKey = createRandomKey();\n\treturn {\n\t\thref: sanitizedHref,\n\t\tpathname: sanitizedHref.substring(0, hashIndex > 0 ? searchIndex > 0 ? Math.min(hashIndex, searchIndex) : hashIndex : searchIndex > 0 ? searchIndex : sanitizedHref.length),\n\t\thash: hashIndex > -1 ? sanitizedHref.substring(hashIndex) : \"\",\n\t\tsearch: searchIndex > -1 ? sanitizedHref.slice(searchIndex, hashIndex === -1 ? void 0 : hashIndex) : \"\",\n\t\tstate: state || {\n\t\t\t[stateIndexKey]: 0,\n\t\t\tkey: addedKey,\n\t\t\t__TSR_key: addedKey\n\t\t}\n\t};\n}\nfunction createRandomKey() {\n\treturn (Math.random() + 1).toString(36).substring(7);\n}\n//#endregion\nexport { createBrowserHistory, createHashHistory, createHistory, createMemoryHistory, parseHref };\n\n//# sourceMappingURL=index.js.map","import { DEFAULT_PROTOCOL_ALLOWLIST, decodePath, deepEqual, encodePathLikeUrl, findLast, functionalUpdate, hasKeys, isDangerousProtocol, last, nullReplaceEqualDeep, replaceEqualDeep } from \"./utils.js\";\nimport { createLRUCache } from \"./lru-cache.js\";\nimport { buildRouteBranch, findFlatMatch, findRouteMatch, findSingleMatch, processRouteMasks, processRouteTree } from \"./new-process-route-tree.js\";\nimport { cleanPath, compileDecodeCharMap, interpolatePath, resolvePath, trimPath, trimPathRight } from \"./path.js\";\nimport { isNotFound } from \"./not-found.js\";\nimport { setupScrollRestoration } from \"./scroll-restoration.js\";\nimport { defaultParseSearch, defaultStringifySearch } from \"./searchParams.js\";\nimport { rootRouteId } from \"./root.js\";\nimport { isRedirect } from \"./redirect.js\";\nimport { loadClientRoute, loadRouteChunk, preloadClientRoute, refreshClientRoute, replaceRouteChunk } from \"./load-client.js\";\nimport { composeRewrites, executeRewriteInput, executeRewriteOutput, rewriteBasepath } from \"./rewrite.js\";\nimport { createRouterStores } from \"./stores.js\";\nimport { createBrowserHistory, parseHref } from \"@tanstack/history\";\nimport { isServer, loadServerRoute } from \"@tanstack/router-core/isServer\";\n//#region src/router.ts\nfunction routeNeedsLoad(route) {\n\treturn route.options.loader || route.options.beforeLoad || route.lazyFn || route.options.component?.preload || route.options.pendingComponent?.preload;\n}\n/**\n* Convert an unknown error into a minimal, serializable object.\n* Includes name and message (and stack in development).\n*/\nfunction defaultSerializeError(err) {\n\tif (err instanceof Error) {\n\t\tconst obj = {\n\t\t\tname: err.name,\n\t\t\tmessage: err.message\n\t\t};\n\t\tif (process.env.NODE_ENV === \"development\") obj.stack = err.stack;\n\t\treturn obj;\n\t}\n\treturn { data: err };\n}\n/** Options for configuring trailing-slash behavior. */\nconst trailingSlashOptions = {\n\talways: \"always\",\n\tnever: \"never\",\n\tpreserve: \"preserve\"\n};\n/**\n* Compute whether path, href or hash changed between previous and current\n* resolved locations.\n*/\nfunction getLocationChangeInfo(location, resolvedLocation) {\n\treturn {\n\t\tfromLocation: resolvedLocation,\n\t\ttoLocation: location,\n\t\tpathChanged: resolvedLocation?.pathname !== location.pathname,\n\t\threfChanged: resolvedLocation?.href !== location.href,\n\t\thashChanged: resolvedLocation?.hash !== location.hash\n\t};\n}\n/**\n* Return only state owned by the application, excluding volatile history\n* bookkeeping. Mask payloads (`__tempLocation`/`__tempKey`) are kept: they\n* distinguish otherwise-identical locations.\n*/\nfunction _getUserHistoryState({ key: _key, __TSR_key: _tsrKey, __TSR_index: _tsrIndex, __hashScrollIntoViewOptions: _hashScroll, ...state }) {\n\treturn state;\n}\n/** Run route lifecycle callbacks in leave/enter/stay phases. */\nfunction runRouteLifecycle(router, previous, matches, isCurrent) {\n\tfor (const match of previous) {\n\t\tif (isCurrent?.() === false) return;\n\t\tif (!matches.some((candidate) => candidate.routeId === match.routeId)) router.routesById[match.routeId].options.onLeave?.(match);\n\t}\n\tfor (const match of matches) {\n\t\tif (isCurrent?.() === false) return;\n\t\trouter.routesById[match.routeId].options[previous.some((candidate) => candidate.routeId === match.routeId) ? \"onStay\" : \"onEnter\"]?.(match);\n\t}\n}\n/**\n* Core, framework-agnostic router engine that powers TanStack Router.\n*\n* Provides navigation, matching, loading, preloading, caching and event APIs\n* used by framework adapters (React/Solid). Prefer framework helpers like\n* `createRouter` in app code.\n*\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/RouterType\n*/\nvar RouterCore = class {\n\t/**\n\t* @deprecated Use the `createRouter` function instead\n\t*/\n\tconstructor(options, getStoreConfig) {\n\t\tthis.tempLocationKey = `${Math.round(Math.random() * 1e7)}`;\n\t\tthis._scroll = { next: true };\n\t\tthis.subscribers = /* @__PURE__ */ new Set();\n\t\tthis._cache = /* @__PURE__ */ new Map();\n\t\tthis._committed = [];\n\t\tthis.routeBranchCache = /* @__PURE__ */ new WeakMap();\n\t\tthis.lightweightCache = /* @__PURE__ */ new WeakMap();\n\t\tthis.startTransition = async (fn) => {\n\t\t\tfn();\n\t\t\treturn false;\n\t\t};\n\t\tthis.update = (newOptions) => {\n\t\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\t\tif (newOptions.notFoundRoute) console.warn(\"The notFoundRoute API is deprecated and will be removed in the next major version. See https://tanstack.com/router/v1/docs/framework/react/guide/not-found-errors#migrating-from-notfoundroute for more info.\");\n\t\t\t}\n\t\t\tconst prevOptions = this.options;\n\t\t\tconst prevBasepath = this.basepath ?? prevOptions?.basepath ?? \"/\";\n\t\t\tconst basepathWasUnset = this.basepath === void 0;\n\t\t\tconst prevRewriteOption = prevOptions?.rewrite;\n\t\t\tthis.options = {\n\t\t\t\t...prevOptions,\n\t\t\t\t...newOptions\n\t\t\t};\n\t\t\tthis.isServer = this.options.isServer ?? isServer ?? typeof document === \"undefined\";\n\t\t\tthis.protocolAllowlist = new Set(this.options.protocolAllowlist);\n\t\t\tif (this.options.pathParamsAllowedCharacters) this.pathParamsDecoder = compileDecodeCharMap(this.options.pathParamsAllowedCharacters);\n\t\t\tif (!this.history || this.options.history && this.options.history !== this.history) if (!this.options.history) {\n\t\t\t\tif (!(isServer ?? this.isServer)) this.history = createBrowserHistory();\n\t\t\t} else this.history = this.options.history;\n\t\t\tthis.origin = this.options.origin;\n\t\t\tif (!this.origin) if (!(isServer ?? this.isServer) && window?.origin && window.origin !== \"null\") this.origin = window.origin;\n\t\t\telse this.origin = \"http://localhost\";\n\t\t\tif (this.history) this.updateLatestLocation();\n\t\t\tif (this.options.routeTree !== this.routeTree) {\n\t\t\t\tthis.routeTree = this.options.routeTree;\n\t\t\t\tlet processRouteTreeResult;\n\t\t\t\tif ((isServer ?? this.isServer) && process.env.NODE_ENV !== \"development\" && globalThis.__TSR_CACHE__ && globalThis.__TSR_CACHE__.routeTree === this.routeTree) {\n\t\t\t\t\tconst cached = globalThis.__TSR_CACHE__;\n\t\t\t\t\tthis.resolvePathCache = cached.resolvePathCache;\n\t\t\t\t\tprocessRouteTreeResult = cached.processRouteTreeResult;\n\t\t\t\t} else {\n\t\t\t\t\tthis.resolvePathCache = createLRUCache(1e3);\n\t\t\t\t\tprocessRouteTreeResult = this.buildRouteTree();\n\t\t\t\t\tif ((isServer ?? this.isServer) && process.env.NODE_ENV !== \"development\" && globalThis.__TSR_CACHE__ === void 0) globalThis.__TSR_CACHE__ = {\n\t\t\t\t\t\trouteTree: this.routeTree,\n\t\t\t\t\t\tprocessRouteTreeResult,\n\t\t\t\t\t\tresolvePathCache: this.resolvePathCache\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis.setRoutes(processRouteTreeResult);\n\t\t\t}\n\t\t\tif (!this.stores && this.latestLocation) {\n\t\t\t\tconst config = this.getStoreConfig(this);\n\t\t\t\tthis.batch = config.batch;\n\t\t\t\tthis.stores = createRouterStores(this.latestLocation, config);\n\t\t\t\tif (!(isServer ?? this.isServer)) setupScrollRestoration(this);\n\t\t\t}\n\t\t\tconst nextBasepath = this.options.basepath ?? \"/\";\n\t\t\tconst nextRewriteOption = this.options.rewrite;\n\t\t\tif (basepathWasUnset || prevBasepath !== nextBasepath || prevRewriteOption !== nextRewriteOption) {\n\t\t\t\tthis.basepath = nextBasepath;\n\t\t\t\tconst rewrites = [];\n\t\t\t\tconst trimmed = trimPath(nextBasepath);\n\t\t\t\tif (trimmed && trimmed !== \"/\") rewrites.push(rewriteBasepath({ basepath: nextBasepath }));\n\t\t\t\tif (nextRewriteOption) rewrites.push(nextRewriteOption);\n\t\t\t\tthis.rewrite = rewrites.length === 0 ? void 0 : rewrites.length === 1 ? rewrites[0] : composeRewrites(rewrites);\n\t\t\t\tif (this.history) this.updateLatestLocation();\n\t\t\t\tif (this.stores) this.stores.location.set(this.latestLocation);\n\t\t\t}\n\t\t};\n\t\tthis.updateLatestLocation = () => {\n\t\t\tthis.latestLocation = this.parseLocation(this.history.location, this.latestLocation);\n\t\t};\n\t\tthis.buildRouteTree = () => {\n\t\t\tconst result = processRouteTree(this.routeTree, this.options.caseSensitive, (route, i) => {\n\t\t\t\troute.init({ originalIndex: i });\n\t\t\t});\n\t\t\tif (this.options.routeMasks) processRouteMasks(this.options.routeMasks, result.processedTree);\n\t\t\treturn result;\n\t\t};\n\t\tthis.subscribe = (eventType, fn) => {\n\t\t\tconst listener = {\n\t\t\t\teventType,\n\t\t\t\tfn\n\t\t\t};\n\t\t\tthis.subscribers.add(listener);\n\t\t\treturn () => {\n\t\t\t\tthis.subscribers.delete(listener);\n\t\t\t};\n\t\t};\n\t\tthis.emit = (routerEvent) => {\n\t\t\tfor (const listener of this.subscribers) if (listener.eventType === routerEvent.type) try {\n\t\t\t\tlistener.fn(routerEvent);\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t}\n\t\t};\n\t\tthis.parseLocation = (locationToParse, previousLocation) => {\n\t\t\tconst parse = ({ pathname, search, hash, href, state }) => {\n\t\t\t\tif (!this.rewrite && !/[ \\x00-\\x1f\\x7f\\u0080-\\uffff]/.test(pathname)) {\n\t\t\t\t\tconst parsedSearch = this.options.parseSearch(search);\n\t\t\t\t\tconst searchStr = this.options.stringifySearch(parsedSearch);\n\t\t\t\t\treturn {\n\t\t\t\t\t\thref: pathname + searchStr + hash,\n\t\t\t\t\t\tpublicHref: pathname + searchStr + hash,\n\t\t\t\t\t\tpathname: decodePath(pathname).path,\n\t\t\t\t\t\texternal: false,\n\t\t\t\t\t\tsearchStr,\n\t\t\t\t\t\tsearch: nullReplaceEqualDeep(previousLocation?.search, parsedSearch),\n\t\t\t\t\t\thash: decodePath(hash.slice(1)).path,\n\t\t\t\t\t\tstate: replaceEqualDeep(previousLocation?.state, state)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst fullUrl = new URL(href, this.origin);\n\t\t\t\tconst url = executeRewriteInput(this.rewrite, fullUrl);\n\t\t\t\tconst parsedSearch = this.options.parseSearch(url.search);\n\t\t\t\tconst searchStr = this.options.stringifySearch(parsedSearch);\n\t\t\t\turl.search = searchStr;\n\t\t\t\treturn {\n\t\t\t\t\thref: url.href.replace(url.origin, \"\"),\n\t\t\t\t\tpublicHref: href,\n\t\t\t\t\tpathname: decodePath(url.pathname).path,\n\t\t\t\t\texternal: !!this.rewrite && url.origin !== this.origin,\n\t\t\t\t\tsearchStr,\n\t\t\t\t\tsearch: nullReplaceEqualDeep(previousLocation?.search, parsedSearch),\n\t\t\t\t\thash: decodePath(url.hash.slice(1)).path,\n\t\t\t\t\tstate: replaceEqualDeep(previousLocation?.state, state)\n\t\t\t\t};\n\t\t\t};\n\t\t\tconst location = parse(locationToParse);\n\t\t\tconst { __tempLocation, __tempKey } = location.state;\n\t\t\tif (__tempLocation && (!__tempKey || __tempKey === this.tempLocationKey)) {\n\t\t\t\tconst parsedTempLocation = parse(__tempLocation);\n\t\t\t\tparsedTempLocation.state.key = location.state.key;\n\t\t\t\tparsedTempLocation.state.__TSR_key = location.state.__TSR_key;\n\t\t\t\tdelete parsedTempLocation.state.__tempLocation;\n\t\t\t\treturn {\n\t\t\t\t\t...parsedTempLocation,\n\t\t\t\t\tmaskedLocation: location\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn location;\n\t\t};\n\t\tthis.resolvePathWithBase = (from, path) => {\n\t\t\treturn resolvePath({\n\t\t\t\tbase: from,\n\t\t\t\tto: path.includes(\"//\") ? cleanPath(path) : path,\n\t\t\t\ttrailingSlash: this.options.trailingSlash,\n\t\t\t\tcache: this.resolvePathCache\n\t\t\t});\n\t\t};\n\t\tthis.matchRoutes = (pathnameOrNext, locationSearchOrOpts, opts) => {\n\t\t\tif (typeof pathnameOrNext === \"string\") return this.matchRoutesInternal({\n\t\t\t\tpathname: pathnameOrNext,\n\t\t\t\tsearch: locationSearchOrOpts\n\t\t\t}, opts);\n\t\t\treturn this.matchRoutesInternal(pathnameOrNext, locationSearchOrOpts);\n\t\t};\n\t\tthis.getMatchedRoutes = (pathname) => {\n\t\t\tconst rawParams = Object.create(null);\n\t\t\tconst match = findRouteMatch(trimPathRight(pathname), this.processedTree, true);\n\t\t\tif (match) Object.assign(rawParams, match.rawParams);\n\t\t\treturn [\n\t\t\t\tmatch?.branch || [this.routesById[\"__root__\"]],\n\t\t\t\trawParams,\n\t\t\t\tmatch?.route\n\t\t\t];\n\t\t};\n\t\tthis.buildLocation = (opts) => {\n\t\t\tconst build = (dest = {}) => {\n\t\t\t\tconst currentLocation = dest._fromLocation || this._pendingLocation || this.latestLocation;\n\t\t\t\tconst lightweightResult = this.matchRoutesLightweight(currentLocation);\n\t\t\t\tif (dest.from && process.env.NODE_ENV !== \"production\" && dest._isNavigate) {\n\t\t\t\t\tconst [allFromMatches] = this.getMatchedRoutes(dest.from);\n\t\t\t\t\tconst matchedFrom = findLast(lightweightResult[0], (d) => {\n\t\t\t\t\t\treturn comparePaths(d.fullPath, dest.from);\n\t\t\t\t\t});\n\t\t\t\t\tconst matchedCurrent = findLast(allFromMatches, (d) => {\n\t\t\t\t\t\treturn comparePaths(d.fullPath, lightweightResult[1]);\n\t\t\t\t\t});\n\t\t\t\t\tif (!matchedFrom && !matchedCurrent) console.warn(`Could not find match for from: ${dest.from}`);\n\t\t\t\t}\n\t\t\t\tconst defaultedFromPath = dest.unsafeRelative === \"path\" ? currentLocation.pathname : dest.from ?? lightweightResult[1];\n\t\t\t\tconst destTo = dest.to ? `${dest.to}` : void 0;\n\t\t\t\tconst fromSearch = lightweightResult[2];\n\t\t\t\tconst fromParams = Object.assign(Object.create(null), lightweightResult[3]);\n\t\t\t\tconst sourcePath = destTo?.charCodeAt(0) === 47 ? \"/\" : this.resolvePathWithBase(defaultedFromPath, \".\");\n\t\t\t\tconst nextTo = destTo ? this.resolvePathWithBase(sourcePath, destTo) : sourcePath;\n\t\t\t\tconst nextParams = resolveNextParams(dest.params, fromParams);\n\t\t\t\tconst destRoute = this.routesByPath[trimPathRight(nextTo)];\n\t\t\t\tlet destRoutes;\n\t\t\t\tif (destRoute) destRoutes = this.getRouteBranch(destRoute);\n\t\t\t\telse if (nextTo.includes(\"$\")) destRoutes = [];\n\t\t\t\telse {\n\t\t\t\t\tconst [matchedRoutes, rawParams, foundRoute] = this.getMatchedRoutes(nextTo);\n\t\t\t\t\tdestRoutes = matchedRoutes;\n\t\t\t\t\tif (this.options.notFoundRoute && (!foundRoute || foundRoute.path !== \"/\" && rawParams[\"**\"])) destRoutes = [...destRoutes, this.options.notFoundRoute];\n\t\t\t\t}\n\t\t\t\tif (destRoutes.length && hasKeys(nextParams)) for (const route of destRoutes) {\n\t\t\t\t\tconst fn = route.options.params?.stringify ?? route.options.stringifyParams;\n\t\t\t\t\tif (fn) try {\n\t\t\t\t\t\tObject.assign(nextParams, fn(nextParams));\n\t\t\t\t\t} catch {}\n\t\t\t\t}\n\t\t\t\tconst nextPathname = opts.leaveParams ? nextTo : decodePath(interpolatePath({\n\t\t\t\t\tpath: nextTo,\n\t\t\t\t\tparams: nextParams,\n\t\t\t\t\tdecoder: this.pathParamsDecoder,\n\t\t\t\t\tserver: this.isServer\n\t\t\t\t}).interpolatedPath).path;\n\t\t\t\tif (process.env.NODE_ENV !== \"production\" && destRoute && !opts.leaveParams) try {\n\t\t\t\t\tconst foundRoute = this.getMatchedRoutes(nextPathname)[2];\n\t\t\t\t\tif (foundRoute?.id !== destRoute.id) console.warn(`Generated path \"${nextPathname}\" for route \"${destRoute.id}\" matched route \"${foundRoute?.id}\" instead. This can happen when multiple route templates resolve to the same URL. Use the route template that matches the intended route, or adjust params.stringify if it changed the target path.`);\n\t\t\t\t} catch {}\n\t\t\t\tlet nextSearch = fromSearch;\n\t\t\t\tif (opts._includeValidateSearch && this.options.search?.strict) {\n\t\t\t\t\tconst validatedSearch = {};\n\t\t\t\t\tdestRoutes.forEach((route) => {\n\t\t\t\t\t\tif (route.options.validateSearch) try {\n\t\t\t\t\t\t\tObject.assign(validatedSearch, validateSearch(route.options.validateSearch, {\n\t\t\t\t\t\t\t\t...validatedSearch,\n\t\t\t\t\t\t\t\t...nextSearch\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t});\n\t\t\t\t\tnextSearch = validatedSearch;\n\t\t\t\t}\n\t\t\t\tnextSearch = applySearchMiddleware(nextSearch, dest, destRoutes, opts._includeValidateSearch);\n\t\t\t\tnextSearch = nullReplaceEqualDeep(fromSearch, nextSearch);\n\t\t\t\tconst searchStr = this.options.stringifySearch(nextSearch);\n\t\t\t\tconst hash = dest.hash === true ? currentLocation.hash : dest.hash ? functionalUpdate(dest.hash, currentLocation.hash) : void 0;\n\t\t\t\tconst hashStr = hash ? `#${hash}` : \"\";\n\t\t\t\tlet nextState = dest.state === true ? currentLocation.state : dest.state ? functionalUpdate(dest.state, currentLocation.state) : {};\n\t\t\t\tnextState = replaceEqualDeep(currentLocation.state, nextState);\n\t\t\t\tconst fullPath = `${nextPathname}${searchStr}${hashStr}`;\n\t\t\t\tlet href;\n\t\t\t\tlet publicHref;\n\t\t\t\tlet external = false;\n\t\t\t\tif (this.rewrite) {\n\t\t\t\t\tconst url = new URL(fullPath, this.origin);\n\t\t\t\t\tconst rewrittenUrl = executeRewriteOutput(this.rewrite, url);\n\t\t\t\t\thref = url.href.replace(url.origin, \"\");\n\t\t\t\t\tif (rewrittenUrl.origin !== this.origin) {\n\t\t\t\t\t\tpublicHref = rewrittenUrl.href;\n\t\t\t\t\t\texternal = true;\n\t\t\t\t\t} else publicHref = rewrittenUrl.pathname + rewrittenUrl.search + rewrittenUrl.hash;\n\t\t\t\t} else {\n\t\t\t\t\thref = encodePathLikeUrl(fullPath);\n\t\t\t\t\tpublicHref = href;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tpublicHref,\n\t\t\t\t\thref,\n\t\t\t\t\tpathname: nextPathname,\n\t\t\t\t\tsearch: nextSearch,\n\t\t\t\t\tsearchStr,\n\t\t\t\t\tstate: nextState,\n\t\t\t\t\thash: hash ?? \"\",\n\t\t\t\t\texternal,\n\t\t\t\t\tunmaskOnReload: dest.unmaskOnReload\n\t\t\t\t};\n\t\t\t};\n\t\t\tconst next = build(opts);\n\t\t\tif (opts.mask) next.maskedLocation = build({\n\t\t\t\tfrom: opts.from,\n\t\t\t\t...opts.mask\n\t\t\t});\n\t\t\telse if (this.options.routeMasks) {\n\t\t\t\tconst match = findFlatMatch(next.pathname, this.processedTree);\n\t\t\t\tif (match) {\n\t\t\t\t\tconst params = Object.assign(Object.create(null), match.rawParams);\n\t\t\t\t\tconst { from: _from, params: maskParams, ...maskProps } = match.route;\n\t\t\t\t\tconst nextParams = resolveNextParams(maskParams, params);\n\t\t\t\t\tnext.maskedLocation = build({\n\t\t\t\t\t\tfrom: opts.from,\n\t\t\t\t\t\t...maskProps,\n\t\t\t\t\t\tparams: nextParams\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn next;\n\t\t};\n\t\tthis.commitLocation = async ({ viewTransition, ignoreBlocker, ...next }) => {\n\t\t\tlet historyAction;\n\t\t\tconst isSameLocation = trimPathRight(this.latestLocation.href) === trimPathRight(next.href) && deepEqual(_getUserHistoryState(next.state), _getUserHistoryState(this.latestLocation.state));\n\t\t\tconst previousCommitPromise = this._commitPromise;\n\t\t\tlet resolve;\n\t\t\tconst commitPromise = new Promise((done) => {\n\t\t\t\tresolve = done;\n\t\t\t});\n\t\t\tcommitPromise.resolve = () => {\n\t\t\t\tresolve();\n\t\t\t\tpreviousCommitPromise?.resolve();\n\t\t\t};\n\t\t\tthis._commitPromise = commitPromise;\n\t\t\tif (isSameLocation) this.load();\n\t\t\telse {\n\t\t\t\tlet { maskedLocation, hashScrollIntoView, ...nextHistory } = next;\n\t\t\t\tif (maskedLocation) {\n\t\t\t\t\tnextHistory = {\n\t\t\t\t\t\t...maskedLocation,\n\t\t\t\t\t\tstate: {\n\t\t\t\t\t\t\t...maskedLocation.state,\n\t\t\t\t\t\t\t__tempKey: void 0,\n\t\t\t\t\t\t\t__tempLocation: {\n\t\t\t\t\t\t\t\t...nextHistory,\n\t\t\t\t\t\t\t\tsearch: nextHistory.searchStr,\n\t\t\t\t\t\t\t\tstate: {\n\t\t\t\t\t\t\t\t\t...nextHistory.state,\n\t\t\t\t\t\t\t\t\t__tempKey: void 0,\n\t\t\t\t\t\t\t\t\t__tempLocation: void 0,\n\t\t\t\t\t\t\t\t\t__TSR_key: void 0,\n\t\t\t\t\t\t\t\t\tkey: void 0\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tif (nextHistory.unmaskOnReload ?? this.options.unmaskOnReload ?? false) nextHistory.state.__tempKey = this.tempLocationKey;\n\t\t\t\t}\n\t\t\t\tnextHistory.state.__hashScrollIntoViewOptions = hashScrollIntoView ?? this.options.defaultHashScrollIntoView ?? true;\n\t\t\t\tthis.shouldViewTransition = viewTransition;\n\t\t\t\thistoryAction = next.replace ? \"REPLACE\" : \"PUSH\";\n\t\t\t\tthis.history[historyAction === \"REPLACE\" ? \"replace\" : \"push\"](nextHistory.publicHref, nextHistory.state, { ignoreBlocker });\n\t\t\t\tif (!this.history.subscribers.size) this.load({ action: { type: historyAction } });\n\t\t\t}\n\t\t\tthis._scroll.next = next.resetScroll ?? true;\n\t\t\treturn this._commitPromise;\n\t\t};\n\t\tthis.buildAndCommitLocation = ({ replace, resetScroll, hashScrollIntoView, viewTransition, ignoreBlocker, _redirects, href, ...rest } = {}) => {\n\t\t\tif (href) {\n\t\t\t\tconst currentIndex = this.history.location.state.__TSR_index;\n\t\t\t\tconst parsed = parseHref(href, { __TSR_index: replace ? currentIndex : currentIndex + 1 });\n\t\t\t\tconst hrefUrl = new URL(parsed.pathname, this.origin);\n\t\t\t\trest.to = executeRewriteInput(this.rewrite, hrefUrl).pathname;\n\t\t\t\trest.search = this.options.parseSearch(parsed.search);\n\t\t\t\trest.hash = parsed.hash.slice(1);\n\t\t\t}\n\t\t\tconst location = this.buildLocation({\n\t\t\t\t...rest,\n\t\t\t\t_includeValidateSearch: true\n\t\t\t});\n\t\t\tif (_redirects) location._redirects = _redirects;\n\t\t\tthis._pendingLocation = location;\n\t\t\tconst commitPromise = this.commitLocation({\n\t\t\t\t...location,\n\t\t\t\tviewTransition,\n\t\t\t\treplace,\n\t\t\t\tresetScroll,\n\t\t\t\thashScrollIntoView,\n\t\t\t\tignoreBlocker\n\t\t\t});\n\t\t\tqueueMicrotask(() => {\n\t\t\t\tif (this._pendingLocation === location) this._pendingLocation = void 0;\n\t\t\t});\n\t\t\treturn commitPromise;\n\t\t};\n\t\tthis.navigate = async ({ to, reloadDocument, href, publicHref, ...rest }) => {\n\t\t\tlet hrefIsUrl = false;\n\t\t\tif (href) try {\n\t\t\t\tnew URL(`${href}`);\n\t\t\t\threfIsUrl = true;\n\t\t\t} catch {}\n\t\t\tif (hrefIsUrl && !reloadDocument) reloadDocument = true;\n\t\t\tif (reloadDocument) {\n\t\t\t\tif (to !== void 0 || !href) {\n\t\t\t\t\tconst location = this.buildLocation({\n\t\t\t\t\t\tto,\n\t\t\t\t\t\t...rest\n\t\t\t\t\t});\n\t\t\t\t\thref = href ?? location.publicHref;\n\t\t\t\t\tpublicHref = publicHref ?? location.publicHref;\n\t\t\t\t}\n\t\t\t\tconst reloadHref = !hrefIsUrl && publicHref ? publicHref : href;\n\t\t\t\tif (isDangerousProtocol(reloadHref, this.protocolAllowlist)) {\n\t\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked navigation to dangerous protocol: ${reloadHref}`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!rest.ignoreBlocker) {\n\t\t\t\t\tconst blockers = this.history.getBlockers?.() ?? [];\n\t\t\t\t\tfor (const blocker of blockers) if (blocker?.blockerFn) {\n\t\t\t\t\t\tif (await blocker.blockerFn({\n\t\t\t\t\t\t\tcurrentLocation: this.latestLocation,\n\t\t\t\t\t\t\tnextLocation: this.latestLocation,\n\t\t\t\t\t\t\taction: \"PUSH\"\n\t\t\t\t\t\t})) return;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (rest.replace) window.location.replace(reloadHref);\n\t\t\t\telse window.location.href = reloadHref;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn this.buildAndCommitLocation({\n\t\t\t\t...rest,\n\t\t\t\thref,\n\t\t\t\tto,\n\t\t\t\t_isNavigate: true\n\t\t\t});\n\t\t};\n\t\tthis.load = async (opts) => {\n\t\t\tif (isServer ?? this.isServer) return loadServerRoute(this, opts);\n\t\t\tthis.updateLatestLocation();\n\t\t\tif (opts?.action) this._scroll.hash = opts.action.type === \"PUSH\" || opts.action.type === \"REPLACE\";\n\t\t\tawait loadClientRoute(this, opts);\n\t\t};\n\t\tthis.startViewTransition = (fn) => {\n\t\t\tconst shouldViewTransition = this.shouldViewTransition ?? this.options.defaultViewTransition;\n\t\t\tthis.shouldViewTransition = void 0;\n\t\t\tif (shouldViewTransition && !(isServer ?? typeof document === \"undefined\") && typeof document.startViewTransition === \"function\") {\n\t\t\t\tlet startViewTransitionParams;\n\t\t\t\tif (typeof shouldViewTransition === \"object\" && window.CSS?.supports?.(\"selector(:active-view-transition-type(a))\")) {\n\t\t\t\t\tconst next = this.latestLocation;\n\t\t\t\t\tconst prevLocation = this.stores.resolvedLocation.get();\n\t\t\t\t\tconst resolvedViewTransitionTypes = typeof shouldViewTransition.types === \"function\" ? shouldViewTransition.types(getLocationChangeInfo(next, prevLocation)) : shouldViewTransition.types;\n\t\t\t\t\tif (resolvedViewTransitionTypes === false) return fn();\n\t\t\t\t\tstartViewTransitionParams = {\n\t\t\t\t\t\tupdate: fn,\n\t\t\t\t\t\ttypes: resolvedViewTransitionTypes\n\t\t\t\t\t};\n\t\t\t\t} else startViewTransitionParams = fn;\n\t\t\t\treturn document.startViewTransition(startViewTransitionParams).updateCallbackDone;\n\t\t\t}\n\t\t\treturn fn();\n\t\t};\n\t\tthis.invalidate = (opts) => {\n\t\t\tconst committedMatches = this._committed;\n\t\t\tconst filter = opts?.filter;\n\t\t\tconst preloads = this._preloads;\n\t\t\tconst invalidIds = new Set([\n\t\t\t\t...committedMatches,\n\t\t\t\t...this._cache.values(),\n\t\t\t\t...[...preloads?.values() ?? []].flat(),\n\t\t\t\t...this._tx?.[3] ?? []\n\t\t\t].filter((match) => !filter || filter(match)).map((match) => match.id));\n\t\t\tconst discardedPreloads = [];\n\t\t\tfor (const [controller, matches] of preloads ?? []) if (matches.some((match) => invalidIds.has(match.id))) {\n\t\t\t\tpreloads.delete(controller);\n\t\t\t\tdiscardedPreloads.push(controller);\n\t\t\t}\n\t\t\tconst invalidate = (d) => {\n\t\t\t\tif (invalidIds.has(d.id)) {\n\t\t\t\t\tconst route = this.routesById[d.routeId];\n\t\t\t\t\tconst next = {\n\t\t\t\t\t\t...d,\n\t\t\t\t\t\tinvalid: true,\n\t\t\t\t\t\t...(opts?.forcePending || d.status === \"error\" || d.status === \"notFound\") && routeNeedsLoad(route) ? {\n\t\t\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\t\t\terror: void 0\n\t\t\t\t\t\t} : void 0\n\t\t\t\t\t};\n\t\t\t\t\td._flight = void 0;\n\t\t\t\t\treturn next;\n\t\t\t\t}\n\t\t\t\treturn d;\n\t\t\t};\n\t\t\tthis._committed = committedMatches.map(invalidate);\n\t\t\tfor (const [id, match] of this._cache) if (invalidIds.has(id)) {\n\t\t\t\tmatch.invalid = true;\n\t\t\t\tif (opts?.forcePending) match.status = \"pending\";\n\t\t\t}\n\t\t\tfor (const id of invalidIds) this._flights?.delete(id);\n\t\t\tfor (const controller of discardedPreloads) controller.abort();\n\t\t\tthis.shouldViewTransition = false;\n\t\t\treturn this.load({ sync: opts?.sync });\n\t\t};\n\t\tthis.resolveRedirect = (redirect) => {\n\t\t\tconst locationHeader = redirect.headers.get(\"Location\");\n\t\t\tif (!redirect.options.href || redirect.options._builtLocation) {\n\t\t\t\tconst href = (redirect.options._builtLocation ?? this.buildLocation(redirect.options)).publicHref || \"/\";\n\t\t\t\tredirect.options.href = href;\n\t\t\t\tredirect.headers.set(\"Location\", href);\n\t\t\t} else if (locationHeader) try {\n\t\t\t\tconst url = new URL(locationHeader);\n\t\t\t\tif (this.origin && url.origin === this.origin) {\n\t\t\t\t\tconst href = url.pathname + url.search + url.hash;\n\t\t\t\t\tredirect.options.href = href;\n\t\t\t\t\tredirect.headers.set(\"Location\", href);\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t\tif (redirect.options.href && !redirect.options._builtLocation && isDangerousProtocol(redirect.options.href, this.protocolAllowlist)) throw new Error(process.env.NODE_ENV !== \"production\" ? `Redirect blocked: unsafe protocol in href \"${redirect.options.href}\". Allowed protocols: ${Array.from(this.protocolAllowlist).join(\", \")}.` : \"Redirect blocked: unsafe protocol\");\n\t\t\tif (!redirect.headers.get(\"Location\")) redirect.headers.set(\"Location\", redirect.options.href);\n\t\t\treturn redirect;\n\t\t};\n\t\tthis.clearCache = (opts) => {\n\t\t\tconst cached = this._cache;\n\t\t\tconst preloads = this._preloads;\n\t\t\tconst filter = opts?.filter;\n\t\t\tconst discarded = [];\n\t\t\tconst discardedIds = [];\n\t\t\tfor (const [id, match] of cached) if (!filter || filter(match)) {\n\t\t\t\tdiscardedIds.push(id);\n\t\t\t\tdiscarded.push(match);\n\t\t\t}\n\t\t\tconst abort = [];\n\t\t\tfor (const [controller, matches] of preloads ?? []) if (!filter || matches.some(filter)) {\n\t\t\t\tabort.push(controller);\n\t\t\t\tdiscarded.push(...matches);\n\t\t\t}\n\t\t\tfor (const id of discardedIds) cached.delete(id);\n\t\t\tfor (const controller of abort) preloads.delete(controller);\n\t\t\tfor (const match of discarded) {\n\t\t\t\tconst flight = match._flight;\n\t\t\t\tmatch._flight = void 0;\n\t\t\t\tif (flight && !--flight[2]) {\n\t\t\t\t\tif (this._flights?.get(match.id) === flight) this._flights.delete(match.id);\n\t\t\t\t\tabort.push(flight[1]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const controller of abort) controller.abort();\n\t\t};\n\t\tthis.loadRouteChunk = loadRouteChunk;\n\t\tthis.preloadRoute = (opts) => preloadClientRoute(this, opts);\n\t\tthis.matchRoute = (location, opts) => {\n\t\t\tconst matchLocation = {\n\t\t\t\t...location,\n\t\t\t\tto: location.to ? this.resolvePathWithBase(location.from || \"\", location.to) : void 0,\n\t\t\t\tparams: location.params || {},\n\t\t\t\tleaveParams: true\n\t\t\t};\n\t\t\tconst next = this.buildLocation(matchLocation);\n\t\t\tconst isPending = this.stores.status.get() === \"pending\";\n\t\t\tif (opts?.pending && !isPending) return false;\n\t\t\tconst baseLocation = opts?.pending ?? !isPending ? this.latestLocation : this.stores.resolvedLocation.get() || this.stores.location.get();\n\t\t\tconst match = findSingleMatch(next.pathname, opts?.caseSensitive ?? false, opts?.fuzzy ?? false, baseLocation.pathname, this.processedTree);\n\t\t\tif (!match) return false;\n\t\t\tif (location.params) {\n\t\t\t\tif (!deepEqual(match.rawParams, location.params, { partial: true })) return false;\n\t\t\t}\n\t\t\tif (opts?.includeSearch ?? true) return deepEqual(baseLocation.search, next.search, { partial: true }) ? match.rawParams : false;\n\t\t\treturn match.rawParams;\n\t\t};\n\t\tthis.getStoreConfig = getStoreConfig;\n\t\tthis.update({\n\t\t\tdefaultPreloadDelay: 50,\n\t\t\tdefaultPendingMs: 1e3,\n\t\t\tdefaultPendingMinMs: 500,\n\t\t\tcontext: void 0,\n\t\t\t...options,\n\t\t\tcaseSensitive: options.caseSensitive ?? false,\n\t\t\tnotFoundMode: options.notFoundMode ?? \"fuzzy\",\n\t\t\tstringifySearch: options.stringifySearch ?? defaultStringifySearch,\n\t\t\tparseSearch: options.parseSearch ?? defaultParseSearch,\n\t\t\tprotocolAllowlist: options.protocolAllowlist ?? DEFAULT_PROTOCOL_ALLOWLIST\n\t\t});\n\t\tif (!(isServer ?? typeof document === \"undefined\")) self.__TSR_ROUTER__ = this;\n\t}\n\tisShell() {\n\t\treturn !!this.options.isShell;\n\t}\n\tget state() {\n\t\treturn this.stores.__store.get();\n\t}\n\tsetRoutes({ routesById, routesByPath, processedTree }) {\n\t\tthis.routesById = routesById;\n\t\tthis.routesByPath = routesByPath;\n\t\tthis.processedTree = processedTree;\n\t\tconst notFoundRoute = this.options.notFoundRoute;\n\t\tif (notFoundRoute) {\n\t\t\tnotFoundRoute.init({ originalIndex: 99999999999 });\n\t\t\tthis.routesById[notFoundRoute.id] = notFoundRoute;\n\t\t}\n\t}\n\tgetRouteBranch(route) {\n\t\tlet branch = this.routeBranchCache.get(route);\n\t\tif (!branch) {\n\t\t\tbranch = buildRouteBranch(route);\n\t\t\tthis.routeBranchCache.set(route, branch);\n\t\t}\n\t\treturn branch;\n\t}\n\tmatchRoutesInternal(next, opts) {\n\t\tconst [initialMatchedRoutes, rawParams, foundRoute] = this.getMatchedRoutes(next.pathname);\n\t\tlet matchedRoutes = initialMatchedRoutes;\n\t\tlet isGlobalNotFound = false;\n\t\tif (foundRoute ? foundRoute.path !== \"/\" && rawParams[\"**\"] : trimPathRight(next.pathname)) if (this.options.notFoundRoute) matchedRoutes = [...matchedRoutes, this.options.notFoundRoute];\n\t\telse isGlobalNotFound = true;\n\t\tconst _notFoundRouteId = isGlobalNotFound ? findGlobalNotFoundRouteId(this.options.notFoundMode, matchedRoutes) : void 0;\n\t\tconst matches = new Array(matchedRoutes.length);\n\t\tconst committed = this._committed;\n\t\tconst previousAt = (route, index) => {\n\t\t\tconst match = committed[index];\n\t\t\treturn match?.routeId === route.id ? match : route === this.options.notFoundRoute ? committed.find((candidate) => candidate.routeId === route.id) : void 0;\n\t\t};\n\t\tlet strictParams;\n\t\tfor (let index = 0; index < matchedRoutes.length; index++) {\n\t\t\tconst route = matchedRoutes[index];\n\t\t\tconst parentMatch = matches[index - 1];\n\t\t\tlet preMatchSearch;\n\t\t\tlet strictMatchSearch;\n\t\t\tlet searchError;\n\t\t\t{\n\t\t\t\tconst parentSearch = parentMatch?.search ?? next.search;\n\t\t\t\tconst parentStrictSearch = parentMatch?._strictSearch ?? void 0;\n\t\t\t\ttry {\n\t\t\t\t\tconst strictSearch = validateSearch(route.options.validateSearch, { ...parentSearch }) ?? void 0;\n\t\t\t\t\tpreMatchSearch = {\n\t\t\t\t\t\t...parentSearch,\n\t\t\t\t\t\t...strictSearch\n\t\t\t\t\t};\n\t\t\t\t\tstrictMatchSearch = {\n\t\t\t\t\t\t...parentStrictSearch,\n\t\t\t\t\t\t...strictSearch\n\t\t\t\t\t};\n\t\t\t\t} catch (err) {\n\t\t\t\t\tlet searchParamError = err;\n\t\t\t\t\tif (!(err instanceof SearchParamError)) searchParamError = new SearchParamError(err.message, { cause: err });\n\t\t\t\t\tif (opts?.throwOnError) throw searchParamError;\n\t\t\t\t\tpreMatchSearch = parentSearch;\n\t\t\t\t\tstrictMatchSearch = {};\n\t\t\t\t\tsearchError = searchParamError;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet loaderDeps = \"\";\n\t\t\tlet loaderDepsHash = \"\";\n\t\t\ttry {\n\t\t\t\tloaderDeps = route.options.loaderDeps?.({ search: preMatchSearch }) ?? \"\";\n\t\t\t\tloaderDepsHash = loaderDeps ? JSON.stringify(loaderDeps) || \"\" : \"\";\n\t\t\t} catch (cause) {\n\t\t\t\tif (opts?.throwOnError) throw cause;\n\t\t\t\tsearchError ??= cause;\n\t\t\t}\n\t\t\tconst { interpolatedPath, usedParams } = interpolatePath({\n\t\t\t\tpath: route.fullPath,\n\t\t\t\tparams: rawParams,\n\t\t\t\tdecoder: this.pathParamsDecoder,\n\t\t\t\tserver: this.isServer\n\t\t\t});\n\t\t\tconst matchId = route.id + interpolatedPath + loaderDepsHash;\n\t\t\tconst previousMatch = previousAt(route, index);\n\t\t\tconst existingMatch = process.env.NODE_ENV !== \"production\" && opts?._rematerialize ? void 0 : this._cache.get(matchId) ?? (previousMatch?.id === matchId ? previousMatch : void 0);\n\t\t\tstrictParams = existingMatch?._strictParams ?? Object.assign(usedParams, strictParams);\n\t\t\tlet paramsError;\n\t\t\tif (!existingMatch) try {\n\t\t\t\textractStrictParams(route, strictParams);\n\t\t\t} catch (err) {\n\t\t\t\tif (isNotFound(err) || isRedirect(err)) paramsError = err;\n\t\t\t\telse paramsError = new PathParamError(err.message, { cause: err });\n\t\t\t\tif (opts?.throwOnError) throw paramsError;\n\t\t\t}\n\t\t\tconst cause = previousMatch ? \"stay\" : \"enter\";\n\t\t\tlet match;\n\t\t\tif (existingMatch) match = {\n\t\t\t\t...existingMatch,\n\t\t\t\tcause,\n\t\t\t\tsearch: previousMatch ? nullReplaceEqualDeep(previousMatch.search, preMatchSearch) : nullReplaceEqualDeep(existingMatch.search, preMatchSearch),\n\t\t\t\t_strictSearch: strictMatchSearch,\n\t\t\t\tsearchError\n\t\t\t};\n\t\t\telse {\n\t\t\t\tconst status = routeNeedsLoad(route) ? \"pending\" : \"success\";\n\t\t\t\tmatch = {\n\t\t\t\t\tid: matchId,\n\t\t\t\t\tssr: isServer ?? this.isServer ? void 0 : route.options.ssr,\n\t\t\t\t\tindex,\n\t\t\t\t\trouteId: route.id,\n\t\t\t\t\tparams: previousMatch?.params ?? strictParams,\n\t\t\t\t\t_strictParams: strictParams,\n\t\t\t\t\tpathname: interpolatedPath,\n\t\t\t\t\tupdatedAt: Date.now(),\n\t\t\t\t\tsearch: previousMatch ? nullReplaceEqualDeep(previousMatch.search, preMatchSearch) : preMatchSearch,\n\t\t\t\t\t_strictSearch: strictMatchSearch,\n\t\t\t\t\tsearchError,\n\t\t\t\t\tstatus,\n\t\t\t\t\tisFetching: false,\n\t\t\t\t\terror: void 0,\n\t\t\t\t\tparamsError,\n\t\t\t\t\tcontext: {},\n\t\t\t\t\tabortController: opts?._controller ?? new AbortController(),\n\t\t\t\t\tcause,\n\t\t\t\t\tloaderDeps: previousMatch ? replaceEqualDeep(previousMatch.loaderDeps, loaderDeps) : loaderDeps,\n\t\t\t\t\tinvalid: false,\n\t\t\t\t\tpreload: false,\n\t\t\t\t\tstaticData: route.options.staticData || {},\n\t\t\t\t\tfullPath: route.fullPath\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst _notFound = _notFoundRouteId === route.id;\n\t\t\tif (match._notFound && !_notFound) match.error = void 0;\n\t\t\tmatch._notFound = _notFound;\n\t\t\tmatches[index] = match;\n\t\t}\n\t\tfor (let index = 0; index < matches.length; index++) {\n\t\t\tconst match = matches[index];\n\t\t\tmatch.params = match.cause === \"stay\" ? nullReplaceEqualDeep(match.params, strictParams) : strictParams;\n\t\t\tif (opts?._controller) match.context = {};\n\t\t}\n\t\treturn matches;\n\t}\n\t/**\n\t* Lightweight route matching for buildLocation.\n\t* Only computes fullPath, accumulated search, and params - skipping expensive\n\t* operations like AbortController, loaderDeps, and full match objects.\n\t*/\n\tmatchRoutesLightweight(location) {\n\t\tconst lastRouteId = last(this.stores.ids.get());\n\t\tconst lastStateMatch = lastRouteId ? this.stores.byRoute.get(lastRouteId).get() : void 0;\n\t\tconst lastStateMatchId = lastStateMatch?.id;\n\t\tconst cached = this.lightweightCache.get(location);\n\t\tif (cached && cached[0] === lastStateMatchId) return cached[1];\n\t\tconst [matchedRoutes, rawParams] = this.getMatchedRoutes(location.pathname);\n\t\tconst lastRoute = last(matchedRoutes);\n\t\tconst accumulatedSearch = { ...location.search };\n\t\tfor (const route of matchedRoutes) try {\n\t\t\tObject.assign(accumulatedSearch, validateSearch(route.options.validateSearch, accumulatedSearch));\n\t\t} catch {}\n\t\tconst canReuseParams = lastStateMatch && lastStateMatch.routeId === lastRoute.id && lastStateMatch.pathname === location.pathname;\n\t\tlet params;\n\t\tif (canReuseParams) params = lastStateMatch.params;\n\t\telse {\n\t\t\tconst strictParams = Object.assign(Object.create(null), rawParams);\n\t\t\tfor (const route of matchedRoutes) try {\n\t\t\t\textractStrictParams(route, strictParams);\n\t\t\t} catch {}\n\t\t\tparams = strictParams;\n\t\t}\n\t\tconst result = [\n\t\t\tmatchedRoutes,\n\t\t\tlastRoute.fullPath,\n\t\t\taccumulatedSearch,\n\t\t\tparams\n\t\t];\n\t\tthis.lightweightCache.set(location, [lastStateMatchId, result]);\n\t\treturn result;\n\t}\n};\n/**\n* In non-production environments,\n* augment the RouterCore class with a `_refreshRoute` method\n* dedicated to HMR.\n*/\nif (process.env.NODE_ENV !== \"production\") {\n\tRouterCore.prototype._replaceRouteChunk = replaceRouteChunk;\n\tRouterCore.prototype._refreshRoute = async function() {\n\t\tthis._serverResult = void 0;\n\t\tthis.updateLatestLocation();\n\t\tawait refreshClientRoute(this);\n\t};\n}\n/** Error thrown when search parameter validation fails. */\nvar SearchParamError = class extends Error {};\n/** Error thrown when path parameter parsing/validation fails. */\nvar PathParamError = class extends Error {};\nconst normalize = (str) => str.endsWith(\"/\") && str.length > 1 ? str.slice(0, -1) : str;\nfunction comparePaths(a, b) {\n\treturn normalize(a) === normalize(b);\n}\n/**\n* Lazily import a module function and forward arguments to it, retaining\n* parameter and return types for the selected export key.\n*/\nfunction lazyFn(fn, key) {\n\treturn async (...args) => {\n\t\treturn (await fn())[key || \"default\"](...args);\n\t};\n}\n/** Create an initial RouterState from a parsed location. */\nfunction getInitialRouterState(location) {\n\treturn {\n\t\tisLoading: false,\n\t\tstatus: \"idle\",\n\t\tresolvedLocation: void 0,\n\t\tlocation,\n\t\tmatches: []\n\t};\n}\nfunction validateSearch(validateSearch, input) {\n\tif (validateSearch == null) return {};\n\tif (\"~standard\" in validateSearch) {\n\t\tconst result = validateSearch[\"~standard\"].validate(input);\n\t\tif (result instanceof Promise) throw new SearchParamError(\"Async validation not supported\");\n\t\tif (result.issues) throw new SearchParamError(JSON.stringify(result.issues, void 0, 2), { cause: result });\n\t\treturn result.value;\n\t}\n\tif (\"parse\" in validateSearch) return validateSearch.parse(input);\n\tif (typeof validateSearch === \"function\") return validateSearch(input);\n\treturn {};\n}\nfunction applySearchMiddleware(search, dest, destRoutes, includeValidateSearch) {\n\tconst middlewares = [];\n\tfor (const route of destRoutes) {\n\t\tconst routeOptions = route.options;\n\t\tif (\"search\" in routeOptions) {\n\t\t\tif (routeOptions.search?.middlewares) middlewares.push(...routeOptions.search.middlewares);\n\t\t} else if (routeOptions.preSearchFilters || routeOptions.postSearchFilters) {\n\t\t\tconst legacyMiddleware = ({ search, next }) => {\n\t\t\t\tconst result = next(routeOptions.preSearchFilters ? routeOptions.preSearchFilters.reduce((prev, next) => next(prev), search) : search);\n\t\t\t\treturn routeOptions.postSearchFilters ? routeOptions.postSearchFilters.reduce((prev, next) => next(prev), result) : result;\n\t\t\t};\n\t\t\tmiddlewares.push(legacyMiddleware);\n\t\t}\n\t\tconst routeValidateSearch = routeOptions.validateSearch;\n\t\tif (routeValidateSearch) {\n\t\t\tconst validate = ({ search, next, meta }) => {\n\t\t\t\tconst result = next(search);\n\t\t\t\tif (includeValidateSearch) try {\n\t\t\t\t\tconst validated = validateSearch(routeValidateSearch, result);\n\t\t\t\t\tif (meta && validated) {\n\t\t\t\t\t\tfor (const key in validated) if (!(key in result)) (meta.defaulted ||= /* @__PURE__ */ new Map()).set(key, validated[key]);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t...validated\n\t\t\t\t\t};\n\t\t\t\t} catch {}\n\t\t\t\treturn result;\n\t\t\t};\n\t\t\tmiddlewares.push(validate);\n\t\t}\n\t}\n\tconst applyNext = (index, currentSearch, meta) => {\n\t\tif (index >= middlewares.length) {\n\t\t\tif (!dest.search) return {};\n\t\t\tif (dest.search === true) return currentSearch;\n\t\t\tconst result = functionalUpdate(dest.search, currentSearch);\n\t\t\tif (meta) meta.explicit = result;\n\t\t\treturn result;\n\t\t}\n\t\tconst next = (newSearch, collectMeta) => {\n\t\t\tif (collectMeta) {\n\t\t\t\tconst nextMeta = meta || {};\n\t\t\t\treturn {\n\t\t\t\t\tsearch: applyNext(index + 1, newSearch, nextMeta),\n\t\t\t\t\tmeta: nextMeta\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn applyNext(index + 1, newSearch, meta);\n\t\t};\n\t\treturn middlewares[index]({\n\t\t\tsearch: currentSearch,\n\t\t\tnext,\n\t\t\tmeta\n\t\t});\n\t};\n\treturn applyNext(0, search);\n}\nfunction findGlobalNotFoundRouteId(notFoundMode, routes) {\n\tif (notFoundMode !== \"root\") {\n\t\tlet fallback;\n\t\tfor (let i = routes.length - 1; i >= 0; i--) {\n\t\t\tconst route = routes[i];\n\t\t\tif (route.options.notFoundComponent) return route.id;\n\t\t\tfallback ||= route.children && route.id;\n\t\t}\n\t\tif (fallback) return fallback;\n\t}\n\treturn rootRouteId;\n}\nfunction resolveNextParams(spec, base) {\n\treturn spec === false || spec === null ? Object.create(null) : (spec ?? true) === true ? base : Object.assign(base, functionalUpdate(spec, base));\n}\nfunction extractStrictParams(route, accumulatedParams) {\n\tconst parseParams = route.options.params?.parse ?? route.options.parseParams;\n\tif (parseParams) Object.assign(accumulatedParams, parseParams(accumulatedParams));\n}\n//#endregion\nexport { PathParamError, RouterCore, SearchParamError, defaultSerializeError, getInitialRouterState, getLocationChangeInfo, lazyFn, runRouteLifecycle, trailingSlashOptions };\n\n//# sourceMappingURL=router.js.map","import { isNotFound } from \"./not-found.js\";\nimport { isRedirect } from \"./redirect.js\";\nimport { hydrateSsrMatchId } from \"./ssr/ssr-match-id.js\";\nimport { getLocationChangeInfo, runRouteLifecycle } from \"./router.js\";\n//#region src/load-client.ts\nfunction replaceRouteChunk(route, lazyFn) {\n\troute.lazyFn = lazyFn ?? route.lazyFn;\n\troute._lazy = void 0;\n}\nfunction preloadComponent(route, type) {\n\treturn route.options[type]?.preload?.();\n}\nfunction loadComponents(route, onPendingReady) {\n\tconst component = preloadComponent(route, \"component\");\n\tconst pending = preloadComponent(route, \"pendingComponent\");\n\tconst pendingReady = onPendingReady && pending ? pending.then(onPendingReady) : pending;\n\tif (onPendingReady && !pending) onPendingReady();\n\tif (component && pendingReady) return Promise.all([component, pendingReady]).then(() => {});\n\treturn component ?? pendingReady;\n}\nfunction loadRouteChunk(route, componentType, onPendingReady) {\n\tconst afterLazy = () => componentType === false ? void 0 : componentType ? preloadComponent(route, componentType) : loadComponents(route, onPendingReady);\n\tconst current = route._lazy;\n\tif (current) return current === true ? afterLazy() : current.then(afterLazy);\n\tif (!route.lazyFn) return afterLazy();\n\tconst promise = route.lazyFn().then((lazyRoute) => {\n\t\tif (process.env.NODE_ENV === \"production\" || route._lazy === promise) {\n\t\t\tconst { id: _id, ...options } = lazyRoute.options;\n\t\t\tObject.assign(route.options, options);\n\t\t\troute._lazy = true;\n\t\t}\n\t}, (error) => {\n\t\tif (process.env.NODE_ENV === \"production\" || route._lazy === promise) route._lazy = void 0;\n\t\tthrow error;\n\t});\n\troute._lazy = promise;\n\treturn promise.then(afterLazy);\n}\n/** Return the structural lane through the first terminal render boundary. */\nfunction _getRenderedMatches(matches) {\n\tconst end = matches.findIndex((match) => match.status !== \"success\" || match._notFound) + 1;\n\treturn end && end < matches.length ? matches.slice(0, end) : matches;\n}\n/** Return the lane whose document assets belong to the current presentation. */\nfunction _getAssetMatches(matches) {\n\tlet end = matches.length;\n\tfor (let index = 0; index < end; index++) {\n\t\tconst match = matches[index];\n\t\tif (match._assetEnd !== void 0) {\n\t\t\tend = Math.min(end, Math.max(index + 1, match._assetEnd));\n\t\t\tcontinue;\n\t\t}\n\t\tif (match.status !== \"success\" || match._notFound) {\n\t\t\tend = index + 1;\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn end < matches.length ? matches.slice(0, end) : matches;\n}\nconst SUCCESS = 0;\nconst ERROR = 1;\nconst NOT_FOUND = 2;\nconst REDIRECTED = 3;\nconst CANCELED = 4;\nfunction isControl(result) {\n\treturn typeof result[0] === \"number\";\n}\nfunction waitFor(value, signal) {\n\tif (signal.aborted) return Promise.race([Promise.reject(signal), value]);\n\treturn new Promise((resolve, reject) => {\n\t\tconst abort = () => reject(signal);\n\t\tsignal.addEventListener(\"abort\", abort, { once: true });\n\t\tPromise.resolve(value).then(resolve, reject).finally(() => signal.removeEventListener(\"abort\", abort));\n\t});\n}\nfunction getRoute(router, match) {\n\treturn router.routesById[match.routeId];\n}\nfunction normalize(value, rejected, routeId) {\n\tif (isRedirect(value)) return [REDIRECTED, value];\n\tif (isNotFound(value)) {\n\t\tvalue.routeId ||= routeId;\n\t\treturn [NOT_FOUND, value];\n\t}\n\tif (rejected && typeof value?.then === \"function\") value = new Error(\"A Promise was thrown\", { cause: value });\n\treturn rejected ? [ERROR, value] : [SUCCESS, value];\n}\nfunction normalizeError(route, cause) {\n\tlet outcome = normalize(cause, true, route.id);\n\tif (outcome[0] !== ERROR) return outcome;\n\ttry {\n\t\troute.options.onError?.(outcome[1]);\n\t} catch (onErrorCause) {\n\t\toutcome = normalize(onErrorCause, true, route.id);\n\t}\n\treturn outcome;\n}\nfunction normalizeLaneError(route, cause, options) {\n\tif (options[0].signal.aborted || !options[2]()) {\n\t\toptions[0].abort();\n\t\treturn [CANCELED];\n\t}\n\treturn normalizeError(route, cause);\n}\nfunction navigateFrom(router, location) {\n\treturn (opts) => router.navigate({\n\t\t...opts,\n\t\t_fromLocation: location\n\t});\n}\nasync function contextualize(router, lane, options, end, planSuccessfulLane, retainedEnd) {\n\tconst [location, matches] = lane;\n\tconst signal = options[0].signal;\n\tconst preload = !!options[4];\n\tfor (let index = options[7] ?? 0; index < end; index++) {\n\t\tconst match = matches[index];\n\t\tconst route = getRoute(router, match);\n\t\tmatch.abortController = options[0];\n\t\tconst parentContext = matches[index - 1]?.context ?? router.options.context ?? {};\n\t\tconst common = {\n\t\t\tparams: match.params,\n\t\t\tlocation,\n\t\t\tnavigate: navigateFrom(router, location),\n\t\t\tbuildLocation: router.buildLocation,\n\t\t\tcause: preload ? \"preload\" : match.cause,\n\t\t\tabortController: options[0],\n\t\t\tpreload,\n\t\t\tmatches,\n\t\t\trouteId: route.id\n\t\t};\n\t\tlet context = parentContext;\n\t\ttry {\n\t\t\tlet routeContext = match._ctx;\n\t\t\tif (!routeContext && route.options.context) routeContext = match._ctx = route.options.context({\n\t\t\t\t...common,\n\t\t\t\tdeps: match.loaderDeps,\n\t\t\t\tcontext: parentContext\n\t\t\t}) || {};\n\t\t\tcontext = {\n\t\t\t\t...parentContext,\n\t\t\t\t...routeContext\n\t\t\t};\n\t\t\tmatch.context = context;\n\t\t} catch (cause) {\n\t\t\treleaseFlight(router, match);\n\t\t\treturn [index, normalizeLaneError(route, cause, options)];\n\t\t}\n\t\tif (signal.aborted || !options[2]()) {\n\t\t\toptions[0].abort();\n\t\t\treturn [index, [CANCELED]];\n\t\t}\n\t\tconst validationError = match.paramsError ?? match.searchError;\n\t\tif (validationError !== void 0) {\n\t\t\treleaseFlight(router, match);\n\t\t\treturn [index, normalizeLaneError(route, validationError, options)];\n\t\t}\n\t\tconst beforeLoad = route.options.beforeLoad;\n\t\tif (!beforeLoad) continue;\n\t\tconst beforeLoadContext = {\n\t\t\t...common,\n\t\t\tsearch: match.search,\n\t\t\tcontext,\n\t\t\t...router.options.additionalContext\n\t\t};\n\t\tconst previousStatus = match.status;\n\t\tif (previousStatus === \"success\" && index >= retainedEnd) match.status = \"pending\";\n\t\toptions[8]?.();\n\t\ttry {\n\t\t\tsetFetching(router, match, \"beforeLoad\", options[0]);\n\t\t\tconst result = await waitFor(beforeLoad(beforeLoadContext), signal);\n\t\t\tif (!options[2]()) {\n\t\t\t\toptions[0].abort();\n\t\t\t\treturn [index, [CANCELED]];\n\t\t\t}\n\t\t\tconst outcome = normalize(result, false, route.id);\n\t\t\tif (outcome[0] !== SUCCESS) {\n\t\t\t\treleaseFlight(router, match);\n\t\t\t\treturn [index, outcome];\n\t\t\t}\n\t\t\tmatch.context = {\n\t\t\t\t...context,\n\t\t\t\t...result\n\t\t\t};\n\t\t} catch (cause) {\n\t\t\treleaseFlight(router, match);\n\t\t\treturn [index, normalizeLaneError(route, cause, options)];\n\t\t} finally {\n\t\t\tif (previousStatus === \"success\" && match.status === \"pending\") match.status = \"success\";\n\t\t\tsetFetching(router, match, false, options[0]);\n\t\t}\n\t}\n\tplanSuccessfulLane();\n}\nfunction releaseOwnedFlight(router, match, flight) {\n\tif (!flight || --flight[2]) return;\n\tif (router._flights?.get(match.id) === flight) {\n\t\tconst current = router._tx;\n\t\tif (current && !current[0].signal.aborted && !(process.env.NODE_ENV !== \"production\" && current[6]) && !current[3].includes(match) && current[3].some((candidate) => candidate.id === match.id) && current[3].some((candidate) => candidate.isFetching === \"beforeLoad\")) return;\n\t\trouter._flights.delete(match.id);\n\t}\n\treturn flight[1];\n}\nfunction releaseFlight(router, match) {\n\tconst flight = match._flight;\n\tmatch._flight = void 0;\n\treleaseOwnedFlight(router, match, flight)?.abort();\n}\n/**\n* Not passing in a `next` ownership recipient\n* is equivalent to discarding the match resources\n*/\nfunction transferMatchResources(router, previous, next, deferSameIdFlight) {\n\tconst abort = [];\n\tfor (const match of previous) if (!next?.includes(match)) {\n\t\tconst flight = match._flight;\n\t\tmatch._flight = void 0;\n\t\tif (deferSameIdFlight && flight?.[2] === 1 && router._flights?.get(match.id) === flight && !(process.env.NODE_ENV !== \"production\" && router._tx?.[6]) && next?.some((candidate) => candidate.id === match.id)) flight[2] = 0;\n\t\telse {\n\t\t\tconst controller = releaseOwnedFlight(router, match, flight);\n\t\t\tif (controller) abort.push(controller);\n\t\t}\n\t}\n\tfor (const controller of abort) controller.abort();\n}\nfunction acquireMatchResources(matches) {\n\tfor (const match of matches) {\n\t\tconst flight = match._flight;\n\t\tif (flight) flight[2]++;\n\t}\n}\nfunction setFetching(router, match, value, owner) {\n\tmatch.isFetching = value;\n\tif (owner && router._tx?.[0] !== owner) return;\n\tconst store = router.stores.byRoute.get(match.routeId);\n\tconst presented = store?.get();\n\tif (presented?.id === match.id) store.set({\n\t\t...presented,\n\t\tisFetching: value\n\t});\n}\nfunction getLoaderContext(router, lane, match, route, controller, parentMatchPromise, preload) {\n\tconst location = lane[0];\n\treturn {\n\t\tparams: match.params,\n\t\tlocation,\n\t\tnavigate: navigateFrom(router, location),\n\t\tcause: preload ? \"preload\" : match.cause,\n\t\tabortController: controller,\n\t\tpreload,\n\t\tdeps: match.loaderDeps,\n\t\tparentMatchPromise,\n\t\tcontext: match.context,\n\t\troute,\n\t\t...router.options.additionalContext\n\t};\n}\nasync function loadResource(router, lane, match, route, loader, parentMatchPromise, preload, owner) {\n\tconst signal = owner.signal;\n\tif (signal.aborted) return [CANCELED];\n\tif (!loader) return [SUCCESS, void 0];\n\tlet flight = match._flight;\n\tsetFetching(router, match, \"loader\", owner);\n\ttry {\n\t\tif (!flight) {\n\t\t\tconst controller = new AbortController();\n\t\t\tflight = [\n\t\t\t\tPromise.resolve().then(() => loader(getLoaderContext(router, lane, match, route, controller, parentMatchPromise, preload))).then((value) => normalize(value, false, route.id), (cause) => normalize(cause, true, route.id)).then((result) => {\n\t\t\t\t\tif (result[0] !== SUCCESS && router._flights?.get(match.id) === flight) {\n\t\t\t\t\t\trouter._flights.delete(match.id);\n\t\t\t\t\t\tif (!flight[2]) controller.abort();\n\t\t\t\t\t}\n\t\t\t\t\treturn result[0] === ERROR && flight[2] ? normalizeError(route, result[1]) : result;\n\t\t\t\t}),\n\t\t\t\tcontroller,\n\t\t\t\t1\n\t\t\t];\n\t\t\t(router._flights ??= /* @__PURE__ */ new Map()).set(match.id, flight);\n\t\t}\n\t\tmatch._flight = flight;\n\t\tmatch.abortController = flight[1];\n\t\treturn await waitFor(flight[0], signal);\n\t} catch (cause) {\n\t\tif (cause !== signal) throw cause;\n\t\treleaseFlight(router, match);\n\t\treturn [CANCELED];\n\t} finally {\n\t\tsetFetching(router, match, false, owner);\n\t}\n}\nfunction settleInto(match, result, preload) {\n\tif (result[0] === SUCCESS) {\n\t\tmatch.loaderData = result[1];\n\t\tmatch.error = void 0;\n\t\tmatch.status = \"success\";\n\t\tmatch.invalid = false;\n\t\tmatch.updatedAt = Date.now();\n\t\tmatch.preload = preload;\n\t} else if (result[0] !== REDIRECTED) {\n\t\tmatch.status = \"success\";\n\t\tmatch.error = void 0;\n\t\tmatch.invalid = true;\n\t}\n}\nfunction cacheLoaderMatch(router, match, planned) {\n\tconst current = router._cache.get(match.id);\n\tif (current !== planned || router._committed.some((candidate) => candidate.id === match.id && candidate._flight === match._flight)) return;\n\tconst cached = {\n\t\t...match,\n\t\t_notFound: void 0,\n\t\tcontext: {}\n\t};\n\tif (cached._flight) cached._flight[2]++;\n\trouter._cache.set(match.id, cached);\n\tif (current) releaseFlight(router, current);\n}\nfunction getParentSnapshot(match, outcome) {\n\tif (outcome[0] === ERROR || outcome[0] === NOT_FOUND) return {\n\t\t...match,\n\t\tstatus: outcome[0] === ERROR ? \"error\" : \"notFound\",\n\t\terror: outcome[1],\n\t\t_flight: void 0\n\t};\n\treturn match;\n}\nfunction createLoaderTask(router, lane, index, tasks, semanticParent, options, retainedEnd) {\n\tconst match = lane[1][index];\n\tconst route = getRoute(router, match);\n\tconst preload = !!options[4];\n\tconst plannedCacheMatch = router._cache.get(match.id);\n\tlet configured;\n\tlet reload = false;\n\tlet reloadFailure;\n\ttry {\n\t\tif (match.status === \"success\") {\n\t\t\tconfigured = route.options.shouldReload;\n\t\t\tif (typeof configured === \"function\") configured = configured(getLoaderContext(router, lane, match, route, options[0], semanticParent, preload));\n\t\t\tif (!options[2]()) {\n\t\t\t\toptions[0].abort();\n\t\t\t\treloadFailure = [CANCELED];\n\t\t\t}\n\t\t}\n\t\tif (!reloadFailure) if (match.status !== \"success\") reload = true;\n\t\telse {\n\t\t\tconst staleAge = options[4] || match.preload ? route.options.preloadStaleTime ?? router.options.defaultPreloadStaleTime ?? 3e4 : route.options.staleTime ?? router.options.defaultStaleTime ?? 0;\n\t\t\treload = !!(match.invalid || configured || configured === void 0 && Date.now() - match.updatedAt >= staleAge && (options[6] || match.cause === \"enter\" || options[3].some((candidate) => candidate.routeId === match.routeId && candidate.id !== match.id)));\n\t\t}\n\t} catch (cause) {\n\t\tmatch.invalid = true;\n\t\treleaseFlight(router, match);\n\t\treloadFailure = normalizeLaneError(route, cause, options);\n\t}\n\tconst routeLoader = route.options.loader;\n\tconst loader = typeof routeLoader === \"function\" ? routeLoader : routeLoader?.handler;\n\tlet donor = (!preload || route.options.preload !== false) && routeLoader && !(process.env.NODE_ENV !== \"production\" && router._tx?.[6]) ? router._flights?.get(match.id) : void 0;\n\tif (donor === match._flight || reloadFailure) donor = void 0;\n\telse if (donor && !reload && !preload && configured === void 0) reload = true;\n\telse if (!reload) donor = void 0;\n\tconst background = !!(routeLoader && reload && match.status === \"success\" && !preload && !options[5] && ((typeof routeLoader === \"function\" ? void 0 : routeLoader?.staleReloadMode) ?? router.options.defaultStaleReloadMode) !== \"blocking\");\n\tconst loaded = reload && (!preload || route.options.preload !== false);\n\tconst blocking = loaded && !background && (match.status !== \"success\" || !!routeLoader);\n\tconst onLazyReady = route.lazyFn && route._lazy !== true ? options[8] : void 0;\n\tif (loaded && !routeLoader) {\n\t\tmatch.invalid = false;\n\t\tmatch.updatedAt = Date.now();\n\t}\n\tif (donor) donor[2]++;\n\tif (blocking) {\n\t\tconst acceptedFlight = match._flight;\n\t\tmatch._flight = donor;\n\t\treleaseOwnedFlight(router, match, acceptedFlight)?.abort();\n\t\tif (match.status === \"success\" && index >= retainedEnd) match.status = \"pending\";\n\t\toptions[8]?.();\n\t}\n\tif (!loaded) match.isFetching = false;\n\tconst outcome = (reloadFailure ? Promise.resolve(reloadFailure) : !blocking ? Promise.resolve([SUCCESS, match.loaderData]) : loadResource(router, lane, match, route, loader, semanticParent, preload, options[0])).then((result) => {\n\t\tif (blocking) {\n\t\t\tsettleInto(match, result, preload);\n\t\t\tif (result[0] === SUCCESS) {\n\t\t\t\tif (routeLoader && !options[0].signal.aborted && !(process.env.NODE_ENV !== \"production\" && !preload && router._tx?.[6])) cacheLoaderMatch(router, match, plannedCacheMatch);\n\t\t\t\tmatch.status = \"pending\";\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t});\n\tconst chunkFailure = waitFor(Promise.resolve().then(() => loadRouteChunk(route, void 0, onLazyReady)), options[0].signal).then(() => void 0, (cause) => [index, normalizeLaneError(route, cause, options)]).then((failure) => outcome.then((result) => {\n\t\tif (blocking && !failure && result[0] === SUCCESS && match.status === \"pending\" && options[2]()) {\n\t\t\tmatch.status = \"success\";\n\t\t\toptions[8]?.();\n\t\t}\n\t\treturn failure;\n\t}));\n\ttasks.push([\n\t\tindex,\n\t\toutcome,\n\t\tchunkFailure\n\t]);\n\tif (!background) return outcome.then((result) => getParentSnapshot(match, result));\n\tconst candidate = {\n\t\t...match,\n\t\tstatus: \"pending\",\n\t\tpreload: false,\n\t\t_flight: donor\n\t};\n\tmatch.invalid = false;\n\tmatch.isFetching = \"loader\";\n\tconst backgroundOutcome = loadResource(router, lane, candidate, route, loader, semanticParent, false, options[0]).then((result) => {\n\t\tmatch.isFetching = false;\n\t\tsettleInto(candidate, result, false);\n\t\treturn result;\n\t});\n\t(lane[2] ??= []).push([\n\t\tindex,\n\t\tbackgroundOutcome,\n\t\tchunkFailure,\n\t\tcandidate\n\t]);\n\treturn backgroundOutcome.then((result) => getParentSnapshot(candidate, result));\n}\nasync function getNotFoundBoundary(router, matches, indexed, signal, fallback = 0) {\n\tconst cause = indexed?.[1][1];\n\tlet index = cause?.routeId ? matches.findIndex((match) => match.routeId === cause.routeId) : indexed?.[0] ?? matches.length - 1;\n\tif (index < 0) index = 0;\n\tfor (let i = index; i >= 0; i--) {\n\t\tconst route = getRoute(router, matches[i]);\n\t\tconst loading = loadRouteChunk(route, false);\n\t\tif (loading) try {\n\t\t\tawait waitFor(loading, signal);\n\t\t} catch (cause) {\n\t\t\tif (cause === signal) throw cause;\n\t\t}\n\t\tif (route.options.notFoundComponent) return i;\n\t}\n\treturn cause?.routeId ? index : fallback;\n}\nfunction discardBackground(router, lane) {\n\tif (lane[2]) {\n\t\ttransferMatchResources(router, lane[2].map((task) => task[3]));\n\t\tlane[2] = void 0;\n\t}\n}\nasync function settleTasks(tasks, serialFailure, redirectTasks, gate) {\n\tlet loaderFailure;\n\ttry {\n\t\tawait Promise.all(tasks.map((task) => task[1].then(async (outcome) => {\n\t\t\tconst taskIndex = task[0];\n\t\t\tif (gate && taskIndex >= await gate) return;\n\t\t\tif (outcome[0] >= REDIRECTED) throw [taskIndex, outcome];\n\t\t\tif (!loaderFailure && outcome[0] !== SUCCESS) {\n\t\t\t\tloaderFailure = [taskIndex, outcome];\n\t\t\t\tawait Promise.all((redirectTasks ?? []).map((nextTask) => {\n\t\t\t\t\tif (nextTask[0] <= taskIndex) return;\n\t\t\t\t\treturn nextTask[1].then((nextOutcome) => {\n\t\t\t\t\t\tif (nextOutcome[0] === REDIRECTED) throw [nextTask[0], nextOutcome];\n\t\t\t\t\t});\n\t\t\t\t}));\n\t\t\t}\n\t\t})));\n\t} catch (cause) {\n\t\treturn cause;\n\t}\n\treturn serialFailure ?? loaderFailure;\n}\nasync function reduceLane(router, lane, tasks, controller, redirects, settlement, onReady) {\n\tconst matches = lane[1];\n\tlet failure = await settlement;\n\tlet redirectLimitExceeded = false;\n\tconst plannedBoundary = matches.findIndex((match) => match._notFound);\n\tconst boundaryOf = (found) => found[1][0] === NOT_FOUND ? getNotFoundBoundary(router, matches, found, controller.signal) : found[0];\n\tlet readinessEnd = plannedBoundary < 0 ? matches.length : plannedBoundary;\n\tif ((failure?.[1][0] ?? 0) >= REDIRECTED) readinessEnd = 0;\n\telse if (failure) {\n\t\treadinessEnd = failure[2] ??= await boundaryOf(failure);\n\t\tfor (const task of tasks) {\n\t\t\tif (task[0] >= readinessEnd) break;\n\t\t\tconst outcome = await task[1];\n\t\t\tif (outcome[0] !== SUCCESS && outcome[0] < REDIRECTED && !(\"loaderData\" in matches[task[0]])) {\n\t\t\t\tfailure = [task[0], outcome];\n\t\t\t\treadinessEnd = failure[2] = await boundaryOf(failure);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tfor (const task of tasks) {\n\t\tif (task[0] >= readinessEnd) break;\n\t\tconst chunkFailure = await task[2];\n\t\tif (!chunkFailure) continue;\n\t\tfailure = chunkFailure;\n\t\tbreak;\n\t}\n\tif ((failure?.[1][0] ?? 0) >= REDIRECTED) {\n\t\tconst outcome = failure[1];\n\t\tif (outcome[0] !== REDIRECTED || outcome[1].options.reloadDocument || redirects < 20) {\n\t\t\tdiscardBackground(router, lane);\n\t\t\treturn outcome;\n\t\t}\n\t\tredirectLimitExceeded = true;\n\t\tfailure = [0, [ERROR, /* @__PURE__ */ new Error(\"Too many redirects\")]];\n\t}\n\tconst boundary = failure ? failure[2] ?? await boundaryOf(failure) : plannedBoundary;\n\tif (boundary >= 0) {\n\t\tconst outcome = failure?.[1];\n\t\tconst kind = outcome?.[0];\n\t\tconst match = matches[boundary];\n\t\tconst cause = outcome?.[1];\n\t\tconst install = () => {\n\t\t\tif (outcome) {\n\t\t\t\tmatch._notFound = void 0;\n\t\t\t\tif (kind === ERROR) match.status = \"error\";\n\t\t\t\telse {\n\t\t\t\t\tcause.routeId = match.routeId;\n\t\t\t\t\tif (match.routeId === router.routeTree.id) {\n\t\t\t\t\t\tmatch.status = \"success\";\n\t\t\t\t\t\tmatch._notFound = true;\n\t\t\t\t\t} else match.status = \"notFound\";\n\t\t\t\t}\n\t\t\t\tmatch.error = cause;\n\t\t\t\tmatch.isFetching = false;\n\t\t\t}\n\t\t};\n\t\tinstall();\n\t\tconst route = getRoute(router, match);\n\t\ttry {\n\t\t\tawait waitFor(outcome ? Promise.resolve().then(() => loadRouteChunk(route, kind === ERROR ? \"errorComponent\" : \"notFoundComponent\")) : Promise.all([loadRouteChunk(route), loadRouteChunk(route, \"notFoundComponent\")]), controller.signal);\n\t\t} catch (cause) {\n\t\t\tif (cause === controller.signal) {\n\t\t\t\tdiscardBackground(router, lane);\n\t\t\t\treturn [CANCELED];\n\t\t\t}\n\t\t}\n\t\tif (!outcome) {\n\t\t\tmatch.status = \"success\";\n\t\t\tonReady?.();\n\t\t} else if (redirectLimitExceeded) {\n\t\t\tcontroller.abort();\n\t\t\tawait Promise.all([\n\t\t\t\t...tasks.map((task) => task[1]),\n\t\t\t\t...tasks.map((task) => task[2]),\n\t\t\t\t...(lane[2] ?? []).map((task) => task[1])\n\t\t\t]);\n\t\t\tdiscardBackground(router, lane);\n\t\t\ttransferMatchResources(router, matches);\n\t\t\tinstall();\n\t\t}\n\t}\n\treturn lane;\n}\nasync function projectLane(router, lane, signal, start = 0, end = lane[1].length) {\n\tconst matches = lane[1];\n\tfor (let index = start; index < end; index++) {\n\t\tconst match = matches[index];\n\t\tconst routeOptions = getRoute(router, match).options;\n\t\tif (routeOptions.head || routeOptions.scripts) try {\n\t\t\tconst context = {\n\t\t\t\tssr: router.options.ssr,\n\t\t\t\tmatches,\n\t\t\t\tmatch,\n\t\t\t\tparams: match.params,\n\t\t\t\tloaderData: match.loaderData\n\t\t\t};\n\t\t\tconst [head, scripts] = await waitFor(Promise.all([routeOptions.head?.(context), routeOptions.scripts?.(context)]), signal);\n\t\t\tmatch.meta = head?.meta;\n\t\t\tmatch.links = head?.links;\n\t\t\tmatch.headScripts = head?.scripts;\n\t\t\tmatch.styles = head?.styles;\n\t\t\tmatch.scripts = scripts;\n\t\t} catch (cause) {\n\t\t\tif (cause === signal) break;\n\t\t\tconsole.error(cause);\n\t\t}\n\t\tif (match.status !== \"success\" || match._notFound) break;\n\t}\n\treturn lane;\n}\nasync function executeClientLane(router, location, matches, options) {\n\tconst matched = [location, matches];\n\tconst presented = router.stores.matches.get();\n\tlet plannedBoundary = matches.findIndex((match) => match._notFound);\n\tif (router.options.notFoundMode !== \"root\" && plannedBoundary >= 0) {\n\t\tconst boundary = await getNotFoundBoundary(router, matched[1], void 0, options[0].signal, plannedBoundary);\n\t\tif (boundary !== plannedBoundary) {\n\t\t\tmatches[plannedBoundary]._notFound = void 0;\n\t\t\tmatches[boundary]._notFound = true;\n\t\t}\n\t\tplannedBoundary = boundary;\n\t}\n\tlet end = plannedBoundary < 0 ? matches.length : plannedBoundary + 1;\n\tlet retainedEnd = 0;\n\twhile (retainedEnd < end && retainedEnd !== plannedBoundary) {\n\t\tconst match = matches[retainedEnd];\n\t\tconst committed = options[3][retainedEnd];\n\t\tconst visible = presented[retainedEnd];\n\t\tif (committed?.id !== match.id || committed.status !== \"success\" || committed._notFound || match.preload || visible?.id !== match.id || visible.status !== \"success\" || visible._notFound) break;\n\t\tretainedEnd++;\n\t}\n\tconst tasks = [];\n\tconst start = options[7] ?? 0;\n\tlet semanticParent = start ? Promise.resolve(matched[1][start - 1]) : void 0;\n\tconst planSuccessfulLane = () => {\n\t\tfor (let index = start; index < end; index++) {\n\t\t\tif (options[0].signal.aborted) break;\n\t\t\tsemanticParent = createLoaderTask(router, matched, index, tasks, semanticParent, options, retainedEnd);\n\t\t}\n\t};\n\tconst failure = await contextualize(router, matched, options, end, planSuccessfulLane, retainedEnd);\n\tif (failure) {\n\t\toptions[5] = true;\n\t\tend = failure[0];\n\t\tif (failure[1][0] === NOT_FOUND) {\n\t\t\tfailure[2] = await getNotFoundBoundary(router, matched[1], failure, options[0].signal);\n\t\t\tend = Math.min(end, failure[2] + 1);\n\t\t} else if (failure[1][0] >= REDIRECTED) end = 0;\n\t\tplanSuccessfulLane();\n\t}\n\tif (options[2]() && !options[4]) {\n\t\tconst abort = [];\n\t\tfor (const [id, flight] of router._flights ?? []) if (!flight[2]) {\n\t\t\trouter._flights.delete(id);\n\t\t\tabort.push(flight[1]);\n\t\t}\n\t\tfor (const controller of abort) controller.abort();\n\t}\n\tlet reduced;\n\ttry {\n\t\tconst reduction = reduceLane(router, matched, tasks, options[0], options[1], settleTasks(tasks, failure, matched[2]), options[8]);\n\t\tif (matched[2]?.length) matched[3] = settleTasks(matched[2], void 0, void 0, reduction.then((foreground) => isControl(foreground) ? 0 : _getRenderedMatches(foreground[1]).length, () => 0));\n\t\treduced = await reduction;\n\t} catch (cause) {\n\t\tdiscardBackground(router, matched);\n\t\tthrow cause;\n\t}\n\tif (isControl(reduced)) return reduced;\n\treturn projectLane(router, reduced, options[0].signal, options[7] === reduced[1].length ? options[7] : 0);\n}\n/**\n* Waits for `pendingMs`, then presents the complete lane. Rendering applies the\n* selected boundary cutoff while retaining every match's structural state.\n* A replacement load for the same match keeps the timer; choosing a different\n* match resets it. `pendingMinMs` starts after the fallback renders.\n*/\nfunction offerPending(router, tx) {\n\tif (router._tx !== tx) return;\n\tlet session = router._pending;\n\tlet tookOver = false;\n\tconst sessionMatchId = session?.[0][3][session[1]]?.id;\n\tif (session?.[0] !== tx) if (session && tx[3][session[1]]?.id === sessionMatchId) {\n\t\tsession[0] = tx;\n\t\ttookOver = true;\n\t} else {\n\t\tclearTimeout(session?.[3]);\n\t\trouter._pending = session = void 0;\n\t}\n\tconst matches = tx[3];\n\tconst presented = router.stores.matches.get();\n\tlet boundary = -1;\n\tlet delay;\n\tlet min;\n\tlet component;\n\tlet presentedPending = false;\n\tfor (let index = 0; index < matches.length; index++) {\n\t\tconst match = matches[index];\n\t\tconst success = match.status === \"success\";\n\t\tpresentedPending = presented[index]?.id === match.id && presented[index]?.status === \"pending\";\n\t\tif (success && !presentedPending) continue;\n\t\tconst route = getRoute(router, match);\n\t\tdelay = success && presentedPending || match.invalid ? 0 : route.options.pendingMs ?? router.options.defaultPendingMs;\n\t\tcomponent = route.options.pendingComponent ?? router.options.defaultPendingComponent;\n\t\tif (!component || typeof delay !== \"number\" || delay === Infinity) return;\n\t\tboundary = index;\n\t\tmin = route.options.pendingMinMs ?? router.options.defaultPendingMinMs ?? 0;\n\t\tbreak;\n\t}\n\tif (boundary < 0) return;\n\tconst matchId = matches[boundary].id;\n\tif (!session || session[1] !== boundary || sessionMatchId !== matchId) {\n\t\tclearTimeout(session?.[3]);\n\t\trouter._pending = session = [\n\t\t\ttx,\n\t\t\tboundary,\n\t\t\tpresentedPending ? Date.now() + min : tx[4] + delay,\n\t\t\tvoid 0,\n\t\t\tpresentedPending ? Promise.resolve(true) : void 0,\n\t\t\tcomponent\n\t\t];\n\t}\n\tif (session[4] && !tookOver && session[5] === component) return;\n\tsession[5] = component;\n\tif (!session[4]) {\n\t\tclearTimeout(session[3]);\n\t\tconst remaining = session[2] - Date.now();\n\t\tif (remaining > 0) {\n\t\t\tsession[3] = setTimeout(() => offerPending(router, tx), remaining);\n\t\t\treturn;\n\t\t}\n\t\tsession[2] = 0;\n\t}\n\tconst offered = matches.map((match) => ({\n\t\t...match,\n\t\t_flight: void 0\n\t}));\n\toffered[boundary].status = \"pending\";\n\tconst ack = router.startTransition(() => router.stores.setMatches(offered), offered).then((rendered) => {\n\t\tif (rendered && router._pending === session && session[4] === ack && !session[2]) session[2] = Date.now() + min;\n\t\treturn rendered;\n\t});\n\tsession[4] = ack;\n}\n/**\n* Cancels pending UI timing when its load ends. The ownership check prevents\n* an older, superseded load from clearing pending UI that a newer load took over.\n*/\nfunction finishPending(router, tx) {\n\tconst session = router._pending;\n\tif (session?.[0] === tx) {\n\t\tclearTimeout(session[3]);\n\t\trouter._pending = void 0;\n\t}\n}\nfunction publishMatches(router, matches) {\n\trouter._committed = matches;\n\trouter.stores.setMatches(matches);\n}\nfunction discardLane(router, lane) {\n\ttransferMatchResources(router, lane[1]);\n\tdiscardBackground(router, lane);\n}\nfunction commitMatches(router, tx, matches, resolvedPrefix) {\n\tconst previous = router._committed;\n\tconst previousCached = router._cache;\n\tfor (const match of matches) {\n\t\tmatch.preload = false;\n\t\tif (resolvedPrefix) match._assetEnd = void 0;\n\t}\n\tconst cut = _getRenderedMatches(matches).length;\n\tconst cached = /* @__PURE__ */ new Map();\n\tconst now = Date.now();\n\tfor (const match of [...previous, ...previousCached.values()]) {\n\t\tif (match.status !== \"success\" || matches.some((candidate, index) => candidate.id === match.id && (index < cut || candidate.status === \"success\"))) continue;\n\t\tconst route = getRoute(router, match);\n\t\tif (!route.options.loader || now - match.updatedAt >= (match.preload ? route.options.preloadGcTime ?? router.options.defaultPreloadGcTime ?? 3e5 : route.options.gcTime ?? router.options.defaultGcTime ?? 3e5)) continue;\n\t\tcached.set(match.id, previousCached.get(match.id) === match ? match : {\n\t\t\t...match,\n\t\t\t_flight: void 0,\n\t\t\tisFetching: false,\n\t\t\tcontext: {}\n\t\t});\n\t}\n\ttx[3] = [];\n\trouter._cache = cached;\n\tpublishMatches(router, matches);\n\ttransferMatchResources(router, [...previousCached.values(), ...previous], [...matches, ...cached.values()]);\n\trunRouteLifecycle(router, previous, matches, () => router._tx === tx);\n}\nfunction commitRefreshMatches(router, tx, matches, checkpoint) {\n\tconst previous = router._committed;\n\tconst previousCached = router._cache;\n\tfor (const match of matches) match.preload = false;\n\tconst cached = /* @__PURE__ */ new Map();\n\ttx[3] = [];\n\trouter._cache = cached;\n\tcheckpoint.previousMatches = previous;\n\tcheckpoint.previousCache = previousCached;\n\tcheckpoint.published = true;\n\tpublishMatches(router, matches);\n\tif (!checkpoint.published || router._tx !== tx) return;\n\trunRouteLifecycle(router, previous, matches, () => router._tx === tx);\n}\nfunction settlePublication(router, checkpoint) {\n\tif (!checkpoint.published) return;\n\tcheckpoint.published = false;\n\ttransferMatchResources(router, [...checkpoint.previousCache.values(), ...checkpoint.previousMatches], [...router._cache.values(), ...router._committed]);\n}\nfunction rollbackPublication(router, tx, lane, checkpoint) {\n\tif (!checkpoint.published || router._tx !== tx || router._committed !== lane[1]) {\n\t\tsettlePublication(router, checkpoint);\n\t\treturn false;\n\t}\n\tconst discarded = [...router._cache.values(), ...router._committed];\n\tconst restored = [...checkpoint.previousCache.values(), ...checkpoint.previousMatches];\n\trouter._cache = checkpoint.previousCache;\n\trouter._committed = checkpoint.previousMatches;\n\tcheckpoint.published = false;\n\tfor (const match of discarded) if (!restored.includes(match) && match._flight && router._flights?.get(match.id) === match._flight) router._flights.delete(match.id);\n\tfinishPending(router, tx);\n\trouter.batch(() => {\n\t\trouter.stores.status.set(\"idle\");\n\t\trouter.stores.setMatches(checkpoint.previousPresentation);\n\t});\n\ttx[0].abort();\n\ttransferMatchResources(router, discarded, restored);\n\tdiscardBackground(router, lane);\n\tif (router._tx === tx && router._commitPromise === checkpoint.commitPromise) {\n\t\trouter._commitPromise?.resolve();\n\t\trouter._commitPromise = void 0;\n\t}\n\treturn true;\n}\nasync function transitionRefresh(router, tx, lane, changeInfo) {\n\tconst refresh = tx[6];\n\tconst checkpoint = {\n\t\tpreviousMatches: router._committed,\n\t\tpreviousPresentation: refresh[0],\n\t\tpreviousCache: router._cache,\n\t\tcommitPromise: router._commitPromise,\n\t\tpublished: false\n\t};\n\tconst commit = () => {\n\t\tfinishPending(router, tx);\n\t\trefresh[2] = rollback;\n\t\tcommitRefreshMatches(router, tx, lane[1], checkpoint);\n\t\tif (!checkpoint.published || router._tx !== tx) return;\n\t\trouter.emit({\n\t\t\ttype: \"onLoad\",\n\t\t\t...changeInfo\n\t\t});\n\t\tif (router._tx === tx) router.emit({\n\t\t\ttype: \"onBeforeRouteMount\",\n\t\t\t...changeInfo\n\t\t});\n\t};\n\tconst rollback = () => {\n\t\tif (refresh[2] === rollback) refresh[2] = void 0;\n\t\tconst restored = rollbackPublication(router, tx, lane, checkpoint);\n\t\trouter._cancelTransition?.();\n\t\treturn restored;\n\t};\n\ttry {\n\t\tconst rendered = await router.startTransition(commit, lane[1]);\n\t\tif (refresh[2] === rollback) refresh[2] = void 0;\n\t\tif (checkpoint.published) {\n\t\t\tconst handoff = refresh[1];\n\t\t\tif (handoff && router._handoff === handoff) handoff[1]();\n\t\t\tif (router._tx === tx) tx[6] = void 0;\n\t\t}\n\t\tsettlePublication(router, checkpoint);\n\t\treturn rendered;\n\t} catch (cause) {\n\t\tif (rollback()) return;\n\t\tthrow cause;\n\t}\n}\nasync function awaitCurrent(router, owner) {\n\tlet current = router._tx;\n\twhile (current && current !== owner) {\n\t\tawait current[5];\n\t\tif (router._tx === current) return;\n\t\tcurrent = router._tx;\n\t}\n}\nasync function followRedirect(router, tx, redirect) {\n\tawait router.navigate({\n\t\t...redirect.options,\n\t\treplace: true,\n\t\tignoreBlocker: true,\n\t\t_redirects: tx[1] + 1\n\t});\n}\nfunction restoreCommitted(router, tx) {\n\tfinishPending(router, tx);\n\ttx[0].abort();\n\ttransferMatchResources(router, tx[3]);\n\ttx[3] = [];\n\tif (router._tx !== tx) return;\n\trouter.batch(() => {\n\t\trouter.stores.status.set(\"idle\");\n\t\trouter.stores.setMatches(router._committed);\n\t});\n\tif (router._tx === tx) {\n\t\trouter._commitPromise?.resolve();\n\t\trouter._commitPromise = void 0;\n\t}\n}\nasync function runBackground(router, tx, base, tasks, settlement) {\n\tconst next = base.map((match) => ({ ...match }));\n\tacquireMatchResources(next);\n\tfor (const task of tasks) {\n\t\treleaseFlight(router, next[task[0]]);\n\t\tnext[task[0]] = task[3];\n\t}\n\tconst lane = [tx[2], next];\n\tlet reduced;\n\ttry {\n\t\treduced = await reduceLane(router, lane, tasks, tx[0], tx[1], settlement);\n\t} catch (cause) {\n\t\ttransferMatchResources(router, next);\n\t\tthrow cause;\n\t}\n\tif (isControl(reduced)) {\n\t\ttransferMatchResources(router, next);\n\t\tif (reduced[0] === REDIRECTED && router._tx === tx && router._committed === base) await followRedirect(router, tx, reduced[1]);\n\t\treturn;\n\t}\n\tconst projected = await projectLane(router, reduced, tx[0].signal);\n\tif (router._tx !== tx || router._committed !== base) {\n\t\ttransferMatchResources(router, projected[1]);\n\t\treturn;\n\t}\n\tfor (const match of projected[1]) {\n\t\tconst cached = router._cache.get(match.id);\n\t\tif (cached?._flight && cached._flight === match._flight) {\n\t\t\trouter._cache.delete(match.id);\n\t\t\treleaseFlight(router, cached);\n\t\t}\n\t}\n\tpublishMatches(router, projected[1]);\n\ttransferMatchResources(router, base, projected[1]);\n}\nasync function runClientTransaction(router, tx, forceStaleReload, onReady, sync, resolvedPrefix) {\n\tconst options = [\n\t\ttx[0],\n\t\ttx[1],\n\t\t() => router._tx === tx && !!tx[3].length,\n\t\trouter._committed,\n\t\tvoid 0,\n\t\tsync,\n\t\tforceStaleReload,\n\t\tresolvedPrefix,\n\t\tonReady\n\t];\n\tconst result = await executeClientLane(router, tx[2], tx[3], options);\n\tif (isControl(result)) {\n\t\tif (result[0] === REDIRECTED && router._tx === tx) {\n\t\t\tfinishPending(router, tx);\n\t\t\ttransferMatchResources(router, tx[3]);\n\t\t\ttx[3] = [];\n\t\t\tif (router._tx === tx) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\" && tx[6]) router._refreshNextLoad = true;\n\t\t\t\tawait followRedirect(router, tx, result[1]);\n\t\t\t}\n\t\t} else restoreCommitted(router, tx);\n\t\treturn;\n\t}\n\tconst pending = router._pending;\n\tif (pending?.[0] === tx) {\n\t\t/**\n\t\t* Loading finished, so cancel any pending reveal. If the fallback rendered,\n\t\t* wait out the rest of `pendingMinMs` before replacing it. If it never\n\t\t* rendered, there is no minimum wait; if another load took it over, that\n\t\t* load owns the deadline.\n\t\t*/\n\t\tclearTimeout(pending[3]);\n\t\tif (pending[4]) {\n\t\t\tconst signal = tx[0].signal;\n\t\t\tlet rendered = false;\n\t\t\ttry {\n\t\t\t\trendered = await waitFor(pending[4], signal);\n\t\t\t} catch (cause) {\n\t\t\t\tif (cause !== signal) throw cause;\n\t\t\t}\n\t\t\tif (rendered && router._pending === pending && pending[0] === tx) {\n\t\t\t\tconst remaining = pending[2] - Date.now();\n\t\t\t\tif (remaining > 0) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait waitFor(new Promise((resolve) => {\n\t\t\t\t\t\t\tpending[3] = setTimeout(resolve, remaining);\n\t\t\t\t\t\t}), signal);\n\t\t\t\t\t} catch {}\n\t\t\t\t\tclearTimeout(pending[3]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (router._tx !== tx) {\n\t\tfinishPending(router, tx);\n\t\tdiscardLane(router, result);\n\t\treturn;\n\t}\n\tconst toLocation = tx[2];\n\tconst changeInfo = getLocationChangeInfo(toLocation, router.stores.resolvedLocation.get());\n\tconst background = result[2];\n\tawait router.startViewTransition(async () => {\n\t\tif (router._tx !== tx) {\n\t\t\tdiscardLane(router, result);\n\t\t\treturn;\n\t\t}\n\t\tconst commit = () => {\n\t\t\tfinishPending(router, tx);\n\t\t\tcommitMatches(router, tx, result[1], resolvedPrefix);\n\t\t\tif (router._tx !== tx) return;\n\t\t\trouter.emit({\n\t\t\t\ttype: \"onLoad\",\n\t\t\t\t...changeInfo\n\t\t\t});\n\t\t\tif (router._tx === tx) router.emit({\n\t\t\t\ttype: \"onBeforeRouteMount\",\n\t\t\t\t...changeInfo\n\t\t\t});\n\t\t};\n\t\tconst rendered = process.env.NODE_ENV !== \"production\" && tx[6] ? await transitionRefresh(router, tx, result, changeInfo) : await router.startTransition(commit, result[1]);\n\t\tif (process.env.NODE_ENV !== \"production\" && tx[6] && rendered === void 0) return;\n\t\tif (router._tx !== tx) {\n\t\t\tdiscardBackground(router, result);\n\t\t\treturn;\n\t\t}\n\t\tif (background?.length) runBackground(router, tx, result[1], background, result[3]).catch(console.error);\n\t\trouter.batch(() => {\n\t\t\trouter.stores.resolvedLocation.set(toLocation);\n\t\t\trouter.stores.status.set(\"idle\");\n\t\t\tif (router._tx === tx) router.emit({\n\t\t\t\ttype: \"onResolved\",\n\t\t\t\t...changeInfo\n\t\t\t});\n\t\t\tif (rendered && router._tx === tx) router.emit({\n\t\t\t\ttype: \"onRendered\",\n\t\t\t\t...changeInfo\n\t\t\t});\n\t\t});\n\t\tif (router._tx !== tx) return;\n\t\trouter._commitPromise?.resolve();\n\t\trouter._commitPromise = void 0;\n\t});\n}\nasync function loadClientRoute(router, opts) {\n\tlet rematerialize = false;\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\trouter._tx?.[6]?.[2]?.();\n\t\trematerialize = !!router._refreshNextLoad || !!router._tx?.[6];\n\t}\n\tconst refreshPresentation = rematerialize ? router.stores.matches.get() : void 0;\n\tconst previousOwner = router._tx;\n\tconst resolvedLocation = router.stores.resolvedLocation.get();\n\tconst previousLocation = resolvedLocation ?? router.stores.location.get();\n\tconst location = router.latestLocation;\n\tconst pendingLocation = router._pendingLocation;\n\tconst redirects = pendingLocation?.href === location.href ? pendingLocation._redirects ?? 0 : 0;\n\tconst handoff = router._handoff;\n\tconst hydrationController = rematerialize ? void 0 : handoff?.[0]();\n\tconst preflight = new AbortController();\n\tconst previousPreflight = router._preflight;\n\trouter._preflight = preflight;\n\tif (!rematerialize && !hydrationController) handoff?.[1]();\n\tpreviousPreflight?.abort();\n\tif (preflight.signal.aborted) {\n\t\tawait awaitCurrent(router, previousOwner);\n\t\treturn;\n\t}\n\tconst changeInfo = getLocationChangeInfo(location, resolvedLocation);\n\trouter.emit({\n\t\ttype: \"onBeforeNavigate\",\n\t\t...changeInfo\n\t});\n\tif (!preflight.signal.aborted) router.emit({\n\t\ttype: \"onBeforeLoad\",\n\t\t...changeInfo\n\t});\n\tif (preflight.signal.aborted) {\n\t\tawait awaitCurrent(router, previousOwner);\n\t\treturn;\n\t}\n\tconst sameHref = previousLocation.href === location.href;\n\tlet matches;\n\tlet controller = preflight;\n\ttry {\n\t\tmatches = process.env.NODE_ENV !== \"production\" && rematerialize ? router.matchRoutes(location, {\n\t\t\t_controller: preflight,\n\t\t\t_rematerialize: true\n\t\t}) : router.matchRoutes(location, { _controller: preflight });\n\t\tacquireMatchResources(matches);\n\t} catch (cause) {\n\t\tpreflight.abort();\n\t\tif (!isRedirect(cause)) {\n\t\t\tif (process.env.NODE_ENV !== \"production\" && rematerialize) router._refreshNextLoad = void 0;\n\t\t\tawait awaitCurrent(router);\n\t\t\trouter._commitPromise?.resolve();\n\t\t\trouter._commitPromise = void 0;\n\t\t\treturn;\n\t\t}\n\t\tawait router.navigate({\n\t\t\t...cause.options,\n\t\t\treplace: true,\n\t\t\tignoreBlocker: true\n\t\t});\n\t\tawait awaitCurrent(router, previousOwner);\n\t\treturn;\n\t}\n\tconst resolvedPrefix = hydrationController ? handoff[1](matches) : void 0;\n\tif (resolvedPrefix) controller = hydrationController;\n\telse hydrationController?.abort();\n\tif (preflight.signal.aborted) {\n\t\ttransferMatchResources(router, matches);\n\t\tawait awaitCurrent(router, previousOwner);\n\t\treturn;\n\t}\n\trouter._preflight = void 0;\n\tconst tx = [\n\t\tcontroller,\n\t\tredirects,\n\t\tlocation,\n\t\tmatches,\n\t\tDate.now(),\n\t\tPromise.resolve().then(() => runClientTransaction(router, tx, sameHref, () => offerPending(router, tx), opts?.sync, resolvedPrefix)).catch(() => {\n\t\t\tif (router._tx === tx) restoreCommitted(router, tx);\n\t\t})\n\t];\n\tif (process.env.NODE_ENV !== \"production\" && rematerialize) {\n\t\ttx[6] = [refreshPresentation, handoff];\n\t\trouter._refreshNextLoad = void 0;\n\t}\n\trouter._tx = tx;\n\tif (previousOwner) {\n\t\tfor (const match of router.stores.matches.get()) {\n\t\t\tif (router._tx !== tx) break;\n\t\t\tif (match.isFetching) setFetching(router, match, false);\n\t\t}\n\t\tpreviousOwner[0].abort();\n\t\ttransferMatchResources(router, previousOwner[3], tx[3], true);\n\t}\n\tif (router._tx !== tx) {\n\t\ttransferMatchResources(router, tx[3]);\n\t\ttx[3] = [];\n\t\tawait awaitCurrent(router, tx);\n\t\treturn;\n\t}\n\trouter.batch(() => {\n\t\trouter.stores.status.set(\"pending\");\n\t\trouter.stores.location.set(location);\n\t});\n\tif (!resolvedLocation && !matches.some((match) => match._notFound)) offerPending(router, tx);\n\ttry {\n\t\tawait tx[5];\n\t} finally {\n\t\tawait awaitCurrent(router, tx);\n\t}\n}\nasync function refreshClientRoute(router) {\n\trouter._tx?.[6]?.[2]?.();\n\tconst pending = router._tx;\n\tif (pending && !pending[6] && router.stores.status.get() === \"pending\") {\n\t\tawait pending[5];\n\t\tif (router._tx !== pending) await awaitCurrent(router, pending);\n\t}\n\trouter._flights?.clear();\n\trouter.clearCache();\n\trouter._refreshNextLoad = true;\n\tawait loadClientRoute(router, { sync: true });\n}\nasync function preloadClientRoute(router, opts, redirects = 0) {\n\tif (redirects > 20) return;\n\tif (process.env.NODE_ENV !== \"production\" && (router._refreshNextLoad || router._tx?.[6])) return;\n\tconst location = opts._builtLocation ?? router.buildLocation(opts);\n\tconst base = router._committed;\n\tconst controller = new AbortController();\n\tlet matches;\n\ttry {\n\t\tmatches = router.matchRoutes(location, { _controller: controller });\n\t\tacquireMatchResources(matches);\n\t} catch (cause) {\n\t\tcontroller.abort();\n\t\tif (!isNotFound(cause)) console.error(cause);\n\t\treturn;\n\t}\n\t(router._preloads ??= /* @__PURE__ */ new Map()).set(controller, matches);\n\tlet active;\n\ttry {\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = await executeClientLane(router, location, matches, [\n\t\t\t\tcontroller,\n\t\t\t\tredirects,\n\t\t\t\t() => true,\n\t\t\t\tbase,\n\t\t\t\ttrue\n\t\t\t]);\n\t\t} finally {\n\t\t\tactive = router._preloads.delete(controller);\n\t\t\ttransferMatchResources(router, matches);\n\t\t\tcontroller.abort();\n\t\t}\n\t\tif (!isControl(result)) return result[1];\n\t\tif (active && result[0] === REDIRECTED && !result[1].options.reloadDocument) return preloadClientRoute(router, {\n\t\t\t...result[1].options,\n\t\t\t_fromLocation: location\n\t\t}, redirects + 1);\n\t} catch (cause) {\n\t\tif (!isNotFound(cause)) console.error(cause);\n\t}\n}\nasync function hydrate(router) {\n\tif (process.env.NODE_ENV !== \"production\" && !window.$_TSR) throw new Error(\"Invariant failed: Expected to find bootstrap data on window.$_TSR, but we did not. Please file an issue!\");\n\tconst tsr = window.$_TSR;\n\tconst adapters = router.options.serializationAdapters;\n\tif (adapters?.length) {\n\t\ttsr.t = new Map(adapters.map((adapter) => [adapter.key, adapter.fromSerializable]));\n\t\ttsr.buffer.forEach((script) => script());\n\t}\n\ttsr.initialized = true;\n\tconst dehydratedRouter = tsr.router;\n\tif (process.env.NODE_ENV !== \"production\" && !dehydratedRouter) throw new Error(\"Invariant failed: Expected to find a dehydrated data on window.$_TSR.router, but we did not. Please file an issue!\");\n\trouter.ssr = { manifest: dehydratedRouter.manifest };\n\trouter.options.ssr = { nonce: document.querySelector(\"meta[property=\\\"csp-nonce\\\"]\")?.content };\n\tconst dehydratedMatches = dehydratedRouter.matches;\n\tconst controller = new AbortController();\n\tconst previousPreflight = router._preflight;\n\trouter._preflight = controller;\n\tpreviousPreflight?.abort();\n\tconst isCurrent = () => router._preflight === controller;\n\tlet location;\n\tlet candidates;\n\tlet handoffHistoryHref;\n\tlet handoffHistoryState;\n\ttry {\n\t\tawait waitFor(router.options.hydrate?.(dehydratedRouter.dehydratedData), controller.signal);\n\t\tif (!isCurrent()) return;\n\t\tconst historyLocation = router.history.location;\n\t\thandoffHistoryHref = historyLocation.href;\n\t\thandoffHistoryState = historyLocation.state;\n\t\trouter.updateLatestLocation();\n\t\tlocation = router.latestLocation;\n\t\trouter.stores.location.set(location);\n\t\tcandidates = router.matchRoutes(location, { _controller: controller });\n\t} catch (cause) {\n\t\tif (isCurrent()) router._preflight = void 0;\n\t\tcontroller.abort(cause);\n\t\tif (cause !== controller.signal) throw cause;\n\t}\n\tif (!isCurrent()) return;\n\tconst committed = [];\n\tlet pendingBoundary;\n\tlet verifiedAssetEnd = 0;\n\tconst retryFrom = (index) => {\n\t\tverifiedAssetEnd = Math.min(verifiedAssetEnd, index + 1);\n\t\tconst removed = committed.splice(index);\n\t\tfor (const match of removed) if (getRoute(router, match).options.loader && (match.status === \"success\" || !match.invalid && \"loaderData\" in match)) cacheLoaderMatch(router, {\n\t\t\t...match,\n\t\t\tstatus: \"success\",\n\t\t\terror: void 0,\n\t\t\tpreload: true\n\t\t}, router._cache.get(match.id));\n\t\ttransferMatchResources(router, removed);\n\t};\n\tconst shared = dehydratedMatches.length > candidates.length ? candidates.findIndex((match) => match._notFound) + 1 : dehydratedMatches.length;\n\tlet isTerminal = false;\n\tfor (let index = 0; index < shared; index++) {\n\t\tconst candidate = candidates[index];\n\t\tconst dehydrated = dehydratedMatches[index];\n\t\tif (typeof dehydrated.i !== \"string\" || hydrateSsrMatchId(dehydrated.i) !== candidate.id) {\n\t\t\tpendingBoundary ??= index;\n\t\t\tbreak;\n\t\t}\n\t\tverifiedAssetEnd = index + 1;\n\t\tconst route = getRoute(router, candidate);\n\t\tif (\"l\" in dehydrated || dehydrated.s === \"success\" && dehydrated.e === void 0 && route.options.loader) candidate.loaderData = dehydrated.l;\n\t\tcandidate.status = dehydrated.s;\n\t\tcandidate.ssr = dehydrated.ssr;\n\t\troute.options.ssr = candidate.ssr;\n\t\tcandidate.updatedAt = dehydrated.u;\n\t\tcandidate.error = dehydrated.e;\n\t\tcandidate._notFound ||= dehydrated.g;\n\t\tif (candidate.status === \"error\" || candidate.status === \"notFound\" || candidate._notFound) {\n\t\t\tisTerminal = true;\n\t\t\tcommitted.push(candidate);\n\t\t\tif (candidate.ssr === false || candidate.ssr === \"data-only\") pendingBoundary ??= index;\n\t\t\tbreak;\n\t\t}\n\t\tif (candidate.status === \"pending\") {\n\t\t\tpendingBoundary ??= index;\n\t\t\tbreak;\n\t\t}\n\t\tcommitted.push(candidate);\n\t\tif (candidate.ssr === \"data-only\") pendingBoundary ??= index;\n\t}\n\tif (!isTerminal && committed.length === shared && shared < candidates.length) pendingBoundary = shared;\n\tconst chunks = committed.map(async (match) => {\n\t\ttry {\n\t\t\tconst route = getRoute(router, match);\n\t\t\tif (match._notFound) await Promise.all([loadRouteChunk(route), loadRouteChunk(route, \"notFoundComponent\")]);\n\t\t\telse await loadRouteChunk(route, match.status === \"error\" ? \"errorComponent\" : match.status === \"notFound\" ? \"notFoundComponent\" : void 0);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t});\n\tlet chunkFailure = 0;\n\ttry {\n\t\twhile (chunkFailure < chunks.length && await waitFor(chunks[chunkFailure], controller.signal)) chunkFailure++;\n\t} catch {\n\t\treturn;\n\t}\n\tif (!isCurrent()) return;\n\tif (chunkFailure < committed.length) retryFrom(chunkFailure);\n\tconst contextEnd = Math.max(pendingBoundary === committed.length ? committed.length + 1 : committed.length, chunkFailure < chunks.length ? chunkFailure : verifiedAssetEnd);\n\tfor (let index = 0; index < contextEnd; index++) {\n\t\tconst match = candidates[index];\n\t\tconst route = getRoute(router, match);\n\t\tconst parentContext = candidates[index - 1]?.context ?? router.options.context ?? {};\n\t\tlet routeContext;\n\t\tif (route.options.context) {\n\t\t\ttry {\n\t\t\t\trouteContext = match._ctx = route.options.context({\n\t\t\t\t\tdeps: match.loaderDeps,\n\t\t\t\t\tparams: match.params,\n\t\t\t\t\tcontext: parentContext,\n\t\t\t\t\tlocation,\n\t\t\t\t\tnavigate: navigateFrom(router, location),\n\t\t\t\t\tbuildLocation: router.buildLocation,\n\t\t\t\t\tcause: match.cause,\n\t\t\t\t\tabortController: controller,\n\t\t\t\t\tpreload: false,\n\t\t\t\t\tmatches: candidates,\n\t\t\t\t\trouteId: route.id\n\t\t\t\t}) || {};\n\t\t\t} catch {\n\t\t\t\tif (!isCurrent()) return;\n\t\t\t\tif (match.status !== \"error\" && match.status !== \"notFound\" && !match._notFound) {\n\t\t\t\t\tretryFrom(index);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!isCurrent()) return;\n\t\t}\n\t\tmatch.context = {\n\t\t\t...parentContext,\n\t\t\t...routeContext,\n\t\t\t...committed[index] && dehydratedMatches[index].b\n\t\t};\n\t}\n\tawait projectLane(router, [location, candidates], controller.signal, 0, verifiedAssetEnd);\n\tif (!isCurrent()) return;\n\tconst needsClientLoad = pendingBoundary !== void 0 || committed.length < shared;\n\tconst committedMatches = isTerminal && committed.length === shared ? candidates : committed;\n\tlet presented = needsClientLoad ? candidates : committedMatches;\n\tlet dataOnlyAssetEnd;\n\tif (needsClientLoad && pendingBoundary !== void 0) {\n\t\tconst boundary = presented[pendingBoundary];\n\t\tdataOnlyAssetEnd = boundary.ssr === \"data-only\" && verifiedAssetEnd > pendingBoundary + 1 ? verifiedAssetEnd : void 0;\n\t\tpresented = presented.slice();\n\t\tpresented[pendingBoundary] = {\n\t\t\t...boundary,\n\t\t\tstatus: \"pending\",\n\t\t\tssr: boundary.ssr === \"data-only\" ? \"data-only\" : false,\n\t\t\t_assetEnd: dataOnlyAssetEnd\n\t\t};\n\t}\n\tconst claim = () => {\n\t\tconst historyLocation = router.history.location;\n\t\treturn needsClientLoad && !router._tx && historyLocation.href === handoffHistoryHref && historyLocation.state === handoffHistoryState && router._committed === committedMatches && committedMatches.length && !controller.signal.aborted ? controller : void 0;\n\t};\n\tconst handoff = [claim, (matches) => {\n\t\tif (router._handoff !== handoff) return;\n\t\trouter._handoff = void 0;\n\t\tconst prefix = committedMatches.length;\n\t\tif (!matches || !claim() || committedMatches.some((match, index) => match.id !== matches[index]?.id)) {\n\t\t\tcontroller.abort();\n\t\t\treturn;\n\t\t}\n\t\tlet handoffAssetEnd = dataOnlyAssetEnd;\n\t\tif (handoffAssetEnd !== void 0) {\n\t\t\tfor (let index = prefix; index < handoffAssetEnd; index++) if (candidates[index]?.id !== matches[index]?.id) {\n\t\t\t\thandoffAssetEnd = index > pendingBoundary + 1 ? index : void 0;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tconst clones = committedMatches.map((match) => ({ ...match }));\n\t\tif (handoffAssetEnd !== void 0) clones[pendingBoundary]._assetEnd = handoffAssetEnd;\n\t\ttransferMatchResources(router, matches.splice(0, prefix, ...clones));\n\t\tfor (let index = prefix; index < matches.length; index++) {\n\t\t\tconst match = matches[index];\n\t\t\tconst hydrated = candidates[index];\n\t\t\tif (hydrated?.id === match.id && hydrated._ctx) match._ctx = hydrated._ctx;\n\t\t\tmatch.abortController = controller;\n\t\t}\n\t\treturn prefix;\n\t}];\n\trouter._committed = committedMatches;\n\trouter._handoff = handoff;\n\trouter._preflight = void 0;\n\trouter.batch(() => {\n\t\trouter.stores.setMatches(presented);\n\t\trouter.stores.status.set(\"idle\");\n\t\tif (!needsClientLoad) router.stores.resolvedLocation.set(router.stores.location.get());\n\t});\n}\n//#endregion\nexport { _getAssetMatches, _getRenderedMatches, hydrate, loadClientRoute, loadRouteChunk, preloadClientRoute, refreshClientRoute, replaceRouteChunk };\n\n//# sourceMappingURL=load-client.js.map","//#region src/link.ts\nconst preloadWarning = \"Error preloading route! ☝️\";\n//#endregion\nexport { preloadWarning };\n\n//# sourceMappingURL=link.js.map","import { invariant } from \"./invariant.js\";\nimport { joinPaths, trimPathLeft, trimPathRight } from \"./path.js\";\nimport { notFound } from \"./not-found.js\";\nimport { rootRouteId } from \"./root.js\";\nimport { redirect } from \"./redirect.js\";\n//#region src/route.ts\nvar BaseRoute = class {\n\tget to() {\n\t\treturn this._to;\n\t}\n\tget id() {\n\t\treturn this._id;\n\t}\n\tget path() {\n\t\treturn this._path;\n\t}\n\tget fullPath() {\n\t\treturn this._fullPath;\n\t}\n\tconstructor(options) {\n\t\tthis.init = (opts) => {\n\t\t\tthis.originalIndex = opts.originalIndex;\n\t\t\tconst options = this.options;\n\t\t\tconst isRoot = !options?.path && !options?.id;\n\t\t\tthis.parentRoute = this.options.getParentRoute?.();\n\t\t\tif (isRoot) this._path = rootRouteId;\n\t\t\telse if (!this.parentRoute) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Child Route instances must pass a 'getParentRoute: () => ParentRoute' option that returns a Route instance.`);\n\t\t\t\tinvariant();\n\t\t\t}\n\t\t\tlet path = isRoot ? rootRouteId : options?.path;\n\t\t\tif (path && path !== \"/\") path = trimPathLeft(path);\n\t\t\tconst customId = options?.id || path;\n\t\t\tlet id = isRoot ? rootRouteId : joinPaths([this.parentRoute.id === \"__root__\" ? \"\" : this.parentRoute.id, customId]);\n\t\t\tif (path === \"__root__\") path = \"/\";\n\t\t\tif (id !== \"__root__\") id = joinPaths([\"/\", id]);\n\t\t\tconst fullPath = id === \"__root__\" ? \"/\" : joinPaths([this.parentRoute.fullPath, path]);\n\t\t\tthis._path = path;\n\t\t\tthis._id = id;\n\t\t\tthis._fullPath = fullPath;\n\t\t\tthis._to = trimPathRight(fullPath);\n\t\t};\n\t\tthis.addChildren = (children) => {\n\t\t\treturn this._addFileChildren(children);\n\t\t};\n\t\tthis._addFileChildren = (children) => {\n\t\t\tif (Array.isArray(children)) this.children = children;\n\t\t\tif (typeof children === \"object\" && children !== null) this.children = Object.values(children);\n\t\t\treturn this;\n\t\t};\n\t\tthis._addFileTypes = () => {\n\t\t\treturn this;\n\t\t};\n\t\tthis.updateLoader = (options) => {\n\t\t\tObject.assign(this.options, options);\n\t\t\treturn this;\n\t\t};\n\t\tthis.update = (options) => {\n\t\t\tObject.assign(this.options, options);\n\t\t\treturn this;\n\t\t};\n\t\tthis.lazy = (lazyFn) => {\n\t\t\tthis.lazyFn = lazyFn;\n\t\t\treturn this;\n\t\t};\n\t\tthis.redirect = (opts) => redirect({\n\t\t\tfrom: this.fullPath,\n\t\t\t...opts\n\t\t});\n\t\tthis.options = options || {};\n\t\tthis.isRoot = !options?.getParentRoute;\n\t\tif (options?.id && options?.path) throw new Error(`Route cannot have both an 'id' and a 'path' option.`);\n\t}\n};\nvar BaseRouteApi = class {\n\tconstructor({ id }) {\n\t\tthis.notFound = (opts) => {\n\t\t\treturn notFound({\n\t\t\t\trouteId: this.id,\n\t\t\t\t...opts\n\t\t\t});\n\t\t};\n\t\tthis.redirect = (opts) => redirect({\n\t\t\tfrom: this.id,\n\t\t\t...opts\n\t\t});\n\t\tthis.id = id;\n\t}\n};\nvar BaseRootRoute = class extends BaseRoute {\n\tconstructor(options) {\n\t\tsuper(options);\n\t}\n};\n//#endregion\nexport { BaseRootRoute, BaseRoute, BaseRouteApi };\n\n//# sourceMappingURL=route.js.map","\"use client\";\nimport { wrapInNonRouteComponentContext } from \"./nonRouteComponentContext.js\";\nimport * as React$1 from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\n//#region src/CatchBoundary.tsx\nfunction CatchBoundary(props) {\n\treturn /* @__PURE__ */ jsx(CatchBoundaryImpl, { ...props });\n}\nvar CatchBoundaryImpl = class extends React$1.Component {\n\tconstructor(..._args) {\n\t\tsuper(..._args);\n\t\tthis.state = { error: null };\n\t\tthis.reset = () => {\n\t\t\tthis.setState({ error: null });\n\t\t};\n\t}\n\tstatic getDerivedStateFromProps(props, state) {\n\t\tconst resetKey = props.getResetKey();\n\t\tif (state.error && state.resetKey !== resetKey) return {\n\t\t\tresetKey,\n\t\t\terror: null\n\t\t};\n\t\treturn { resetKey };\n\t}\n\tstatic getDerivedStateFromError(error) {\n\t\treturn { error };\n\t}\n\tcomponentDidCatch(error, errorInfo) {\n\t\tthis.props.onCatch?.(error, errorInfo);\n\t}\n\trender() {\n\t\tconst error = this.state.error;\n\t\tif (error) {\n\t\t\tconst element = React$1.createElement(this.props.errorComponent ?? ErrorComponent, {\n\t\t\t\terror,\n\t\t\t\treset: this.reset\n\t\t\t});\n\t\t\treturn process.env.NODE_ENV !== \"production\" ? wrapInNonRouteComponentContext(element, \"errorComponent\") : element;\n\t\t}\n\t\treturn this.props.children;\n\t}\n};\nfunction ErrorComponent({ error }) {\n\tconst [show, setShow] = React$1.useState(process.env.NODE_ENV !== \"production\");\n\treturn /* @__PURE__ */ jsxs(\"div\", {\n\t\tstyle: {\n\t\t\tpadding: \".5rem\",\n\t\t\tmaxWidth: \"100%\"\n\t\t},\n\t\tchildren: [\n\t\t\t/* @__PURE__ */ jsxs(\"div\", {\n\t\t\t\tstyle: {\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\tgap: \".5rem\"\n\t\t\t\t},\n\t\t\t\tchildren: [/* @__PURE__ */ jsx(\"strong\", {\n\t\t\t\t\tstyle: { fontSize: \"1rem\" },\n\t\t\t\t\tchildren: \"Something went wrong!\"\n\t\t\t\t}), /* @__PURE__ */ jsx(\"button\", {\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tappearance: \"none\",\n\t\t\t\t\t\tfontSize: \".6em\",\n\t\t\t\t\t\tborder: \"1px solid currentColor\",\n\t\t\t\t\t\tpadding: \".1rem .2rem\",\n\t\t\t\t\t\tfontWeight: \"bold\",\n\t\t\t\t\t\tborderRadius: \".25rem\"\n\t\t\t\t\t},\n\t\t\t\t\tonClick: () => setShow((d) => !d),\n\t\t\t\t\tchildren: show ? \"Hide Error\" : \"Show Error\"\n\t\t\t\t})]\n\t\t\t}),\n\t\t\t/* @__PURE__ */ jsx(\"div\", { style: { height: \".25rem\" } }),\n\t\t\tshow ? /* @__PURE__ */ jsx(\"div\", { children: /* @__PURE__ */ jsx(\"pre\", {\n\t\t\t\tstyle: {\n\t\t\t\t\tfontSize: \".7em\",\n\t\t\t\t\tborder: \"1px solid red\",\n\t\t\t\t\tborderRadius: \".25rem\",\n\t\t\t\t\tpadding: \".3rem\",\n\t\t\t\t\tcolor: \"red\",\n\t\t\t\t\toverflow: \"auto\"\n\t\t\t\t},\n\t\t\t\tchildren: error.message ? /* @__PURE__ */ jsx(\"code\", { children: error.message }) : null\n\t\t\t}) }) : null\n\t\t]\n\t});\n}\n//#endregion\nexport { CatchBoundary, ErrorComponent };\n\n//# sourceMappingURL=CatchBoundary.js.map","\"use client\";\nimport React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/ClientOnly.tsx\n/**\n* Render the children only after the JS has loaded client-side. Use an optional\n* fallback component if the JS is not yet loaded.\n*\n* @example\n* Render a Chart component if JS loads, renders a simple FakeChart\n* component server-side or if there is no JS. The FakeChart can have only the\n* UI without the behavior or be a loading spinner or skeleton.\n*\n* ```tsx\n* return (\n* <ClientOnly fallback={<FakeChart />}>\n* <Chart />\n* </ClientOnly>\n* )\n* ```\n*/\nfunction ClientOnly({ children, fallback = null }) {\n\treturn /* @__PURE__ */ jsx(React.Fragment, { children: useHydrated() ? children : fallback });\n}\n/**\n* Return a boolean indicating if the JS has been hydrated already.\n* When doing Server-Side Rendering, the result will always be false.\n* When doing Client-Side Rendering, the result will always be false on the\n* first render and true from then on. Even if a new component renders it will\n* always start with true.\n*\n* @example\n* ```tsx\n* // Disable a button that needs JS to work.\n* let hydrated = useHydrated()\n* return (\n* <button type=\"button\" disabled={!hydrated} onClick={doSomethingCustom}>\n* Click me\n* </button>\n* )\n* ```\n* @returns True if the JS has been hydrated already, false otherwise.\n*/\nfunction useHydrated() {\n\treturn React.useSyncExternalStore(subscribe, () => true, () => false);\n}\nfunction subscribe() {\n\treturn () => {};\n}\n//#endregion\nexport { ClientOnly, useHydrated };\n\n//# sourceMappingURL=ClientOnly.js.map","\"use client\";\nimport * as React$1 from \"react\";\n//#region src/routerContext.tsx\nvar routerContext = React$1.createContext(null);\n//#endregion\nexport { routerContext };\n\n//# sourceMappingURL=routerContext.js.map","\"use client\";\nimport { routerContext } from \"./routerContext.js\";\nimport * as React$1 from \"react\";\n//#region src/useRouter.tsx\n/**\n* Access the current TanStack Router instance from React context.\n* Must be used within a `RouterProvider`.\n*\n* Options:\n* - `warn`: Log a warning if no router context is found (default: true).\n*\n* @returns The registered router instance.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useRouterHook\n*/\nfunction useRouter(opts) {\n\tconst value = React$1.useContext(routerContext);\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tif ((opts?.warn ?? true) && !value) console.warn(\"Warning: useRouter must be used inside a <RouterProvider> component!\");\n\t}\n\treturn value;\n}\n//#endregion\nexport { useRouter };\n\n//# sourceMappingURL=useRouter.js.map","\"use client\";\nimport * as React$1 from \"react\";\n//#region src/matchContext.tsx\nvar matchContext = React$1.createContext(void 0);\nvar dummyMatchContext = React$1.createContext(void 0);\n//#endregion\nexport { dummyMatchContext, matchContext };\n\n//# sourceMappingURL=matchContext.js.map","var ReactiveFlags = /* @__PURE__ */ ((ReactiveFlags2) => {\n ReactiveFlags2[ReactiveFlags2[\"None\"] = 0] = \"None\";\n ReactiveFlags2[ReactiveFlags2[\"Mutable\"] = 1] = \"Mutable\";\n ReactiveFlags2[ReactiveFlags2[\"Watching\"] = 2] = \"Watching\";\n ReactiveFlags2[ReactiveFlags2[\"RecursedCheck\"] = 4] = \"RecursedCheck\";\n ReactiveFlags2[ReactiveFlags2[\"Recursed\"] = 8] = \"Recursed\";\n ReactiveFlags2[ReactiveFlags2[\"Dirty\"] = 16] = \"Dirty\";\n ReactiveFlags2[ReactiveFlags2[\"Pending\"] = 32] = \"Pending\";\n return ReactiveFlags2;\n})(ReactiveFlags || {});\n// @__NO_SIDE_EFFECTS__\nfunction createReactiveSystem({\n update,\n notify,\n unwatched\n}) {\n return {\n link,\n unlink,\n propagate,\n checkDirty,\n shallowPropagate\n };\n function link(dep, sub, version) {\n const prevDep = sub.depsTail;\n if (prevDep !== void 0 && prevDep.dep === dep) {\n return;\n }\n const nextDep = prevDep !== void 0 ? prevDep.nextDep : sub.deps;\n if (nextDep !== void 0 && nextDep.dep === dep) {\n nextDep.version = version;\n sub.depsTail = nextDep;\n return;\n }\n const prevSub = dep.subsTail;\n if (prevSub !== void 0 && prevSub.version === version && prevSub.sub === sub) {\n return;\n }\n const newLink = sub.depsTail = dep.subsTail = {\n version,\n dep,\n sub,\n prevDep,\n nextDep,\n prevSub,\n nextSub: void 0\n };\n if (nextDep !== void 0) {\n nextDep.prevDep = newLink;\n }\n if (prevDep !== void 0) {\n prevDep.nextDep = newLink;\n } else {\n sub.deps = newLink;\n }\n if (prevSub !== void 0) {\n prevSub.nextSub = newLink;\n } else {\n dep.subs = newLink;\n }\n }\n function unlink(link2, sub = link2.sub) {\n const dep = link2.dep;\n const prevDep = link2.prevDep;\n const nextDep = link2.nextDep;\n const nextSub = link2.nextSub;\n const prevSub = link2.prevSub;\n if (nextDep !== void 0) {\n nextDep.prevDep = prevDep;\n } else {\n sub.depsTail = prevDep;\n }\n if (prevDep !== void 0) {\n prevDep.nextDep = nextDep;\n } else {\n sub.deps = nextDep;\n }\n if (nextSub !== void 0) {\n nextSub.prevSub = prevSub;\n } else {\n dep.subsTail = prevSub;\n }\n if (prevSub !== void 0) {\n prevSub.nextSub = nextSub;\n } else if ((dep.subs = nextSub) === void 0) {\n unwatched(dep);\n }\n return nextDep;\n }\n function propagate(link2) {\n let next = link2.nextSub;\n let stack;\n top: do {\n const sub = link2.sub;\n let flags = sub.flags;\n if (!(flags & (4 | 8 | 16 | 32))) {\n sub.flags = flags | 32;\n } else if (!(flags & (4 | 8))) {\n flags = 0;\n } else if (!(flags & 4)) {\n sub.flags = flags & -9 | 32;\n } else if (!(flags & (16 | 32)) && isValidLink(link2, sub)) {\n sub.flags = flags | (8 | 32);\n flags &= 1;\n } else {\n flags = 0;\n }\n if (flags & 2) {\n notify(sub);\n }\n if (flags & 1) {\n const subSubs = sub.subs;\n if (subSubs !== void 0) {\n const nextSub = (link2 = subSubs).nextSub;\n if (nextSub !== void 0) {\n stack = { value: next, prev: stack };\n next = nextSub;\n }\n continue;\n }\n }\n if ((link2 = next) !== void 0) {\n next = link2.nextSub;\n continue;\n }\n while (stack !== void 0) {\n link2 = stack.value;\n stack = stack.prev;\n if (link2 !== void 0) {\n next = link2.nextSub;\n continue top;\n }\n }\n break;\n } while (true);\n }\n function checkDirty(link2, sub) {\n let stack;\n let checkDepth = 0;\n let dirty = false;\n top: do {\n const dep = link2.dep;\n const flags = dep.flags;\n if (sub.flags & 16) {\n dirty = true;\n } else if ((flags & (1 | 16)) === (1 | 16)) {\n if (update(dep)) {\n const subs = dep.subs;\n if (subs.nextSub !== void 0) {\n shallowPropagate(subs);\n }\n dirty = true;\n }\n } else if ((flags & (1 | 32)) === (1 | 32)) {\n if (link2.nextSub !== void 0 || link2.prevSub !== void 0) {\n stack = { value: link2, prev: stack };\n }\n link2 = dep.deps;\n sub = dep;\n ++checkDepth;\n continue;\n }\n if (!dirty) {\n const nextDep = link2.nextDep;\n if (nextDep !== void 0) {\n link2 = nextDep;\n continue;\n }\n }\n while (checkDepth--) {\n const firstSub = sub.subs;\n const hasMultipleSubs = firstSub.nextSub !== void 0;\n if (hasMultipleSubs) {\n link2 = stack.value;\n stack = stack.prev;\n } else {\n link2 = firstSub;\n }\n if (dirty) {\n if (update(sub)) {\n if (hasMultipleSubs) {\n shallowPropagate(firstSub);\n }\n sub = link2.sub;\n continue;\n }\n dirty = false;\n } else {\n sub.flags &= -33;\n }\n sub = link2.sub;\n const nextDep = link2.nextDep;\n if (nextDep !== void 0) {\n link2 = nextDep;\n continue top;\n }\n }\n return dirty;\n } while (true);\n }\n function shallowPropagate(link2) {\n do {\n const sub = link2.sub;\n const flags = sub.flags;\n if ((flags & (32 | 16)) === 32) {\n sub.flags = flags | 16;\n if ((flags & (2 | 4)) === 2) {\n notify(sub);\n }\n }\n } while ((link2 = link2.nextSub) !== void 0);\n }\n function isValidLink(checkLink, sub) {\n let link2 = sub.depsTail;\n while (link2 !== void 0) {\n if (link2 === checkLink) {\n return true;\n }\n link2 = link2.prevDep;\n }\n return false;\n }\n}\nexport {\n ReactiveFlags,\n createReactiveSystem\n};\n//# sourceMappingURL=alien.js.map\n","import { createReactiveSystem, ReactiveFlags } from \"./alien.js\";\nfunction toObserver(nextHandler, errorHandler, completionHandler) {\n const isObserver = typeof nextHandler === \"object\";\n const self = isObserver ? nextHandler : void 0;\n return {\n next: (isObserver ? nextHandler.next : nextHandler)?.bind(self),\n error: (isObserver ? nextHandler.error : errorHandler)?.bind(self),\n complete: (isObserver ? nextHandler.complete : completionHandler)?.bind(\n self\n )\n };\n}\nconst queuedEffects = [];\nlet cycle = 0;\nconst { link, unlink, propagate, checkDirty, shallowPropagate } = createReactiveSystem({\n update(atom) {\n return atom._update();\n },\n // eslint-disable-next-line no-shadow\n notify(effect2) {\n queuedEffects[queuedEffectsLength++] = effect2;\n effect2.flags &= ~ReactiveFlags.Watching;\n },\n unwatched(atom) {\n if (atom.depsTail !== void 0) {\n atom.depsTail = void 0;\n atom.flags = ReactiveFlags.Mutable | ReactiveFlags.Dirty;\n purgeDeps(atom);\n }\n }\n});\nlet notifyIndex = 0;\nlet queuedEffectsLength = 0;\nlet activeSub;\nlet batchDepth = 0;\nfunction batch(fn) {\n try {\n ++batchDepth;\n fn();\n } finally {\n if (!--batchDepth) {\n flush();\n }\n }\n}\nfunction purgeDeps(sub) {\n const depsTail = sub.depsTail;\n let dep = depsTail !== void 0 ? depsTail.nextDep : sub.deps;\n while (dep !== void 0) {\n dep = unlink(dep, sub);\n }\n}\nfunction flush() {\n if (batchDepth > 0) {\n return;\n }\n while (notifyIndex < queuedEffectsLength) {\n const effect2 = queuedEffects[notifyIndex];\n queuedEffects[notifyIndex++] = void 0;\n effect2.notify();\n }\n notifyIndex = 0;\n queuedEffectsLength = 0;\n}\nfunction createAsyncAtom(getValue, options) {\n const ref = {};\n const atom = createAtom(() => {\n getValue().then(\n (data) => {\n const internalAtom = ref.current;\n if (internalAtom._update({ status: \"done\", data })) {\n const subs = internalAtom.subs;\n if (subs !== void 0) {\n propagate(subs);\n shallowPropagate(subs);\n flush();\n }\n }\n },\n (error) => {\n const internalAtom = ref.current;\n if (internalAtom._update({ status: \"error\", error })) {\n const subs = internalAtom.subs;\n if (subs !== void 0) {\n propagate(subs);\n shallowPropagate(subs);\n flush();\n }\n }\n }\n );\n return { status: \"pending\" };\n }, options);\n ref.current = atom;\n return atom;\n}\nfunction createAtom(valueOrFn, options) {\n const isComputed = typeof valueOrFn === \"function\";\n const getter = valueOrFn;\n const atom = {\n _snapshot: isComputed ? void 0 : valueOrFn,\n subs: void 0,\n subsTail: void 0,\n deps: void 0,\n depsTail: void 0,\n flags: isComputed ? ReactiveFlags.None : ReactiveFlags.Mutable,\n get() {\n if (activeSub !== void 0) {\n link(atom, activeSub, cycle);\n }\n return atom._snapshot;\n },\n subscribe(observerOrFn) {\n const obs = toObserver(observerOrFn);\n const observed = { current: false };\n const e = effect(() => {\n atom.get();\n if (!observed.current) {\n observed.current = true;\n } else {\n obs.next?.(atom._snapshot);\n }\n });\n return {\n unsubscribe: () => {\n e.stop();\n }\n };\n },\n _update(getValue) {\n const prevSub = activeSub;\n const compare = options?.compare ?? Object.is;\n if (isComputed) {\n activeSub = atom;\n ++cycle;\n atom.depsTail = void 0;\n } else if (getValue === void 0) {\n return false;\n }\n if (isComputed) {\n atom.flags = ReactiveFlags.Mutable | ReactiveFlags.RecursedCheck;\n }\n try {\n const oldValue = atom._snapshot;\n const newValue = typeof getValue === \"function\" ? getValue(oldValue) : getValue === void 0 && isComputed ? getter(oldValue) : getValue;\n if (oldValue === void 0 || !compare(oldValue, newValue)) {\n atom._snapshot = newValue;\n return true;\n }\n return false;\n } finally {\n activeSub = prevSub;\n if (isComputed) {\n atom.flags &= ~ReactiveFlags.RecursedCheck;\n }\n purgeDeps(atom);\n }\n }\n };\n if (isComputed) {\n atom.flags = ReactiveFlags.Mutable | ReactiveFlags.Dirty;\n atom.get = function() {\n const flags = atom.flags;\n if (flags & ReactiveFlags.Dirty || flags & ReactiveFlags.Pending && checkDirty(atom.deps, atom)) {\n if (atom._update()) {\n const subs = atom.subs;\n if (subs !== void 0) {\n shallowPropagate(subs);\n }\n }\n } else if (flags & ReactiveFlags.Pending) {\n atom.flags = flags & ~ReactiveFlags.Pending;\n }\n if (activeSub !== void 0) {\n link(atom, activeSub, cycle);\n }\n return atom._snapshot;\n };\n } else {\n atom.set = function(valueOrFn2) {\n if (atom._update(valueOrFn2)) {\n const subs = atom.subs;\n if (subs !== void 0) {\n propagate(subs);\n shallowPropagate(subs);\n flush();\n }\n }\n };\n }\n return atom;\n}\nfunction effect(fn) {\n const run = () => {\n const prevSub = activeSub;\n activeSub = effectObj;\n ++cycle;\n effectObj.depsTail = void 0;\n effectObj.flags = ReactiveFlags.Watching | ReactiveFlags.RecursedCheck;\n try {\n return fn();\n } finally {\n activeSub = prevSub;\n effectObj.flags &= ~ReactiveFlags.RecursedCheck;\n purgeDeps(effectObj);\n }\n };\n const effectObj = {\n deps: void 0,\n depsTail: void 0,\n subs: void 0,\n subsTail: void 0,\n flags: ReactiveFlags.Watching | ReactiveFlags.RecursedCheck,\n notify() {\n const flags = this.flags;\n if (flags & ReactiveFlags.Dirty || flags & ReactiveFlags.Pending && checkDirty(this.deps, this)) {\n run();\n } else {\n this.flags = ReactiveFlags.Watching;\n }\n },\n stop() {\n this.flags = ReactiveFlags.None;\n this.depsTail = void 0;\n purgeDeps(this);\n }\n };\n run();\n return effectObj;\n}\nexport {\n batch,\n createAsyncAtom,\n createAtom,\n flush,\n toObserver\n};\n//# sourceMappingURL=atom.js.map\n","import { useCallback } from \"react\";\nimport { useSyncExternalStoreWithSelector } from \"use-sync-external-store/shim/with-selector\";\nfunction defaultCompare(a, b) {\n return a === b;\n}\nfunction useStore(atom, selector, compare = defaultCompare) {\n const subscribe = useCallback(\n (handleStoreChange) => {\n if (!atom) {\n return () => {\n };\n }\n const { unsubscribe } = atom.subscribe(handleStoreChange);\n return unsubscribe;\n },\n [atom]\n );\n const boundGetSnapshot = useCallback(() => atom?.get(), [atom]);\n const selectedSnapshot = useSyncExternalStoreWithSelector(\n subscribe,\n boundGetSnapshot,\n boundGetSnapshot,\n selector,\n compare\n );\n return selectedSnapshot;\n}\nexport {\n useStore\n};\n//# sourceMappingURL=useStore.js.map\n","\"use client\";\nimport { dummyMatchContext, matchContext } from \"./matchContext.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { invariant, replaceEqualDeep } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\nimport { useStore } from \"@tanstack/react-store\";\n//#region src/useMatch.tsx\nvar dummyMatch = {};\nfunction useStructuralSharing(opts, router) {\n\tconst previousResult = React$1.useRef();\n\treturn (slice) => {\n\t\tconst selected = opts?.select ? opts.select(slice) : slice;\n\t\tif (opts?.structuralSharing ?? router.options.defaultStructuralSharing) return previousResult.current = replaceEqualDeep(previousResult.current, selected);\n\t\treturn selected;\n\t};\n}\n/**\n* Read and select the nearest or targeted route match.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useMatchHook\n*/\nfunction useMatch(opts) {\n\tconst router = useRouter();\n\tconst nearestRouteId = React$1.useContext(opts.from ? dummyMatchContext : matchContext);\n\tconst routeId = opts.from ?? nearestRouteId;\n\tconst matchStore = router.stores.getMatchStore(routeId);\n\tif (isServer ?? router.isServer) {\n\t\tconst match = matchStore.get();\n\t\tif (!match) {\n\t\t\tif (opts.shouldThrow ?? true) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Could not find ${opts.from ? `an active match from \"${opts.from}\"` : \"a nearest match!\"}`);\n\t\t\t\tinvariant();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\treturn opts.select ? opts.select(match) : match;\n\t}\n\tconst selector = useStructuralSharing(opts, router);\n\tconst matchSelection = useStore(matchStore, (match) => match ? selector(match) : dummyMatch);\n\tif (matchSelection !== dummyMatch) return matchSelection;\n\tif (opts.shouldThrow ?? true) {\n\t\tif (process.env.NODE_ENV !== \"production\") throw new Error(`Invariant failed: Could not find ${opts.from ? `an active match from \"${opts.from}\"` : \"a nearest match!\"}`);\n\t\tinvariant();\n\t}\n}\n//#endregion\nexport { useMatch, useStructuralSharing };\n\n//# sourceMappingURL=useMatch.js.map","import { useMatch } from \"./useMatch.js\";\n//#region src/useLoaderData.tsx\n/**\n* Read and select the current route's loader data with type‑safety.\n*\n* Options:\n* - `from`/`strict`: Choose which route's data to read and strictness\n* - `select`: Map the loader data to a derived value\n* - `structuralSharing`: Enable structural sharing for stable references\n*\n* @returns The loader data (or selected value) for the matched route.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useLoaderDataHook\n*/\nfunction useLoaderData(opts) {\n\treturn useMatch({\n\t\tfrom: opts.from,\n\t\tstrict: opts.strict,\n\t\tstructuralSharing: opts.structuralSharing,\n\t\tselect: (match) => {\n\t\t\treturn opts.select ? opts.select(match.loaderData) : match.loaderData;\n\t\t}\n\t});\n}\n//#endregion\nexport { useLoaderData };\n\n//# sourceMappingURL=useLoaderData.js.map","import { useMatch } from \"./useMatch.js\";\n//#region src/useLoaderDeps.tsx\n/**\n* Read and select the current route's loader dependencies object.\n*\n* Options:\n* - `from`: Choose which route's loader deps to read\n* - `select`: Map the deps to a derived value\n* - `structuralSharing`: Enable structural sharing for stable references\n*\n* @returns The loader deps (or selected value) for the matched route.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useLoaderDepsHook\n*/\nfunction useLoaderDeps(opts) {\n\tconst { select, ...rest } = opts;\n\treturn useMatch({\n\t\t...rest,\n\t\tselect: (match) => {\n\t\t\treturn select ? select(match.loaderDeps) : match.loaderDeps;\n\t\t}\n\t});\n}\n//#endregion\nexport { useLoaderDeps };\n\n//# sourceMappingURL=useLoaderDeps.js.map","import { useMatch } from \"./useMatch.js\";\n//#region src/useParams.tsx\n/**\n* Access the current route's path parameters with type-safety.\n*\n* Options:\n* - `from`/`strict`: Specify the matched route and whether to enforce strict typing\n* - `select`: Project the params object to a derived value for memoized renders\n* - `structuralSharing`: Enable structural sharing for stable references\n* - `shouldThrow`: Throw if the route is not found in strict contexts\n*\n* @returns The params object (or selected value) for the matched route.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useParamsHook\n*/\nfunction useParams(opts) {\n\treturn useMatch({\n\t\tfrom: opts.from,\n\t\tshouldThrow: opts.shouldThrow,\n\t\tstructuralSharing: opts.structuralSharing,\n\t\tstrict: opts.strict,\n\t\tselect: (match) => {\n\t\t\tconst params = opts.strict === false ? match.params : match._strictParams;\n\t\t\treturn opts.select ? opts.select(params) : params;\n\t\t}\n\t});\n}\n//#endregion\nexport { useParams };\n\n//# sourceMappingURL=useParams.js.map","import { useMatch } from \"./useMatch.js\";\n//#region src/useSearch.tsx\n/**\n* Read and select the current route's search parameters with type-safety.\n*\n* Options:\n* - `from`/`strict`: Control which route's search is read and how strictly it's typed\n* - `select`: Map the search object to a derived value for render optimization\n* - `structuralSharing`: Enable structural sharing for stable references\n* - `shouldThrow`: Throw when the route is not found (strict contexts)\n*\n* @returns The search object (or selected value) for the matched route.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useSearchHook\n*/\nfunction useSearch(opts) {\n\treturn useMatch({\n\t\tfrom: opts.from,\n\t\tstrict: opts.strict,\n\t\tshouldThrow: opts.shouldThrow,\n\t\tstructuralSharing: opts.structuralSharing,\n\t\tselect: (match) => {\n\t\t\treturn opts.select ? opts.select(match.search) : match.search;\n\t\t}\n\t});\n}\n//#endregion\nexport { useSearch };\n\n//# sourceMappingURL=useSearch.js.map","\"use client\";\nimport { useLayoutEffect } from \"./utils.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport * as React$1 from \"react\";\n//#region src/useNavigate.tsx\n/**\n* Imperative navigation hook.\n*\n* Returns a stable `navigate(options)` function to change the current location\n* programmatically. Prefer the `Link` component for user-initiated navigation,\n* and use this hook from effects, callbacks, or handlers where imperative\n* navigation is required.\n*\n* Options:\n* - `from`: Optional route base used to resolve relative `to` paths.\n*\n* @returns A function that accepts `NavigateOptions`.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useNavigateHook\n*/\nfunction useNavigate(_defaultOpts) {\n\tconst router = useRouter();\n\treturn React$1.useCallback((options) => {\n\t\treturn router.navigate({\n\t\t\t...options,\n\t\t\tfrom: options.from ?? _defaultOpts?.from\n\t\t});\n\t}, [_defaultOpts?.from, router]);\n}\n/**\n* Component that triggers a navigation when rendered. Navigation executes\n* in an effect after mount/update.\n*\n* Props are the same as `NavigateOptions` used by `navigate()`.\n*\n* @returns null\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/navigateComponent\n*/\nfunction Navigate(props) {\n\tconst router = useRouter();\n\tconst navigate = useNavigate();\n\tconst previousPropsRef = React$1.useRef(null);\n\tuseLayoutEffect(() => {\n\t\tif (previousPropsRef.current !== props) {\n\t\t\tnavigate(props);\n\t\t\tpreviousPropsRef.current = props;\n\t\t}\n\t}, [\n\t\trouter,\n\t\tprops,\n\t\tnavigate\n\t]);\n\treturn null;\n}\n//#endregion\nexport { Navigate, useNavigate };\n\n//# sourceMappingURL=useNavigate.js.map","import { useMatch } from \"./useMatch.js\";\n//#region src/useRouteContext.ts\nfunction useRouteContext(opts) {\n\treturn useMatch({\n\t\t...opts,\n\t\tselect: (match) => opts.select ? opts.select(match.context) : match.context\n\t});\n}\n//#endregion\nexport { useRouteContext };\n\n//# sourceMappingURL=useRouteContext.js.map","\"use client\";\nimport { useForwardedRef, useIntersectionObserver } from \"./utils.js\";\nimport { useHydrated } from \"./ClientOnly.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { deepEqual, exactPathTest, functionalUpdate, hasKeys, isDangerousProtocol, preloadWarning, removeTrailingSlash } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { useStore } from \"@tanstack/react-store\";\n//#region src/link.tsx\nfunction useValueStable(value) {\n\tconst ref = React$1.useRef(value);\n\tif (!deepEqual(ref.current, value, { ignoreUndefined: false })) ref.current = value;\n\treturn ref.current;\n}\nfunction compareLinkState(a, b) {\n\treturn a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\nfunction resolveExternalLink(hrefOption, to, protocolAllowlist) {\n\tif (hrefOption?.external) {\n\t\tif (isDangerousProtocol(hrefOption.href, protocolAllowlist)) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked Link with dangerous protocol: ${hrefOption.href}`);\n\t\t\treturn;\n\t\t}\n\t\treturn hrefOption.href;\n\t}\n\tif (isSafeInternal(to)) return;\n\tif (typeof to !== \"string\" || to.indexOf(\":\") === -1) return;\n\ttry {\n\t\tnew URL(to);\n\t\tif (isDangerousProtocol(to, protocolAllowlist)) {\n\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked Link with dangerous protocol: ${to}`);\n\t\t\treturn;\n\t\t}\n\t\treturn to;\n\t} catch {}\n}\nfunction resolveIsActive(location, next, activeOptions, basepath, isHydrated, isExternal) {\n\tif (isExternal) return false;\n\tif (activeOptions?.exact) {\n\t\tif (!exactPathTest(location.pathname, next.pathname, basepath)) return false;\n\t} else {\n\t\tconst currentPathSplit = removeTrailingSlash(location.pathname, basepath);\n\t\tconst nextPathSplit = removeTrailingSlash(next.pathname, basepath);\n\t\tif (!(currentPathSplit.startsWith(nextPathSplit) && (currentPathSplit.length === nextPathSplit.length || currentPathSplit[nextPathSplit.length] === \"/\"))) return false;\n\t}\n\tif (activeOptions?.includeSearch ?? true) {\n\t\tif (!deepEqual(location.search, next.search, {\n\t\t\tpartial: !activeOptions?.exact,\n\t\t\tignoreUndefined: !activeOptions?.explicitUndefined\n\t\t})) return false;\n\t}\n\tif (activeOptions?.includeHash) return isHydrated && location.hash === next.hash;\n\treturn true;\n}\n/**\n* Build anchor-like props for declarative navigation and preloading.\n*\n* Returns stable `href`, event handlers and accessibility props derived from\n* router options and active state. Used internally by `Link` and custom links.\n*\n* Options cover `to`, `params`, `search`, `hash`, `state`, `preload`,\n* `activeProps`, `inactiveProps`, and more.\n*\n* @returns React anchor props suitable for `<a>` or custom components.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useLinkPropsHook\n*/\nfunction useLinkProps(options, forwardedRef) {\n\tconst router = useRouter();\n\tconst innerRef = useForwardedRef(forwardedRef);\n\tconst { activeProps, inactiveProps, activeOptions, to, preload: userPreload, preloadDelay: userPreloadDelay, preloadIntentProximity: _preloadIntentProximity, hashScrollIntoView, replace, startTransition, resetScroll, viewTransition, children, target, disabled, style, className, onClick, onBlur, onFocus, onMouseEnter, onMouseLeave, onTouchStart, ignoreBlocker, params: _params, search: _search, hash: _hash, state: _state, mask: _mask, reloadDocument: _reloadDocument, unsafeRelative: _unsafeRelative, from: _from, _fromLocation, ...propsSafeToSpread } = options;\n\tif (isServer ?? router.isServer) {\n\t\tconst safeInternal = isSafeInternal(to);\n\t\tif (typeof to === \"string\" && !safeInternal && to.indexOf(\":\") > -1) try {\n\t\t\tnew URL(to);\n\t\t\tif (isDangerousProtocol(to, router.protocolAllowlist)) {\n\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked Link with dangerous protocol: ${to}`);\n\t\t\t\treturn {\n\t\t\t\t\t...propsSafeToSpread,\n\t\t\t\t\tref: innerRef,\n\t\t\t\t\thref: void 0,\n\t\t\t\t\t...children && { children },\n\t\t\t\t\t...target && { target },\n\t\t\t\t\t...disabled && { disabled },\n\t\t\t\t\t...style && { style },\n\t\t\t\t\t...className && { className }\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...propsSafeToSpread,\n\t\t\t\tref: innerRef,\n\t\t\t\thref: to,\n\t\t\t\t...children && { children },\n\t\t\t\t...target && { target },\n\t\t\t\t...disabled && { disabled },\n\t\t\t\t...style && { style },\n\t\t\t\t...className && { className }\n\t\t\t};\n\t\t} catch {}\n\t\tconst next = router.buildLocation({\n\t\t\t...options,\n\t\t\tfrom: options.from\n\t\t});\n\t\tconst hrefOption = getHrefOption(next.maskedLocation ? next.maskedLocation.publicHref : next.publicHref, next.maskedLocation ? next.maskedLocation.external : next.external, router.history, disabled);\n\t\tconst externalLink = (() => {\n\t\t\tif (hrefOption?.external) {\n\t\t\t\tif (isDangerousProtocol(hrefOption.href, router.protocolAllowlist)) {\n\t\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked Link with dangerous protocol: ${hrefOption.href}`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn hrefOption.href;\n\t\t\t}\n\t\t\tif (safeInternal) return void 0;\n\t\t\tif (typeof to === \"string\" && to.indexOf(\":\") > -1) try {\n\t\t\t\tnew URL(to);\n\t\t\t\tif (isDangerousProtocol(to, router.protocolAllowlist)) {\n\t\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Blocked Link with dangerous protocol: ${to}`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn to;\n\t\t\t} catch {}\n\t\t})();\n\t\tconst isActive = (() => {\n\t\t\tif (externalLink) return false;\n\t\t\tconst currentLocation = router.stores.location.get();\n\t\t\tconst exact = activeOptions?.exact ?? false;\n\t\t\tif (exact) {\n\t\t\t\tif (!exactPathTest(currentLocation.pathname, next.pathname, router.basepath)) return false;\n\t\t\t} else {\n\t\t\t\tconst currentPathSplit = removeTrailingSlash(currentLocation.pathname, router.basepath);\n\t\t\t\tconst nextPathSplit = removeTrailingSlash(next.pathname, router.basepath);\n\t\t\t\tif (!(currentPathSplit.startsWith(nextPathSplit) && (currentPathSplit.length === nextPathSplit.length || currentPathSplit[nextPathSplit.length] === \"/\"))) return false;\n\t\t\t}\n\t\t\tif (activeOptions?.includeSearch ?? true) {\n\t\t\t\tif (currentLocation.search !== next.search) {\n\t\t\t\t\tconst currentSearchEmpty = !currentLocation.search || typeof currentLocation.search === \"object\" && !hasKeys(currentLocation.search);\n\t\t\t\t\tconst nextSearchEmpty = !next.search || typeof next.search === \"object\" && !hasKeys(next.search);\n\t\t\t\t\tif (!(currentSearchEmpty && nextSearchEmpty)) {\n\t\t\t\t\t\tif (!deepEqual(currentLocation.search, next.search, {\n\t\t\t\t\t\t\tpartial: !exact,\n\t\t\t\t\t\t\tignoreUndefined: !activeOptions?.explicitUndefined\n\t\t\t\t\t\t})) return false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (activeOptions?.includeHash) return false;\n\t\t\treturn true;\n\t\t})();\n\t\tif (externalLink) return {\n\t\t\t...propsSafeToSpread,\n\t\t\tref: innerRef,\n\t\t\thref: externalLink,\n\t\t\t...children && { children },\n\t\t\t...target && { target },\n\t\t\t...disabled && { disabled },\n\t\t\t...style && { style },\n\t\t\t...className && { className }\n\t\t};\n\t\tconst resolvedActiveProps = isActive ? functionalUpdate(activeProps, {}) ?? STATIC_ACTIVE_OBJECT : STATIC_EMPTY_OBJECT;\n\t\tconst resolvedInactiveProps = isActive ? STATIC_EMPTY_OBJECT : functionalUpdate(inactiveProps, {}) ?? STATIC_EMPTY_OBJECT;\n\t\tconst resolvedStyle = (() => {\n\t\t\tconst baseStyle = style;\n\t\t\tconst activeStyle = resolvedActiveProps.style;\n\t\t\tconst inactiveStyle = resolvedInactiveProps.style;\n\t\t\tif (!baseStyle && !activeStyle && !inactiveStyle) return;\n\t\t\tif (baseStyle && !activeStyle && !inactiveStyle) return baseStyle;\n\t\t\tif (!baseStyle && activeStyle && !inactiveStyle) return activeStyle;\n\t\t\tif (!baseStyle && !activeStyle && inactiveStyle) return inactiveStyle;\n\t\t\treturn {\n\t\t\t\t...baseStyle,\n\t\t\t\t...activeStyle,\n\t\t\t\t...inactiveStyle\n\t\t\t};\n\t\t})();\n\t\tconst resolvedClassName = (() => {\n\t\t\tconst baseClassName = className;\n\t\t\tconst activeClassName = resolvedActiveProps.className;\n\t\t\tconst inactiveClassName = resolvedInactiveProps.className;\n\t\t\tif (!baseClassName && !activeClassName && !inactiveClassName) return \"\";\n\t\t\tlet out = \"\";\n\t\t\tif (baseClassName) out = baseClassName;\n\t\t\tif (activeClassName) out = out ? `${out} ${activeClassName}` : activeClassName;\n\t\t\tif (inactiveClassName) out = out ? `${out} ${inactiveClassName}` : inactiveClassName;\n\t\t\treturn out;\n\t\t})();\n\t\treturn {\n\t\t\t...propsSafeToSpread,\n\t\t\t...resolvedActiveProps,\n\t\t\t...resolvedInactiveProps,\n\t\t\thref: hrefOption?.href,\n\t\t\tref: innerRef,\n\t\t\tdisabled: !!disabled,\n\t\t\ttarget,\n\t\t\t...resolvedStyle && { style: resolvedStyle },\n\t\t\t...resolvedClassName && { className: resolvedClassName },\n\t\t\t...disabled && STATIC_DISABLED_PROPS,\n\t\t\t...isActive && STATIC_ACTIVE_PROPS\n\t\t};\n\t}\n\tconst isHydrated = useHydrated();\n\tconst stableSearch = useValueStable(options.search);\n\tconst stableParams = useValueStable(options.params);\n\tconst stableActiveOptions = useValueStable(activeOptions);\n\tconst _options = React$1.useMemo(() => options, [\n\t\trouter,\n\t\toptions.from,\n\t\toptions._fromLocation,\n\t\toptions.hash,\n\t\toptions.to,\n\t\tstableSearch,\n\t\tstableParams,\n\t\toptions.state,\n\t\toptions.mask,\n\t\toptions.unsafeRelative\n\t]);\n\tconst selectLinkState = React$1.useCallback((location) => {\n\t\tconst next = router.buildLocation({\n\t\t\t_fromLocation: location,\n\t\t\t..._options\n\t\t});\n\t\tconst hrefOption = getHrefOption(next.maskedLocation ? next.maskedLocation.publicHref : next.publicHref, next.maskedLocation ? next.maskedLocation.external : next.external, router.history, disabled);\n\t\tconst externalLink = resolveExternalLink(hrefOption, to, router.protocolAllowlist);\n\t\treturn [\n\t\t\threfOption?.href,\n\t\t\texternalLink,\n\t\t\tresolveIsActive(location, next, stableActiveOptions, router.basepath, isHydrated, externalLink !== void 0)\n\t\t];\n\t}, [\n\t\tstableActiveOptions,\n\t\tdisabled,\n\t\tisHydrated,\n\t\t_options,\n\t\trouter,\n\t\tto\n\t]);\n\tconst [href, externalLink, isActive] = useStore(router.stores.location, selectLinkState, compareLinkState);\n\tconst resolvedActiveProps = isActive ? functionalUpdate(activeProps, {}) ?? STATIC_ACTIVE_OBJECT : STATIC_EMPTY_OBJECT;\n\tconst resolvedInactiveProps = isActive ? STATIC_EMPTY_OBJECT : functionalUpdate(inactiveProps, {}) ?? STATIC_EMPTY_OBJECT;\n\tconst resolvedClassName = [\n\t\tclassName,\n\t\tresolvedActiveProps.className,\n\t\tresolvedInactiveProps.className\n\t].filter(Boolean).join(\" \");\n\tconst resolvedStyle = (style || resolvedActiveProps.style || resolvedInactiveProps.style) && {\n\t\t...style,\n\t\t...resolvedActiveProps.style,\n\t\t...resolvedInactiveProps.style\n\t};\n\tconst hasRenderFetched = React$1.useRef(false);\n\tconst preload = options.reloadDocument || externalLink || disabled ? false : userPreload ?? router.options.defaultPreload;\n\tconst preloadDelay = userPreloadDelay ?? router.options.defaultPreloadDelay ?? 0;\n\tconst doPreload = React$1.useCallback(() => {\n\t\trouter.preloadRoute(_options).catch((err) => {\n\t\t\tconsole.warn(err);\n\t\t\tconsole.warn(preloadWarning);\n\t\t});\n\t}, [router, _options]);\n\tconst enqueuePreload = React$1.useCallback((e) => {\n\t\tif (!e) {\n\t\t\tcancelPreload(innerRef);\n\t\t\treturn;\n\t\t}\n\t\tif (!(e.isIntersecting ?? preload === \"intent\")) {\n\t\t\tif (e.isIntersecting === false) cancelPreload(innerRef);\n\t\t\treturn;\n\t\t}\n\t\tif (!preloadDelay) {\n\t\t\tdoPreload();\n\t\t\treturn;\n\t\t}\n\t\tif (timeoutMap.has(innerRef)) return;\n\t\ttimeoutMap.set(innerRef, setTimeout(() => {\n\t\t\ttimeoutMap.delete(innerRef);\n\t\t\tdoPreload();\n\t\t}, preloadDelay));\n\t}, [\n\t\tdoPreload,\n\t\tinnerRef,\n\t\tpreload,\n\t\tpreloadDelay\n\t]);\n\tuseIntersectionObserver(innerRef, enqueuePreload, preload !== \"viewport\");\n\tReact$1.useEffect(() => {\n\t\tif (hasRenderFetched.current) return;\n\t\tif (preload === \"render\") {\n\t\t\tdoPreload();\n\t\t\thasRenderFetched.current = true;\n\t\t}\n\t}, [doPreload, preload]);\n\tconst handleClick = (e) => {\n\t\tconst elementTarget = e.currentTarget.getAttribute(\"target\");\n\t\tconst effectiveTarget = target !== void 0 ? target : elementTarget;\n\t\tif (!disabled && !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && !e.defaultPrevented && (!effectiveTarget || effectiveTarget === \"_self\") && e.button === 0) {\n\t\t\te.preventDefault();\n\t\t\trouter.navigate({\n\t\t\t\t..._options,\n\t\t\t\treplace,\n\t\t\t\tresetScroll,\n\t\t\t\thashScrollIntoView,\n\t\t\t\tstartTransition,\n\t\t\t\tviewTransition,\n\t\t\t\tignoreBlocker\n\t\t\t});\n\t\t}\n\t};\n\tif (externalLink) return {\n\t\t...propsSafeToSpread,\n\t\tref: innerRef,\n\t\thref: externalLink,\n\t\t...children && { children },\n\t\t...target && { target },\n\t\t...disabled && { disabled },\n\t\t...style && { style },\n\t\t...className && { className },\n\t\t...onClick && { onClick },\n\t\t...onBlur && { onBlur },\n\t\t...onFocus && { onFocus },\n\t\t...onMouseEnter && { onMouseEnter },\n\t\t...onMouseLeave && { onMouseLeave },\n\t\t...onTouchStart && { onTouchStart }\n\t};\n\tconst handleTouchStart = () => {\n\t\tif (preload !== \"intent\") return;\n\t\tdoPreload();\n\t};\n\tconst handleLeave = () => {\n\t\tif (preload === \"intent\") cancelPreload(innerRef);\n\t};\n\treturn {\n\t\t...propsSafeToSpread,\n\t\t...resolvedActiveProps,\n\t\t...resolvedInactiveProps,\n\t\thref,\n\t\tref: innerRef,\n\t\tonClick: composeHandlers([onClick, handleClick]),\n\t\tonBlur: composeHandlers([onBlur, handleLeave]),\n\t\tonFocus: composeHandlers([onFocus, enqueuePreload]),\n\t\tonMouseEnter: composeHandlers([onMouseEnter, enqueuePreload]),\n\t\tonMouseLeave: composeHandlers([onMouseLeave, handleLeave]),\n\t\tonTouchStart: composeHandlers([onTouchStart, handleTouchStart]),\n\t\tdisabled: !!disabled,\n\t\ttarget,\n\t\t...resolvedStyle && { style: resolvedStyle },\n\t\t...resolvedClassName && { className: resolvedClassName },\n\t\t...disabled && STATIC_DISABLED_PROPS,\n\t\t...isActive && STATIC_ACTIVE_PROPS\n\t};\n}\nvar STATIC_EMPTY_OBJECT = {};\nvar STATIC_ACTIVE_OBJECT = { className: \"active\" };\nvar STATIC_DISABLED_PROPS = {\n\trole: \"link\",\n\t\"aria-disabled\": true\n};\nvar STATIC_ACTIVE_PROPS = {\n\t\"data-status\": \"active\",\n\t\"aria-current\": \"page\"\n};\nvar timeoutMap = /* @__PURE__ */ new WeakMap();\nvar cancelPreload = (eventTarget) => {\n\tclearTimeout(timeoutMap.get(eventTarget));\n\ttimeoutMap.delete(eventTarget);\n};\nvar composeHandlers = (handlers) => (e) => {\n\tfor (const handler of handlers) {\n\t\tif (!handler) continue;\n\t\tif (e.defaultPrevented) return;\n\t\thandler(e);\n\t}\n};\nfunction getHrefOption(publicHref, external, history, disabled) {\n\tif (disabled) return void 0;\n\tif (external) return {\n\t\thref: publicHref,\n\t\texternal: true\n\t};\n\treturn {\n\t\thref: history.createHref(publicHref) || \"/\",\n\t\texternal: false\n\t};\n}\nfunction isSafeInternal(to) {\n\tif (typeof to !== \"string\") return false;\n\tconst zero = to.charCodeAt(0);\n\tif (zero === 47) return to.charCodeAt(1) !== 47;\n\treturn zero === 46;\n}\n/**\n* Creates a typed Link-like component that preserves TanStack Router's\n* navigation semantics and type-safety while delegating rendering to the\n* provided host component.\n*\n* Useful for integrating design system anchors/buttons while keeping\n* router-aware props (eg. `to`, `params`, `search`, `preload`).\n*\n* @param Comp The host component to render (eg. a design-system Link/Button)\n* @returns A router-aware component with the same API as `Link`.\n* @link https://tanstack.com/router/latest/docs/framework/react/guide/custom-link\n*/\nfunction createLink(Comp) {\n\treturn React$1.forwardRef(function CreatedLink(props, ref) {\n\t\treturn /* @__PURE__ */ jsx(Link, {\n\t\t\t...props,\n\t\t\t_asChild: Comp,\n\t\t\tref\n\t\t});\n\t});\n}\n/**\n* A strongly-typed anchor component for declarative navigation.\n* Handles path, search, hash and state updates with optional route preloading\n* and active-state styling.\n*\n* Props:\n* - `preload`: Controls route preloading (eg. 'intent', 'render', 'viewport', true/false)\n* - `preloadDelay`: Delay in ms before preloading on focus, hover, or viewport entry\n* - `activeProps`/`inactiveProps`: Additional props merged when link is active/inactive\n* - `resetScroll`/`hashScrollIntoView`: Control scroll behavior on navigation\n* - `viewTransition`/`startTransition`: Use View Transitions/React transitions for navigation\n* - `ignoreBlocker`: Bypass registered blockers\n*\n* @returns An anchor-like element that navigates without full page reloads.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/linkComponent\n*/\nvar Link = React$1.forwardRef((props, ref) => {\n\tconst { _asChild, ...rest } = props;\n\tconst { type: _type, ...linkProps } = useLinkProps(rest, ref);\n\tconst children = typeof rest.children === \"function\" ? rest.children({ isActive: linkProps[\"data-status\"] === \"active\" }) : rest.children;\n\tif (!_asChild) {\n\t\tconst { disabled: _, ...rest } = linkProps;\n\t\treturn React$1.createElement(\"a\", rest, children);\n\t}\n\treturn React$1.createElement(_asChild, linkProps, children);\n});\n/**\n* Validate and reuse navigation options for `Link`, `navigate` or `redirect`.\n* Accepts a literal options object and returns it typed for later spreading.\n* @example\n* const opts = linkOptions({ to: '/dashboard', search: { tab: 'home' } })\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/linkOptions\n*/\nvar linkOptions = (options) => {\n\treturn options;\n};\n/**\n* Type-check a literal object for use with `Link`, `navigate` or `redirect`.\n* Use to validate and reuse navigation options across your app.\n* @example\n* const opts = linkOptions({ to: '/dashboard', search: { tab: 'home' } })\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/linkOptions\n*/\n//#endregion\nexport { Link, createLink, linkOptions, useLinkProps };\n\n//# sourceMappingURL=link.js.map","import { useRouter } from \"./useRouter.js\";\nimport { useMatch } from \"./useMatch.js\";\nimport { useLoaderData } from \"./useLoaderData.js\";\nimport { useLoaderDeps } from \"./useLoaderDeps.js\";\nimport { useParams } from \"./useParams.js\";\nimport { useSearch } from \"./useSearch.js\";\nimport { useNavigate } from \"./useNavigate.js\";\nimport { useRouteContext } from \"./useRouteContext.js\";\nimport { Link } from \"./link.js\";\nimport { BaseRootRoute, BaseRoute, BaseRouteApi, notFound } from \"@tanstack/router-core\";\nimport React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/route.tsx\n/**\n* Returns a route-specific API that exposes type-safe hooks pre-bound\n* to a single route ID. Useful for consuming a route's APIs from files\n* where the route object isn't directly imported (e.g. code-split files).\n*\n* @param id Route ID string literal for the target route.\n* @returns A `RouteApi` instance bound to the given route ID.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/getRouteApiFunction\n*/\nfunction getRouteApi(id) {\n\treturn new RouteApi({ id });\n}\nvar RouteApi = class extends BaseRouteApi {\n\t/**\n\t* @deprecated Use the `getRouteApi` function instead.\n\t*/\n\tconstructor({ id }) {\n\t\tsuper({ id });\n\t\tthis.useMatch = (opts) => {\n\t\t\treturn useMatch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tfrom: this.id,\n\t\t\t\tstructuralSharing: opts?.structuralSharing\n\t\t\t});\n\t\t};\n\t\tthis.useRouteContext = (opts) => {\n\t\t\treturn useRouteContext({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useSearch = (opts) => {\n\t\t\treturn useSearch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useParams = (opts) => {\n\t\t\treturn useParams({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderDeps = (opts) => {\n\t\t\treturn useLoaderDeps({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id,\n\t\t\t\tstrict: false\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderData = (opts) => {\n\t\t\treturn useLoaderData({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id,\n\t\t\t\tstrict: false\n\t\t\t});\n\t\t};\n\t\tthis.useNavigate = () => {\n\t\t\treturn useNavigate({ from: useRouter().routesById[this.id].fullPath });\n\t\t};\n\t\tthis.notFound = (opts) => {\n\t\t\treturn notFound({\n\t\t\t\trouteId: this.id,\n\t\t\t\t...opts\n\t\t\t});\n\t\t};\n\t\tthis.Link = React.forwardRef((props, ref) => {\n\t\t\tconst fullPath = useRouter().routesById[this.id].fullPath;\n\t\t\treturn /* @__PURE__ */ jsx(Link, {\n\t\t\t\tref,\n\t\t\t\tfrom: fullPath,\n\t\t\t\t...props\n\t\t\t});\n\t\t});\n\t}\n};\nvar Route = class extends BaseRoute {\n\t/**\n\t* @deprecated Use the `createRoute` function instead.\n\t*/\n\tconstructor(options) {\n\t\tsuper(options);\n\t\tthis.useMatch = (opts) => {\n\t\t\treturn useMatch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tfrom: this.id,\n\t\t\t\tstructuralSharing: opts?.structuralSharing\n\t\t\t});\n\t\t};\n\t\tthis.useRouteContext = (opts) => {\n\t\t\treturn useRouteContext({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useSearch = (opts) => {\n\t\t\treturn useSearch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useParams = (opts) => {\n\t\t\treturn useParams({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderDeps = (opts) => {\n\t\t\treturn useLoaderDeps({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderData = (opts) => {\n\t\t\treturn useLoaderData({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useNavigate = () => {\n\t\t\treturn useNavigate({ from: this.fullPath });\n\t\t};\n\t\tthis.Link = React.forwardRef((props, ref) => {\n\t\t\treturn /* @__PURE__ */ jsx(Link, {\n\t\t\t\tref,\n\t\t\t\tfrom: this.fullPath,\n\t\t\t\t...props\n\t\t\t});\n\t\t});\n\t}\n};\n/**\n* Creates a non-root Route instance for code-based routing.\n*\n* Use this to define a route that will be composed into a route tree\n* (typically via a parent route's `addChildren`). If you're using file-based\n* routing, prefer `createFileRoute`.\n*\n* @param options Route options (path, component, loader, context, etc.).\n* @returns A Route instance to be attached to the route tree.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRouteFunction\n*/\nfunction createRoute(options) {\n\treturn new Route(options);\n}\n/**\n* Creates a root route factory that requires a router context type.\n*\n* Use when your root route expects `context` to be provided to `createRouter`.\n* The returned function behaves like `createRootRoute` but enforces a context type.\n*\n* @returns A factory function to configure and return a root route.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRootRouteWithContextFunction\n*/\nfunction createRootRouteWithContext() {\n\treturn (options) => {\n\t\treturn createRootRoute(options);\n\t};\n}\n/**\n* @deprecated Use the `createRootRouteWithContext` function instead.\n*/\nvar rootRouteWithContext = createRootRouteWithContext;\nvar RootRoute = class extends BaseRootRoute {\n\t/**\n\t* @deprecated `RootRoute` is now an internal implementation detail. Use `createRootRoute()` instead.\n\t*/\n\tconstructor(options) {\n\t\tsuper(options);\n\t\tthis.useMatch = (opts) => {\n\t\t\treturn useMatch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tfrom: this.id,\n\t\t\t\tstructuralSharing: opts?.structuralSharing\n\t\t\t});\n\t\t};\n\t\tthis.useRouteContext = (opts) => {\n\t\t\treturn useRouteContext({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useSearch = (opts) => {\n\t\t\treturn useSearch({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useParams = (opts) => {\n\t\t\treturn useParams({\n\t\t\t\tselect: opts?.select,\n\t\t\t\tstructuralSharing: opts?.structuralSharing,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderDeps = (opts) => {\n\t\t\treturn useLoaderDeps({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useLoaderData = (opts) => {\n\t\t\treturn useLoaderData({\n\t\t\t\t...opts,\n\t\t\t\tfrom: this.id\n\t\t\t});\n\t\t};\n\t\tthis.useNavigate = () => {\n\t\t\treturn useNavigate({ from: this.fullPath });\n\t\t};\n\t\tthis.Link = React.forwardRef((props, ref) => {\n\t\t\treturn /* @__PURE__ */ jsx(Link, {\n\t\t\t\tref,\n\t\t\t\tfrom: this.fullPath,\n\t\t\t\t...props\n\t\t\t});\n\t\t});\n\t}\n};\n/**\n* Creates a root Route instance used to build your route tree.\n*\n* Typically paired with `createRouter({ routeTree })`. If you need to require\n* a typed router context, use `createRootRouteWithContext` instead.\n*\n* @param options Root route options (component, error, pending, etc.).\n* @returns A root route instance.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRootRouteFunction\n*/\nfunction createRootRoute(options) {\n\treturn new RootRoute(options);\n}\nfunction createRouteMask(opts) {\n\treturn opts;\n}\nvar NotFoundRoute = class extends Route {\n\tconstructor(options) {\n\t\tsuper({\n\t\t\t...options,\n\t\t\tid: \"404\"\n\t\t});\n\t}\n};\n//#endregion\nexport { NotFoundRoute, RootRoute, Route, RouteApi, createRootRoute, createRootRouteWithContext, createRoute, createRouteMask, getRouteApi, rootRouteWithContext };\n\n//# sourceMappingURL=route.js.map","import { CatchBoundary } from \"./CatchBoundary.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { isNotFound } from \"@tanstack/router-core\";\nimport \"react\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { useStore } from \"@tanstack/react-store\";\n//#region src/not-found.tsx\nfunction CatchNotFound(props) {\n\tconst router = useRouter();\n\tif (isServer ?? router.isServer) {\n\t\tconst resetKey = `not-found-${router.stores.location.get().pathname}-${router.stores.status.get()}`;\n\t\treturn /* @__PURE__ */ jsx(CatchBoundary, {\n\t\t\tgetResetKey: () => resetKey,\n\t\t\tonCatch: (error, errorInfo) => {\n\t\t\t\tif (isNotFound(error)) props.onCatch?.(error, errorInfo);\n\t\t\t\telse throw error;\n\t\t\t},\n\t\t\terrorComponent: ({ error }) => {\n\t\t\t\tif (isNotFound(error)) return props.fallback?.(error);\n\t\t\t\telse throw error;\n\t\t\t},\n\t\t\tchildren: props.children\n\t\t});\n\t}\n\tconst resetKey = `not-found-${useStore(router.stores.location, (location) => location.pathname)}-${useStore(router.stores.status, (status) => status)}`;\n\treturn /* @__PURE__ */ jsx(CatchBoundary, {\n\t\tgetResetKey: () => resetKey,\n\t\tonCatch: (error, errorInfo) => {\n\t\t\tif (isNotFound(error)) props.onCatch?.(error, errorInfo);\n\t\t\telse throw error;\n\t\t},\n\t\terrorComponent: ({ error }) => {\n\t\t\tif (isNotFound(error)) return props.fallback?.(error);\n\t\t\telse throw error;\n\t\t},\n\t\tchildren: props.children\n\t});\n}\nfunction DefaultGlobalNotFound() {\n\treturn /* @__PURE__ */ jsx(\"p\", { children: \"Not Found\" });\n}\n//#endregion\nexport { CatchNotFound, DefaultGlobalNotFound };\n\n//# sourceMappingURL=not-found.js.map","import \"react\";\nimport { Fragment, jsx } from \"react/jsx-runtime\";\n//#region src/SafeFragment.tsx\nfunction SafeFragment(props) {\n\treturn /* @__PURE__ */ jsx(Fragment, { children: props.children });\n}\n//#endregion\nexport { SafeFragment };\n\n//# sourceMappingURL=SafeFragment.js.map","import { wrapInNonRouteComponentContext } from \"./nonRouteComponentContext.js\";\nimport { DefaultGlobalNotFound } from \"./not-found.js\";\nimport \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/renderRouteNotFound.tsx\n/**\n* Renders a not found component for a route when no matching route is found.\n*\n* @param router - The router instance containing the route configuration\n* @param route - The route that triggered the not found state\n* @param data - Additional data to pass to the not found component\n* @returns The rendered not found component or a default fallback component\n*/\nfunction renderRouteNotFound(router, route, data) {\n\tif (!route.options.notFoundComponent) {\n\t\tif (router.options.defaultNotFoundComponent) {\n\t\t\tconst notFoundElement = /* @__PURE__ */ jsx(router.options.defaultNotFoundComponent, { ...data });\n\t\t\treturn process.env.NODE_ENV !== \"production\" ? wrapInNonRouteComponentContext(notFoundElement, \"notFoundComponent\") : notFoundElement;\n\t\t}\n\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\tif (!route.options.notFoundComponent) console.warn(`Warning: A notFoundError was encountered on the route with ID \"${route.id}\", but a notFoundComponent option was not configured, nor was a router level defaultNotFoundComponent configured. Consider configuring at least one of these to avoid TanStack Router's overly generic defaultNotFoundComponent (<p>Not Found</p>)`);\n\t\t}\n\t\treturn /* @__PURE__ */ jsx(DefaultGlobalNotFound, {});\n\t}\n\tconst notFoundElement = /* @__PURE__ */ jsx(route.options.notFoundComponent, { ...data });\n\treturn process.env.NODE_ENV !== \"production\" ? wrapInNonRouteComponentContext(notFoundElement, \"notFoundComponent\") : notFoundElement;\n}\n//#endregion\nexport { renderRouteNotFound };\n\n//# sourceMappingURL=renderRouteNotFound.js.map","\"use client\";\nimport { nonRouteComponentContext, wrapInNonRouteComponentContext } from \"./nonRouteComponentContext.js\";\nimport { CatchBoundary, ErrorComponent } from \"./CatchBoundary.js\";\nimport { ClientOnly } from \"./ClientOnly.js\";\nimport { matchContext } from \"./matchContext.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { CatchNotFound } from \"./not-found.js\";\nimport { SafeFragment } from \"./SafeFragment.js\";\nimport { renderRouteNotFound } from \"./renderRouteNotFound.js\";\nimport { ScrollRestoration } from \"./scroll-restoration.js\";\nimport { isNotFound, rootRouteId } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nimport { useStore } from \"@tanstack/react-store\";\n//#region src/Match.tsx\nfunction renderPending(router, route) {\n\tconst PendingComponent = route?.options.pendingComponent ?? router.options.defaultPendingComponent;\n\tif (!PendingComponent) return null;\n\tconst pendingElement = /* @__PURE__ */ jsx(PendingComponent, {});\n\treturn process.env.NODE_ENV !== \"production\" ? wrapInNonRouteComponentContext(pendingElement, \"pendingComponent\") : pendingElement;\n}\nvar outletMatchSelectionEqual = (a, b) => a[0] === b[0] && a[1] === b[1];\nvar canWrapInSuspense = (router, route, ssr) => !route.isRoot || route.options.shellComponent || route.options.wrapInSuspense || ssr === false || ssr === \"data-only\" || !((isServer ?? router.isServer) || router.ssr);\nvar Match = React$1.memo(function MatchImpl({ routeId }) {\n\tconst router = useRouter();\n\tif (isServer ?? router.isServer) return /* @__PURE__ */ jsx(MatchView, {\n\t\trouter,\n\t\tmatch: router.stores.byRoute.get(routeId).get()\n\t});\n\treturn /* @__PURE__ */ jsx(MatchView, {\n\t\trouter,\n\t\tmatch: useStore(router.stores.getMatchStore(routeId), (value) => value)\n\t});\n});\nfunction MatchView({ router, match }) {\n\tconst route = router.routesById[match.routeId];\n\tconst pendingElement = renderPending(router, route);\n\tconst routeErrorComponent = route.options.errorComponent ?? router.options.defaultErrorComponent;\n\tconst routeOnCatch = route.options.onCatch ?? router.options.defaultOnCatch;\n\tconst routeNotFoundComponent = route.isRoot ? route.options.notFoundComponent ?? router.options.notFoundRoute?.options.component : route.options.notFoundComponent;\n\tconst resolvedNoSsr = match.ssr === false || match.ssr === \"data-only\";\n\tconst ResolvedSuspenseBoundary = canWrapInSuspense(router, route, match.ssr) && (route.options.wrapInSuspense ?? pendingElement ?? (route.options.errorComponent?.preload || resolvedNoSsr)) ? React$1.Suspense : SafeFragment;\n\tconst ResolvedCatchBoundary = routeErrorComponent ? CatchBoundary : SafeFragment;\n\tconst ResolvedNotFoundBoundary = routeNotFoundComponent ? CatchNotFound : SafeFragment;\n\treturn /* @__PURE__ */ jsxs(route.isRoot ? route.options.shellComponent ?? SafeFragment : SafeFragment, { children: [/* @__PURE__ */ jsx(matchContext.Provider, {\n\t\tvalue: match.routeId,\n\t\tchildren: /* @__PURE__ */ jsx(ResolvedSuspenseBoundary, {\n\t\t\tfallback: pendingElement,\n\t\t\tchildren: /* @__PURE__ */ jsx(ResolvedCatchBoundary, {\n\t\t\t\tgetResetKey: () => match,\n\t\t\t\terrorComponent: routeErrorComponent,\n\t\t\t\tonCatch: (error, errorInfo) => {\n\t\t\t\t\tif (isNotFound(error)) {\n\t\t\t\t\t\terror.routeId ??= match.routeId;\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tif (process.env.NODE_ENV !== \"production\") console.warn(`Warning: Error in route match: ${match.id}`);\n\t\t\t\t\trouteOnCatch?.(error, errorInfo);\n\t\t\t\t},\n\t\t\t\tchildren: /* @__PURE__ */ jsx(ResolvedNotFoundBoundary, {\n\t\t\t\t\tfallback: (error) => {\n\t\t\t\t\t\terror.routeId ??= match.routeId;\n\t\t\t\t\t\tif (error.routeId !== match.routeId) throw error;\n\t\t\t\t\t\tconst notFoundElement = React$1.createElement(routeNotFoundComponent, error);\n\t\t\t\t\t\treturn process.env.NODE_ENV !== \"production\" ? wrapInNonRouteComponentContext(notFoundElement, \"notFoundComponent\") : notFoundElement;\n\t\t\t\t\t},\n\t\t\t\t\tchildren: resolvedNoSsr ? /* @__PURE__ */ jsx(ClientOnly, {\n\t\t\t\t\t\tfallback: pendingElement,\n\t\t\t\t\t\tchildren: /* @__PURE__ */ jsx(MatchInner, { match })\n\t\t\t\t\t}) : /* @__PURE__ */ jsx(MatchInner, { match })\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\t}), (isServer ?? router.isServer) && route.parentRoute?.id === rootRouteId && router.options.scrollRestoration ? /* @__PURE__ */ jsx(ScrollRestoration, {}) : null] });\n}\nvar MatchInner = React$1.memo(function MatchInnerImpl({ match }) {\n\tconst router = useRouter();\n\tconst routeId = match.routeId;\n\tconst route = router.routesById[routeId];\n\tconst key = React$1.useMemo(() => {\n\t\tconst remountDeps = (route.options.remountDeps ?? router.options.defaultRemountDeps)?.({\n\t\t\trouteId,\n\t\t\tloaderDeps: match.loaderDeps,\n\t\t\tparams: match._strictParams,\n\t\t\tsearch: match._strictSearch\n\t\t});\n\t\treturn remountDeps ? JSON.stringify(remountDeps) : void 0;\n\t}, [\n\t\trouteId,\n\t\tmatch.loaderDeps,\n\t\tmatch._strictParams,\n\t\tmatch._strictSearch,\n\t\troute.options.remountDeps,\n\t\trouter.options.defaultRemountDeps\n\t]);\n\tconst out = React$1.useMemo(() => {\n\t\tconst Comp = route.options.component ?? router.options.defaultComponent;\n\t\treturn Comp ? /* @__PURE__ */ jsx(Comp, {}, key) : /* @__PURE__ */ jsx(Outlet, {});\n\t}, [\n\t\tkey,\n\t\troute.options.component,\n\t\trouter.options.defaultComponent\n\t]);\n\tif (match.status === \"pending\") {\n\t\tif (router.ssr && !canWrapInSuspense(router, route, match.ssr)) return out;\n\t\tif (router._tx) throw router._tx[5];\n\t\treturn renderPending(router, route);\n\t}\n\tif (match.status === \"notFound\") return renderRouteNotFound(router, route, match.error);\n\tif (match.status === \"error\") {\n\t\tif (isServer ?? router.isServer) {\n\t\t\tconst errorElement = /* @__PURE__ */ jsx((route.options.errorComponent ?? router.options.defaultErrorComponent) || ErrorComponent, {\n\t\t\t\terror: match.error,\n\t\t\t\treset: void 0,\n\t\t\t\tinfo: { componentStack: \"\" }\n\t\t\t});\n\t\t\treturn process.env.NODE_ENV !== \"production\" ? wrapInNonRouteComponentContext(errorElement, \"errorComponent\") : errorElement;\n\t\t}\n\t\tthrow match.error;\n\t}\n\treturn out;\n});\n/**\n* Render the next child match in the route tree. Typically used inside\n* a route component to render nested routes.\n*\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/outletComponent\n*/\nvar Outlet = React$1.memo(function OutletImpl() {\n\tif (process.env.NODE_ENV !== \"production\") {\n\t\tconst nonRouteComponent = React$1.useContext(nonRouteComponentContext);\n\t\tif (nonRouteComponent) console.warn(`Warning: An <Outlet /> was rendered inside a ${nonRouteComponent}. <Outlet /> should only be rendered inside a route component.`);\n\t}\n\tconst router = useRouter();\n\tconst routeId = React$1.useContext(matchContext);\n\tlet parentGlobalNotFound;\n\tlet parentNotFoundError;\n\tlet childRouteId;\n\tif (isServer ?? router.isServer) {\n\t\tconst matches = router.stores.matches.get();\n\t\tconst parentIndex = matches.findIndex((match) => match.routeId === routeId);\n\t\tconst parentMatch = matches[parentIndex];\n\t\tparentGlobalNotFound = !!parentMatch._notFound;\n\t\tparentNotFoundError = parentMatch.error;\n\t\tchildRouteId = matches[parentIndex + 1]?.routeId;\n\t} else {\n\t\tconst parentMatchStore = router.stores.getMatchStore(routeId);\n\t\t[parentGlobalNotFound, parentNotFoundError] = useStore(parentMatchStore, (match) => [!!match._notFound, match.error], outletMatchSelectionEqual);\n\t\tchildRouteId = useStore(router.stores.ids, (ids) => {\n\t\t\treturn ids[ids.indexOf(routeId) + 1];\n\t\t});\n\t}\n\tif (parentGlobalNotFound) return renderRouteNotFound(router, router.routesById[routeId], parentNotFoundError);\n\tif (!childRouteId) return null;\n\tconst nextMatch = /* @__PURE__ */ jsx(Match, { routeId: childRouteId });\n\tif (routeId === rootRouteId) return /* @__PURE__ */ jsx(React$1.Suspense, {\n\t\tfallback: renderPending(router),\n\t\tchildren: nextMatch\n\t});\n\treturn nextMatch;\n});\n//#endregion\nexport { Match, Outlet, renderPending };\n\n//# sourceMappingURL=Match.js.map","\"use client\";\nimport { useLayoutEffect } from \"./utils.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { getLocationChangeInfo, trimPathRight } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\n//#region src/Transitioner.tsx\nfunction settleOwner(owner, rendered) {\n\tconst settle = owner[1];\n\towner.length = 0;\n\tsettle?.(rendered);\n}\nfunction Transitioner({ t }) {\n\tconst router = useRouter();\n\tconst acknowledgement = router._rendered ??= [];\n\tconst mounted = process.env.NODE_ENV !== \"production\" ? React$1.useRef(false) : void 0;\n\trouter.startTransition = (fn, expected) => new Promise((resolve, reject) => {\n\t\tsettleOwner(acknowledgement, false);\n\t\tacknowledgement.push(expected, resolve);\n\t\tt(router);\n\t\tReact$1.startTransition(() => {\n\t\t\ttry {\n\t\t\t\tfn();\n\t\t\t} catch (cause) {\n\t\t\t\tif (acknowledgement[1] === resolve) acknowledgement.length = 0;\n\t\t\t\treject(cause);\n\t\t\t}\n\t\t});\n\t});\n\tif (process.env.NODE_ENV !== \"production\") router._cancelTransition = () => settleOwner(acknowledgement, false);\n\tuseLayoutEffect(() => {\n\t\tconst unsub = router.history.subscribe(router.load);\n\t\tif (mounted?.current) return unsub;\n\t\tif (mounted) mounted.current = true;\n\t\trouter.updateLatestLocation();\n\t\tconst location = router.latestLocation;\n\t\tconst nextLocation = router.buildLocation({\n\t\t\tto: location.pathname,\n\t\t\tsearch: true,\n\t\t\tparams: true,\n\t\t\thash: true,\n\t\t\tstate: true,\n\t\t\t_includeValidateSearch: true\n\t\t});\n\t\tif (trimPathRight(location.publicHref) !== trimPathRight(nextLocation.publicHref)) {\n\t\t\trouter.commitLocation({\n\t\t\t\t...nextLocation,\n\t\t\t\treplace: true,\n\t\t\t\tignoreBlocker: true\n\t\t\t});\n\t\t\treturn unsub;\n\t\t}\n\t\tconst resolvedLocation = router.stores.resolvedLocation.get();\n\t\tif (resolvedLocation?.href === location.href && resolvedLocation.state.__TSR_key === location.state.__TSR_key) acknowledgement.push(router.stores.matches.get(), (rendered) => {\n\t\t\tif (rendered) router.emit({\n\t\t\t\ttype: \"onRendered\",\n\t\t\t\t...getLocationChangeInfo(resolvedLocation, resolvedLocation)\n\t\t\t});\n\t\t});\n\t\telse if (!router._tx) router.load().catch(console.error);\n\t\treturn unsub;\n\t}, [router, router.history]);\n\treturn null;\n}\n//#endregion\nexport { Transitioner, settleOwner };\n\n//# sourceMappingURL=Transitioner.js.map","\"use client\";\nimport { useLayoutEffect } from \"./utils.js\";\nimport { CatchBoundary } from \"./CatchBoundary.js\";\nimport { matchContext } from \"./matchContext.js\";\nimport { useRouter } from \"./useRouter.js\";\nimport { useStructuralSharing } from \"./useMatch.js\";\nimport { Transitioner, settleOwner } from \"./Transitioner.js\";\nimport { SafeFragment } from \"./SafeFragment.js\";\nimport { Match, renderPending } from \"./Match.js\";\nimport { rootRouteId } from \"@tanstack/router-core\";\nimport * as React$1 from \"react\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { useStore } from \"@tanstack/react-store\";\n//#region src/Matches.tsx\n/**\n* Internal component that renders the router's active match tree with\n* suspense, error, and not-found boundaries. Rendered by `RouterProvider`.\n*/\nfunction Matches() {\n\tconst router = useRouter();\n\tconst rootRoute = router.routesById[rootRouteId];\n\tconst pendingElement = renderPending(router, rootRoute);\n\tconst ResolvedSuspense = (isServer ?? router.isServer) || router.ssr ? SafeFragment : React$1.Suspense;\n\tconst inner = /* @__PURE__ */ jsxs(Fragment, { children: [!(isServer ?? router.isServer) && /* @__PURE__ */ jsx(Transitioner, { t: React$1.useState()[1] }), /* @__PURE__ */ jsx(ResolvedSuspense, {\n\t\tfallback: pendingElement,\n\t\tchildren: /* @__PURE__ */ jsx(MatchesInner, {})\n\t})] });\n\treturn router.options.InnerWrap ? /* @__PURE__ */ jsx(router.options.InnerWrap, { children: inner }) : inner;\n}\nfunction MatchesInner() {\n\tconst router = useRouter();\n\tconst acknowledgement = router._rendered;\n\tconst matches = isServer ?? router.isServer ? router.stores.matches.get() : useStore(router.stores.matches, (value) => acknowledgement[0] ?? value);\n\tconst match = matches[0];\n\tconst routeId = match?.routeId;\n\tuseLayoutEffect(() => {\n\t\tif (acknowledgement[0] === matches) settleOwner(acknowledgement, true);\n\t}, [acknowledgement, matches]);\n\tconst matchComponent = routeId ? /* @__PURE__ */ jsx(Match, { routeId }) : null;\n\treturn /* @__PURE__ */ jsx(matchContext.Provider, {\n\t\tvalue: routeId,\n\t\tchildren: router.options.disableGlobalCatchBoundary ? matchComponent : /* @__PURE__ */ jsx(CatchBoundary, {\n\t\t\tgetResetKey: () => match,\n\t\t\tonCatch: process.env.NODE_ENV !== \"production\" ? (error) => {\n\t\t\t\tconsole.warn(`Warning: The following error wasn't caught by any route! At the very least, consider setting an 'errorComponent' in your RootRoute!`);\n\t\t\t\tconsole.warn(`Warning: ${error.message || error.toString()}`);\n\t\t\t} : void 0,\n\t\t\tchildren: matchComponent\n\t\t})\n\t});\n}\n/**\n* Create a matcher function for testing locations against route definitions.\n*\n* The returned function accepts standard navigation options (`to`, `params`,\n* `search`, etc.) and returns either `false` (no match) or the matched params\n* object when the route matches the current or pending location.\n*\n* Useful for conditional rendering and active UI states because it subscribes\n* the component to the router state used for matching. The returned function's\n* identity changes when that state changes. For imperative checks in event\n* handlers, get the router with `useRouter` and call `router.matchRoute(...)`\n* to avoid that subscription.\n*\n* @returns A `matchRoute(options)` function that returns `false` or params.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useMatchRouteHook\n*/\nfunction useMatchRoute() {\n\tconst router = useRouter();\n\tif (isServer ?? router.isServer) return (opts) => {\n\t\tconst { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts;\n\t\treturn router.matchRoute(rest, {\n\t\t\tpending,\n\t\t\tcaseSensitive,\n\t\t\tfuzzy,\n\t\t\tincludeSearch\n\t\t});\n\t};\n\treturn React$1.useCallback((opts) => {\n\t\tconst { pending, caseSensitive, fuzzy, includeSearch, ...rest } = opts;\n\t\treturn router.matchRoute(rest, {\n\t\t\tpending,\n\t\t\tcaseSensitive,\n\t\t\tfuzzy,\n\t\t\tincludeSearch\n\t\t});\n\t}, [\n\t\trouter,\n\t\tuseStore(router.stores.location, (location) => location.href),\n\t\tuseStore(router.stores.resolvedLocation, (location) => location?.href),\n\t\tuseStore(router.stores.status, (status) => status)\n\t]);\n}\n/**\n* Component that conditionally renders its children based on whether a route\n* matches the provided `from`/`to` options. If `children` is a function, it\n* receives the matched params object.\n*\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/matchRouteComponent\n*/\nfunction MatchRoute(props) {\n\tconst params = useMatchRoute()(props);\n\tif (typeof props.children === \"function\") return props.children(params);\n\treturn params ? props.children : null;\n}\nfunction useMatches(opts) {\n\tconst router = useRouter();\n\tif (isServer ?? router.isServer) {\n\t\tconst matches = router.stores.matches.get();\n\t\treturn opts?.select ? opts.select(matches) : matches;\n\t}\n\treturn useStore(router.stores.matches, useStructuralSharing(opts, router));\n}\n/**\n* Read the presented route matches above the current match, or select a\n* derived value from them.\n*/\nfunction useParentMatches(opts) {\n\tconst contextRouteId = React$1.useContext(matchContext);\n\treturn useMatches({\n\t\tselect: (matches) => {\n\t\t\tmatches = matches.slice(0, matches.findIndex((d) => d.routeId === contextRouteId));\n\t\t\treturn opts?.select ? opts.select(matches) : matches;\n\t\t},\n\t\tstructuralSharing: opts?.structuralSharing\n\t});\n}\n/**\n* Read the presented route matches below the current match, or select a\n* derived value from them.\n*/\nfunction useChildMatches(opts) {\n\tconst contextRouteId = React$1.useContext(matchContext);\n\treturn useMatches({\n\t\tselect: (matches) => {\n\t\t\tmatches = matches.slice(matches.findIndex((d) => d.routeId === contextRouteId) + 1);\n\t\t\treturn opts?.select ? opts.select(matches) : matches;\n\t\t},\n\t\tstructuralSharing: opts?.structuralSharing\n\t});\n}\n//#endregion\nexport { MatchRoute, Matches, useChildMatches, useMatchRoute, useMatches, useParentMatches };\n\n//# sourceMappingURL=Matches.js.map","import { createNonReactiveMutableStore, createNonReactiveReadonlyStore } from \"@tanstack/router-core\";\nimport { isServer } from \"@tanstack/router-core/isServer\";\nimport { batch, createAtom } from \"@tanstack/react-store\";\n//#region src/routerStores.ts\nvar getStoreFactory = (opts) => {\n\tif (isServer ?? opts.isServer) return {\n\t\tcreateMutableStore: createNonReactiveMutableStore,\n\t\tcreateReadonlyStore: createNonReactiveReadonlyStore,\n\t\tbatch: (fn) => fn()\n\t};\n\treturn {\n\t\tcreateMutableStore: createAtom,\n\t\tcreateReadonlyStore: createAtom,\n\t\tbatch\n\t};\n};\n//#endregion\nexport { getStoreFactory };\n\n//# sourceMappingURL=routerStores.js.map","import { getStoreFactory } from \"./routerStores.js\";\nimport { RouterCore } from \"@tanstack/router-core\";\n//#region src/router.ts\n/**\n* Creates a new Router instance for React.\n*\n* Pass the returned router to `RouterProvider` to enable routing.\n* Notable options: `routeTree` (your route definitions) and `context`\n* (required if the root route was created with `createRootRouteWithContext`).\n*\n* @param options Router options used to configure the router.\n* @returns A Router instance to be provided to `RouterProvider`.\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRouterFunction\n*/\nvar createRouter = (options) => {\n\treturn new Router(options);\n};\nvar Router = class extends RouterCore {\n\tconstructor(options) {\n\t\tsuper(options, getStoreFactory);\n\t}\n};\n//#endregion\nexport { Router, createRouter };\n\n//# sourceMappingURL=router.js.map","\"use client\";\nimport { routerContext } from \"./routerContext.js\";\nimport { Matches } from \"./Matches.js\";\nimport { hasKeys } from \"@tanstack/router-core\";\nimport \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/RouterProvider.tsx\n/**\n* Low-level provider that places the router into React context and optionally\n* updates router options from props. Most apps should use `RouterProvider`.\n*/\nfunction RouterContextProvider({ router, children, ...rest }) {\n\tif (hasKeys(rest)) router.update({\n\t\t...router.options,\n\t\t...rest,\n\t\tcontext: {\n\t\t\t...router.options.context,\n\t\t\t...rest.context\n\t\t}\n\t});\n\tconst provider = /* @__PURE__ */ jsx(routerContext.Provider, {\n\t\tvalue: router,\n\t\tchildren\n\t});\n\tif (router.options.Wrap) return /* @__PURE__ */ jsx(router.options.Wrap, { children: provider });\n\treturn provider;\n}\n/**\n* Renders the current match presentation and provides the router to the React\n* tree via context.\n*\n* Accepts the same options as `createRouter` via props to update the router\n* instance after creation.\n*\n* @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRouterFunction\n*/\nfunction RouterProvider({ router, ...rest }) {\n\treturn /* @__PURE__ */ jsx(RouterContextProvider, {\n\t\trouter,\n\t\t...rest,\n\t\tchildren: /* @__PURE__ */ jsx(Matches, {})\n\t});\n}\n//#endregion\nexport { RouterContextProvider, RouterProvider };\n\n//# sourceMappingURL=RouterProvider.js.map","import type { CreateUIAttachment } from \"@anvia/client\";\nimport type { Message, UserContentPart } from \"@anvia/core/completion\";\nimport type {\n AgentRunRequest,\n StudioModelRef,\n StudioModelSummary,\n StudioPipelineLogEntry,\n StudioSession,\n StudioTraceSummary,\n} from \"../../types\";\nimport type { TranscriptEntry } from \"./modules/shared/types\";\n\nexport const studioModelMetadataKey = \"studioModel\";\nexport const supportedAttachmentTypes = \".png,.jpg,.jpeg,.webp,.gif,.pdf,.txt,.md,.csv,.json\";\n\nexport type PromptAttachment = {\n id: string;\n name: string;\n mediaType: string;\n kind: \"image\" | \"document\";\n data: string;\n size: number;\n};\n\nexport type StudioAgentRunRequest = AgentRunRequest & { agentId: string };\n\nexport function studioModelRefFromKey(value: string): StudioModelRef {\n const separator = value.indexOf(\":\");\n if (separator <= 0 || separator === value.length - 1) {\n throw new TypeError(`Invalid Studio model ref: ${value}`);\n }\n return {\n providerId: value.slice(0, separator),\n modelId: value.slice(separator + 1),\n };\n}\n\nexport function isPipelineLogEvent(event: unknown): event is {\n type: \"pipeline_log\";\n log: StudioPipelineLogEntry;\n} {\n return isRecord(event) && event.type === \"pipeline_log\" && isRecord(event.log);\n}\n\nexport function isPipelineFinalEvent(event: unknown): event is {\n type: \"pipeline_final\";\n output: unknown;\n} {\n return isRecord(event) && event.type === \"pipeline_final\" && \"output\" in event;\n}\n\nexport function isErrorStreamEvent(event: unknown): event is {\n type: \"error\";\n error: unknown;\n} {\n return isRecord(event) && event.type === \"error\";\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nexport function enrichTranscriptWithTraceIds(\n transcript: TranscriptEntry[],\n traceSummaries: StudioTraceSummary[],\n): TranscriptEntry[] {\n const sortedTraceIds = [...traceSummaries]\n .sort((left, right) => Date.parse(left.startedAt) - Date.parse(right.startedAt))\n .map((trace) => trace.id);\n let traceIndex = 0;\n let pendingAssistantIndex: number | undefined;\n const next = [...transcript];\n\n function assignPendingTraceId() {\n if (pendingAssistantIndex === undefined) {\n return;\n }\n const traceId = sortedTraceIds[traceIndex];\n traceIndex += 1;\n const entry = next[pendingAssistantIndex];\n if (entry?.kind === \"message\" && entry.role === \"assistant\" && entry.traceId === undefined) {\n if (traceId !== undefined) {\n next[pendingAssistantIndex] = { ...entry, traceId };\n }\n }\n pendingAssistantIndex = undefined;\n }\n\n for (const [index, entry] of next.entries()) {\n if (entry.kind === \"message\" && entry.role === \"user\") {\n assignPendingTraceId();\n continue;\n }\n if (entry.kind === \"message\" && entry.role === \"assistant\") {\n pendingAssistantIndex = index;\n }\n }\n assignPendingTraceId();\n\n return next;\n}\n\nexport function sessionModelRef(session: StudioSession): string {\n const value = session.metadata?.[studioModelMetadataKey];\n return typeof value === \"string\" ? value : \"\";\n}\n\nexport function modelRefAvailable(models: StudioModelSummary[], ref: string): boolean {\n return ref.length > 0 && models.some((model) => model.ref === ref);\n}\n\nexport function modelSelectLabel(model: StudioModelSummary): string {\n const provider = model.providerName ?? model.providerId;\n const name = model.name ?? model.id;\n const modalities = model.modalities?.input\n .filter((modality) => modality !== \"text\")\n .map((modality) => modality.slice(0, 3))\n .join(\"/\");\n return modalities === undefined || modalities.length === 0\n ? `${provider} / ${name}`\n : `${provider} / ${name} (${modalities})`;\n}\n\nexport async function fileToAttachment(file: File): Promise<PromptAttachment> {\n const mediaType = file.type || mediaTypeFromName(file.name);\n const kind = mediaType.startsWith(\"image/\") ? \"image\" : \"document\";\n if (!isSupportedAttachment(mediaType, file.name)) {\n throw new Error(`Unsupported attachment type: ${file.name}`);\n }\n return {\n id: globalThis.crypto.randomUUID(),\n name: file.name,\n mediaType,\n kind,\n data: await fileToBase64(file),\n size: file.size,\n };\n}\n\nfunction fileToBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = () => reject(reader.error ?? new Error(`Failed to read ${file.name}`));\n reader.onload = () => {\n const value = reader.result;\n if (typeof value !== \"string\") {\n reject(new Error(`Failed to read ${file.name}`));\n return;\n }\n resolve(value.slice(value.indexOf(\",\") + 1));\n };\n reader.readAsDataURL(file);\n });\n}\n\nexport function userMessageWithAttachments(text: string, attachments: PromptAttachment[]): Message {\n return { role: \"user\", content: userContentWithAttachments(text, attachments) };\n}\n\nfunction userContentWithAttachments(\n text: string,\n attachments: PromptAttachment[],\n): UserContentPart[] {\n const content: UserContentPart[] = [];\n if (text.length > 0) {\n content.push({ type: \"text\", text });\n }\n for (const attachment of attachments) {\n if (attachment.kind === \"image\") {\n content.push({\n type: \"image\",\n image: { type: \"data\", data: attachment.data },\n mediaType: attachment.mediaType,\n });\n continue;\n }\n content.push({\n type: \"file\",\n data: { type: \"data\", data: attachment.data },\n mediaType: attachment.mediaType,\n filename: attachment.name,\n });\n }\n return content;\n}\n\nexport function uiAttachmentsForPrompt(attachments: PromptAttachment[]): CreateUIAttachment[] {\n return attachments.map((attachment) => ({\n id: attachment.id,\n type: attachment.kind,\n name: attachment.name,\n mediaType: attachment.mediaType,\n data: attachment.data,\n }));\n}\n\nexport function transcriptAttachmentsForPrompt(\n attachments: PromptAttachment[],\n): NonNullable<Extract<TranscriptEntry, { kind: \"message\" }>[\"attachments\"]> {\n return attachments.map((attachment) => ({\n kind: attachment.kind,\n name: attachment.name,\n mediaType: attachment.mediaType,\n data: attachment.data,\n }));\n}\n\nfunction isSupportedAttachment(mediaType: string, name: string): boolean {\n return (\n mediaType.startsWith(\"image/\") ||\n mediaType === \"application/pdf\" ||\n mediaType.startsWith(\"text/\") ||\n [\"application/json\", \"text/markdown\", \"text/csv\"].includes(mediaType) ||\n /\\.(md|csv|json|txt)$/i.test(name)\n );\n}\n\nfunction mediaTypeFromName(name: string): string {\n if (/\\.png$/i.test(name)) return \"image/png\";\n if (/\\.jpe?g$/i.test(name)) return \"image/jpeg\";\n if (/\\.webp$/i.test(name)) return \"image/webp\";\n if (/\\.gif$/i.test(name)) return \"image/gif\";\n if (/\\.pdf$/i.test(name)) return \"application/pdf\";\n if (/\\.md$/i.test(name)) return \"text/markdown\";\n if (/\\.csv$/i.test(name)) return \"text/csv\";\n if (/\\.json$/i.test(name)) return \"application/json\";\n return \"text/plain\";\n}\n","import { useEffect, useState } from \"react\";\n\nexport type StudioTheme = \"system\" | \"light\" | \"dark\";\nexport type ResolvedStudioTheme = \"light\" | \"dark\";\n\nconst studioThemeStorageKey = \"anvia-studio-theme\";\nconst darkModeQuery = \"(prefers-color-scheme: dark)\";\n\nexport function readInitialStudioTheme(): StudioTheme {\n if (typeof window === \"undefined\") {\n return \"system\";\n }\n try {\n const stored = window.localStorage.getItem(studioThemeStorageKey);\n return stored === \"light\" || stored === \"dark\" || stored === \"system\" ? stored : \"system\";\n } catch {\n return \"system\";\n }\n}\n\nexport function resolveStudioTheme(\n theme: StudioTheme,\n prefersDark = systemPrefersDark(),\n): ResolvedStudioTheme {\n return theme === \"system\" ? (prefersDark ? \"dark\" : \"light\") : theme;\n}\n\nexport function nextStudioTheme(theme: StudioTheme): StudioTheme {\n return theme === \"system\" ? \"light\" : theme === \"light\" ? \"dark\" : \"system\";\n}\n\nexport function applyStudioTheme(theme: ResolvedStudioTheme): void {\n if (typeof document === \"undefined\") {\n return;\n }\n document.documentElement.classList.toggle(\"dark\", theme === \"dark\");\n document.documentElement.style.colorScheme = theme;\n}\n\nexport function storeStudioTheme(theme: StudioTheme): void {\n if (typeof window === \"undefined\") {\n return;\n }\n try {\n window.localStorage.setItem(studioThemeStorageKey, theme);\n } catch {\n // Ignore storage failures so private or restricted browsing still toggles the UI.\n }\n}\n\nfunction systemPrefersDark(): boolean {\n return (\n typeof window !== \"undefined\" &&\n typeof window.matchMedia === \"function\" &&\n window.matchMedia(darkModeQuery).matches\n );\n}\n\nexport const initialStudioTheme = readInitialStudioTheme();\napplyStudioTheme(resolveStudioTheme(initialStudioTheme));\n\nexport function useStudioTheme(): {\n theme: StudioTheme;\n resolvedTheme: ResolvedStudioTheme;\n toggleTheme: () => void;\n} {\n const [theme, setTheme] = useState<StudioTheme>(() => initialStudioTheme);\n const [prefersDark, setPrefersDark] = useState(systemPrefersDark);\n const resolvedTheme = resolveStudioTheme(theme, prefersDark);\n\n useEffect(() => {\n if (typeof window.matchMedia !== \"function\") {\n return;\n }\n const media = window.matchMedia(darkModeQuery);\n const update = (event: MediaQueryListEvent) => setPrefersDark(event.matches);\n setPrefersDark(media.matches);\n media.addEventListener(\"change\", update);\n return () => media.removeEventListener(\"change\", update);\n }, []);\n\n useEffect(() => {\n applyStudioTheme(resolvedTheme);\n storeStudioTheme(theme);\n }, [resolvedTheme, theme]);\n\n return {\n theme,\n resolvedTheme,\n toggleTheme: () => setTheme((current) => nextStudioTheme(current)),\n };\n}\n","import { useEffect, useState } from \"react\";\nimport type { StudioAgentModelsSummary, StudioModelSummary } from \"../../../../types\";\nimport { modelRefAvailable } from \"../../app-helpers\";\nimport { errorMessage } from \"../shared/format\";\n\nexport function useAgentModels(props: {\n enabled: boolean;\n selectedAgentId: string | undefined;\n onError: (message: string) => void;\n}): {\n selectedAgentModels: StudioModelSummary[];\n selectedModelRef: string;\n setSelectedModelRef: (modelRef: string) => void;\n} {\n const { enabled, onError, selectedAgentId } = props;\n const [agentModels, setAgentModels] = useState<StudioAgentModelsSummary | undefined>();\n const [selectedModelRef, setSelectedModelRef] = useState(\"\");\n\n useEffect(() => {\n if (!enabled || selectedAgentId === undefined) {\n setAgentModels(undefined);\n setSelectedModelRef(\"\");\n return;\n }\n\n const agentId = selectedAgentId;\n let cancelled = false;\n async function loadAgentModels() {\n try {\n const response = await fetch(`/agents/${encodeURIComponent(agentId)}/models`);\n if (!response.ok) {\n throw new Error(`Agent models failed with HTTP ${response.status}`);\n }\n const body = (await response.json()) as StudioAgentModelsSummary;\n if (cancelled) {\n return;\n }\n setAgentModels(body);\n setSelectedModelRef((current) =>\n modelRefAvailable(body.models, current)\n ? current\n : (body.defaultModelRef ?? body.models[0]?.ref ?? \"\"),\n );\n } catch (loadError) {\n if (!cancelled) {\n setAgentModels(undefined);\n setSelectedModelRef(\"\");\n onError(errorMessage(loadError));\n }\n }\n }\n\n void loadAgentModels();\n return () => {\n cancelled = true;\n };\n }, [enabled, onError, selectedAgentId]);\n\n return {\n selectedAgentModels:\n agentModels !== undefined && agentModels.agentId === selectedAgentId\n ? agentModels.models\n : [],\n selectedModelRef,\n setSelectedModelRef,\n };\n}\n","import type { StudioSandboxSummary, StudioSandboxViewSummary } from \"../../../../types\";\n\nexport type BrowserWorkspace = {\n sandboxRef: string;\n view: StudioSandboxViewSummary;\n};\n\nexport function browserWorkspaceForTool(\n sandboxes: readonly StudioSandboxSummary[],\n agentId: string,\n toolName: string,\n): BrowserWorkspace | undefined {\n const matches = sandboxes.flatMap((sandbox) => {\n if (!sandbox.agentIds.includes(agentId) || !sandbox.toolNames.includes(toolName)) return [];\n return sandbox.views\n .filter((view) => view.protocol === \"novnc\")\n .map((view) => ({ sandboxRef: sandbox.ref, view }));\n });\n return matches.length === 1 ? matches[0] : undefined;\n}\n","import {\n isSkillTool\n} from \"./chunk-YK4WAAS4.js\";\nimport {\n isMcpTool\n} from \"./chunk-5MK3BISB.js\";\nimport {\n isQuestionTool,\n isToolIndex\n} from \"./chunk-KV6QCRQ4.js\";\nimport {\n ToolNotFoundError,\n assertFiniteMinScore,\n assertPositiveSearchLimit,\n assertToolApprovalRequirement,\n createTool,\n parseToolArgs,\n prepareToolCall,\n prepareToolCallFromInput,\n retrieveDocuments,\n toolMayRequireApproval,\n toolResultContentToText\n} from \"./chunk-3CMWKK32.js\";\nimport {\n MemoryCompactionConflictError,\n MemoryCompactionError,\n assertPositiveInteger,\n createMemoryCompactionSummary,\n cumulativeCompactedMessageCount\n} from \"./chunk-KFR4CDGK.js\";\nimport {\n startAgentRunObservers\n} from \"./chunk-VKYZZXP5.js\";\nimport {\n AgentRunBlockedError,\n AgentRunCancelledError,\n AgentStreamClosedError,\n AgentToolSuspensionError,\n MaxTurnsError\n} from \"./chunk-TRQ3XRFD.js\";\nimport {\n mapWithConcurrency\n} from \"./chunk-3RM57ZT2.js\";\nimport {\n Usage,\n assertCompletionRequestSupported,\n createCompletionRequest,\n getAssistantGenerationMetadata,\n isProviderTool,\n isStreamingCompletionModel,\n textFromAssistantContent\n} from \"./chunk-D2ECOWN5.js\";\nimport {\n isJsonValue,\n parseMessage,\n parseMessages,\n toProviderJsonSchema\n} from \"./chunk-PK5LKOFL.js\";\nimport {\n abortError,\n resolveRetryOptions,\n retryDelayMs,\n retryErrorAttributes,\n retryOptionsForFailure,\n throwIfAborted,\n waitForRetry\n} from \"./chunk-FN7HLLAZ.js\";\nimport {\n appendGuardrailPolicies,\n hasEnforcedOutputGuardrails,\n runInputGuardrails,\n runOutputGuardrails\n} from \"./chunk-AZB6N7P4.js\";\n\n// src/agent/interactions.ts\nimport { z } from \"zod\";\nvar nonblank = z.string().trim().min(1);\nvar jsonValueSchema = z.custom(isJsonValue, {\n message: \"Expected a strict JSON value\"\n});\nvar jsonObjectSchema = z.custom(\n (value) => typeof value === \"object\" && value !== null && !Array.isArray(value) && isJsonValue(value),\n { message: \"Expected a strict JSON object\" }\n);\nvar questionChoiceSchema = z.object({\n label: nonblank,\n value: nonblank\n}).strict();\nvar questionPromptSchema = z.object({\n id: nonblank,\n text: nonblank,\n choices: z.array(questionChoiceSchema).min(1).optional(),\n allowCustom: z.boolean().optional()\n}).strict().superRefine((question, context) => {\n if (question.choices === void 0 && question.allowCustom === false) {\n context.addIssue({\n code: \"custom\",\n message: \"A free-text question cannot disable custom answers.\",\n path: [\"allowCustom\"]\n });\n }\n const values = /* @__PURE__ */ new Set();\n for (const [index, choice] of (question.choices ?? []).entries()) {\n if (values.has(choice.value)) {\n context.addIssue({\n code: \"custom\",\n message: \"Question choice values must be unique.\",\n path: [\"choices\", index, \"value\"]\n });\n }\n values.add(choice.value);\n }\n});\nvar questionAnswerSchema = z.object({\n questionId: nonblank,\n value: nonblank\n}).strict();\nvar interactionBase = {\n id: nonblank,\n toolName: nonblank,\n toolCallId: nonblank,\n callId: z.string().optional(),\n internalCallId: nonblank\n};\nvar approvalRequestSchema = z.object({\n type: z.literal(\"tool-approval\"),\n ...interactionBase,\n input: jsonValueSchema,\n reason: z.string().optional()\n}).strict();\nvar questionRequestSchema = z.object({\n type: z.literal(\"tool-question\"),\n ...interactionBase,\n questions: z.array(questionPromptSchema).min(1)\n}).strict().superRefine((request, context) => {\n const ids = /* @__PURE__ */ new Set();\n for (const [index, question] of request.questions.entries()) {\n if (ids.has(question.id)) {\n context.addIssue({\n code: \"custom\",\n message: \"Question IDs must be unique.\",\n path: [\"questions\", index, \"id\"]\n });\n }\n ids.add(question.id);\n }\n});\nvar agentInteractionRequestSchema = z.discriminatedUnion(\"type\", [\n approvalRequestSchema,\n questionRequestSchema\n]);\nvar agentInteractionResponseSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"tool-approval\"),\n approved: z.boolean(),\n reason: z.string().optional()\n }).strict(),\n z.object({\n type: z.literal(\"tool-question\"),\n answers: z.array(questionAnswerSchema)\n }).strict()\n]);\nvar agentContinuationSchema = z.object({\n version: z.literal(1),\n agentId: nonblank,\n sourceRunId: nonblank,\n interaction: agentInteractionRequestSchema,\n state: jsonObjectSchema\n}).strict();\nfunction parseAgentInteractionRequest(value) {\n return freeze(agentInteractionRequestSchema.parse(value));\n}\nfunction parseAgentInteractionResponse(value) {\n return freeze(agentInteractionResponseSchema.parse(value));\n}\nfunction parseAgentQuestionPrompts(value) {\n const request = questionRequestSchema.parse({\n type: \"tool-question\",\n id: \"validation\",\n toolName: \"validation\",\n toolCallId: \"validation\",\n internalCallId: \"validation\",\n questions: value\n });\n return freeze(request.questions);\n}\nfunction parseAgentContinuation(value) {\n return freeze(agentContinuationSchema.parse(value));\n}\nfunction assertAgentInteractionResponse(request, response) {\n if (request.type !== response.type) {\n throw new TypeError(\"Interaction response type does not match the pending request.\");\n }\n if (request.type === \"tool-question\" && response.type === \"tool-question\") {\n assertQuestionAnswers(request, response.answers);\n }\n}\nfunction assertQuestionAnswers(request, answers) {\n const parsed = answers.map((answer) => questionAnswerSchema.parse(answer));\n const byId = new Map(parsed.map((answer) => [answer.questionId, answer]));\n if (byId.size !== parsed.length) {\n throw new TypeError(\"Question answers must not contain duplicate question IDs.\");\n }\n if (byId.size !== request.questions.length) {\n throw new TypeError(\"Question responses must answer every question exactly once.\");\n }\n for (const question of request.questions) {\n const answer = byId.get(question.id);\n if (answer === void 0) {\n throw new TypeError(`Question response is missing an answer for \"${question.id}\".`);\n }\n const choices = question.choices;\n if (choices !== void 0 && question.allowCustom !== true && !choices.some((choice) => choice.value === answer.value)) {\n throw new TypeError(`Question \"${question.id}\" requires one of its configured choices.`);\n }\n }\n}\nfunction freeze(value) {\n if (typeof value !== \"object\" || value === null || Object.isFrozen(value)) return value;\n for (const child of Object.values(value)) freeze(child);\n return Object.freeze(value);\n}\n\n// src/agent/tool-state.ts\nvar agentToolStates = /* @__PURE__ */ new WeakMap();\nfunction registerAgentToolState(agent, publicState, toolsByName) {\n agentToolStates.set(agent, { publicState, toolsByName });\n}\nfunction getAgentToolState(agent) {\n return getStoredAgentToolState(agent).publicState;\n}\nfunction getRegisteredAgentTool(agent, toolName) {\n return getStoredAgentToolState(agent).toolsByName.get(toolName);\n}\nfunction getStoredAgentToolState(agent) {\n const state = agentToolStates.get(agent);\n if (state === void 0) {\n throw new TypeError(\"Agent tool state is unavailable.\");\n }\n return state;\n}\n\n// src/hooks/control.ts\nfunction createHook(hook) {\n return hook;\n}\nfunction cancelRun(reason) {\n return { type: \"terminate\", reason };\n}\nfunction skipTool(reason) {\n return { type: \"skip\", reason };\n}\nfunction requestToolApproval(options = {}) {\n const action = {\n type: \"approval_request\"\n };\n if (options.reason !== void 0) {\n action.reason = options.reason;\n }\n if (options.rejectMessage !== void 0) {\n action.rejectMessage = options.rejectMessage;\n }\n return action;\n}\nvar runControl = {\n continue() {\n return { type: \"continue\" };\n },\n cancel(reason) {\n return cancelRun(reason);\n }\n};\nvar toolCallControl = {\n run() {\n return { type: \"continue\" };\n },\n skip(reason) {\n return skipTool(reason);\n },\n cancel(reason) {\n return { type: \"terminate\", reason };\n },\n requestApproval(options) {\n return requestToolApproval(options);\n }\n};\n\n// src/agent/vector-context.ts\nfunction createVectorContext(options) {\n const topK = assertPositiveSearchLimit(options.topK);\n const minScore = assertFiniteMinScore(options.minScore);\n let context = {\n ...options,\n topK,\n kind: \"vector-context\"\n };\n if (minScore !== void 0) {\n context = { ...context, minScore };\n }\n return Object.freeze(context);\n}\nfunction isVectorContext(value) {\n if (typeof value !== \"object\" || value === null) return false;\n const candidate = value;\n if (candidate.kind !== \"vector-context\" || typeof candidate.store?.search !== \"function\") {\n return false;\n }\n return candidate.model !== void 0 || candidate.models?.dense !== void 0 && candidate.models.sparse !== void 0;\n}\n\n// src/internal/agent-runtime/run-options.ts\nvar internalAgentRunOptions = /* @__PURE__ */ Symbol(\"internalAgentRunOptions\");\nfunction withInternalAgentRunOptions(options, internal) {\n return {\n ...options,\n [internalAgentRunOptions]: internal\n };\n}\nfunction getInternalAgentRunOptions(options) {\n return options[internalAgentRunOptions];\n}\n\n// src/agent/lifecycle.ts\nfunction composeAgentLifecycle(first, second) {\n if (first === void 0) return second;\n if (second === void 0) return first;\n return {\n async onStart(event) {\n await first.onStart?.(lifecycleSnapshot(event));\n await second.onStart?.(lifecycleSnapshot(event));\n },\n async onStepFinish(event) {\n await first.onStepFinish?.(lifecycleSnapshot(event));\n await second.onStepFinish?.(lifecycleSnapshot(event));\n },\n async onToolStart(event) {\n await first.onToolStart?.(lifecycleSnapshot(event));\n await second.onToolStart?.(lifecycleSnapshot(event));\n },\n async onToolFinish(event) {\n await first.onToolFinish?.(lifecycleSnapshot(event));\n await second.onToolFinish?.(lifecycleSnapshot(event));\n },\n async onFinish(event) {\n await first.onFinish?.(lifecycleSnapshot(event));\n await second.onFinish?.(lifecycleSnapshot(event));\n },\n async onError(event) {\n await first.onError?.(lifecycleSnapshot(event));\n await second.onError?.(lifecycleSnapshot(event));\n }\n };\n}\nfunction lifecycleSnapshot(value) {\n try {\n return globalThis.structuredClone(value);\n } catch {\n return cloneLifecycleFallback(value, /* @__PURE__ */ new WeakMap());\n }\n}\nfunction cloneLifecycleFallback(value, seen) {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n const existing = seen.get(value);\n if (existing !== void 0) {\n return existing;\n }\n if (Array.isArray(value)) {\n const clone2 = [];\n seen.set(value, clone2);\n clone2.push(...value.map((item) => cloneLifecycleFallback(item, seen)));\n return clone2;\n }\n if (Object.getPrototypeOf(value) !== Object.prototype) {\n return value;\n }\n const clone = {};\n seen.set(value, clone);\n for (const [key, item] of Object.entries(value)) {\n clone[key] = cloneLifecycleFallback(item, seen);\n }\n return clone;\n}\n\n// src/agent/output-schema.ts\nvar providerOutputSchemas = /* @__PURE__ */ new WeakMap();\nfunction registerAgentProviderOutputSchema(agent, schema) {\n if (schema !== void 0) {\n providerOutputSchemas.set(agent, toProviderJsonSchema(schema));\n }\n}\nfunction getAgentProviderOutputSchema(agent) {\n return providerOutputSchemas.get(agent);\n}\n\n// src/internal/async-queue.ts\nfunction createAsyncQueue() {\n const values = [];\n const waiters = [];\n let closed = false;\n let error;\n function flush() {\n while (waiters.length > 0 && values.length > 0) {\n const waiter = waiters.shift();\n const value = values.shift();\n if (waiter !== void 0) {\n waiter.resolve({ value, done: false });\n }\n }\n if (values.length > 0 || waiters.length === 0 || !closed) {\n return;\n }\n while (waiters.length > 0) {\n const waiter = waiters.shift();\n if (waiter === void 0) {\n continue;\n }\n if (error !== void 0) {\n waiter.reject(error);\n } else {\n waiter.resolve({ value: void 0, done: true });\n }\n }\n }\n return {\n enqueue(value) {\n if (closed) {\n return;\n }\n values.push(value);\n flush();\n },\n close() {\n closed = true;\n flush();\n },\n throw(thrown) {\n closed = true;\n error = thrown;\n flush();\n },\n [Symbol.asyncIterator]() {\n return {\n next() {\n if (values.length > 0) {\n const value = values.shift();\n return Promise.resolve({ value, done: false });\n }\n if (error !== void 0) {\n return Promise.reject(error);\n }\n if (closed) {\n return Promise.resolve({ value: void 0, done: true });\n }\n return new Promise((resolve, reject) => {\n waiters.push({ resolve, reject });\n });\n }\n };\n }\n };\n}\n\n// src/internal/rag-text.ts\nfunction extractRagText(message) {\n if (message.role === \"user\") {\n if (typeof message.content === \"string\") {\n return message.content;\n }\n return message.content.flatMap((item) => item.type === \"text\" ? [item.text] : []).join(\"\\n\");\n }\n if (message.role === \"tool\") {\n return message.content.flatMap((item) => {\n if (item.type !== \"tool-result\") {\n return [];\n }\n const output = item.output;\n if (output.type === \"text\" || output.type === \"error-text\") {\n return [output.value];\n }\n if (output.type === \"content\") {\n return output.value.flatMap((part) => part.type === \"text\" ? [part.text] : []);\n }\n return [];\n }).join(\"\\n\");\n }\n return void 0;\n}\n\n// src/internal/agent-runtime/continuation-state.ts\nfunction serializeContinuationState(state) {\n const value = structuredClone(state);\n if (!isJsonValue(value) || Array.isArray(value) || value === null) {\n throw new TypeError(\"Agent continuation state must be strict JSON.\");\n }\n return value;\n}\nfunction parseContinuationState(value, interaction) {\n requireOnlyKeys(value, [\n \"kind\",\n \"history\",\n \"messages\",\n \"pending\",\n \"remainingToolCalls\",\n \"steering\",\n \"memoryScope\"\n ]);\n if (value.kind !== \"anvia.agent-continuation\") {\n throw new TypeError(\"Agent continuation has an unsupported internal state.\");\n }\n const history = parseMessages(value.history);\n const messages = parseMessages(value.messages);\n const pending = parsePending(value.pending);\n const remainingToolCalls = parseToolCalls(value.remainingToolCalls);\n const steering = parseSteering(value.steering);\n if (pending.toolCall.toolCallId !== interaction.toolCallId || pending.toolCall.toolName !== interaction.toolName || pending.toolCall.callId !== interaction.callId || pending.internalCallId !== interaction.internalCallId) {\n throw new TypeError(\"Agent continuation interaction does not match its pending tool call.\");\n }\n if (interaction.type === \"tool-approval\" && !jsonEqual(interaction.input, pending.input)) {\n throw new TypeError(\"Agent continuation approval input does not match its pending tool input.\");\n }\n if (interaction.type === \"tool-question\") {\n const questions = object(pending.input) && \"questions\" in pending.input ? parseAgentQuestionPrompts(pending.input.questions) : void 0;\n if (questions === void 0 || !jsonEqual(interaction.questions, questions)) {\n throw new TypeError(\n \"Agent continuation questions do not match its pending question tool input.\"\n );\n }\n }\n const state = {\n kind: \"anvia.agent-continuation\",\n history,\n messages,\n pending,\n remainingToolCalls,\n steering\n };\n if (value.memoryScope !== void 0) {\n state.memoryScope = parseOptionalJsonObject(value.memoryScope, \"memoryScope\");\n }\n return state;\n}\nfunction questionResult(answers) {\n return { type: \"json\", value: { answers: structuredClone([...answers]) } };\n}\nfunction parsePending(value) {\n if (!object(value)) throw new TypeError(\"Agent continuation pending state is invalid.\");\n const [toolCall] = parseToolCalls([value.toolCall]);\n if (toolCall === void 0) throw new TypeError(\"Agent continuation pending tool is missing.\");\n if (typeof value.effectiveArgs !== \"string\" || typeof value.internalCallId !== \"string\") {\n throw new TypeError(\"Agent continuation pending execution metadata is invalid.\");\n }\n const pending = {\n toolCall,\n effectiveArgs: value.effectiveArgs,\n input: parseJsonValue(value.input, \"pending input\"),\n internalCallId: value.internalCallId\n };\n if (typeof value.rejectMessage === \"string\") {\n pending.rejectMessage = value.rejectMessage;\n }\n return pending;\n}\nfunction parseJsonValue(value, name) {\n if (!isJsonValue(value)) {\n throw new TypeError(`Agent continuation ${name} is invalid.`);\n }\n return structuredClone(value);\n}\nfunction parseToolCalls(value) {\n if (!Array.isArray(value)) throw new TypeError(\"Agent continuation tool calls must be an array.\");\n const message = parseMessages([{ role: \"assistant\", content: value }])[0];\n if (message?.role !== \"assistant\" || typeof message.content === \"string\") {\n throw new TypeError(\"Agent continuation tool calls are invalid.\");\n }\n if (!message.content.every((part) => part.type === \"tool-call\")) {\n throw new TypeError(\"Agent continuation contains a non-tool-call part.\");\n }\n return message.content;\n}\nfunction parseSteering(value) {\n if (!Array.isArray(value)) throw new TypeError(\"Agent continuation steering state is invalid.\");\n return value.map((item) => {\n if (!object(item) || typeof item.id !== \"string\") {\n throw new TypeError(\"Agent continuation steering entry is invalid.\");\n }\n return { id: item.id, messages: parseMessages(item.messages) };\n });\n}\nfunction parseOptionalJsonObject(value, name) {\n if (value === void 0) return void 0;\n if (!object(value) || !isJsonValue(value)) {\n throw new TypeError(`Agent continuation ${name} is invalid.`);\n }\n return structuredClone(value);\n}\nfunction object(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction requireOnlyKeys(value, allowed) {\n const allowedKeys = new Set(allowed);\n const unknown = Object.keys(value).find((key) => !allowedKeys.has(key));\n if (unknown !== void 0) {\n throw new TypeError(`Agent continuation state contains unknown key \"${unknown}\".`);\n }\n}\nfunction jsonEqual(left, right) {\n if (Object.is(left, right)) return true;\n if (Array.isArray(left)) {\n return Array.isArray(right) && left.length === right.length && left.every((value, index) => jsonEqual(value, right[index]));\n }\n if (object(left)) {\n if (!object(right)) return false;\n const keys = Object.keys(left);\n return keys.length === Object.keys(right).length && keys.every((key) => key in right && jsonEqual(left[key], right[key]));\n }\n return false;\n}\n\n// src/internal/agent-runtime/interaction-suspension.ts\nvar AgentInteractionSignal = class extends Error {\n constructor(interaction, rejectMessage) {\n super(\"Agent execution requires a human interaction.\");\n this.interaction = interaction;\n this.rejectMessage = rejectMessage;\n this.name = \"AgentInteractionSignal\";\n }\n interaction;\n rejectMessage;\n};\nvar ToolExecutionSuspension = class extends Error {\n constructor(interaction, pending) {\n super(\"Tool execution suspended for human interaction.\");\n this.interaction = interaction;\n this.pending = pending;\n this.name = \"ToolExecutionSuspension\";\n }\n interaction;\n pending;\n completedResults = [];\n remainingToolCalls = [];\n};\nfunction approvalInteraction(request) {\n if (request.toolCallId === void 0) {\n throw new TypeError(\"Tool approval requires a canonical toolCallId.\");\n }\n if (!isJsonValue(request.args)) {\n throw new TypeError(\"Tool approval input must be strict JSON.\");\n }\n let interaction = {\n type: \"tool-approval\",\n id: request.id,\n toolName: request.toolName,\n toolCallId: request.toolCallId,\n internalCallId: request.internalCallId,\n input: request.args\n };\n if (request.callId !== void 0) interaction = { ...interaction, callId: request.callId };\n if (request.reason !== void 0) interaction = { ...interaction, reason: request.reason };\n return interaction;\n}\n\n// src/internal/agent-runtime/memory.ts\nvar AgentRunMemory = class {\n constructor(agent, memoryScope, initialHistory) {\n this.agent = agent;\n this.memoryScope = memoryScope;\n this.initialHistory = initialHistory;\n }\n agent;\n memoryScope;\n initialHistory;\n memoryPolicy() {\n return this.memory()?.savePolicy;\n }\n pendingTurnMessages(newMessages) {\n return this.memoryPolicy() === \"turn\" ? [...newMessages] : [];\n }\n async prepareHistory(runId, incomingMessageCount, abortSignal) {\n const memory = this.memory();\n if (memory === void 0 || this.memoryScope === void 0) {\n return {\n history: this.initialHistory,\n usage: Usage.empty()\n };\n }\n const preparation = await this.prepareStoredHistory(\n memory,\n runId,\n incomingMessageCount,\n abortSignal\n );\n const memoryHistory = preparation.history;\n const chatHistory = [...memoryHistory, ...this.initialHistory];\n return {\n ...preparation,\n history: chatHistory\n };\n }\n async commitAcceptedInput(runId, messages) {\n const memory = this.memory();\n if (memory === void 0 || this.memoryScope === void 0 || memory.savePolicy !== \"message\" || messages.length === 0) {\n return;\n }\n await memory.store.append({\n scope: this.memoryScope,\n runId,\n turn: 1,\n messages\n });\n }\n async commitMessages(runId, turn, messages, pendingTurnMessages) {\n const memory = this.memory();\n if (memory === void 0 || this.memoryScope === void 0 || messages.length === 0) {\n return;\n }\n if (memory.savePolicy === \"message\") {\n await memory.store.append({\n scope: this.memoryScope,\n runId,\n turn,\n messages\n });\n } else if (memory.savePolicy === \"turn\") {\n pendingTurnMessages.push(...messages);\n }\n }\n async commitCompletedTurn(runId, turn, pendingTurnMessages) {\n const memory = this.memory();\n if (memory === void 0 || this.memoryScope === void 0 || memory.savePolicy !== \"turn\" || pendingTurnMessages.length === 0) {\n return;\n }\n await memory.store.append({\n scope: this.memoryScope,\n runId,\n turn,\n messages: [...pendingTurnMessages]\n });\n pendingTurnMessages.length = 0;\n }\n async commitCompletedRun(runId, turn, newMessages, pendingTurnMessages) {\n await this.commitCompletedTurn(runId, turn, pendingTurnMessages);\n const memory = this.memory();\n if (memory === void 0 || this.memoryScope === void 0 || memory.savePolicy !== \"run\") {\n return;\n }\n await memory.store.append({\n scope: this.memoryScope,\n runId,\n turn,\n messages: [...newMessages]\n });\n }\n async recordError(runId, error, newMessages) {\n const memory = this.memory();\n if (memory === void 0 || this.memoryScope === void 0) {\n return;\n }\n await memory.store.recordError?.({\n scope: this.memoryScope,\n runId,\n error,\n messages: [...newMessages]\n });\n }\n memory() {\n return this.memoryScope === void 0 ? void 0 : this.agent.memory;\n }\n async prepareStoredHistory(memory, runId, incomingMessageCount, abortSignal) {\n const scope = this.memoryScope;\n if (scope === void 0) {\n return { history: [], usage: Usage.empty() };\n }\n const options = memory.compaction;\n const capability = memory.store.compaction;\n if (options === void 0 || capability === void 0) {\n return {\n history: await memory.store.load({ scope }),\n usage: Usage.empty()\n };\n }\n let usage = Usage.empty();\n const maxAttempts = options.conflictRetries === false ? 1 : options.conflictRetries.maxAttempts;\n for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {\n throwIfAborted(abortSignal);\n const snapshot = await capability.snapshot({ scope });\n throwIfAborted(abortSignal);\n const compactedMessageCount = compactedPrefixLength(\n snapshot.messages,\n incomingMessageCount,\n options.trigger.afterMessages,\n options.retention.recentUserTurns\n );\n if (compactedMessageCount === 0) {\n return { history: snapshot.messages, usage };\n }\n const prefix = snapshot.messages.slice(0, compactedMessageCount);\n let result;\n try {\n result = await options.compactor({\n scope,\n messages: prefix,\n abortSignal\n });\n } catch (error) {\n throw remappedCompactorError(error, usage);\n }\n if (result.usage !== void 0) {\n usage = Usage.add(usage, result.usage);\n }\n const summaryText = result.summary.trim();\n if (summaryText.length === 0) {\n throw new MemoryCompactionError(\"Memory compactor returned an empty summary.\", {\n usage\n });\n }\n const summary = createMemoryCompactionSummary(\n summaryText,\n cumulativeCompactedMessageCount(prefix)\n );\n throwIfAborted(abortSignal);\n let replacement;\n try {\n replacement = await capability.replacePrefix({\n scope,\n revision: snapshot.revision,\n messageCount: compactedMessageCount,\n replacement: summary,\n runId: `memory-compaction:${runId}:${attempt}`\n });\n } catch (error) {\n throw new MemoryCompactionError(\"Memory compaction prefix replacement failed.\", {\n cause: error,\n usage\n });\n }\n if (replacement.status === \"committed\") {\n const retained = snapshot.messages.slice(compactedMessageCount);\n return {\n history: [summary, ...retained],\n usage,\n compaction: {\n originalMessageCount: snapshot.messages.length,\n compactedMessageCount,\n retainedMessageCount: retained.length,\n attempts: attempt,\n usage\n }\n };\n }\n throwIfAborted(abortSignal);\n }\n throw new MemoryCompactionConflictError(maxAttempts, usage);\n }\n};\nfunction compactedPrefixLength(messages, incomingMessageCount, afterMessages, recentUserTurns) {\n if (messages.length + incomingMessageCount <= afterMessages) {\n return 0;\n }\n const userMessageIndexes = messages.flatMap(\n (message, index) => message.role === \"user\" ? [index] : []\n );\n if (userMessageIndexes.length <= recentUserTurns) {\n return 0;\n }\n return userMessageIndexes[userMessageIndexes.length - recentUserTurns] ?? 0;\n}\nfunction remappedCompactorError(error, usage) {\n if (error instanceof MemoryCompactionError) {\n const mergedUsage = error.usage === void 0 ? usage : isEmptyUsage(usage) ? error.usage : Usage.add(usage, error.usage);\n if (mergedUsage === error.usage || error.usage === void 0 && isEmptyUsage(usage)) {\n return error;\n }\n return new MemoryCompactionError(error.message, {\n cause: error,\n usage: mergedUsage\n });\n }\n return new MemoryCompactionError(\"Memory compactor failed.\", {\n cause: error,\n usage\n });\n}\nfunction isEmptyUsage(usage) {\n return usage.inputTokens === 0 && usage.outputTokens === 0 && usage.totalTokens === 0 && usage.cachedInputTokens === 0 && usage.cacheCreationInputTokens === 0;\n}\n\n// src/internal/agent-runtime/retrieval.ts\nasync function fetchContextDocuments(agent, ragText, abortSignal) {\n const documents = [];\n for (const input of agent.context) {\n if (!isVectorContext(input)) {\n documents.push(input);\n continue;\n }\n if (ragText === void 0 || ragText.length === 0) continue;\n const request = {\n query: ragText,\n topK: input.topK,\n minScore: input.minScore,\n filter: input.filter,\n retries: input.retries,\n abortSignal\n };\n const results = \"models\" in input && input.models !== void 0 ? await retrieveDocuments({\n ...request,\n store: input.store,\n models: input.models,\n fusion: input.fusion\n }) : await retrieveDocuments({ ...request, store: input.store, model: input.model });\n for (const result of results) {\n const formatted = input.format?.(result);\n if (formatted !== void 0) {\n documents.push(formatted);\n continue;\n }\n const metadata = formatMetadata(result.metadata);\n const document = {\n id: result.id,\n text: typeof result.document === \"string\" ? result.document : JSON.stringify(result.document, null, 2)\n };\n if (metadata !== void 0) document.additionalProps = metadata;\n documents.push(document);\n }\n }\n return documents;\n}\nasync function fetchToolDefinitions(agent, ragText, abortSignal) {\n const state = getAgentToolState(agent);\n const staticDefinitions = await Promise.all(\n state.staticTools.map((tool) => tool.definition(ragText ?? \"\"))\n );\n if (ragText === void 0 || ragText.length === 0 || state.toolIndexes.length === 0) {\n return staticDefinitions;\n }\n const definitions = [...staticDefinitions];\n const names = new Set(staticDefinitions.map((definition) => definition.name));\n for (const index of state.toolIndexes) {\n const results = await index.search({ query: ragText, abortSignal });\n for (const result of results) {\n const toolName = result.document.toolName;\n if (names.has(toolName)) continue;\n const tool = index.tools.find((candidate) => candidate.name === toolName);\n if (tool === void 0) continue;\n names.add(toolName);\n definitions.push(await tool.definition(ragText));\n }\n }\n return definitions;\n}\nfunction formatMetadata(metadata) {\n if (metadata === void 0) return void 0;\n return Object.fromEntries(Object.entries(metadata).map(([key, value]) => [key, String(value)]));\n}\n\n// src/internal/agent-runtime/run-validation.ts\nfunction assertNonnegativeSafeInteger(value, name) {\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new TypeError(`${name} must be a nonnegative safe integer.`);\n }\n return value;\n}\nfunction assertPositiveSafeInteger(value, name) {\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new TypeError(`${name} must be a positive safe integer.`);\n }\n return value;\n}\n\n// src/internal/agent-runtime/stream-accumulator.ts\nvar CompletionStreamAccumulator = class {\n orderedParts = [];\n textParts = /* @__PURE__ */ new Map();\n reasoningByKey = /* @__PURE__ */ new Map();\n reasoningKeyById = /* @__PURE__ */ new Map();\n toolCalls = /* @__PURE__ */ new Map();\n sources = /* @__PURE__ */ new Map();\n providerToolCalls = /* @__PURE__ */ new Map();\n finalResponse;\n messageId;\n nextTextKey = 0;\n nextReasoningKey = 0;\n accept(event) {\n if (event.type === \"text_delta\") {\n this.appendText(event.delta);\n return { type: \"text_delta\", delta: event.delta };\n }\n if (event.type === \"reasoning_delta\") {\n const reasoning = this.reasoningStateForEvent(event);\n this.appendReasoning(reasoning, event);\n return reasoningDeltaEvent(event);\n }\n if (event.type === \"tool_call_delta\") {\n const toolCall = this.toolCallStateForId(event.id);\n if (event.callId !== void 0 && event.callId.length > 0) toolCall.callId = event.callId;\n if (event.name !== void 0 && event.name.length > 0) toolCall.name = event.name;\n if (event.signature !== void 0) toolCall.signature = event.signature;\n if (event.argumentsDelta !== void 0) {\n if (event.argumentsMode === \"replace\") {\n toolCall.argumentsText = event.argumentsDelta;\n } else {\n toolCall.argumentsText += event.argumentsDelta;\n }\n }\n return void 0;\n }\n if (event.type === \"tool_call\") {\n this.upsertToolCall(event.toolCall);\n return { type: \"tool_call\", toolCall: event.toolCall };\n }\n if (event.type === \"source\") {\n this.sources.set(sourceKey(event.source), event.source);\n return { type: \"source\", source: event.source };\n }\n if (event.type === \"provider_tool_call\") {\n this.providerToolCalls.set(event.toolCall.id, event.toolCall);\n return { type: \"provider_tool_call\", toolCall: event.toolCall };\n }\n if (event.type === \"message_id\") {\n this.messageId = event.id;\n return void 0;\n }\n if (event.type === \"final\") {\n this.finalResponse = event.response;\n return void 0;\n }\n return void 0;\n }\n response() {\n const accumulatedResponse = this.buildAccumulatedResponse();\n if (this.finalResponse !== void 0) {\n if (accumulatedResponse.choice.length === 0) {\n return this.withAccumulatedArtifacts(this.finalResponse, accumulatedResponse);\n }\n return this.mergeFinalResponse(accumulatedResponse, this.finalResponse);\n }\n return accumulatedResponse;\n }\n buildAccumulatedResponse() {\n const choice = [];\n for (const part of this.orderedParts) {\n if (part.type === \"text\") {\n const text = this.textParts.get(part.key) ?? \"\";\n if (text.length > 0) {\n choice.push({ type: \"text\", text });\n }\n continue;\n }\n if (part.type === \"reasoning\") {\n const reasoning = this.reasoningByKey.get(part.key);\n if (reasoning !== void 0) {\n choice.push(reasoningContent(reasoning));\n }\n continue;\n }\n const toolCall = this.toolCalls.get(part.key);\n if (toolCall !== void 0) {\n choice.push(\n toolCallContent(toolCall, matchingFinalToolCall(toolCall, this.finalResponse?.choice))\n );\n }\n }\n const response = {\n choice,\n usage: Usage.empty(),\n rawResponse: void 0\n };\n if (this.messageId !== void 0) {\n response.messageId = this.messageId;\n }\n const sources = [...this.sources.values()];\n if (sources.length > 0) {\n response.sources = sources;\n }\n const providerToolCalls = [...this.providerToolCalls.values()];\n if (providerToolCalls.length > 0) {\n response.providerToolCalls = providerToolCalls;\n }\n return response;\n }\n upsertToolCall(toolCall) {\n if (!this.toolCalls.has(toolCall.toolCallId)) {\n this.orderedParts.push({ type: \"tool_call\", key: toolCall.toolCallId });\n }\n const partial = {\n id: toolCall.toolCallId,\n name: toolCall.toolName,\n argumentsText: JSON.stringify(toolCall.input ?? {})\n };\n if (toolCall.callId !== void 0) {\n partial.callId = toolCall.callId;\n }\n if (toolCall.signature !== void 0) {\n partial.signature = toolCall.signature;\n }\n this.toolCalls.set(toolCall.toolCallId, partial);\n }\n mergeFinalResponse(accumulatedResponse, finalResponse) {\n if (finalResponse.choice.length === 0) {\n const mergedResponse = {\n ...accumulatedResponse,\n usage: finalResponse.usage,\n rawResponse: finalResponse.rawResponse\n };\n if (finalResponse.messageId !== void 0) {\n mergedResponse.messageId = finalResponse.messageId;\n }\n return this.withAccumulatedArtifacts(mergedResponse, accumulatedResponse);\n }\n const finalById = /* @__PURE__ */ new Map();\n const finalByCallId = /* @__PURE__ */ new Map();\n for (const content of finalResponse.choice) {\n if (content.type !== \"tool-call\") {\n continue;\n }\n finalById.set(content.toolCallId, content);\n if (content.callId !== void 0) {\n finalByCallId.set(content.callId, content);\n }\n }\n const matchedFinalToolCalls = /* @__PURE__ */ new Set();\n const choice = accumulatedResponse.choice.map((content) => {\n if (content.type !== \"tool-call\") {\n return content;\n }\n const finalToolCall = finalById.get(content.toolCallId) ?? (content.callId === void 0 ? void 0 : finalByCallId.get(content.callId));\n if (finalToolCall === void 0) {\n return content;\n }\n matchedFinalToolCalls.add(finalToolCall);\n return mergeFinalToolCall(content, finalToolCall);\n });\n for (const content of finalResponse.choice) {\n if (content.type !== \"tool-call\") {\n continue;\n }\n if (!matchedFinalToolCalls.has(content)) {\n choice.push(content);\n }\n }\n return this.withAccumulatedArtifacts({ ...finalResponse, choice }, accumulatedResponse);\n }\n appendText(delta) {\n const lastPart = this.orderedParts.at(-1);\n const key = lastPart?.type === \"text\" ? lastPart.key : this.createTextKey();\n if (lastPart?.type !== \"text\") {\n this.orderedParts.push({ type: \"text\", key });\n }\n this.textParts.set(key, `${this.textParts.get(key) ?? \"\"}${delta}`);\n }\n reasoningStateForEvent(event) {\n if (event.id !== void 0) {\n const existingKey = this.reasoningKeyById.get(event.id);\n if (existingKey !== void 0) {\n const existing = this.reasoningByKey.get(existingKey);\n if (existing !== void 0) {\n return existing;\n }\n }\n const key2 = this.createReasoningKey();\n const reasoning2 = { id: event.id, text: \"\" };\n this.reasoningKeyById.set(event.id, key2);\n this.reasoningByKey.set(key2, reasoning2);\n this.orderedParts.push({ type: \"reasoning\", key: key2 });\n return reasoning2;\n }\n const lastPart = this.orderedParts.at(-1);\n if (lastPart?.type === \"reasoning\") {\n const lastReasoning = this.reasoningByKey.get(lastPart.key);\n if (lastReasoning !== void 0 && lastReasoning.id === void 0) {\n return lastReasoning;\n }\n }\n const key = this.createReasoningKey();\n const reasoning = { text: \"\" };\n this.reasoningByKey.set(key, reasoning);\n this.orderedParts.push({ type: \"reasoning\", key });\n return reasoning;\n }\n toolCallStateForId(id) {\n const existing = this.toolCalls.get(id);\n if (existing !== void 0) {\n return existing;\n }\n const toolCall = {\n id,\n name: \"\",\n argumentsText: \"\"\n };\n this.toolCalls.set(id, toolCall);\n this.orderedParts.push({ type: \"tool_call\", key: id });\n return toolCall;\n }\n withMessageIdFallback(response, accumulatedResponse) {\n if (response.messageId !== void 0 || accumulatedResponse.messageId === void 0) {\n return response;\n }\n return { ...response, messageId: accumulatedResponse.messageId };\n }\n withAccumulatedArtifacts(response, accumulatedResponse) {\n const withMessageId = this.withMessageIdFallback(response, accumulatedResponse);\n const sources = mergeSources(accumulatedResponse.sources, response.sources);\n const providerToolCalls = mergeProviderToolCalls(\n accumulatedResponse.providerToolCalls,\n response.providerToolCalls\n );\n let accumulated = { ...withMessageId };\n if (sources.length > 0) accumulated = { ...accumulated, sources };\n if (providerToolCalls.length > 0) {\n accumulated = { ...accumulated, providerToolCalls };\n }\n return accumulated;\n }\n createTextKey() {\n this.nextTextKey += 1;\n return `text_${this.nextTextKey.toString()}`;\n }\n createReasoningKey() {\n this.nextReasoningKey += 1;\n return `reasoning_${this.nextReasoningKey.toString()}`;\n }\n appendReasoning(reasoning, event) {\n const contentType = event.contentType ?? \"text\";\n if (contentType === \"text\" || contentType === \"summary\") {\n reasoning.text += event.delta;\n }\n if (event.contentType === void 0 && event.signature === void 0) {\n return;\n }\n reasoning.details ??= [];\n const last = reasoning.details.at(-1);\n if (contentType === \"text\") {\n if (last?.type === \"text\") {\n let detail = {\n ...last,\n text: `${last.text}${event.delta}`\n };\n if (event.signature !== void 0) detail = { ...detail, signature: event.signature };\n reasoning.details[reasoning.details.length - 1] = detail;\n } else {\n reasoning.details.push(\n event.signature === void 0 ? { type: \"text\", text: event.delta } : { type: \"text\", text: event.delta, signature: event.signature }\n );\n }\n return;\n }\n if (contentType === \"summary\") {\n if (last?.type === \"summary\") {\n reasoning.details[reasoning.details.length - 1] = {\n ...last,\n text: `${last.text}${event.delta}`\n };\n } else {\n reasoning.details.push({ type: \"summary\", text: event.delta });\n }\n return;\n }\n if (contentType === \"encrypted\") {\n reasoning.details.push({ type: \"encrypted\", data: event.delta });\n return;\n }\n reasoning.details.push({ type: \"redacted\", data: event.delta });\n }\n};\nfunction sourceKey(source) {\n return `${source.url}\\0${source.startIndex ?? \"\"}\\0${source.endIndex ?? \"\"}`;\n}\nfunction mergeSources(accumulated, final) {\n const sources = /* @__PURE__ */ new Map();\n for (const source of [...accumulated ?? [], ...final ?? []]) {\n sources.set(sourceKey(source), source);\n }\n return [...sources.values()];\n}\nfunction mergeProviderToolCalls(accumulated, final) {\n const toolCalls = /* @__PURE__ */ new Map();\n for (const toolCall of [...accumulated ?? [], ...final ?? []]) {\n toolCalls.set(toolCall.id, toolCall);\n }\n return [...toolCalls.values()];\n}\nfunction reasoningContent(reasoning) {\n const content = reasoning.details === void 0 ? { type: \"reasoning\", text: reasoning.text } : { type: \"reasoning\", text: reasoning.text, details: reasoning.details };\n return reasoning.id === void 0 ? content : { ...content, id: reasoning.id };\n}\nfunction toolCallContent(toolCall, finalToolCall) {\n const argumentsValue = finalToolCall !== void 0 && !isEmptyToolArguments(finalToolCall.input) ? finalToolCall.input : parseToolArguments(toolCall.id, toolCall.argumentsText);\n let content = {\n type: \"tool-call\",\n toolCallId: toolCall.id,\n toolName: toolCall.name,\n input: argumentsValue\n };\n if (toolCall.callId !== void 0) content = { ...content, callId: toolCall.callId };\n if (toolCall.signature !== void 0) content = { ...content, signature: toolCall.signature };\n return content;\n}\nfunction matchingFinalToolCall(accumulated, finalChoice) {\n const byId = finalChoice?.find(\n (content) => content.type === \"tool-call\" && content.toolCallId === accumulated.id\n );\n if (byId !== void 0 || accumulated.callId === void 0) {\n return byId;\n }\n return finalChoice?.find(\n (content) => content.type === \"tool-call\" && content.callId === accumulated.callId\n );\n}\nfunction mergeFinalToolCall(accumulated, finalToolCall) {\n const input = isEmptyToolArguments(finalToolCall.input) ? accumulated.input : finalToolCall.input;\n return {\n ...accumulated,\n ...finalToolCall,\n input\n };\n}\nfunction reasoningDeltaEvent(event) {\n const mapped = { type: \"reasoning_delta\", delta: event.delta };\n if (event.id !== void 0) mapped.id = event.id;\n if (event.contentType !== void 0) mapped.contentType = event.contentType;\n if (event.signature !== void 0) mapped.signature = event.signature;\n return mapped;\n}\nfunction isEmptyToolArguments(value) {\n if (value === void 0 || value === null) {\n return true;\n }\n if (typeof value === \"string\") {\n return value.trim().length === 0;\n }\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n if (typeof value === \"object\") {\n return Object.values(value).every((item) => item === void 0);\n }\n return false;\n}\nfunction parseToolArguments(toolCallId, text) {\n if (text.trim().length === 0) {\n return {};\n }\n try {\n return JSON.parse(text);\n } catch {\n throw new Error(\n `Completion returned tool call \"${toolCallId}\" with malformed JSON arguments; this indicates invalid provider output or incomplete stream assembly.`\n );\n }\n}\n\n// src/internal/agent-runtime/stream-events.ts\nfunction addTurn(turn, event) {\n if (event.type === \"text_delta\") {\n return { type: \"text_delta\", turn, delta: event.delta };\n }\n if (event.type === \"reasoning_delta\") {\n const mapped = { type: \"reasoning_delta\", turn, delta: event.delta };\n if (event.id !== void 0) mapped.id = event.id;\n if (event.contentType !== void 0) mapped.contentType = event.contentType;\n if (event.signature !== void 0) mapped.signature = event.signature;\n return mapped;\n }\n if (event.type === \"source\") {\n return { type: \"source\", turn, source: event.source };\n }\n if (event.type === \"provider_tool_call\") {\n return { type: \"provider_tool_call\", turn, toolCall: event.toolCall };\n }\n return { type: \"tool_call\", turn, toolCall: event.toolCall };\n}\nfunction addTurnToToolCallDelta(turn, event) {\n const mapped = {\n type: \"tool_call_delta\",\n turn,\n id: event.id\n };\n if (event.callId !== void 0) mapped.callId = event.callId;\n if (event.name !== void 0) mapped.name = event.name;\n if (event.argumentsDelta !== void 0) mapped.argumentsDelta = event.argumentsDelta;\n if (event.argumentsMode !== void 0) mapped.argumentsMode = event.argumentsMode;\n if (event.signature !== void 0) mapped.signature = event.signature;\n return mapped;\n}\nfunction isGenerationDeltaEvent(type) {\n return type === \"text_delta\" || type === \"reasoning_delta\" || type === \"tool_call_delta\" || type === \"tool_call\" || type === \"source\" || type === \"provider_tool_call\";\n}\n\n// src/internal/agent-runtime/tool-execution.ts\nvar ToolCallExecutor = class {\n constructor(agent, activeHook, approvalHandler, lifecycle, runContext, concurrency, requestMiddlewares, abortSignal, cancel) {\n this.agent = agent;\n this.activeHook = activeHook;\n this.approvalHandler = approvalHandler;\n this.lifecycle = lifecycle;\n this.runContext = runContext;\n this.concurrency = concurrency;\n this.requestMiddlewares = requestMiddlewares;\n this.abortSignal = abortSignal;\n this.cancel = cancel;\n }\n agent;\n activeHook;\n approvalHandler;\n lifecycle;\n runContext;\n concurrency;\n requestMiddlewares;\n abortSignal;\n cancel;\n async execute(toolCalls, onResult, onStreamEvent, observation) {\n for (const toolCall of toolCalls) {\n if (toolCall.toolName.length === 0) {\n throw new Error(\n `Completion returned tool call \"${toolCall.toolCallId}\" with an empty tool name; this indicates invalid provider output or provider mapping.`\n );\n }\n }\n const executeOne = async (toolCall) => {\n throwIfAborted(this.abortSignal);\n const args = JSON.stringify(toolCall.input);\n const internalCallId = globalThis.crypto.randomUUID();\n const hookArgs = {\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n internalCallId,\n args\n };\n if (toolCall.callId !== void 0) {\n hookArgs.callId = toolCall.callId;\n }\n const tool = this.agent.getTool(toolCall.toolName);\n const toolDefinition = observation?.toolDefinitions?.find(\n (definition) => definition.name === toolCall.toolName\n );\n const toolMetadata = toolTraceMetadata(tool);\n let toolStartArgs = {\n turn: observation?.turn ?? 0,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId,\n args\n };\n if (toolCall.callId !== void 0) {\n toolStartArgs = { ...toolStartArgs, toolCallId: toolCall.callId };\n }\n if (toolDefinition !== void 0) toolStartArgs = { ...toolStartArgs, toolDefinition };\n if (toolMetadata !== void 0) toolStartArgs = { ...toolStartArgs, toolMetadata };\n const toolObservers = await observation?.runObservers.startTool(toolStartArgs);\n const toolObservation = new ToolObserverScope(toolObservers);\n let output;\n let skipped = false;\n let toolExecutionFailed = false;\n let effectiveArgs = args;\n try {\n const callAction = await this.activeHook?.onToolCall?.({\n ...hookArgs,\n tool: toolCallControl\n });\n if (callAction?.type === \"terminate\") {\n throw this.cancel(callAction.reason);\n }\n if (callAction?.type === \"skip\") {\n output = { type: \"text\", value: callAction.reason };\n skipped = true;\n } else {\n try {\n effectiveArgs = await this.runToolInputMiddlewares({\n ...hookArgs,\n turn: observation?.turn ?? 0,\n originalArgs: args\n });\n hookArgs.args = effectiveArgs;\n let prepared;\n try {\n prepared = this.prepareToolCall(tool, toolCall.toolName, effectiveArgs);\n } catch (error) {\n const outcome = await this.handleToolError(\n toolCall,\n hookArgs,\n effectiveArgs,\n error,\n toolObservation,\n observation\n );\n output = outcome.output;\n toolExecutionFailed = outcome.failed;\n }\n if (prepared !== void 0 && isQuestionTool(tool)) {\n try {\n const questions = parseAgentQuestionPrompts(\n prepared.input.questions\n );\n const interaction = {\n type: \"tool-question\",\n id: globalThis.crypto.randomUUID(),\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n internalCallId,\n questions\n };\n if (toolCall.callId !== void 0) {\n Object.assign(interaction, { callId: toolCall.callId });\n }\n throw new AgentInteractionSignal(interaction);\n } catch (error) {\n if (error instanceof AgentInteractionSignal) throw error;\n const outcome = await this.handleToolError(\n toolCall,\n hookArgs,\n effectiveArgs,\n error,\n toolObservation,\n observation\n );\n output = outcome.output;\n toolExecutionFailed = outcome.failed;\n prepared = void 0;\n }\n }\n if (prepared !== void 0) {\n const approvalContext = createApprovalContext(\n prepared.input,\n hookArgs,\n this.agent,\n this.runContext\n );\n const approvalDecision = callAction?.type === \"approval_request\" ? await this.requestApproval(approvalContext, callAction, observation) : await this.evaluateToolApproval(tool, approvalContext, observation) ?? {\n approved: true\n };\n if (!approvalDecision.approved) {\n output = { type: \"execution-denied\", reason: approvalDecision.result };\n skipped = true;\n } else {\n const step = observation?.turn ?? 0;\n const lifecycleEvent = {\n runId: this.runContext.runId,\n step,\n toolName: toolCall.toolName,\n input: lifecycleSnapshot(prepared.input)\n };\n if (toolCall.callId !== void 0) {\n Object.assign(lifecycleEvent, { toolCallId: toolCall.callId });\n }\n await this.lifecycle?.onToolStart?.(lifecycleEvent);\n const startedAt = Date.now();\n const outcome = await this.runApprovedToolCall(\n prepared,\n toolCall,\n hookArgs,\n effectiveArgs,\n toolObservation,\n observation,\n onStreamEvent\n );\n output = outcome.output;\n toolExecutionFailed = outcome.failed;\n const durationMs = Date.now() - startedAt;\n await this.lifecycle?.onToolFinish?.(\n outcome.failed ? {\n ...lifecycleEvent,\n durationMs,\n success: false,\n error: lifecycleSnapshot(outcome.error)\n } : {\n ...lifecycleEvent,\n durationMs,\n success: true,\n output: lifecycleSnapshot(output)\n }\n );\n }\n }\n } catch (error) {\n if (error instanceof AgentInteractionSignal) {\n await toolObservation.suspend({\n ...toolStartArgs,\n interaction: error.interaction\n });\n throw error;\n }\n await toolObservation.error(\n toolErrorArgs(observation?.turn ?? 0, toolCall, internalCallId, effectiveArgs, error)\n );\n throw error;\n }\n }\n if (output === void 0) {\n throw new Error(`Tool \"${toolCall.toolName}\" did not produce an execution result.`);\n }\n let result = toolOutputToText(output);\n let structuredResult = toolOutputToStructuredResult(output);\n if (!isSkillTool(tool)) {\n const middlewareReplacement = await this.runToolResultMiddlewares({\n ...hookArgs,\n args: effectiveArgs,\n result,\n originalResult: result,\n structuredResult,\n originalStructuredResult: structuredResult,\n turn: observation?.turn ?? 0\n });\n if (middlewareReplacement !== void 0) {\n output = middlewareReplacement;\n result = toolOutputToText(middlewareReplacement);\n structuredResult = toolOutputToStructuredResult(middlewareReplacement);\n }\n }\n const resultAction = await this.activeHook?.onToolResult?.({\n ...hookArgs,\n args: effectiveArgs,\n result,\n structuredResult,\n run: runControl\n });\n if (!toolExecutionFailed) {\n await toolObservation.end({\n turn: observation?.turn ?? 0,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId,\n args: effectiveArgs,\n result,\n structuredResult,\n skipped,\n toolCallId: toolCall.callId\n });\n }\n if (resultAction?.type === \"terminate\") {\n throw this.cancel(resultAction.reason);\n }\n const resultPayload = {\n type: \"tool_result\",\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n internalCallId,\n args: effectiveArgs,\n output,\n result,\n structuredResult\n };\n if (toolCall.callId !== void 0) resultPayload.callId = toolCall.callId;\n onResult?.(resultPayload);\n let resultPart = {\n type: \"tool-result\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n output\n };\n if (toolCall.callId !== void 0) {\n resultPart = { ...resultPart, callId: toolCall.callId };\n }\n return resultPart;\n } catch (error) {\n if (error instanceof AgentInteractionSignal) {\n const pending = {\n toolCall,\n effectiveArgs,\n input: error.interaction.type === \"tool-approval\" ? error.interaction.input : parseToolArgs(effectiveArgs),\n internalCallId\n };\n if (error.rejectMessage !== void 0) pending.rejectMessage = error.rejectMessage;\n throw new ToolExecutionSuspension(error.interaction, pending);\n }\n await toolObservation.error(\n toolErrorArgs(observation?.turn ?? 0, toolCall, internalCallId, effectiveArgs, error)\n );\n throw error;\n }\n };\n if (this.concurrency === 1) {\n const results = [];\n for (const toolCall of toolCalls) {\n try {\n results.push(await executeOne(toolCall));\n } catch (error) {\n if (error instanceof ToolExecutionSuspension) {\n error.completedResults = [...results];\n error.remainingToolCalls = toolCalls.slice(results.length + 1);\n }\n throw error;\n }\n }\n return results;\n }\n return mapWithConcurrency(toolCalls, this.concurrency, executeOne);\n }\n async executeResumed(pending, onResult, onStreamEvent, observation) {\n throwIfAborted(this.abortSignal);\n const { toolCall, internalCallId, effectiveArgs } = pending;\n const tool = this.agent.getTool(toolCall.toolName);\n if (tool === void 0) {\n throw new Error(\n `Cannot resume tool interaction because tool \"${toolCall.toolName}\" is no longer registered.`\n );\n }\n if (isQuestionTool(tool)) {\n throw new TypeError(\"Question interactions are resolved from their submitted answers.\");\n }\n const hookArgs = {\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n internalCallId,\n args: effectiveArgs\n };\n if (toolCall.callId !== void 0) hookArgs.callId = toolCall.callId;\n const toolDefinition = observation?.toolDefinitions?.find(\n (definition) => definition.name === toolCall.toolName\n );\n const toolMetadata = toolTraceMetadata(tool);\n let toolStartArgs = {\n turn: observation?.turn ?? 0,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId,\n args: effectiveArgs\n };\n if (toolCall.callId !== void 0) {\n toolStartArgs = { ...toolStartArgs, toolCallId: toolCall.callId };\n }\n if (toolDefinition !== void 0) toolStartArgs = { ...toolStartArgs, toolDefinition };\n if (toolMetadata !== void 0) toolStartArgs = { ...toolStartArgs, toolMetadata };\n const observers = await observation?.runObservers.startTool(toolStartArgs);\n const toolObservation = new ToolObserverScope(observers);\n let output;\n let failed = false;\n try {\n const prepared = prepareToolCallFromInput(tool, pending.input);\n const step = observation?.turn ?? 0;\n const lifecycleEvent = {\n runId: this.runContext.runId,\n step,\n toolName: toolCall.toolName,\n input: lifecycleSnapshot(prepared.input)\n };\n if (toolCall.callId !== void 0) {\n Object.assign(lifecycleEvent, { toolCallId: toolCall.callId });\n }\n await this.lifecycle?.onToolStart?.(lifecycleEvent);\n const startedAt = Date.now();\n const outcome = await this.runApprovedToolCall(\n prepared,\n toolCall,\n hookArgs,\n effectiveArgs,\n toolObservation,\n observation,\n onStreamEvent\n );\n output = outcome.output;\n failed = outcome.failed;\n const durationMs = Date.now() - startedAt;\n await this.lifecycle?.onToolFinish?.(\n outcome.failed ? {\n ...lifecycleEvent,\n durationMs,\n success: false,\n error: lifecycleSnapshot(outcome.error)\n } : {\n ...lifecycleEvent,\n durationMs,\n success: true,\n output: lifecycleSnapshot(output)\n }\n );\n let result = toolOutputToText(output);\n let structuredResult = toolOutputToStructuredResult(output);\n if (!isSkillTool(tool)) {\n const replacement = await this.runToolResultMiddlewares({\n ...hookArgs,\n args: effectiveArgs,\n result,\n originalResult: result,\n structuredResult,\n originalStructuredResult: structuredResult,\n turn: step\n });\n if (replacement !== void 0) {\n output = replacement;\n result = toolOutputToText(replacement);\n structuredResult = toolOutputToStructuredResult(replacement);\n }\n }\n const resultAction = await this.activeHook?.onToolResult?.({\n ...hookArgs,\n result,\n structuredResult,\n run: runControl\n });\n if (!failed) {\n await toolObservation.end({\n turn: step,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId,\n args: effectiveArgs,\n result,\n structuredResult,\n skipped: false,\n toolCallId: toolCall.callId\n });\n }\n if (resultAction?.type === \"terminate\") {\n throw this.cancel(resultAction.reason);\n }\n const resultPayload = {\n type: \"tool_result\",\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n internalCallId,\n args: effectiveArgs,\n output,\n result,\n structuredResult\n };\n if (toolCall.callId !== void 0) resultPayload.callId = toolCall.callId;\n onResult?.(resultPayload);\n let resultPart = {\n type: \"tool-result\",\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n output\n };\n if (toolCall.callId !== void 0) resultPart = { ...resultPart, callId: toolCall.callId };\n return resultPart;\n } catch (error) {\n await toolObservation.error(\n toolErrorArgs(observation?.turn ?? 0, toolCall, internalCallId, effectiveArgs, error)\n );\n throw error;\n }\n }\n async resolveResumed(pending, initialOutput, onResult, observation) {\n throwIfAborted(this.abortSignal);\n const { toolCall, internalCallId, effectiveArgs } = pending;\n const tool = this.agent.getTool(toolCall.toolName);\n if (tool === void 0) {\n throw new Error(\n `Cannot resume tool interaction because tool \"${toolCall.toolName}\" is no longer registered.`\n );\n }\n const hookArgs = {\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n internalCallId,\n args: effectiveArgs\n };\n if (toolCall.callId !== void 0) hookArgs.callId = toolCall.callId;\n const toolDefinition = observation?.toolDefinitions?.find(\n (definition) => definition.name === toolCall.toolName\n );\n const toolMetadata = toolTraceMetadata(tool);\n let toolStartArgs = {\n turn: observation?.turn ?? 0,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId,\n args: effectiveArgs\n };\n if (toolCall.callId !== void 0) {\n toolStartArgs = { ...toolStartArgs, toolCallId: toolCall.callId };\n }\n if (toolDefinition !== void 0) toolStartArgs = { ...toolStartArgs, toolDefinition };\n if (toolMetadata !== void 0) toolStartArgs = { ...toolStartArgs, toolMetadata };\n const observers = await observation?.runObservers.startTool(toolStartArgs);\n const toolObservation = new ToolObserverScope(observers);\n try {\n let output = initialOutput;\n let result = toolOutputToText(output);\n let structuredResult = toolOutputToStructuredResult(output);\n if (!isSkillTool(tool)) {\n const replacement = await this.runToolResultMiddlewares({\n ...hookArgs,\n args: effectiveArgs,\n result,\n originalResult: result,\n structuredResult,\n originalStructuredResult: structuredResult,\n turn: observation?.turn ?? 0\n });\n if (replacement !== void 0) {\n output = replacement;\n result = toolOutputToText(replacement);\n structuredResult = toolOutputToStructuredResult(replacement);\n }\n }\n const resultAction = await this.activeHook?.onToolResult?.({\n ...hookArgs,\n result,\n structuredResult,\n run: runControl\n });\n await toolObservation.end({\n turn: observation?.turn ?? 0,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId,\n args: effectiveArgs,\n result,\n structuredResult,\n skipped: true,\n toolCallId: toolCall.callId\n });\n if (resultAction?.type === \"terminate\") {\n throw this.cancel(resultAction.reason);\n }\n const resultPayload = {\n type: \"tool_result\",\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n internalCallId,\n args: effectiveArgs,\n output,\n result,\n structuredResult\n };\n if (toolCall.callId !== void 0) resultPayload.callId = toolCall.callId;\n onResult?.(resultPayload);\n let resultPart = {\n type: \"tool-result\",\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n output\n };\n if (toolCall.callId !== void 0) resultPart = { ...resultPart, callId: toolCall.callId };\n return resultPart;\n } catch (error) {\n await toolObservation.error(\n toolErrorArgs(observation?.turn ?? 0, toolCall, internalCallId, effectiveArgs, error)\n );\n throw error;\n }\n }\n async runApprovedToolCall(prepared, toolCall, hookArgs, effectiveArgs, toolObservation, observation, onStreamEvent) {\n try {\n const toolContext = {\n abortSignal: this.abortSignal,\n emitStreamEvent: async (event) => {\n let streamEventArgs = {\n turn: observation?.turn ?? 0,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId: hookArgs.internalCallId,\n args: effectiveArgs,\n event\n };\n if (toolCall.callId !== void 0) {\n streamEventArgs = { ...streamEventArgs, toolCallId: toolCall.callId };\n }\n await toolObservation.streamEvent(streamEventArgs);\n const payload = agentToolEventPayload(toolCall, hookArgs.internalCallId, event);\n if (payload !== void 0) {\n onStreamEvent?.(payload);\n }\n }\n };\n return {\n output: await prepared.call(toolContext),\n failed: false\n };\n } catch (error) {\n return this.handleToolError(\n toolCall,\n hookArgs,\n effectiveArgs,\n error,\n toolObservation,\n observation\n );\n }\n }\n prepareToolCall(tool, toolName, args) {\n if (tool !== void 0) {\n return prepareToolCall(tool, args);\n }\n const input = parseToolArgs(args);\n return {\n input,\n call: (context) => this.agent.callTool(toolName, args, context)\n };\n }\n async handleToolError(toolCall, hookArgs, args, error, toolObservation, observation) {\n const errorAction = await this.activeHook?.onToolError?.({\n ...hookArgs,\n args,\n error,\n run: runControl\n });\n await toolObservation.error(\n toolErrorArgs(observation?.turn ?? 0, toolCall, hookArgs.internalCallId, args, error)\n );\n if (errorAction?.type === \"terminate\") {\n throw this.cancel(errorAction.reason);\n }\n return {\n output: {\n type: \"error-text\",\n value: error instanceof Error ? error.toString() : String(error)\n },\n failed: true,\n error\n };\n }\n async runToolResultMiddlewares(args) {\n let result = args.result;\n let structuredResult = args.structuredResult;\n let replaced = false;\n for (const middleware of this.activeMiddlewares()) {\n const outputReplacement = await middleware.onToolOutput?.({\n ...args,\n result,\n structuredResult\n });\n if (outputReplacement !== void 0) {\n const normalized = normalizeToolOutputMiddlewareResult(outputReplacement);\n if (normalized.result !== void 0) {\n result = normalized.result;\n structuredResult = void 0;\n }\n if (normalized.structuredResult !== void 0) {\n structuredResult = normalized.structuredResult;\n result = toolResultContentToText(normalized.structuredResult);\n }\n replaced = true;\n }\n }\n return replaced ? structuredResult === void 0 ? { type: \"text\", value: result } : { type: \"content\", value: structuredResult } : void 0;\n }\n async runToolInputMiddlewares(args) {\n let current = args.args;\n for (const middleware of this.activeMiddlewares()) {\n const replacement = await middleware.onToolInput?.({\n ...args,\n args: current\n });\n if (replacement?.args !== void 0) {\n current = typeof replacement.args === \"string\" ? replacement.args : JSON.stringify(replacement.args);\n }\n }\n return current;\n }\n activeMiddlewares() {\n return [...this.agent.middlewares, ...this.requestMiddlewares];\n }\n async evaluateToolApproval(tool, context, observation) {\n const requirement = tool?.requiresApproval;\n if (requirement === void 0) return void 0;\n const resolved = typeof requirement === \"function\" ? await requirement(context.args, context) : requirement;\n assertToolApprovalRequirement(resolved, { allowFunction: false });\n if (resolved === false) return { approved: true };\n const reason = resolved === true ? void 0 : resolved.reason;\n return this.requestApproval(context, reason === void 0 ? {} : { reason }, observation);\n }\n async requestApproval(context, options, observation) {\n const request = {\n ...context,\n id: globalThis.crypto.randomUUID()\n };\n if (options.reason !== void 0) {\n request.reason = options.reason;\n }\n if (options.rejectMessage !== void 0) {\n request.rejectMessage = options.rejectMessage;\n }\n await observation?.runObservers.event({\n name: \"tool.approval_requested\",\n attributes: approvalEventAttributes(request, observation.turn)\n });\n let decision;\n try {\n decision = await this.approvalHandler(request);\n } catch (error) {\n if (error instanceof AgentInteractionSignal) {\n throw error;\n }\n await observation?.runObservers.event({\n name: \"tool.approval_failed\",\n level: \"ERROR\",\n attributes: {\n ...approvalEventAttributes(request, observation.turn),\n errorName: error instanceof Error ? error.name : typeof error\n }\n });\n throw error;\n }\n const attributes = {\n ...approvalEventAttributes(request, observation?.turn ?? 0),\n approved: decision.approved\n };\n if (decision.reason !== void 0) attributes.decisionReason = decision.reason;\n await observation?.runObservers.event({\n name: \"tool.approval_resolved\",\n attributes\n });\n if (decision.approved) {\n return { approved: true };\n }\n return {\n approved: false,\n result: decision.reason ?? request.rejectMessage ?? \"Tool approval was rejected.\"\n };\n }\n};\nfunction createApprovalContext(input, hookArgs, agent, run) {\n const approvalRun = {\n agentId: agent.id,\n runId: run.runId\n };\n if (run.sessionId !== void 0) {\n approvalRun.sessionId = run.sessionId;\n }\n if (run.metadata !== void 0) {\n approvalRun.metadata = run.metadata;\n }\n const context = {\n toolName: hookArgs.toolName,\n args: lifecycleSnapshot(input),\n rawArgs: hookArgs.args,\n toolCallId: hookArgs.toolCallId,\n internalCallId: hookArgs.internalCallId,\n run: approvalRun\n };\n if (hookArgs.callId !== void 0) {\n context.callId = hookArgs.callId;\n }\n return context;\n}\nfunction approvalEventAttributes(request, turn) {\n return {\n turn,\n approvalId: request.id,\n toolName: request.toolName,\n toolCallId: request.toolCallId,\n internalCallId: request.internalCallId,\n reason: request.reason\n };\n}\nfunction normalizeToolOutputMiddlewareResult(result) {\n if (typeof result === \"string\") {\n return { result };\n }\n return result ?? {};\n}\nfunction toolTraceMetadata(tool) {\n if (tool === void 0) {\n return void 0;\n }\n const result = {\n approvalRequired: toolMayRequireApproval(tool.requiresApproval)\n };\n if (isMcpTool(tool)) {\n result.mcpServerName = tool.mcp.serverName;\n result.mcpRemoteName = tool.mcp.remoteName;\n }\n return result;\n}\nfunction toolErrorArgs(turn, toolCall, internalCallId, args, error) {\n let observerArgs = {\n turn,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId,\n args,\n error\n };\n if (toolCall.callId !== void 0) {\n observerArgs = { ...observerArgs, toolCallId: toolCall.callId };\n }\n return observerArgs;\n}\nvar ToolObserverScope = class {\n constructor(observers) {\n this.observers = observers;\n }\n observers;\n terminal = false;\n streamEvent(args) {\n return this.observers?.streamEvent(args);\n }\n async end(args) {\n if (this.terminal) return;\n this.terminal = true;\n await this.observers?.end(args);\n }\n async suspend(args) {\n if (this.terminal) return;\n this.terminal = true;\n await this.observers?.suspend(args);\n }\n async error(args) {\n if (this.terminal) return;\n this.terminal = true;\n await this.observers?.error(args);\n }\n};\nfunction toolOutputToText(output) {\n switch (output.type) {\n case \"text\":\n case \"error-text\":\n return output.value;\n case \"json\":\n case \"error-json\":\n return JSON.stringify(output.value);\n case \"content\":\n return toolResultContentToText(output.value);\n case \"execution-denied\":\n return output.reason ?? \"Tool execution was denied.\";\n }\n}\nfunction toolOutputToStructuredResult(output) {\n return output.type === \"content\" ? output.value : void 0;\n}\nfunction agentToolEventPayload(toolCall, internalCallId, event) {\n if (typeof event.agentId !== \"string\" || event.agentId.length === 0) {\n return void 0;\n }\n const payload = {\n type: \"agent_tool_event\",\n toolName: toolCall.toolName,\n internalCallId,\n agentId: event.agentId,\n event: event.event\n };\n if (toolCall.callId !== void 0) {\n payload.toolCallId = toolCall.callId;\n }\n if (event.agentName !== void 0) {\n payload.agentName = event.agentName;\n }\n return payload;\n}\n\n// src/internal/agent-runtime/agent-run.ts\nasync function settleFailureCleanup(operations) {\n for (const operation of operations) {\n try {\n await operation();\n } catch {\n }\n }\n}\nvar AgentRun = class _AgentRun {\n constructor(agent, promptMessage, initialHistory = [], options = {}) {\n this.agent = agent;\n this.promptMessage = promptMessage;\n this.chatHistory = initialHistory;\n this.maxTurnCount = assertNonnegativeSafeInteger(\n options.maxTurns ?? agent.defaultMaxTurns ?? 0,\n \"maxTurns\"\n );\n const internalOptions = getInternalAgentRunOptions(options);\n this.activeHook = internalOptions?.hook;\n this.onInternalFailure = internalOptions?.onFailure;\n this.onInternalMemoryCompaction = internalOptions?.onMemoryCompaction;\n this.requestedRunId = normalizeRequestedRunId(internalOptions?.runId);\n this.activeLifecycle = composeAgentLifecycle(agent.lifecycle, options.lifecycle);\n this.guardrailPolicies = options.guardrails === void 0 ? [...agent.guardrails] : appendGuardrailPolicies([...agent.guardrails], options.guardrails);\n const configuredConcurrency = assertPositiveSafeInteger(\n options.toolConcurrency ?? 1,\n \"toolConcurrency\"\n );\n this.concurrency = this.activeHook !== void 0 || agent.tools.some(\n (tool) => toolMayRequireApproval(tool.requiresApproval) || isQuestionTool(tool)\n ) ? 1 : configuredConcurrency;\n this.traceOptions = options.trace;\n const retrySetting = options.retries === void 0 ? agent.retries : options.retries;\n this.completionRetryOptions = retrySetting === void 0 || retrySetting === false ? void 0 : resolveRetryOptions(retrySetting);\n this.requestMiddlewares = [...options.middlewares ?? []];\n this.memoryScope = options.memoryScope;\n this.memoryRecorder = new AgentRunMemory(agent, options.memoryScope, initialHistory);\n this.continuationState = options.continuationState;\n this.interactionResponse = options.interactionResponse;\n if (options.continuationState !== void 0) {\n this.steeringMessages.push(\n ...options.continuationState.steering.map((entry) => ({\n id: entry.id,\n messages: [...entry.messages]\n }))\n );\n }\n this.resumedFrom = options.sourceRunId === void 0 || options.interactionId === void 0 ? void 0 : { runId: options.sourceRunId, interactionId: options.interactionId };\n this.linkExternalAbortSignal(options.abortSignal);\n }\n agent;\n promptMessage;\n chatHistory;\n maxTurnCount;\n activeHook;\n activeLifecycle;\n guardrailPolicies;\n guardrailDecisions = [];\n concurrency;\n traceOptions;\n completionRetryOptions;\n requestMiddlewares;\n steeringMessages = [];\n runState = \"idle\";\n memoryRecorder;\n memoryScope;\n onInternalFailure;\n onInternalMemoryCompaction;\n memoryCompaction;\n requestedRunId;\n continuationState;\n interactionResponse;\n resumedFrom;\n currentMessages = [];\n cancellationError;\n activeGeneration;\n abortController = new AbortController();\n removeExternalAbortListener;\n static fromAgent(agent, options) {\n const normalized = normalizeAgentInput(agent.id, options);\n if (normalized.scope !== void 0 && agent.memory === void 0) {\n throw new TypeError(`Agent \"${agent.id}\" cannot use a session without a memory store.`);\n }\n return new _AgentRun(agent, normalized.prompt, normalized.history, {\n ...options,\n memoryScope: normalized.scope,\n continuationState: normalized.continuationState,\n interactionResponse: normalized.interactionResponse,\n sourceRunId: normalized.sourceRunId,\n interactionId: normalized.interactionId\n });\n }\n steer(input) {\n if (this.isTerminal() || this.cancellationError !== void 0) {\n throw new AgentStreamClosedError();\n }\n const receipt = Object.freeze({\n id: globalThis.crypto.randomUUID(),\n status: \"queued\"\n });\n this.steeringMessages.push({ id: receipt.id, messages: normalizeSteeringInput(input) });\n return receipt;\n }\n cancel(reason) {\n if (this.isTerminal() || this.cancellationError !== void 0) {\n return;\n }\n const messages = this.currentMessages.length === 0 ? [this.promptMessage] : [...this.currentMessages];\n const error = new AgentRunCancelledError([...this.chatHistory, ...messages], reason);\n this.setCancellationError(error);\n }\n setCancellationError(error) {\n this.cancellationError = error;\n if (!this.abortController.signal.aborted) this.abortController.abort(error);\n }\n async generate() {\n this.startRun();\n const runId = this.requestedRunId ?? globalThis.crypto.randomUUID();\n let usage = Usage.empty();\n let currentTurns = 0;\n let lastPrompt = this.promptMessage;\n let newMessages = [this.promptMessage];\n let runObservers;\n let pendingTurnMessages = [];\n try {\n this.throwIfCancelled();\n const memoryPreparation = this.continuationState === void 0 ? await this.memoryRecorder.prepareHistory(\n runId,\n newMessages.length,\n this.abortController.signal\n ) : void 0;\n if (memoryPreparation !== void 0) {\n this.chatHistory = memoryPreparation.history;\n usage = Usage.add(usage, memoryPreparation.usage);\n this.memoryCompaction = memoryPreparation.compaction;\n await this.notifyInternalMemoryCompaction(memoryPreparation.compaction);\n }\n runObservers = await this.startRunObservers(runId);\n if (memoryPreparation !== void 0) {\n await this.recordMemoryCompaction(memoryPreparation, runObservers);\n }\n this.throwIfCancelled();\n await this.activeLifecycle?.onStart?.({\n runId,\n input: lifecycleSnapshot(this.promptMessage),\n history: lifecycleSnapshot(this.chatHistory),\n maxTurns: this.maxTurnCount\n });\n if (this.continuationState === void 0) {\n const inputResult = await runInputGuardrails(this.guardrailPolicies, {\n prompt: this.promptMessage,\n history: this.chatHistory,\n inputText: textFromMessage(this.promptMessage),\n run: this.guardrailRunContext(runId)\n });\n for (const decision of inputResult.decisions) {\n await this.recordGuardrailDecision(decision, runObservers);\n }\n this.promptMessage = inputResult.prompt;\n if (inputResult.blocked) {\n const text = inputResult.message ?? \"The request was blocked by a guardrail.\";\n const result = {\n status: \"blocked\",\n stage: \"input\",\n runId,\n text,\n usage,\n messages: [this.promptMessage, { role: \"assistant\", content: text }],\n trace: runObservers.trace,\n guardrails: [...this.guardrailDecisions],\n ...this.memoryCompactionResult()\n };\n if (this.resumedFrom !== void 0) result.resumedFrom = this.resumedFrom;\n this.runState = \"closing\";\n await this.runLifecycleFinish(result);\n await runObservers.end(result);\n this.runState = \"completed\";\n this.disposeAbortLink();\n return result;\n }\n }\n newMessages = [this.promptMessage];\n await this.memoryRecorder.commitAcceptedInput(runId, newMessages);\n pendingTurnMessages = this.memoryRecorder.pendingTurnMessages(newMessages);\n await this.runRunStartHook(newMessages);\n if (this.continuationState !== void 0) {\n await runObservers.event({\n name: \"agent.interaction_response\",\n attributes: {\n sourceRunId: this.resumedFrom?.runId,\n interactionId: this.resumedFrom?.interactionId,\n interactionType: this.interactionResponse?.type\n }\n });\n try {\n const toolResults = await this.resolveContinuationTools(\n runId,\n newMessages,\n void 0,\n void 0,\n {\n turn: 1,\n runObservers\n }\n );\n const toolMessage = { role: \"tool\", content: toolResults };\n newMessages.push(toolMessage);\n await this.memoryRecorder.commitMessages(runId, 1, [toolMessage], pendingTurnMessages);\n await this.drainSteeringMessages(runId, 1, newMessages, pendingTurnMessages);\n await this.memoryRecorder.commitCompletedTurn(runId, 1, pendingTurnMessages);\n } catch (error) {\n if (error instanceof ToolExecutionSuspension) {\n return this.finishSuspension({\n runId,\n turn: 1,\n usage,\n newMessages,\n pendingTurnMessages,\n runObservers,\n suspension: error,\n uncommittedMessages: []\n });\n }\n throw error;\n }\n }\n while (currentTurns <= this.maxTurnCount + 1) {\n const prompt = newMessages.at(-1);\n if (prompt === void 0) {\n throw new Error(\"AgentRun requires at least one message\");\n }\n lastPrompt = prompt;\n currentTurns += 1;\n const historyForRequest = [...this.chatHistory, ...newMessages.slice(0, -1)];\n await this.runTurnStartHook(currentTurns, prompt, historyForRequest, newMessages);\n await this.runCompletionCallHook(prompt, historyForRequest, newMessages);\n const request = await this.createTurnRequest(prompt, historyForRequest, currentTurns);\n let response;\n try {\n response = await this.runCompletion(request, currentTurns, runObservers);\n } catch (error) {\n await settleFailureCleanup([\n () => this.runCompletionErrorHook(prompt, error, newMessages)\n ]);\n throw error;\n }\n response = await this.runCompletionResponseMiddlewares(request, response, currentTurns);\n usage = Usage.add(usage, response.usage);\n this.updateRunProgress(newMessages);\n await this.runCompletionResponseHook(prompt, response, newMessages);\n await this.runTurnEndHook(currentTurns, response, newMessages);\n await this.activeLifecycle?.onStepFinish?.({\n runId,\n step: currentTurns,\n response: lifecycleSnapshot(response),\n usage: lifecycleSnapshot(usage)\n });\n const toolCalls = response.choice.filter(\n (item) => item.type === \"tool-call\"\n );\n const assistantMessage = this.generatedAssistantMessage(response, request);\n newMessages.push(assistantMessage);\n if (toolCalls.length === 0) {\n if (this.steeringMessages.length > 0) {\n await this.memoryRecorder.commitMessages(\n runId,\n currentTurns,\n [assistantMessage],\n pendingTurnMessages\n );\n }\n const appliedSteering = await this.drainSteeringMessages(\n runId,\n currentTurns,\n newMessages,\n pendingTurnMessages,\n { closeWhenEmpty: true }\n );\n if (appliedSteering.length > 0) {\n for (const receipt of appliedSteering) {\n await runObservers.event({\n name: \"agent.steering_applied\",\n attributes: { id: receipt.id, turn: currentTurns }\n });\n }\n await this.memoryRecorder.commitCompletedTurn(runId, currentTurns, pendingTurnMessages);\n continue;\n }\n const guardedOutput = await this.runOutputGuardrailsForResponse(\n runId,\n usage,\n response,\n newMessages,\n runObservers\n );\n response = guardedOutput.response;\n const finalAssistantMessage = this.generatedAssistantMessage(response, request);\n newMessages[newMessages.length - 1] = finalAssistantMessage;\n await this.memoryRecorder.commitMessages(\n runId,\n currentTurns,\n [finalAssistantMessage],\n pendingTurnMessages\n );\n const result = this.createTerminalResult(\n runId,\n guardedOutput.text,\n guardedOutput.blocked,\n usage,\n newMessages,\n runObservers\n );\n if (result.status === \"completed\") {\n await this.runRunEndHook(result, newMessages);\n }\n await this.memoryRecorder.commitCompletedRun(\n runId,\n currentTurns,\n newMessages,\n pendingTurnMessages\n );\n await this.runLifecycleFinish(result);\n await runObservers.end(result);\n this.runState = \"completed\";\n this.disposeAbortLink();\n return result;\n }\n this.updateRunProgress(newMessages);\n let toolResults;\n try {\n toolResults = await this.executeToolCalls(\n runId,\n toolCalls,\n newMessages,\n void 0,\n void 0,\n {\n turn: currentTurns,\n runObservers,\n toolDefinitions: request.tools\n }\n );\n } catch (error) {\n if (error instanceof ToolExecutionSuspension) {\n return this.finishSuspension({\n runId,\n turn: currentTurns,\n usage,\n newMessages,\n pendingTurnMessages,\n runObservers,\n suspension: error,\n uncommittedMessages: [assistantMessage]\n });\n }\n throw error;\n }\n const toolMessage = { role: \"tool\", content: toolResults };\n newMessages.push(toolMessage);\n await this.memoryRecorder.commitMessages(\n runId,\n currentTurns,\n [assistantMessage, toolMessage],\n pendingTurnMessages\n );\n await this.drainSteeringMessages(runId, currentTurns, newMessages, pendingTurnMessages);\n await this.memoryRecorder.commitCompletedTurn(runId, currentTurns, pendingTurnMessages);\n }\n throw new MaxTurnsError(this.maxTurnCount, [...this.chatHistory, ...newMessages], lastPrompt);\n } catch (error) {\n if (error instanceof MemoryCompactionError && error.usage !== void 0) {\n usage = Usage.add(usage, error.usage);\n }\n this.runState = \"closing\";\n const runError = this.normalizeRunError(error);\n const reportedError = await this.reportRunFailure(\n runError,\n runId,\n usage,\n newMessages,\n runObservers\n );\n this.runState = reportedError instanceof AgentRunCancelledError ? \"cancelled\" : \"errored\";\n this.disposeAbortLink();\n throw reportedError;\n }\n }\n async *events() {\n this.startRun();\n const runId = this.requestedRunId ?? globalThis.crypto.randomUUID();\n let usage = Usage.empty();\n let currentTurns = 0;\n let lastPrompt = this.promptMessage;\n let newMessages = [this.promptMessage];\n const bufferOutputDeltas = hasEnforcedOutputGuardrails(this.guardrailPolicies);\n let runObservers;\n let pendingTurnMessages = [];\n try {\n this.throwIfCancelled();\n const memoryPreparation = this.continuationState === void 0 ? await this.memoryRecorder.prepareHistory(\n runId,\n newMessages.length,\n this.abortController.signal\n ) : void 0;\n if (memoryPreparation !== void 0) {\n this.chatHistory = memoryPreparation.history;\n usage = Usage.add(usage, memoryPreparation.usage);\n this.memoryCompaction = memoryPreparation.compaction;\n await this.notifyInternalMemoryCompaction(memoryPreparation.compaction);\n }\n runObservers = await this.startRunObservers(runId);\n if (memoryPreparation !== void 0) {\n await this.recordMemoryCompaction(memoryPreparation, runObservers);\n }\n if (memoryPreparation?.compaction !== void 0) {\n yield { type: \"memory_compaction\", ...memoryPreparation.compaction };\n }\n this.throwIfCancelled();\n await this.activeLifecycle?.onStart?.({\n runId,\n input: lifecycleSnapshot(this.promptMessage),\n history: lifecycleSnapshot(this.chatHistory),\n maxTurns: this.maxTurnCount\n });\n if (this.continuationState === void 0) {\n const inputResult = await runInputGuardrails(this.guardrailPolicies, {\n prompt: this.promptMessage,\n history: this.chatHistory,\n inputText: textFromMessage(this.promptMessage),\n run: this.guardrailRunContext(runId)\n });\n for (const decision of inputResult.decisions) {\n await this.recordGuardrailDecision(decision, runObservers);\n yield { type: \"guardrail_decision\", decision };\n }\n this.promptMessage = inputResult.prompt;\n if (inputResult.blocked) {\n const text = inputResult.message ?? \"The request was blocked by a guardrail.\";\n const result = {\n status: \"blocked\",\n stage: \"input\",\n runId,\n text,\n usage,\n messages: [this.promptMessage, { role: \"assistant\", content: text }],\n trace: runObservers.trace,\n guardrails: [...this.guardrailDecisions],\n ...this.memoryCompactionResult()\n };\n if (this.resumedFrom !== void 0) result.resumedFrom = this.resumedFrom;\n this.runState = \"closing\";\n await this.runLifecycleFinish(result);\n await runObservers.end(result);\n this.runState = \"completed\";\n this.disposeAbortLink();\n yield { type: \"final\", result };\n return;\n }\n }\n newMessages = [this.promptMessage];\n await this.memoryRecorder.commitAcceptedInput(runId, newMessages);\n pendingTurnMessages = this.memoryRecorder.pendingTurnMessages(newMessages);\n await this.runRunStartHook(newMessages);\n if (this.continuationState !== void 0) {\n const responsePart = this.promptMessage.role === \"tool\" ? this.promptMessage.content[0] : void 0;\n if (responsePart === void 0 || responsePart.type === \"tool-result\") {\n throw new TypeError(\"Agent continuation response message is invalid.\");\n }\n yield {\n type: \"interaction_response\",\n response: responsePart,\n sourceRunId: this.resumedFrom?.runId ?? this.continuationState.kind\n };\n try {\n const execution = this.executeContinuationToolStream(runId, newMessages, {\n turn: 1,\n runObservers\n });\n for await (const event of execution.events) {\n yield { turn: 1, ...event };\n }\n const toolResults = await execution.results;\n const toolMessage = { role: \"tool\", content: toolResults };\n newMessages.push(toolMessage);\n await this.memoryRecorder.commitMessages(runId, 1, [toolMessage], pendingTurnMessages);\n for (const receipt of await this.drainSteeringMessages(\n runId,\n 1,\n newMessages,\n pendingTurnMessages\n )) {\n yield { type: \"steering_applied\", id: receipt.id, turn: 1 };\n }\n await this.memoryRecorder.commitCompletedTurn(runId, 1, pendingTurnMessages);\n } catch (error) {\n if (error instanceof ToolExecutionSuspension) {\n const result = await this.finishSuspension({\n runId,\n turn: 1,\n usage,\n newMessages,\n pendingTurnMessages,\n runObservers,\n suspension: error,\n uncommittedMessages: []\n });\n yield { type: \"final\", result };\n return;\n }\n throw error;\n }\n }\n while (currentTurns <= this.maxTurnCount + 1) {\n const prompt = newMessages.at(-1);\n if (prompt === void 0) {\n throw new Error(\"AgentRun requires at least one message\");\n }\n lastPrompt = prompt;\n currentTurns += 1;\n const historyForRequest = [...this.chatHistory, ...newMessages.slice(0, -1)];\n yield {\n type: \"turn_start\",\n turn: currentTurns,\n prompt,\n history: historyForRequest\n };\n await this.runTurnStartHook(currentTurns, prompt, historyForRequest, newMessages);\n await this.runCompletionCallHook(prompt, historyForRequest, newMessages);\n const request = await this.createTurnRequest(prompt, historyForRequest, currentTurns);\n assertCompletionRequestSupported(this.agent.model, request, { streaming: true });\n const providerRequest = this.providerTraceRequest(request, { stream: true });\n const generationStartArgs = this.generationStartArgs(\n currentTurns,\n request,\n providerRequest\n );\n const generationObservers = await runObservers.startGeneration(generationStartArgs);\n this.activeGeneration = { turn: currentTurns, observers: generationObservers };\n const generationStartedAt = Date.now();\n yield {\n type: \"generation_start\",\n turn: currentTurns,\n request,\n modelInfo: generationStartArgs.modelInfo\n };\n const bufferResponseEvents = this.shouldBufferStreamResponseEvents();\n const completionState = {\n response: void 0,\n firstDeltaMs: void 0,\n emittedToolCallIds: /* @__PURE__ */ new Set(),\n providerErrorUsage: Usage.empty()\n };\n let response;\n try {\n try {\n for await (const event of this.streamCompletion({\n request,\n turn: currentTurns,\n bufferResponseEvents,\n bufferOutputDeltas,\n generationStartedAt,\n generationObservers,\n runObservers,\n state: completionState\n })) {\n yield event;\n }\n } finally {\n usage = Usage.add(usage, completionState.providerErrorUsage);\n }\n if (completionState.response === void 0) {\n throw new Error(\"Streaming completion ended without a response.\");\n }\n response = completionState.response;\n } catch (error) {\n await settleFailureCleanup([\n () => this.closeActiveGeneration(error),\n () => this.runCompletionErrorHook(prompt, error, newMessages)\n ]);\n throw error;\n }\n const { firstDeltaMs, emittedToolCallIds } = completionState;\n let generationEndArgs = {\n turn: currentTurns,\n response\n };\n if (firstDeltaMs !== void 0) {\n generationEndArgs = { ...generationEndArgs, firstDeltaMs };\n }\n this.activeGeneration = void 0;\n await generationObservers.end(generationEndArgs);\n response = await this.runCompletionResponseMiddlewares(request, response, currentTurns);\n usage = Usage.add(usage, response.usage);\n this.updateRunProgress(newMessages);\n await this.runCompletionResponseHook(prompt, response, newMessages);\n await this.runTurnEndHook(currentTurns, response, newMessages);\n await this.activeLifecycle?.onStepFinish?.({\n runId,\n step: currentTurns,\n response: lifecycleSnapshot(response),\n usage: lifecycleSnapshot(usage)\n });\n const toolCalls = response.choice.filter(\n (item) => item.type === \"tool-call\"\n );\n const assistantMessage = this.generatedAssistantMessage(response, request);\n newMessages.push(assistantMessage);\n if (toolCalls.length === 0) {\n let emittedTurnEnd = false;\n if (!bufferOutputDeltas) {\n if (bufferResponseEvents) {\n for (const event of responseStreamEvents(currentTurns, response)) {\n yield event;\n }\n }\n yield {\n type: \"turn_end\",\n turn: currentTurns,\n response,\n firstDeltaMs\n };\n emittedTurnEnd = true;\n }\n if (this.steeringMessages.length > 0) {\n await this.memoryRecorder.commitMessages(\n runId,\n currentTurns,\n [assistantMessage],\n pendingTurnMessages\n );\n }\n const appliedSteering = await this.drainSteeringMessages(\n runId,\n currentTurns,\n newMessages,\n pendingTurnMessages,\n { closeWhenEmpty: true }\n );\n for (const receipt of appliedSteering) {\n yield { type: \"steering_applied\", id: receipt.id, turn: currentTurns };\n }\n if (appliedSteering.length > 0) {\n await this.memoryRecorder.commitCompletedTurn(runId, currentTurns, pendingTurnMessages);\n continue;\n }\n for await (const event of this.completeStreamingRun({\n runId,\n turn: currentTurns,\n request,\n response,\n firstDeltaMs,\n usage,\n newMessages,\n pendingTurnMessages,\n runObservers,\n bufferResponseEvents,\n bufferOutputDeltas,\n emittedTurnEnd\n })) {\n yield event;\n }\n return;\n }\n if (bufferResponseEvents) {\n for (const event of responseStreamEvents(currentTurns, response)) {\n yield event;\n }\n } else {\n for (const toolCall of toolCalls) {\n if (!emittedToolCallIds.has(toolCall.toolCallId)) {\n yield { type: \"tool_call\", turn: currentTurns, toolCall };\n }\n }\n }\n this.updateRunProgress(newMessages);\n yield {\n type: \"turn_end\",\n turn: currentTurns,\n response,\n firstDeltaMs\n };\n let toolResults;\n try {\n const toolExecution = this.executeStreamingToolCalls(runId, toolCalls, newMessages, {\n turn: currentTurns,\n runObservers,\n toolDefinitions: request.tools\n });\n for await (const result of toolExecution.events) {\n yield { turn: currentTurns, ...result };\n }\n toolResults = await toolExecution.results;\n } catch (error) {\n if (error instanceof ToolExecutionSuspension) {\n const result = await this.finishSuspension({\n runId,\n turn: currentTurns,\n usage,\n newMessages,\n pendingTurnMessages,\n runObservers,\n suspension: error,\n uncommittedMessages: [assistantMessage]\n });\n yield { type: \"final\", result };\n return;\n }\n throw error;\n }\n const toolMessage = { role: \"tool\", content: toolResults };\n newMessages.push(toolMessage);\n await this.memoryRecorder.commitMessages(\n runId,\n currentTurns,\n [assistantMessage, toolMessage],\n pendingTurnMessages\n );\n for (const receipt of await this.drainSteeringMessages(\n runId,\n currentTurns,\n newMessages,\n pendingTurnMessages\n )) {\n yield { type: \"steering_applied\", id: receipt.id, turn: currentTurns };\n }\n await this.memoryRecorder.commitCompletedTurn(runId, currentTurns, pendingTurnMessages);\n }\n throw new MaxTurnsError(this.maxTurnCount, [...this.chatHistory, ...newMessages], lastPrompt);\n } catch (error) {\n if (error instanceof MemoryCompactionError && error.usage !== void 0) {\n usage = Usage.add(usage, error.usage);\n }\n this.runState = \"closing\";\n const runError = this.normalizeRunError(error);\n const reportedError = await this.reportRunFailure(\n runError,\n runId,\n usage,\n newMessages,\n runObservers\n );\n this.runState = reportedError instanceof AgentRunCancelledError ? \"cancelled\" : \"errored\";\n const finalUsage = usage;\n yield { type: \"error\", error: reportedError, usage: finalUsage };\n this.disposeAbortLink();\n return;\n } finally {\n if (this.runState === \"running\" || this.runState === \"closing\") {\n const cancellation = this.cancellationError ?? new AgentRunCancelledError([...this.chatHistory, ...newMessages], \"Agent stream closed.\");\n this.cancellationError = cancellation;\n await settleFailureCleanup([() => this.closeActiveGeneration(cancellation)]);\n await this.reportRunFailure(cancellation, runId, usage, newMessages, runObservers);\n this.runState = \"cancelled\";\n this.disposeAbortLink();\n }\n }\n }\n async runCompletion(request, turn, runObservers) {\n assertCompletionRequestSupported(this.agent.model, request);\n const providerRequest = this.providerTraceRequest(request);\n const generationObservers = await runObservers.startGeneration(\n this.generationStartArgs(turn, request, providerRequest)\n );\n try {\n for (let attempt = 1; ; attempt += 1) {\n let response;\n try {\n this.throwIfCancelled();\n response = await this.agent.model.completion(request, this.modelCallOptions());\n } catch (error) {\n const retryOptions = this.retryOptionsForFailure(error, attempt, turn, false);\n if (retryOptions === void 0) {\n throw error;\n }\n await this.scheduleCompletionRetry(\n error,\n attempt,\n turn,\n false,\n retryOptions,\n runObservers\n );\n continue;\n }\n await generationObservers.end({ turn, response });\n return response;\n }\n } catch (error) {\n await settleFailureCleanup([() => generationObservers.error({ turn, error })]);\n throw error;\n }\n }\n async createTurnRequest(prompt, history, turn) {\n const ragText = extractRagText(prompt);\n const abortSignal = this.abortController.signal;\n const documents = await fetchContextDocuments(this.agent, ragText, abortSignal);\n const toolDefinitions = await fetchToolDefinitions(this.agent, ragText, abortSignal);\n const request = createCompletionRequest(providerMessages([...history, prompt]), {\n instructions: this.agent.instructions,\n documents,\n tools: [...toolDefinitions, ...getAgentToolState(this.agent).providerTools],\n temperature: this.agent.temperature,\n maxTokens: this.agent.maxTokens,\n providerOptions: this.agent.providerOptions,\n toolChoice: this.agent.toolChoice,\n outputSchema: getAgentProviderOutputSchema(this.agent)\n });\n return this.runCompletionRequestMiddlewares(request, turn);\n }\n async *streamCompletion(args) {\n const model = this.agent.model;\n if (!isStreamingCompletionModel(model)) {\n throw new TypeError(\"Streaming completion requires a streaming-capable model.\");\n }\n const accumulator = new CompletionStreamAccumulator();\n for (let attempt = 1; ; attempt += 1) {\n let hasProviderProgress = false;\n try {\n this.throwIfCancelled();\n for await (const event of model.streamCompletion(args.request, this.modelCallOptions())) {\n if (event.type === \"error\") {\n if (event.usage !== void 0) {\n args.state.providerErrorUsage = Usage.add(args.state.providerErrorUsage, event.usage);\n }\n throw event.error;\n }\n hasProviderProgress = true;\n if (args.state.firstDeltaMs === void 0 && isGenerationDeltaEvent(event.type)) {\n args.state.firstDeltaMs = Date.now() - args.generationStartedAt;\n }\n const mapped = accumulator.accept(event);\n if (event.type === \"tool_call_delta\") {\n yield addTurnToToolCallDelta(args.turn, event);\n }\n if (mapped !== void 0) {\n await args.generationObservers.update?.({ turn: args.turn, delta: mapped });\n if (mapped.type === \"tool_call\") {\n args.state.emittedToolCallIds.add(mapped.toolCall.toolCallId);\n }\n const shouldBuffer = args.bufferResponseEvents || args.bufferOutputDeltas && (mapped.type === \"text_delta\" || mapped.type === \"reasoning_delta\");\n if (!shouldBuffer) {\n yield addTurn(args.turn, mapped);\n }\n }\n }\n args.state.response = accumulator.response();\n return;\n } catch (error) {\n const retryOptions = hasProviderProgress ? void 0 : this.retryOptionsForFailure(error, attempt, args.turn, true);\n if (retryOptions === void 0) {\n throw error;\n }\n await this.scheduleCompletionRetry(\n error,\n attempt,\n args.turn,\n true,\n retryOptions,\n args.runObservers\n );\n }\n }\n }\n async *completeStreamingRun(args) {\n const guardedOutput = await this.runOutputGuardrailsForResponse(\n args.runId,\n args.usage,\n args.response,\n args.newMessages,\n args.runObservers\n );\n for (const decision of guardedOutput.decisions) {\n yield { type: \"guardrail_decision\", decision };\n }\n const response = guardedOutput.response;\n const assistantMessage = this.generatedAssistantMessage(response, args.request);\n args.newMessages[args.newMessages.length - 1] = assistantMessage;\n await this.memoryRecorder.commitMessages(\n args.runId,\n args.turn,\n [assistantMessage],\n args.pendingTurnMessages\n );\n if (!args.emittedTurnEnd && (args.bufferResponseEvents || args.bufferOutputDeltas)) {\n for (const event of responseStreamEvents(args.turn, response, args.bufferResponseEvents)) {\n yield event;\n }\n }\n if (!args.emittedTurnEnd) {\n yield {\n type: \"turn_end\",\n turn: args.turn,\n response,\n firstDeltaMs: args.firstDeltaMs\n };\n }\n const result = this.createTerminalResult(\n args.runId,\n guardedOutput.text,\n guardedOutput.blocked,\n args.usage,\n args.newMessages,\n args.runObservers\n );\n if (result.status === \"completed\") {\n await this.runRunEndHook(result, args.newMessages);\n }\n await this.memoryRecorder.commitCompletedRun(\n args.runId,\n args.turn,\n args.newMessages,\n args.pendingTurnMessages\n );\n await this.runLifecycleFinish(result);\n await args.runObservers.end(result);\n this.runState = \"completed\";\n this.disposeAbortLink();\n yield { type: \"final\", result };\n }\n async finishSuspension(args) {\n const partialToolMessage = args.suspension.completedResults.length === 0 ? void 0 : { role: \"tool\", content: [...args.suspension.completedResults] };\n if (partialToolMessage !== void 0) {\n args.newMessages.push(partialToolMessage);\n args.uncommittedMessages.push(partialToolMessage);\n }\n await this.memoryRecorder.commitMessages(\n args.runId,\n args.turn,\n args.uncommittedMessages,\n args.pendingTurnMessages\n );\n await this.memoryRecorder.commitCompletedRun(\n args.runId,\n args.turn,\n args.newMessages,\n args.pendingTurnMessages\n );\n this.runState = \"closing\";\n const continuationState = {\n kind: \"anvia.agent-continuation\",\n history: [...this.chatHistory],\n messages: [...args.newMessages],\n pending: args.suspension.pending,\n remainingToolCalls: [...args.suspension.remainingToolCalls],\n steering: this.steeringMessages.map((entry) => ({\n id: entry.id,\n messages: [...entry.messages]\n }))\n };\n if (this.memoryScope !== void 0) continuationState.memoryScope = this.memoryScope;\n const continuation = parseAgentContinuation({\n version: 1,\n agentId: this.agent.id,\n sourceRunId: args.runId,\n interaction: args.suspension.interaction,\n state: serializeContinuationState(continuationState)\n });\n const result = {\n status: \"suspended\",\n runId: args.runId,\n text: latestAssistantText([...this.chatHistory, ...args.newMessages]),\n usage: args.usage,\n messages: [...args.newMessages],\n trace: args.runObservers.trace,\n guardrails: [...this.guardrailDecisions],\n interaction: continuation.interaction,\n continuation,\n ...generationArtifacts([...this.chatHistory, ...args.newMessages]),\n ...this.memoryCompactionResult()\n };\n if (this.resumedFrom !== void 0) result.resumedFrom = this.resumedFrom;\n await this.runLifecycleFinish(result);\n await args.runObservers.end(result);\n this.runState = \"completed\";\n this.currentMessages = [...args.newMessages];\n this.disposeAbortLink();\n return result;\n }\n generatedAssistantMessage(response, _request) {\n const generation = {\n provider: this.agent.model.provider,\n modelId: this.agent.model.modelId,\n usage: { ...response.usage }\n };\n if (response.contextUsage !== void 0) generation.contextUsage = response.contextUsage;\n if (response.sources !== void 0) generation.sources = response.sources;\n if (response.providerToolCalls !== void 0) {\n generation.providerToolCalls = response.providerToolCalls;\n }\n const metadata = { anvia: { generation } };\n let message = {\n role: \"assistant\",\n content: response.choice,\n metadata\n };\n if (response.messageId !== void 0) message = { ...message, id: response.messageId };\n return message;\n }\n providerTraceRequest(request, options = {}) {\n try {\n return this.agent.model.traceRequest?.(request, options);\n } catch (error) {\n return {\n error: error instanceof Error ? error.message : String(error)\n };\n }\n }\n generationStartArgs(turn, request, providerRequest) {\n let args = {\n turn,\n request,\n modelInfo: {\n provider: this.agent.model.provider,\n modelId: this.agent.model.modelId,\n capabilities: this.agent.model.capabilities\n }\n };\n if (providerRequest !== void 0) args = { ...args, providerRequest };\n return args;\n }\n retryOptionsForFailure(error, attempt, turn, streaming) {\n if (this.abortController.signal.aborted) return void 0;\n return retryOptionsForFailure(this.completionRetryOptions, {\n error,\n attempt,\n turn,\n streaming\n });\n }\n async scheduleCompletionRetry(error, attempt, turn, streaming, options, runObservers) {\n const delayMs = retryDelayMs(options, attempt);\n await runObservers.event({\n name: \"completion.retry\",\n level: \"WARNING\",\n attributes: {\n turn,\n attempt,\n nextAttempt: attempt + 1,\n maxAttempts: options.maxAttempts,\n delayMs,\n streaming,\n ...retryErrorAttributes(error)\n }\n });\n await waitForRetry(delayMs, this.abortController.signal);\n }\n async executeToolCalls(runId, toolCalls, newMessages, onResult, onStreamEvent, observation) {\n const executor = this.createToolExecutor(runId, newMessages);\n return executor.execute(toolCalls, onResult, onStreamEvent, observation);\n }\n createToolExecutor(runId, newMessages) {\n return new ToolCallExecutor(\n this.agent,\n this.activeHook,\n async (request) => {\n throw new AgentInteractionSignal(approvalInteraction(request), request.rejectMessage);\n },\n this.activeLifecycle,\n {\n runId,\n sessionId: this.memoryScope?.sessionId,\n metadata: this.memoryScope?.metadata\n },\n this.concurrency,\n this.requestMiddlewares,\n this.abortController.signal,\n (reason) => this.cancelled(newMessages, reason)\n );\n }\n async resolveContinuationTools(runId, newMessages, onResult, onStreamEvent, observation) {\n const state = this.continuationState;\n const response = this.interactionResponse;\n if (state === void 0 || response === void 0) {\n return [];\n }\n const pending = state.pending;\n const interaction = this.resumedFrom;\n if (interaction === void 0) {\n throw new TypeError(\"Agent continuation is missing its source run linkage.\");\n }\n const executor = this.createToolExecutor(runId, newMessages);\n const results = [];\n if (response.type === \"tool-approval\") {\n const attributes = {\n approvalId: interaction.interactionId,\n toolName: pending.toolCall.toolName,\n toolCallId: pending.toolCall.toolCallId,\n internalCallId: pending.internalCallId,\n approved: response.approved\n };\n if (response.reason !== void 0) attributes.decisionReason = response.reason;\n await observation.runObservers.event({\n name: \"tool.approval_resolved\",\n attributes\n });\n if (response.approved) {\n results.push(await executor.executeResumed(pending, onResult, onStreamEvent, observation));\n } else {\n const output = {\n type: \"execution-denied\",\n reason: response.reason ?? pending.rejectMessage ?? \"Tool approval was rejected.\"\n };\n results.push(await executor.resolveResumed(pending, output, onResult, observation));\n }\n } else {\n const currentTool = this.agent.getTool(pending.toolCall.toolName);\n if (currentTool === void 0 || !isQuestionTool(currentTool)) {\n throw new TypeError(\n `Cannot resume question interaction because tool \"${pending.toolCall.toolName}\" is no longer registered as a question tool.`\n );\n }\n const output = questionResult(response.answers);\n results.push(await executor.resolveResumed(pending, output, onResult, observation));\n }\n try {\n results.push(\n ...await executor.execute(state.remainingToolCalls, onResult, onStreamEvent, observation)\n );\n } catch (error) {\n if (error instanceof ToolExecutionSuspension) {\n error.completedResults = [...results, ...error.completedResults];\n }\n throw error;\n }\n return results;\n }\n executeStreamingToolCalls(runId, toolCalls, newMessages, observation) {\n const events = createAsyncQueue();\n const results = this.executeToolCalls(\n runId,\n toolCalls,\n newMessages,\n (result) => events.enqueue(result),\n (event) => events.enqueue(event),\n observation\n );\n results.then(\n () => events.close(),\n (error) => events.throw(error)\n );\n return { events, results };\n }\n executeContinuationToolStream(runId, newMessages, observation) {\n const events = createAsyncQueue();\n const results = this.resolveContinuationTools(\n runId,\n newMessages,\n (result) => events.enqueue(result),\n (event) => events.enqueue(event),\n observation\n );\n results.then(\n () => events.close(),\n (error) => events.throw(error)\n );\n return { events, results };\n }\n async closeActiveGeneration(error) {\n const active = this.activeGeneration;\n if (active === void 0) {\n return;\n }\n this.activeGeneration = void 0;\n await active.observers.error({ turn: active.turn, error });\n }\n updateRunProgress(messages) {\n this.currentMessages = [...messages];\n }\n async runLifecycleFinish(result) {\n const common = {\n runId: result.runId,\n text: result.text,\n usage: lifecycleSnapshot(result.usage),\n messages: lifecycleSnapshot(result.messages)\n };\n if (result.memoryCompaction !== void 0) {\n Object.assign(common, { memoryCompaction: lifecycleSnapshot(result.memoryCompaction) });\n }\n const event = result.status === \"completed\" ? {\n ...common,\n status: \"completed\",\n output: lifecycleSnapshot(result.output)\n } : result.status === \"blocked\" ? {\n ...common,\n status: \"blocked\",\n stage: result.stage\n } : {\n ...common,\n status: \"suspended\",\n interaction: lifecycleSnapshot(result.interaction)\n };\n await this.activeLifecycle?.onFinish?.(event);\n }\n async runLifecycleError(error, runId, usage, messages) {\n try {\n await this.activeLifecycle?.onError?.({\n runId,\n error: lifecycleSnapshot(error),\n usage: lifecycleSnapshot(usage),\n messages: lifecycleSnapshot([...this.chatHistory, ...messages])\n });\n return void 0;\n } catch (lifecycleError) {\n return lifecycleError;\n }\n }\n async reportRunFailure(error, runId, usage, messages, runObservers) {\n const reportedError = await this.resolveReportedRunError(error, runId, usage, messages);\n await settleFailureCleanup([\n () => this.onInternalFailure?.({\n error: reportedError,\n messages: lifecycleSnapshot(messages)\n }),\n () => runObservers?.error({\n error: reportedError,\n usage,\n messages: [...messages]\n }),\n () => this.memoryRecorder.recordError(runId, reportedError, messages)\n ]);\n return reportedError;\n }\n async resolveReportedRunError(error, runId, usage, messages) {\n try {\n await this.runRunErrorHook(error, usage, messages);\n } catch {\n }\n await this.runLifecycleError(error, runId, usage, messages);\n return error;\n }\n async runOutputGuardrailsForResponse(runId, usage, response, messages, runObservers) {\n const originalOutput = textFromAssistantContent(response.choice);\n const result = await runOutputGuardrails(this.guardrailPolicies, {\n outputText: originalOutput,\n messages: [...this.chatHistory, ...messages],\n usage,\n run: this.guardrailRunContext(runId)\n });\n for (const decision of result.decisions) {\n await this.recordGuardrailDecision(decision, runObservers);\n }\n const text = result.blocked ? result.message ?? \"The response was blocked by a guardrail.\" : result.outputText;\n if (text === originalOutput) {\n return { text, blocked: result.blocked, response, decisions: result.decisions };\n }\n return {\n text,\n blocked: result.blocked,\n response: {\n ...response,\n choice: [{ type: \"text\", text }]\n },\n decisions: result.decisions\n };\n }\n createTerminalResult(runId, text, blocked, usage, messages, runObservers) {\n const common = {\n runId,\n text,\n usage,\n messages: [...messages],\n trace: runObservers.trace,\n guardrails: [...this.guardrailDecisions],\n ...generationArtifacts(messages),\n ...this.memoryCompactionResult()\n };\n if (this.resumedFrom !== void 0) Object.assign(common, { resumedFrom: this.resumedFrom });\n if (blocked) {\n return { ...common, status: \"blocked\", stage: \"output\" };\n }\n return {\n ...common,\n status: \"completed\",\n output: this.parseOutput(text)\n };\n }\n parseOutput(text) {\n const schema = this.agent.outputSchema;\n if (schema === void 0) return text;\n let json;\n try {\n json = JSON.parse(text);\n } catch (error) {\n throw new Error(\"Agent expected the model response to be valid JSON.\", { cause: error });\n }\n return schema.parse(json);\n }\n memoryCompactionResult() {\n return this.memoryCompaction === void 0 ? {} : { memoryCompaction: lifecycleSnapshot(this.memoryCompaction) };\n }\n async recordGuardrailDecision(decision, runObservers) {\n this.guardrailDecisions.push(decision);\n await runObservers.event({\n name: \"guardrail.decision\",\n level: decision.action === \"block\" ? \"WARNING\" : \"DEFAULT\",\n attributes: guardrailDecisionAttributes(decision)\n });\n }\n async recordMemoryCompaction(preparation, runObservers) {\n const compaction = preparation.compaction;\n if (compaction === void 0) {\n return;\n }\n await runObservers.event({\n name: \"memory.compaction\",\n attributes: {\n originalMessageCount: compaction.originalMessageCount,\n compactedMessageCount: compaction.compactedMessageCount,\n retainedMessageCount: compaction.retainedMessageCount,\n attempts: compaction.attempts,\n inputTokens: compaction.usage.inputTokens,\n outputTokens: compaction.usage.outputTokens,\n totalTokens: compaction.usage.totalTokens\n }\n });\n }\n async notifyInternalMemoryCompaction(compaction) {\n if (compaction === void 0) {\n return;\n }\n await this.onInternalMemoryCompaction?.(lifecycleSnapshot(compaction));\n }\n guardrailRunContext(runId) {\n const context = {\n agentId: this.agent.id,\n runId\n };\n if (this.memoryScope !== void 0) {\n context.sessionId = this.memoryScope.sessionId;\n if (this.memoryScope.metadata !== void 0) {\n context.metadata = this.memoryScope.metadata;\n }\n }\n return context;\n }\n async startRunObservers(runId) {\n const observability = this.agent.observability;\n return startAgentRunObservers(\n observability?.observers ?? {},\n {\n runId,\n agentName: this.agent.name,\n agentDescription: this.agent.description,\n instructions: this.agent.instructions,\n trace: this.traceOptions,\n promptRef: this.traceOptions?.promptRef,\n prompt: this.promptMessage,\n history: this.chatHistory,\n maxTurns: this.maxTurnCount\n },\n {\n primaryTrace: observability?.primaryTrace,\n errorPolicy: observability?.errorPolicy ?? \"ignore\"\n }\n );\n }\n async runCompletionCallHook(prompt, history, newMessages) {\n const action = await this.activeHook?.onCompletionCall?.({\n prompt,\n history,\n run: runControl\n });\n if (action?.type === \"terminate\") {\n throw this.cancelled(newMessages, action.reason);\n }\n }\n async runRunStartHook(newMessages) {\n const action = await this.activeHook?.onRunStart?.({\n prompt: this.promptMessage,\n history: this.chatHistory,\n maxTurns: this.maxTurnCount,\n run: runControl\n });\n if (action?.type === \"terminate\") {\n throw this.cancelled(newMessages, action.reason);\n }\n }\n async runRunEndHook(result, newMessages) {\n const action = await this.activeHook?.onRunEnd?.({\n status: \"completed\",\n output: result.output,\n text: result.text,\n usage: result.usage,\n messages: result.messages,\n run: runControl\n });\n if (action?.type === \"terminate\") {\n throw this.cancelled(newMessages, action.reason);\n }\n }\n async runRunErrorHook(error, usage, newMessages) {\n const action = await this.activeHook?.onRunError?.({\n error,\n usage,\n messages: [...this.chatHistory, ...newMessages],\n run: runControl\n });\n if (action?.type === \"terminate\") {\n this.cancelled(newMessages, action.reason);\n }\n }\n async runTurnStartHook(turn, prompt, history, newMessages) {\n const action = await this.activeHook?.onTurnStart?.({\n turn,\n prompt,\n history,\n run: runControl\n });\n if (action?.type === \"terminate\") {\n throw this.cancelled(newMessages, action.reason);\n }\n }\n async runTurnEndHook(turn, response, newMessages) {\n const action = await this.activeHook?.onTurnEnd?.({\n turn,\n response,\n run: runControl\n });\n if (action?.type === \"terminate\") {\n throw this.cancelled(newMessages, action.reason);\n }\n }\n async runCompletionRequestMiddlewares(request, turn) {\n let current = request;\n for (const middleware of this.activeMiddlewares()) {\n const replacement = await middleware.onCompletionRequest?.({\n turn,\n request: current,\n originalRequest: request\n });\n if (replacement?.request !== void 0) {\n current = replacement.request;\n }\n }\n return current;\n }\n async runCompletionResponseMiddlewares(request, response, turn) {\n let current = response;\n for (const middleware of this.activeMiddlewares()) {\n const replacement = await middleware.onCompletionResponse?.({\n turn,\n request,\n response: current,\n originalResponse: response\n });\n if (replacement?.response !== void 0) {\n current = replacement.response;\n }\n }\n return current;\n }\n async runCompletionResponseHook(prompt, response, newMessages) {\n const action = await this.activeHook?.onCompletionResponse?.({\n prompt,\n response,\n run: runControl\n });\n if (action?.type === \"terminate\") {\n throw this.cancelled(newMessages, action.reason);\n }\n }\n async runCompletionErrorHook(prompt, error, newMessages) {\n const action = await this.activeHook?.onCompletionError?.({\n prompt,\n error,\n run: runControl\n });\n if (action?.type === \"terminate\") {\n throw this.cancelled(newMessages, action.reason);\n }\n }\n activeMiddlewares() {\n return [...this.agent.middlewares, ...this.requestMiddlewares];\n }\n shouldBufferStreamResponseEvents() {\n return this.activeHook?.onCompletionResponse !== void 0 || this.activeMiddlewares().some((middleware) => middleware.onCompletionResponse !== void 0);\n }\n async drainSteeringMessages(runId, turn, newMessages, pendingTurnMessages, options = {}) {\n const receipts = this.steeringMessages.splice(0);\n if (receipts.length === 0) {\n if (options.closeWhenEmpty === true) {\n this.runState = \"closing\";\n }\n return [];\n }\n const messages = receipts.flatMap((receipt) => receipt.messages);\n newMessages.push(...messages);\n await this.memoryRecorder.commitMessages(runId, turn, messages, pendingTurnMessages);\n return receipts;\n }\n startRun() {\n if (this.runState === \"idle\") {\n this.runState = \"running\";\n return;\n }\n if (this.runState === \"running\") {\n throw new Error(\"Agent stream is already running.\");\n }\n throw new Error(\"Agent stream has already been consumed.\");\n }\n isTerminal() {\n return this.runState !== \"idle\" && this.runState !== \"running\";\n }\n cancelled(newMessages, reason) {\n if (this.cancellationError !== void 0) return this.cancellationError;\n const error = new AgentRunCancelledError([...this.chatHistory, ...newMessages], reason);\n this.setCancellationError(error);\n return error;\n }\n linkExternalAbortSignal(signal) {\n if (signal === void 0) return;\n const cancelFromSignal = () => {\n if (this.cancellationError !== void 0 || this.isTerminal()) return;\n const cause = abortError(signal.reason);\n const reason = abortReason(signal.reason);\n const messages = this.currentMessages.length === 0 ? [this.promptMessage] : [...this.currentMessages];\n this.setCancellationError(\n new AgentRunCancelledError([...this.chatHistory, ...messages], reason, { cause })\n );\n };\n if (signal.aborted) {\n cancelFromSignal();\n return;\n }\n signal.addEventListener(\"abort\", cancelFromSignal, { once: true });\n this.removeExternalAbortListener = () => signal.removeEventListener(\"abort\", cancelFromSignal);\n }\n throwIfCancelled() {\n if (this.cancellationError !== void 0) throw this.cancellationError;\n throwIfAborted(this.abortController.signal);\n }\n normalizeRunError(error) {\n return this.abortController.signal.aborted && this.cancellationError !== void 0 ? this.cancellationError : error;\n }\n modelCallOptions() {\n return { abortSignal: this.abortController.signal };\n }\n disposeAbortLink() {\n this.removeExternalAbortListener?.();\n this.removeExternalAbortListener = void 0;\n }\n};\nfunction abortReason(reason) {\n if (typeof reason === \"string\" && reason.trim().length > 0) return reason;\n if (reason instanceof Error && reason.message.trim().length > 0) return reason.message;\n return \"External abort signal.\";\n}\nfunction normalizeAgentInput(agentId, input) {\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) {\n throw new TypeError(\"Agent runs require one options object with prompt or messages.\");\n }\n const hasContinuation = \"continuation\" in input && input.continuation !== void 0;\n const hasPrompt = \"prompt\" in input && input.prompt !== void 0;\n const hasMessages = \"messages\" in input && input.messages !== void 0;\n if (Number(hasContinuation) + Number(hasPrompt) + Number(hasMessages) !== 1) {\n throw new TypeError(\"Agent runs require exactly one of prompt, messages, or continuation.\");\n }\n if (hasContinuation) {\n if (!(\"response\" in input) || input.response === void 0) {\n throw new TypeError(\"Agent continuation runs require an interaction response.\");\n }\n if (\"session\" in input && input.session !== void 0) {\n throw new TypeError(\"Agent continuations carry their memory scope and cannot use session.\");\n }\n const continuation = parseAgentContinuation(input.continuation);\n if (continuation.agentId !== agentId) {\n throw new TypeError(\n `Agent continuation belongs to \"${continuation.agentId}\", not \"${agentId}\".`\n );\n }\n const response = parseAgentInteractionResponse(input.response);\n assertAgentInteractionResponse(continuation.interaction, response);\n const state = parseContinuationState(continuation.state, continuation.interaction);\n let responsePart;\n if (response.type === \"tool-approval\") {\n responsePart = {\n type: \"tool-approval-response\",\n interactionId: continuation.interaction.id,\n toolCallId: continuation.interaction.toolCallId,\n toolName: continuation.interaction.toolName,\n approved: response.approved\n };\n if (response.reason !== void 0)\n responsePart = { ...responsePart, reason: response.reason };\n } else {\n responsePart = {\n type: \"tool-question-response\",\n interactionId: continuation.interaction.id,\n toolCallId: continuation.interaction.toolCallId,\n toolName: continuation.interaction.toolName,\n answers: response.answers\n };\n }\n if (continuation.interaction.callId !== void 0) {\n responsePart = { ...responsePart, callId: continuation.interaction.callId };\n }\n const normalized = {\n prompt: parseMessage({ role: \"tool\", content: [responsePart] }),\n history: [...state.history, ...state.messages],\n continuationState: state,\n interactionResponse: response,\n sourceRunId: continuation.sourceRunId,\n interactionId: continuation.interaction.id\n };\n if (state.memoryScope !== void 0) {\n Object.assign(normalized, { scope: normalizeMemoryScope(state.memoryScope) });\n }\n return normalized;\n }\n if (hasPrompt) {\n const prompt = input.prompt;\n if (typeof prompt !== \"string\" && (typeof prompt !== \"object\" || prompt === null || prompt.role !== \"user\")) {\n throw new TypeError(\"Agent prompt must be text or a user message.\");\n }\n const parsedPrompt = parseMessage(\n typeof prompt === \"string\" ? { role: \"user\", content: prompt } : prompt\n );\n if (parsedPrompt.role !== \"user\") {\n throw new TypeError(\"Agent prompt must be text or a user message.\");\n }\n const normalized = {\n prompt: parsedPrompt,\n history: []\n };\n if (input.session !== void 0) {\n Object.assign(normalized, { scope: normalizeMemoryScope(input.session) });\n }\n return normalized;\n }\n if (input.session !== void 0) {\n throw new TypeError(\"Agent messages cannot be combined with a persisted session.\");\n }\n const messages = input.messages;\n if (!Array.isArray(messages) || messages.length === 0) {\n throw new TypeError(\"Agent input transcript must contain at least one message.\");\n }\n const parsedMessages = parseMessages(messages);\n const activePrompt = parsedMessages.at(-1);\n if (activePrompt === void 0) {\n throw new TypeError(\"Agent input transcript must contain at least one message.\");\n }\n if (activePrompt.role !== \"user\") {\n throw new TypeError(\"Agent input transcript must end with a user message.\");\n }\n return {\n prompt: activePrompt,\n history: parsedMessages.slice(0, -1)\n };\n}\nfunction normalizeSteeringInput(input) {\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) {\n throw new TypeError(\"Agent steering requires one options object with prompt or messages.\");\n }\n const hasPrompt = \"prompt\" in input && input.prompt !== void 0;\n const hasMessages = \"messages\" in input && input.messages !== void 0;\n if (hasPrompt === hasMessages) {\n throw new TypeError(\"Agent steering requires exactly one of prompt or messages.\");\n }\n if (hasPrompt) {\n const prompt = input.prompt;\n if (typeof prompt !== \"string\" && (typeof prompt !== \"object\" || prompt === null || prompt.role !== \"user\")) {\n throw new TypeError(\"Agent steering prompt must be text or a user message.\");\n }\n const parsedPrompt = parseMessage(\n typeof prompt === \"string\" ? { role: \"user\", content: prompt } : prompt\n );\n if (parsedPrompt.role !== \"user\") {\n throw new TypeError(\"Agent steering prompt must be text or a user message.\");\n }\n return [parsedPrompt];\n }\n const messages = input.messages;\n if (!Array.isArray(messages) || messages.length === 0) {\n throw new TypeError(\"Agent steering messages must contain at least one user message.\");\n }\n const parsedMessages = parseMessages(messages);\n if (parsedMessages.some((message) => message.role !== \"user\")) {\n throw new TypeError(\"Agent steering messages must all be user messages.\");\n }\n return parsedMessages;\n}\nfunction normalizeMemoryScope(scope) {\n if (typeof scope !== \"object\" || scope === null) {\n throw new TypeError(\"Agent session must be an object.\");\n }\n if (typeof scope.sessionId !== \"string\" || scope.sessionId.trim().length === 0) {\n throw new TypeError(\"Agent sessionId must be a non-empty string.\");\n }\n const normalized = {\n sessionId: scope.sessionId.trim()\n };\n if (scope.userId !== void 0) normalized.userId = scope.userId;\n if (scope.metadata !== void 0) normalized.metadata = scope.metadata;\n return lifecycleSnapshot(normalized);\n}\nfunction normalizeRequestedRunId(runId) {\n if (runId === void 0) {\n return void 0;\n }\n if (typeof runId !== \"string\" || runId.trim().length === 0) {\n throw new TypeError(\"runId must be a non-empty string.\");\n }\n return runId;\n}\nfunction responseStreamEvents(turn, response, includeProviderArtifacts = true) {\n const events = [];\n for (const item of response.choice) {\n if (item.type === \"text\") {\n if (item.text.length > 0) {\n events.push({ type: \"text_delta\", turn, delta: item.text });\n }\n continue;\n }\n if (item.type === \"reasoning\") {\n if (item.details === void 0) {\n if (item.text.length > 0) {\n events.push(reasoningDeltaEvent2(turn, item.text, { id: item.id }));\n }\n continue;\n }\n for (const content of item.details) {\n const delta = content.type === \"encrypted\" || content.type === \"redacted\" ? content.data : content.text;\n events.push(\n reasoningDeltaEvent2(turn, delta, {\n id: item.id,\n contentType: content.type,\n signature: content.type === \"text\" ? content.signature : void 0\n })\n );\n }\n continue;\n }\n if (item.type === \"tool-call\") {\n events.push({ type: \"tool_call\", turn, toolCall: item });\n }\n }\n if (includeProviderArtifacts) {\n for (const source of response.sources ?? []) {\n events.push({ type: \"source\", turn, source });\n }\n for (const toolCall of response.providerToolCalls ?? []) {\n events.push({ type: \"provider_tool_call\", turn, toolCall });\n }\n }\n return events;\n}\nfunction generationArtifacts(messages) {\n const sources = /* @__PURE__ */ new Map();\n const providerToolCalls = /* @__PURE__ */ new Map();\n let contextUsage;\n for (const message of messages) {\n const metadata = getAssistantGenerationMetadata(message);\n if (metadata !== void 0) {\n contextUsage = metadata.contextUsage;\n }\n for (const source of metadata?.sources ?? []) {\n const key = `${source.url}\\0${source.startIndex ?? \"\"}\\0${source.endIndex ?? \"\"}`;\n sources.set(key, source);\n }\n for (const toolCall of metadata?.providerToolCalls ?? []) {\n providerToolCalls.set(toolCall.id, toolCall);\n }\n }\n const artifacts = {};\n if (sources.size > 0) artifacts.sources = [...sources.values()];\n if (providerToolCalls.size > 0) {\n artifacts.providerToolCalls = [...providerToolCalls.values()];\n }\n if (contextUsage !== void 0) artifacts.contextUsage = contextUsage;\n return artifacts;\n}\nfunction reasoningDeltaEvent2(turn, delta, details = {}) {\n const event = {\n type: \"reasoning_delta\",\n turn,\n delta\n };\n if (details.id !== void 0) {\n event.id = details.id;\n }\n if (details.contentType !== void 0) {\n event.contentType = details.contentType;\n }\n if (details.signature !== void 0) {\n event.signature = details.signature;\n }\n return event;\n}\nfunction textFromMessage(message) {\n if (message.role === \"system\") {\n return message.content;\n }\n if (typeof message.content === \"string\") {\n return message.content;\n }\n return message.content.flatMap((content) => {\n if (content.type === \"text\") {\n return [content.text];\n }\n if (content.type === \"file\" && content.data.type === \"text\") {\n return [content.data.text];\n }\n return [];\n }).join(\"\\n\");\n}\nfunction latestAssistantText(messages) {\n for (let index = messages.length - 1; index >= 0; index -= 1) {\n const message = messages[index];\n if (message?.role === \"assistant\") {\n return typeof message.content === \"string\" ? message.content : textFromAssistantContent(message.content);\n }\n }\n return \"\";\n}\nfunction providerMessages(messages) {\n const providerMessages2 = [];\n for (const message of messages) {\n if (message.role !== \"tool\") {\n providerMessages2.push(message);\n continue;\n }\n const results = message.content.filter((part) => part.type === \"tool-result\");\n if (results.length > 0) {\n providerMessages2.push({ ...message, content: results });\n }\n }\n return providerMessages2;\n}\nfunction guardrailDecisionAttributes(decision) {\n const attributes = {\n policyId: decision.policyId,\n guardrailId: decision.guardrailId,\n boundary: decision.boundary,\n mode: decision.mode,\n action: decision.action,\n applied: decision.applied,\n latencyMs: decision.latencyMs\n };\n if (decision.reason !== void 0) {\n attributes.reason = decision.reason;\n }\n if (decision.message !== void 0) {\n attributes.message = decision.message;\n }\n return attributes;\n}\n\n// src/agent/agent-stream.ts\nfunction createAgentStream(run) {\n return new DefaultAgentStream(run);\n}\nvar DefaultAgentStream = class {\n constructor(run) {\n this.run = run;\n }\n run;\n consuming = false;\n completed = false;\n steer(input) {\n return this.run.steer(input);\n }\n [Symbol.asyncIterator]() {\n return this.consume()[Symbol.asyncIterator]();\n }\n async *consume() {\n if (this.completed) {\n throw new Error(\"Agent stream has already been consumed.\");\n }\n if (this.consuming) {\n throw new Error(\"Agent stream is already running.\");\n }\n this.consuming = true;\n try {\n for await (const event of this.run.events()) {\n yield event;\n }\n } finally {\n if (!this.completed) {\n this.run.cancel(\"Agent stream consumer closed the stream.\");\n }\n this.consuming = false;\n this.completed = true;\n }\n }\n};\n\n// src/agent/agent-tool.ts\nimport { z as z2 } from \"zod\";\nfunction createAgentTool(agent, options) {\n if (options.suspension !== \"reject\") {\n throw new TypeError('Agent.asTool() requires suspension: \"reject\".');\n }\n const description = options.description ?? agent.description ?? `Prompt the ${options.name} agent.`;\n return createTool({\n name: options.name,\n description,\n inputSchema: z2.object({\n prompt: z2.string().describe(\"The prompt to send to the agent.\")\n }),\n execute: async ({ prompt }, context) => {\n if (options.stream === true && context.emitStreamEvent !== void 0 && agent.model.capabilities.streaming && isStreamingCompletionModel(agent.model)) {\n let completed = false;\n let output;\n const childStream = agent.stream({\n prompt,\n maxTurns: options.maxTurns,\n abortSignal: context.abortSignal\n });\n for await (const event of childStream) {\n const streamEvent = {\n agentId: agent.id,\n event\n };\n if (agent.name !== void 0) {\n streamEvent.agentName = agent.name;\n }\n await context.emitStreamEvent(streamEvent);\n if (event.type === \"error\") {\n throw event.error;\n }\n if (event.type === \"final\") {\n if (event.result.status === \"suspended\") {\n throw new AgentToolSuspensionError(event.result);\n }\n if (event.result.status === \"blocked\") {\n throw new AgentRunBlockedError(event.result);\n }\n output = event.result.output;\n completed = true;\n }\n }\n if (!completed) {\n throw new Error(`Agent tool \"${options.name}\" ended without a final result.`);\n }\n return output;\n }\n const response = await agent.generate({\n prompt,\n maxTurns: options.maxTurns,\n abortSignal: context.abortSignal\n });\n if (response.status === \"suspended\") {\n throw new AgentToolSuspensionError(response);\n }\n if (response.status === \"blocked\") {\n throw new AgentRunBlockedError(response);\n }\n return response.output;\n }\n });\n}\n\n// src/agent/ids.ts\nfunction normalizeAgentId(id) {\n if (typeof id !== \"string\") {\n throw new TypeError(\"Agent id must be a string.\");\n }\n const normalized = id.trim();\n if (normalized.length === 0) {\n throw new TypeError(\"Agent id must be a non-empty string.\");\n }\n return normalized;\n}\n\n// src/memory/options.ts\nfunction resolveMemoryOptions(options = {}) {\n const resolved = {\n savePolicy: options.savePolicy ?? \"message\"\n };\n if (options.compaction !== void 0) {\n assertPositiveInteger(\n options.compaction.trigger.afterMessages,\n \"compaction.trigger.afterMessages\"\n );\n const recentUserTurns = options.compaction.retention?.recentUserTurns ?? 4;\n assertPositiveInteger(recentUserTurns, \"compaction.retention.recentUserTurns\");\n if (typeof options.compaction.compactor !== \"function\") {\n throw new TypeError(\"compaction.compactor must be a function.\");\n }\n const conflictRetries = options.compaction.conflictRetries ?? false;\n if (conflictRetries !== false) {\n assertPositiveInteger(conflictRetries.maxAttempts, \"compaction.conflictRetries.maxAttempts\");\n }\n resolved.compaction = {\n trigger: {\n afterMessages: options.compaction.trigger.afterMessages\n },\n retention: {\n recentUserTurns\n },\n compactor: options.compaction.compactor,\n conflictRetries\n };\n }\n return resolved;\n}\n\n// src/agent/resolve-options.ts\nvar resolvedAgentOptions = /* @__PURE__ */ Symbol(\"resolvedAgentOptions\");\nfunction resolveAgentOptions(options) {\n if (isInternalAgentOptions(options)) {\n return options;\n }\n const toolsByName = /* @__PURE__ */ new Map();\n const providerTools = [];\n const toolIndexes = [];\n for (const tool of options.tools ?? []) {\n if (isProviderTool(tool)) {\n providerTools.push(tool);\n } else if (isToolIndex(tool)) {\n toolIndexes.push(tool);\n } else if (tool.kind === \"tool-index\") {\n throw new TypeError(\"Invalid tool index: search, tools, and a numeric topK are required.\");\n } else if (isMcpTool(tool)) {\n throw new TypeError(\n `MCP tool \"${tool.name}\" must be registered through Agent.mcpServers, not Agent.tools.`\n );\n } else {\n addUniqueTool(toolsByName, tool, \"local tool\");\n }\n }\n if (options.skills !== void 0) {\n for (const tool of options.skills.tools) {\n if (isMcpTool(tool)) {\n throw new TypeError(\n `MCP tool \"${tool.name}\" must be registered through Agent.mcpServers, not Agent.skills.`\n );\n }\n addUniqueTool(toolsByName, tool, \"skill tool\");\n }\n }\n const memory = resolveAgentMemory(options);\n const instructions = [options.instructions, options.skills?.instructions].filter((part) => part !== void 0 && part.length > 0).join(\"\\n\\n\");\n return {\n id: options.id,\n name: options.name,\n description: options.description,\n model: options.model,\n instructions: instructions.length === 0 ? void 0 : instructions,\n context: [...options.context ?? []],\n temperature: options.temperature,\n maxTokens: options.maxTokens,\n providerOptions: options.providerOptions,\n retries: options.retries,\n tools: [...toolsByName.values()],\n mcpServers: [...options.mcpServers ?? []],\n providerTools,\n toolIndexes,\n toolChoice: options.toolChoice,\n defaultMaxTurns: options.maxTurns,\n lifecycle: options.lifecycle,\n outputSchema: options.outputSchema,\n observability: options.observability,\n guardrails: options.guardrails === void 0 ? [] : appendGuardrailPolicies([], options.guardrails),\n middlewares: [...options.middlewares ?? []],\n memory\n };\n}\nfunction markResolvedAgentOptions(options) {\n return {\n ...options,\n [resolvedAgentOptions]: true\n };\n}\nfunction isInternalAgentOptions(options) {\n return options[resolvedAgentOptions] === true;\n}\nfunction resolveAgentMemory(options) {\n if (options.memory === void 0) {\n return void 0;\n }\n const { store, ...memoryOptions } = options.memory;\n const resolvedOptions = resolveMemoryOptions(memoryOptions);\n if (resolvedOptions.compaction !== void 0 && store.compaction === void 0) {\n throw new TypeError(\n \"Memory compaction requires a store with the optional compaction capability.\"\n );\n }\n return { store, ...resolvedOptions };\n}\nfunction addUniqueTool(tools, tool, source) {\n if (tools.has(tool.name)) {\n throw new TypeError(`Duplicate ${source} name \"${tool.name}\".`);\n }\n tools.set(tool.name, tool);\n}\n\n// src/agent/snapshot.ts\nfunction snapshotAgentContext(inputs) {\n const context = (inputs ?? []).map(snapshotContextInput);\n for (const input of context) {\n if (!isVectorContext(input)) continue;\n assertPositiveSearchLimit(input.topK);\n assertFiniteMinScore(input.minScore);\n }\n return Object.freeze(context);\n}\nfunction snapshotAgentObservability(observability) {\n if (observability === void 0) return void 0;\n const observers = {};\n for (const [name, observer] of Object.entries(observability.observers)) {\n if (name.trim().length === 0) {\n throw new TypeError(\"Agent observer names must not be empty.\");\n }\n if (typeof observer !== \"object\" || observer === null || typeof observer.startRun !== \"function\") {\n throw new TypeError(`Agent observer \"${name}\" must implement startRun().`);\n }\n observers[name] = observer;\n }\n if (observability.primaryTrace !== void 0 && !(observability.primaryTrace in observers)) {\n throw new TypeError(\n `Agent primaryTrace \"${observability.primaryTrace}\" must name a configured observer.`\n );\n }\n const errorPolicy = observability.errorPolicy ?? \"ignore\";\n if (errorPolicy !== \"ignore\" && errorPolicy !== \"throw\") {\n throw new TypeError('Agent observability.errorPolicy must be \"ignore\" or \"throw\".');\n }\n let snapshot = {\n observers: Object.freeze(observers),\n errorPolicy\n };\n if (observability.primaryTrace !== void 0) {\n snapshot = { ...snapshot, primaryTrace: observability.primaryTrace };\n }\n return Object.freeze(snapshot);\n}\nfunction snapshotGuardrailPolicies(policies) {\n return Object.freeze((policies ?? []).map(snapshotGuardrailPolicy));\n}\nfunction snapshotAgentMemory(memory) {\n if (memory === void 0) {\n return void 0;\n }\n const compaction = memory.compaction === void 0 ? void 0 : Object.freeze({\n ...memory.compaction,\n trigger: Object.freeze({ ...memory.compaction.trigger }),\n retention: Object.freeze({ ...memory.compaction.retention }),\n conflictRetries: memory.compaction.conflictRetries === false ? false : Object.freeze({ ...memory.compaction.conflictRetries })\n });\n let snapshot = {\n store: memory.store,\n savePolicy: memory.savePolicy\n };\n if (compaction !== void 0) {\n snapshot = { ...snapshot, compaction };\n }\n return Object.freeze(snapshot);\n}\nfunction cloneFrozenPlainData(value) {\n if (Array.isArray(value)) {\n return Object.freeze(value.map(cloneFrozenPlainData));\n }\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n return value;\n }\n const clone = Object.fromEntries(\n Object.entries(value).map(([key, item]) => [key, cloneFrozenPlainData(item)])\n );\n return Object.freeze(clone);\n}\nfunction snapshotContextInput(input) {\n if (!isVectorContext(input)) {\n let document = {\n id: input.id,\n text: input.text\n };\n if (input.additionalProps !== void 0) {\n document = {\n ...document,\n additionalProps: cloneFrozenPlainData(input.additionalProps)\n };\n }\n return Object.freeze(document);\n }\n const format = input.format;\n let shared = {\n kind: \"vector-context\",\n store: input.store,\n topK: input.topK\n };\n if (input.minScore !== void 0) {\n shared = { ...shared, minScore: input.minScore };\n }\n if (input.filter !== void 0) {\n shared = { ...shared, filter: cloneFrozenPlainData(input.filter) };\n }\n if (input.retries !== void 0) {\n shared = { ...shared, retries: cloneFrozenPlainData(input.retries) };\n }\n if (format !== void 0) {\n shared = {\n ...shared,\n format: (result) => format.call(input, result)\n };\n }\n if (!(\"models\" in input) || input.models === void 0) {\n return Object.freeze({ ...shared, store: input.store, model: input.model });\n }\n let context = {\n ...shared,\n store: input.store,\n models: input.models\n };\n if (input.fusion !== void 0) {\n context = { ...context, fusion: input.fusion };\n }\n return Object.freeze(context);\n}\nfunction snapshotGuardrailPolicy(policy) {\n return Object.freeze({\n ...policy,\n input: Object.freeze([...policy.input]),\n output: Object.freeze([...policy.output])\n });\n}\n\n// src/agent/tool-catalog.ts\nfunction prepareAgentTools(options) {\n assertUniqueMcpServerNames(options.mcpServers ?? []);\n const mcpServers = Object.freeze((options.mcpServers ?? []).map(snapshotMcpServer));\n const configuredTools = [...options.tools ?? []];\n const staticTools = [...configuredTools, ...mcpServers.flatMap((server) => server.tools)];\n const toolIndexes = (options.toolIndexes ?? []).map(snapshotToolIndex);\n const providerTools = (options.providerTools ?? []).map(snapshotProviderTool);\n assertUniqueAgentToolNames({ staticTools, providerTools, toolIndexes });\n const toolsByName = new Map(staticTools.map((tool) => [tool.name, tool]));\n for (const index of toolIndexes) {\n for (const tool of index.tools) {\n toolsByName.set(tool.name, tool);\n }\n }\n const tools = Object.freeze([...toolsByName.values()]);\n const publicState = Object.freeze({\n configuredTools: Object.freeze(configuredTools),\n staticTools: Object.freeze(staticTools),\n providerTools: Object.freeze(providerTools),\n toolIndexes: Object.freeze(toolIndexes)\n });\n return { mcpServers, tools, publicState, toolsByName };\n}\nfunction assertUniqueAgentToolNames(options) {\n const owners = /* @__PURE__ */ new Map();\n for (const tool of options.staticTools) {\n registerToolOwner(owners, tool.name, isMcpTool(tool) ? \"MCP tool\" : \"local or skill tool\");\n }\n for (const tool of options.providerTools) {\n registerToolOwner(owners, tool.name, \"provider tool\");\n }\n for (const [indexPosition, index] of options.toolIndexes.entries()) {\n if (!isToolIndex(index)) {\n throw new TypeError(\"Invalid tool index: search, tools, and a numeric topK are required.\");\n }\n assertPositiveSearchLimit(index.topK);\n assertFiniteMinScore(index.minScore);\n for (const tool of index.tools) {\n if (isMcpTool(tool)) {\n throw new TypeError(\n `MCP tool \"${tool.name}\" must be registered through Agent.mcpServers, not a tool index.`\n );\n }\n registerToolOwner(owners, tool.name, `tool index ${indexPosition + 1}`);\n }\n }\n}\nfunction registerToolOwner(owners, name, owner) {\n const existing = owners.get(name);\n if (existing !== void 0) {\n throw new TypeError(\n `Tool name collision for \"${name}\" between ${existing} and ${owner}. Tool names must be unique across every Agent tool source.`\n );\n }\n owners.set(name, owner);\n}\nfunction snapshotProviderTool(tool) {\n let snapshot = {\n ...tool\n };\n if (tool.configuration !== void 0) {\n snapshot = { ...snapshot, configuration: cloneFrozenPlainData(tool.configuration) };\n }\n return Object.freeze(snapshot);\n}\nfunction snapshotMcpServer(server) {\n if (server.name.trim() === \"\") {\n throw new TypeError(\"MCP server name must not be empty.\");\n }\n for (const tool of server.tools) {\n if (!isMcpTool(tool)) {\n throw new TypeError(`MCP server \"${server.name}\" contains an invalid MCP tool.`);\n }\n if (tool.mcp.serverName !== server.name) {\n throw new TypeError(\n `MCP tool \"${tool.name}\" belongs to server \"${tool.mcp.serverName}\", not \"${server.name}\".`\n );\n }\n }\n const tools = server.tools.map(snapshotMcpTool);\n let snapshot = {\n name: server.name,\n tools: Object.freeze(tools)\n };\n if (server.serverInfo !== void 0) {\n snapshot = { ...snapshot, serverInfo: cloneFrozenPlainData(server.serverInfo) };\n }\n if (server.capabilities !== void 0) {\n snapshot = { ...snapshot, capabilities: cloneFrozenPlainData(server.capabilities) };\n }\n if (server.instructions !== void 0) {\n snapshot = { ...snapshot, instructions: server.instructions };\n }\n return Object.freeze(snapshot);\n}\nfunction snapshotMcpTool(tool) {\n if (Object.isFrozen(tool) && Object.isFrozen(tool.mcp)) {\n return tool;\n }\n const parseInput = tool.parseInput;\n let snapshot = {\n name: tool.name,\n mcp: Object.freeze({ ...tool.mcp }),\n definition: (prompt) => tool.definition(prompt),\n call: (args, context) => tool.call(args, context)\n };\n if (tool.requiresApproval !== void 0) {\n snapshot = { ...snapshot, requiresApproval: tool.requiresApproval };\n }\n if (parseInput !== void 0) {\n snapshot = {\n ...snapshot,\n parseInput: (args) => parseInput.call(tool, args)\n };\n }\n return Object.freeze(snapshot);\n}\nfunction assertUniqueMcpServerNames(servers) {\n const names = /* @__PURE__ */ new Set();\n for (const server of servers) {\n if (names.has(server.name)) {\n throw new TypeError(`Duplicate MCP server name \"${server.name}\".`);\n }\n names.add(server.name);\n }\n}\nfunction snapshotToolIndex(index) {\n const inspect = index.inspect;\n let snapshot = {\n kind: \"tool-index\",\n tools: Object.freeze([...index.tools]),\n topK: index.topK,\n search: (options) => index.search(options)\n };\n if (index.minScore !== void 0) {\n snapshot = { ...snapshot, minScore: index.minScore };\n }\n if (index.filter !== void 0) {\n snapshot = { ...snapshot, filter: cloneFrozenPlainData(index.filter) };\n }\n if (inspect !== void 0) {\n snapshot = {\n ...snapshot,\n inspect: (request) => inspect.call(index, request)\n };\n }\n return Object.freeze(snapshot);\n}\n\n// src/agent/agent.ts\nvar DEFAULT_MAX_TURNS = 20;\nvar Agent = class {\n id;\n name;\n description;\n model;\n instructions;\n context;\n temperature;\n maxTokens;\n providerOptions;\n retries;\n mcpServers;\n tools;\n toolChoice;\n defaultMaxTurns;\n lifecycle;\n outputSchema;\n observability;\n guardrails;\n middlewares;\n memory;\n constructor(options) {\n const resolved = resolveAgentOptions(options);\n this.id = normalizeAgentId(resolved.id);\n this.name = resolved.name;\n this.description = resolved.description;\n this.model = resolved.model;\n this.instructions = resolved.instructions;\n this.context = snapshotAgentContext(resolved.context);\n this.temperature = resolved.temperature;\n this.maxTokens = resolved.maxTokens;\n this.providerOptions = cloneFrozenPlainData(resolved.providerOptions);\n this.retries = cloneFrozenPlainData(resolved.retries);\n const preparedTools = prepareAgentTools(resolved);\n this.mcpServers = preparedTools.mcpServers;\n this.tools = preparedTools.tools;\n registerAgentToolState(this, preparedTools.publicState, preparedTools.toolsByName);\n this.toolChoice = cloneFrozenPlainData(resolved.toolChoice);\n this.defaultMaxTurns = assertNonnegativeSafeInteger(\n resolved.defaultMaxTurns ?? DEFAULT_MAX_TURNS,\n \"maxTurns\"\n );\n this.lifecycle = resolved.lifecycle;\n this.outputSchema = resolved.outputSchema;\n registerAgentProviderOutputSchema(this, resolved.outputSchema);\n this.observability = snapshotAgentObservability(resolved.observability);\n this.guardrails = snapshotGuardrailPolicies(resolved.guardrails);\n this.middlewares = Object.freeze([...resolved.middlewares ?? []]);\n this.memory = snapshotAgentMemory(resolved.memory);\n }\n generate(options) {\n return AgentRun.fromAgent(this, options).generate();\n }\n stream(options) {\n const run = AgentRun.fromAgent(this, options);\n if (!this.model.capabilities.streaming || !isStreamingCompletionModel(this.model)) {\n throw new Error(\"This completion model does not support streaming\");\n }\n return createAgentStream(run);\n }\n asTool(options) {\n return createAgentTool(this, options);\n }\n getTool(toolName) {\n return getRegisteredAgentTool(this, toolName);\n }\n async callTool(toolName, args, context) {\n const tool = this.getTool(toolName);\n if (tool === void 0) {\n throw new ToolNotFoundError(toolName);\n }\n return prepareToolCall(tool, args).call(context ?? {});\n }\n};\n\nexport {\n agentInteractionRequestSchema,\n agentInteractionResponseSchema,\n agentContinuationSchema,\n parseAgentInteractionRequest,\n parseAgentInteractionResponse,\n parseAgentContinuation,\n assertAgentInteractionResponse,\n getAgentToolState,\n createHook,\n createVectorContext,\n isVectorContext,\n withInternalAgentRunOptions,\n markResolvedAgentOptions,\n Agent\n};\n//# sourceMappingURL=chunk-BY4OMNIU.js.map","import {\n createFetchEventTransport\n} from \"./chunk-2KGXQZWA.js\";\n\n// src/adapters.ts\nimport {\n isJsonValue as isJsonValue3\n} from \"@anvia/core/completion\";\n\n// src/messages.ts\nimport { isJsonValue } from \"@anvia/core/completion\";\nfunction uiMessagesToMessages(messages) {\n const result = [];\n for (const message of messages) {\n assertMetadata(message.metadata);\n if (message.role === \"system\") {\n assertOnlyParts(message, [\"text\", \"data\", \"error\"]);\n result.push({\n role: \"system\",\n content: textFromParts(message.parts),\n ...metadataField(message.metadata)\n });\n continue;\n }\n if (message.role === \"user\") {\n assertOnlyParts(message, [\"text\", \"attachment\", \"data\", \"error\"]);\n const content2 = [];\n for (const part of message.parts) {\n if (part.type === \"text\") {\n content2.push(textContent(part.text, part.signature));\n } else if (part.type === \"attachment\") {\n content2.push(attachmentToUserContent(part.attachment));\n }\n }\n result.push({ role: \"user\", content: content2, ...metadataField(message.metadata) });\n continue;\n }\n if (message.role === \"assistant\") {\n assertOnlyParts(message, [\n \"text\",\n \"reasoning\",\n \"tool\",\n \"attachment\",\n \"source\",\n \"data\",\n \"error\"\n ]);\n const content2 = [];\n const toolResults = [];\n for (const part of message.parts) {\n if (part.type === \"text\") {\n content2.push(textContent(part.text, part.signature));\n } else if (part.type === \"reasoning\") {\n let reasoning = {\n type: \"reasoning\",\n text: part.text\n };\n if (part.reasoningId !== void 0) reasoning = { ...reasoning, id: part.reasoningId };\n if (part.content !== void 0) reasoning = { ...reasoning, details: part.content };\n content2.push(reasoning);\n } else if (part.type === \"tool\") {\n let toolCall = {\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input ?? {}\n };\n if (part.callId !== void 0) toolCall = { ...toolCall, callId: part.callId };\n if (part.signature !== void 0) toolCall = { ...toolCall, signature: part.signature };\n content2.push(toolCall);\n if (part.state === \"output-available\" || part.state === \"error\") {\n toolResults.push(toolResultFromPart(part));\n }\n } else if (part.type === \"attachment\") {\n content2.push(attachmentToAssistantContent(part.attachment));\n }\n }\n let assistant = {\n role: \"assistant\",\n content: content2,\n ...metadataField(message.metadata)\n };\n if (message.modelMessageId !== void 0) {\n assistant = { ...assistant, id: message.modelMessageId };\n }\n result.push(assistant);\n if (toolResults.length > 0) {\n result.push({ role: \"tool\", content: toolResults });\n }\n continue;\n }\n assertOnlyParts(message, [\"tool\", \"data\", \"error\"]);\n const content = message.parts.flatMap(\n (part) => part.type === \"tool\" && (part.state === \"output-available\" || part.state === \"error\") ? [toolResultFromPart(part)] : []\n );\n result.push({ role: \"tool\", content, ...metadataField(message.metadata) });\n }\n return result;\n}\nfunction messagesToUIMessages(messages) {\n const result = [];\n const byToolCallId = /* @__PURE__ */ new Map();\n const byCallId = /* @__PURE__ */ new Map();\n for (const message of messages) {\n assertMetadata(message.metadata);\n if (message.role === \"system\") {\n result.push({\n id: createId(\"msg\"),\n role: \"system\",\n parts: [{ id: createId(\"part\"), type: \"text\", text: message.content }],\n ...metadataField(message.metadata)\n });\n continue;\n }\n if (message.role === \"user\") {\n const content = typeof message.content === \"string\" ? [{ type: \"text\", text: message.content }] : message.content;\n const parts = content.map((part) => contentToUIMessagePart(part));\n result.push({\n id: createId(\"msg\"),\n role: \"user\",\n parts,\n ...metadataField(message.metadata)\n });\n continue;\n }\n if (message.role === \"assistant\") {\n const content = typeof message.content === \"string\" ? [{ type: \"text\", text: message.content }] : message.content;\n const parts = content.map(assistantContentToUIMessagePart);\n let uiMessage = {\n id: createId(\"msg\"),\n role: \"assistant\",\n parts,\n ...metadataField(message.metadata)\n };\n if (message.id !== void 0) uiMessage = { ...uiMessage, modelMessageId: message.id };\n const messageIndex = result.length;\n result.push(uiMessage);\n for (const [partIndex, part] of parts.entries()) {\n if (part.type !== \"tool\") continue;\n const location = { messageIndex, partIndex };\n byToolCallId.set(part.toolCallId, location);\n if (part.callId !== void 0) byCallId.set(part.callId, location);\n }\n continue;\n }\n const unmerged = [];\n for (const content of message.content) {\n if (content.type !== \"tool-result\") continue;\n const location = (content.callId === void 0 ? void 0 : byCallId.get(content.callId)) ?? byToolCallId.get(content.toolCallId);\n const part = toolResultToUIMessagePart(content, toolNameAt(result, location));\n if (message.metadata === void 0 && location !== void 0) {\n const owner = result[location.messageIndex];\n const existing = owner?.parts[location.partIndex];\n if (owner !== void 0 && existing?.type === \"tool\") {\n const parts = [...owner.parts];\n parts[location.partIndex] = { ...existing, ...part, id: existing.id };\n result[location.messageIndex] = { ...owner, parts };\n continue;\n }\n }\n unmerged.push(part);\n }\n if (unmerged.length > 0 || message.metadata !== void 0) {\n result.push({\n id: createId(\"msg\"),\n role: \"tool\",\n parts: unmerged,\n ...metadataField(message.metadata)\n });\n }\n }\n return result;\n}\nfunction contentToUIMessagePart(content) {\n if (content.type === \"text\") {\n const part = {\n id: createId(\"part\"),\n type: \"text\",\n text: content.text\n };\n if (content.signature !== void 0) part.signature = content.signature;\n return part;\n }\n return {\n id: createId(\"part\"),\n type: \"attachment\",\n attachment: contentToAttachment(content)\n };\n}\nfunction assistantContentToUIMessagePart(content) {\n if (content.type === \"text\") return contentToUIMessagePart(content);\n if (content.type === \"reasoning\") {\n const part = {\n id: createId(\"part\"),\n type: \"reasoning\",\n text: content.text\n };\n if (content.id !== void 0) part.reasoningId = content.id;\n if (content.details !== void 0) part.content = content.details;\n return part;\n }\n if (content.type === \"tool-call\") {\n const part = {\n id: toolPartId(content.toolCallId),\n type: \"tool\",\n toolName: content.toolName,\n toolCallId: content.toolCallId,\n state: \"input-available\",\n input: content.input\n };\n if (content.callId !== void 0) part.callId = content.callId;\n if (content.signature !== void 0) part.signature = content.signature;\n return part;\n }\n return {\n id: createId(\"part\"),\n type: \"attachment\",\n attachment: contentToAttachment(content)\n };\n}\nfunction textContent(text, signature) {\n return signature === void 0 ? { type: \"text\", text } : { type: \"text\", text, signature };\n}\nfunction toolResultFromPart(part) {\n let result = {\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: toolOutputFromPart(part)\n };\n if (part.callId !== void 0) result = { ...result, callId: part.callId };\n return result;\n}\nfunction toolOutputFromPart(part) {\n if (part.state === \"error\") {\n return { type: \"error-text\", value: part.error?.message ?? \"Tool execution failed.\" };\n }\n if (part.resultContent !== void 0) {\n return { type: \"content\", value: part.resultContent };\n }\n const output = part.output ?? null;\n return typeof output === \"string\" ? { type: \"text\", value: output } : { type: \"json\", value: output };\n}\nfunction attachmentToUserContent(attachment) {\n if (attachment.type === \"image\" || attachment.mediaType?.startsWith(\"image/\") === true) {\n return attachmentToImageContent(attachment);\n }\n return attachmentToFileContent(attachment);\n}\nfunction attachmentToAssistantContent(attachment) {\n return attachment.type === \"image\" || attachment.mediaType?.startsWith(\"image/\") === true ? attachmentToImageContent(attachment) : attachmentToFileContent(attachment);\n}\nfunction attachmentToImageContent(attachment) {\n const image = attachment.url !== void 0 ? { type: \"url\", url: attachment.url } : attachment.data !== void 0 ? { type: \"data\", data: attachment.data } : (() => {\n throw new TypeError(\"Image attachments require a URL or base64 data.\");\n })();\n let content = {\n type: \"image\",\n image\n };\n if (attachment.mediaType !== void 0) content = { ...content, mediaType: attachment.mediaType };\n if (attachment.detail !== void 0) content = { ...content, detail: attachment.detail };\n return content;\n}\nfunction attachmentToFileContent(attachment) {\n const data = attachment.url !== void 0 ? { type: \"url\", url: attachment.url } : attachment.data !== void 0 ? { type: \"data\", data: attachment.data } : attachment.text !== void 0 ? { type: \"text\", text: attachment.text } : (() => {\n throw new TypeError(\"File attachments require a URL, base64 data, or text.\");\n })();\n let content = {\n type: \"file\",\n data,\n mediaType: attachment.mediaType ?? \"application/octet-stream\"\n };\n if (attachment.name !== void 0) content = { ...content, filename: attachment.name };\n return content;\n}\nfunction contentToAttachment(content) {\n const attachment = {\n id: createId(\"attachment\"),\n type: content.type === \"image\" ? \"image\" : \"file\"\n };\n if (content.type === \"image\") {\n if (content.detail !== void 0) attachment.detail = content.detail;\n if (content.mediaType !== void 0) attachment.mediaType = content.mediaType;\n if (content.image.type === \"url\") attachment.url = content.image.url;\n else attachment.data = content.image.data;\n return attachment;\n }\n attachment.mediaType = content.mediaType;\n if (content.filename !== void 0) attachment.name = content.filename;\n if (content.data.type === \"url\") attachment.url = content.data.url;\n else if (content.data.type === \"data\") attachment.data = content.data.data;\n else attachment.text = content.data.text;\n return attachment;\n}\nfunction toolResultToUIMessagePart(content, fallbackToolName) {\n const output = content.output;\n const common = {\n id: toolPartId(content.toolCallId),\n type: \"tool\",\n toolName: content.toolName || fallbackToolName || \"tool\",\n toolCallId: content.toolCallId\n };\n if (content.callId !== void 0) Object.assign(common, { callId: content.callId });\n if (output.type === \"error-text\" || output.type === \"error-json\") {\n return {\n ...common,\n state: \"error\",\n error: {\n message: output.type === \"error-text\" ? output.value : JSON.stringify(output.value)\n }\n };\n }\n if (output.type === \"execution-denied\") {\n return {\n ...common,\n state: \"error\",\n error: { message: output.reason ?? \"Tool execution was denied.\" }\n };\n }\n const part = {\n ...common,\n state: \"output-available\",\n output: toolResultOutput(output)\n };\n if (output.type === \"content\") part.resultContent = output.value;\n return part;\n}\nfunction toolResultOutput(output) {\n if (output.type === \"text\" || output.type === \"error-text\") return output.value;\n if (output.type === \"json\" || output.type === \"error-json\") return output.value;\n if (output.type === \"execution-denied\") return output.reason ?? \"Tool execution was denied.\";\n return output.value.length === 1 && output.value[0]?.type === \"text\" ? output.value[0].text : output.value.map(\n (part) => part.type === \"text\" ? { ...part } : { ...part, data: { ...part.data } }\n );\n}\nfunction toolNameAt(messages, location) {\n if (location === void 0) return void 0;\n const part = messages[location.messageIndex]?.parts[location.partIndex];\n return part?.type === \"tool\" ? part.toolName : void 0;\n}\nfunction textFromParts(parts) {\n return parts.flatMap((part) => part.type === \"text\" ? [part.text] : []).join(\"\");\n}\nfunction assertOnlyParts(message, allowed) {\n for (const part of message.parts) {\n if (!allowed.includes(part.type)) {\n throw new TypeError(`${message.role} UI messages cannot contain ${part.type} parts.`);\n }\n }\n}\nfunction assertMetadata(metadata) {\n if (metadata !== void 0 && (!isJsonValue(metadata) || Array.isArray(metadata))) {\n throw new TypeError(\"Message metadata must be a strict JSON object.\");\n }\n}\nfunction metadataField(metadata) {\n return metadata === void 0 ? {} : { metadata };\n}\nfunction toolPartId(toolCallId) {\n return `tool_${toolCallId}`;\n}\nvar nextId = 0;\nfunction createClientId(prefix) {\n const random = globalThis.crypto?.randomUUID?.();\n if (random !== void 0) return `${prefix}_${random}`;\n nextId += 1;\n return `${prefix}_${nextId.toString(36)}`;\n}\nfunction createId(prefix) {\n return createClientId(prefix);\n}\n\n// src/protocol.ts\nimport { parseAgentInteractionRequest, parseAgentInteractionResponse } from \"@anvia/core/agent\";\nimport { isJsonValue as isJsonValue2, parseMessages } from \"@anvia/core/completion\";\n\n// src/types.ts\nvar CLIENT_STREAM_PROTOCOL = \"anvia.client.v3\";\n\n// src/protocol.ts\nvar ClientProtocolError = class extends Error {\n constructor(message, value) {\n super(message);\n this.value = value;\n this.name = \"ClientProtocolError\";\n }\n value;\n};\nfunction parseUIMessage(value, options = {}) {\n const message = requireRecord(value, \"UI message\");\n if (!isJsonValue2(message)) {\n throw new ClientProtocolError(\"UI messages must be strict JSON values.\", value);\n }\n requireOnlyKeys(\n message,\n [\"id\", \"role\", \"parts\", \"modelMessageId\", \"metadata\", \"generation\"],\n \"UI message\"\n );\n if (typeof message.id !== \"string\") invalid(\"UI message.id\", value);\n requireOneOf(message.role, [\"system\", \"user\", \"assistant\", \"tool\"], \"UI message.role\", value);\n if (!Array.isArray(message.parts)) invalid(\"UI message.parts\", value);\n const parts = message.parts.map((part) => parseUIMessagePart(part, options.dataSchemas, value));\n if (message.modelMessageId !== void 0 && typeof message.modelMessageId !== \"string\") {\n invalid(\"UI message.modelMessageId\", value);\n }\n const metadata = message.metadata === void 0 ? void 0 : parseMetadata(message.metadata, options.metadataSchema, value);\n if (message.generation !== void 0 && !isUIMessageGeneration(message.generation)) {\n invalid(\"UI message.generation\", value);\n }\n let parsed = {\n id: message.id,\n role: message.role,\n parts\n };\n if (message.modelMessageId !== void 0) {\n parsed = { ...parsed, modelMessageId: message.modelMessageId };\n }\n if (metadata !== void 0) parsed = { ...parsed, metadata };\n if (message.generation !== void 0) {\n parsed = { ...parsed, generation: message.generation };\n }\n return parsed;\n}\nfunction parseUIMessages(value, options = {}) {\n if (!Array.isArray(value)) {\n throw new ClientProtocolError(\"UI messages must be an array.\", value);\n }\n return value.map((message) => parseUIMessage(message, options));\n}\nfunction parseClientStreamRequest(value) {\n const input = requireRecord(value, \"Client stream request\");\n requireOnlyKeys(\n input,\n [\"type\", \"messages\", \"interactionId\", \"response\", \"metadata\", \"resume\"],\n \"Client stream request\"\n );\n requireOneOf(\n input.type,\n [\"messages\", \"interaction_response\"],\n \"Client stream request.type\",\n value\n );\n if (input.metadata !== void 0 && !isJsonObject(input.metadata)) {\n throw new ClientProtocolError(\"Client stream request.metadata must be a JSON object.\", value);\n }\n let request;\n if (input.type === \"messages\") {\n if (input.interactionId !== void 0 || input.response !== void 0) {\n throw new ClientProtocolError(\n \"Messages requests cannot include interaction response fields.\",\n value\n );\n }\n let messages;\n try {\n messages = parseMessages(input.messages);\n } catch {\n throw new ClientProtocolError(\"Client stream request.messages must be Message[].\", value);\n }\n request = { type: \"messages\", messages };\n } else {\n if (input.messages !== void 0 || typeof input.interactionId !== \"string\") {\n throw new ClientProtocolError(\n \"Interaction response requests require interactionId and cannot include messages.\",\n value\n );\n }\n try {\n request = {\n type: \"interaction_response\",\n interactionId: input.interactionId,\n response: parseAgentInteractionResponse(input.response)\n };\n } catch {\n throw new ClientProtocolError(\"Client interaction response is invalid.\", value);\n }\n }\n if (input.metadata !== void 0) request.metadata = input.metadata;\n if (input.resume !== void 0) {\n const resume = requireRecord(input.resume, \"Client stream request.resume\");\n requireOnlyKeys(resume, [\"streamId\", \"after\"], \"Client stream request.resume\");\n if (typeof resume.streamId !== \"string\" || !isEventId(resume.after)) {\n throw new ClientProtocolError(\n \"Client stream resume cursor requires streamId and a nonnegative safe integer after.\",\n value\n );\n }\n request.resume = { streamId: resume.streamId, after: resume.after };\n }\n return request;\n}\nfunction parseClientStreamEvent(value, options = {}) {\n const event = requireRecord(value, \"Client stream event\");\n if (!isJsonValue2(event)) {\n throw new ClientProtocolError(\"Client stream events must be strict JSON values.\", value);\n }\n if (typeof event.type !== \"string\" || typeof event.runId !== \"string\") {\n throw new ClientProtocolError(\"Client stream events require type and runId.\", value);\n }\n if (event.turn !== void 0 && !isPositiveEventId(event.turn)) {\n throw new ClientProtocolError(\n \"Client stream event.turn must be a positive safe integer.\",\n value\n );\n }\n if (event.scope !== void 0 && !isScope(event.scope)) {\n throw new ClientProtocolError(\"Client stream event.scope is invalid.\", value);\n }\n switch (event.type) {\n case \"run_start\":\n requireEventKeys(event, [\"source\", \"metadata\"]);\n requireOneOf(event.source, [\"completion\", \"agent\"], \"run_start.source\", value);\n break;\n case \"turn_start\":\n requireEventKeys(event, []);\n if (!isPositiveEventId(event.turn)) invalid(\"turn_start.turn\", value);\n break;\n case \"generation_start\":\n requireEventKeys(event, [\"model\"]);\n if (event.model !== void 0 && (!isRecord(event.model) || !hasOnlyKeys(event.model, [\"provider\", \"modelId\"]) || typeof event.model.provider !== \"string\" || typeof event.model.modelId !== \"string\")) {\n invalid(\"generation_start.model\", value);\n }\n break;\n case \"message_start\":\n requireEventKeys(event, [\"messageId\", \"role\", \"metadata\"]);\n requireStrings(event, [\"messageId\"], value);\n if (event.role !== \"assistant\") invalid(\"message_start.role\", value);\n break;\n case \"text_start\":\n requireEventKeys(event, [\"messageId\", \"partId\"]);\n requireStrings(event, [\"messageId\", \"partId\"], value);\n break;\n case \"text_delta\":\n requireEventKeys(event, [\"messageId\", \"partId\", \"delta\"]);\n requireStrings(event, [\"messageId\", \"partId\", \"delta\"], value);\n break;\n case \"reasoning_delta\":\n requireEventKeys(event, [\"messageId\", \"partId\", \"delta\", \"contentType\", \"signature\"]);\n requireStrings(event, [\"messageId\", \"partId\", \"delta\"], value);\n requireOptionalStrings(event, [\"signature\"], value);\n if (event.contentType !== void 0 && ![\"text\", \"summary\", \"encrypted\", \"redacted\"].includes(event.contentType)) {\n invalid(\"reasoning_delta.contentType\", value);\n }\n break;\n case \"text_end\":\n requireEventKeys(event, [\"messageId\", \"partId\", \"text\", \"signature\"]);\n requireStrings(event, [\"messageId\", \"partId\"], value);\n requireOptionalStrings(event, [\"text\", \"signature\"], value);\n break;\n case \"reasoning_start\":\n requireEventKeys(event, [\"messageId\", \"partId\", \"reasoningId\"]);\n requireStrings(event, [\"messageId\", \"partId\"], value);\n requireOptionalStrings(event, [\"reasoningId\"], value);\n break;\n case \"reasoning_end\":\n requireEventKeys(event, [\"messageId\", \"partId\", \"text\", \"content\"]);\n requireStrings(event, [\"messageId\", \"partId\"], value);\n requireOptionalStrings(event, [\"text\"], value);\n if (event.content !== void 0 && (!Array.isArray(event.content) || !event.content.every(isReasoningContent))) {\n invalid(\"reasoning_end.content\", value);\n }\n break;\n case \"tool_call_start\":\n requireEventKeys(event, [\"messageId\", \"partId\", \"toolCallId\", \"callId\", \"toolName\"]);\n requireStrings(event, [\"messageId\", \"partId\", \"toolCallId\"], value);\n requireOptionalStrings(event, [\"callId\", \"toolName\"], value);\n break;\n case \"tool_call_delta\":\n requireEventKeys(event, [\n \"messageId\",\n \"partId\",\n \"toolCallId\",\n \"callId\",\n \"toolName\",\n \"delta\",\n \"mode\",\n \"signature\"\n ]);\n requireStrings(event, [\"messageId\", \"partId\", \"toolCallId\", \"delta\"], value);\n requireOptionalStrings(event, [\"callId\", \"toolName\"], value);\n requireOptionalStrings(event, [\"signature\"], value);\n requireOneOf(event.mode, [\"append\", \"replace\"], \"tool_call_delta.mode\", value);\n break;\n case \"tool_call_end\":\n requireEventKeys(event, [\n \"messageId\",\n \"partId\",\n \"toolCallId\",\n \"callId\",\n \"toolName\",\n \"input\",\n \"signature\"\n ]);\n requireStrings(event, [\"messageId\", \"partId\", \"toolCallId\", \"toolName\"], value);\n requireOptionalStrings(event, [\"callId\", \"signature\"], value);\n if (!isJsonValue2(event.input)) invalid(\"tool_call_end.input\", value);\n break;\n case \"tool_result\":\n requireEventKeys(event, [\n \"messageId\",\n \"partId\",\n \"toolCallId\",\n \"callId\",\n \"internalCallId\",\n \"toolName\",\n \"input\",\n \"result\"\n ]);\n requireStrings(event, [\"messageId\", \"partId\", \"toolCallId\", \"toolName\"], value);\n requireOptionalStrings(event, [\"callId\", \"internalCallId\"], value);\n if (!isRecord(event.result)) invalid(\"tool_result.result\", value);\n if (event.result.status === \"success\") {\n if (!hasOnlyKeys(event.result, [\"status\", \"output\", \"content\"]) || !isJsonValue2(event.result.output) || event.result.content !== void 0 && (!Array.isArray(event.result.content) || !event.result.content.every(isToolResultContent))) {\n invalid(\"tool_result.result\", value);\n }\n } else if (event.result.status === \"error\") {\n if (!hasOnlyKeys(event.result, [\"status\", \"error\"]) || !isClientStreamError(event.result.error)) {\n invalid(\"tool_result.result\", value);\n }\n } else {\n invalid(\"tool_result.result.status\", value);\n }\n break;\n case \"source\":\n requireEventKeys(event, [\"messageId\", \"partId\", \"source\"]);\n requireStrings(event, [\"messageId\", \"partId\"], value);\n if (!isCompletionSource(event.source)) invalid(\"source.source\", value);\n break;\n case \"attachment\":\n requireEventKeys(event, [\"messageId\", \"partId\", \"attachment\"]);\n requireStrings(event, [\"messageId\", \"partId\"], value);\n if (!isAttachment(event.attachment)) invalid(\"attachment.attachment\", value);\n break;\n case \"provider_tool_call\":\n requireEventKeys(event, [\"toolCall\"]);\n if (!isProviderToolCall(event.toolCall)) invalid(\"provider_tool_call.toolCall\", value);\n break;\n case \"interaction\":\n requireEventKeys(event, [\"interaction\"]);\n try {\n parseAgentInteractionRequest(event.interaction);\n } catch {\n invalid(\"interaction.interaction\", value);\n }\n break;\n case \"guardrail_decision\":\n requireEventKeys(event, [\"decision\"]);\n if (!isGuardrailDecision(event.decision)) invalid(\"guardrail_decision.decision\", value);\n break;\n case \"data\":\n requireEventKeys(event, [\"name\", \"data\", \"transient\"]);\n requireStrings(event, [\"name\"], value);\n if (!isJsonValue2(event.data)) invalid(\"data.data\", value);\n if (event.transient !== void 0 && typeof event.transient !== \"boolean\") {\n invalid(\"data.transient\", value);\n }\n return {\n ...event,\n data: parseDataEvent(event.name, event.data, options.dataSchemas, value)\n };\n case \"message_end\":\n requireEventKeys(event, [\n \"messageId\",\n \"modelMessageId\",\n \"parts\",\n \"usage\",\n \"contextUsage\",\n \"metadata\"\n ]);\n requireStrings(event, [\"messageId\"], value);\n requireOptionalStrings(event, [\"modelMessageId\"], value);\n if (event.parts !== void 0) {\n if (!Array.isArray(event.parts)) invalid(\"message_end.parts\", value);\n const parts = event.parts.map(\n (part) => parseUIMessagePart(part, options.dataSchemas, value)\n );\n validateUsageAndContext(event, value);\n return parseEventMetadata(\n { ...event, parts },\n options.metadataSchema,\n value\n );\n }\n validateUsageAndContext(event, value);\n break;\n case \"turn_end\":\n requireEventKeys(event, [\"usage\", \"contextUsage\", \"firstDeltaMs\"]);\n if (!isPositiveEventId(event.turn)) invalid(\"turn_end.turn\", value);\n if (event.firstDeltaMs !== void 0 && !isNonnegativeNumber(event.firstDeltaMs)) {\n invalid(\"turn_end.firstDeltaMs\", value);\n }\n validateUsageAndContext(event, value);\n break;\n case \"memory_compaction\":\n requireEventKeys(event, [\n \"originalMessageCount\",\n \"compactedMessageCount\",\n \"retainedMessageCount\",\n \"attempts\",\n \"usage\"\n ]);\n validateMemoryCompactionInfo(event, value);\n break;\n case \"run_end\":\n requireEventKeys(event, [\n \"status\",\n \"text\",\n \"output\",\n \"usage\",\n \"contextUsage\",\n \"trace\",\n \"memoryCompaction\",\n \"metadata\"\n ]);\n requireOneOf(\n event.status,\n [\"completed\", \"blocked\", \"suspended\", \"cancelled\", \"error\"],\n \"run_end.status\",\n value\n );\n requireOptionalStrings(event, [\"text\"], value);\n validateUsageAndContext(event, value);\n if (event.trace !== void 0 && !isTrace(event.trace)) invalid(\"run_end.trace\", value);\n if (event.memoryCompaction !== void 0) {\n if (!isRecord(event.memoryCompaction)) invalid(\"run_end.memoryCompaction\", value);\n requireOnlyKeys(\n event.memoryCompaction,\n [\n \"originalMessageCount\",\n \"compactedMessageCount\",\n \"retainedMessageCount\",\n \"attempts\",\n \"usage\"\n ],\n \"run_end.memoryCompaction\"\n );\n validateMemoryCompactionInfo(event.memoryCompaction, value);\n }\n break;\n case \"error\":\n requireEventKeys(event, [\"error\", \"usage\"]);\n if (!isClientStreamError(event.error)) invalid(\"error.error\", value);\n if (event.usage !== void 0 && !isUsage(event.usage)) invalid(\"error.usage\", value);\n break;\n default:\n throw new ClientProtocolError(`Unknown client stream event type \"${event.type}\".`, value);\n }\n return parseEventMetadata(event, options.metadataSchema, value);\n}\nfunction parseClientStreamFrame(value, options = {}) {\n const frame = requireRecord(value, \"Client stream frame\");\n if (!isJsonValue2(frame)) {\n throw new ClientProtocolError(\"Client stream frames must be strict JSON values.\", value);\n }\n if (typeof frame.type !== \"string\") {\n throw new ClientProtocolError(\"Client stream frames require type.\", value);\n }\n if (frame.type === \"stream_start\") {\n requireOnlyKeys(\n frame,\n [\"type\", \"protocol\", \"streamId\", \"eventId\", \"resumable\"],\n \"stream_start frame\"\n );\n if (frame.protocol === \"anvia.client.v1\" || frame.protocol === \"anvia.client.v2\") {\n throw new ClientProtocolError(\n `Client stream protocol ${frame.protocol.slice(-2)} is not supported.`,\n value\n );\n }\n if (frame.protocol !== CLIENT_STREAM_PROTOCOL || typeof frame.streamId !== \"string\" || frame.eventId !== 0 || typeof frame.resumable !== \"boolean\") {\n throw new ClientProtocolError(\"Invalid client stream_start frame.\", value);\n }\n return frame;\n }\n if (frame.type === \"stream_event\") {\n requireOnlyKeys(frame, [\"type\", \"streamId\", \"eventId\", \"event\"], \"stream_event frame\");\n if (typeof frame.streamId !== \"string\" || !isPositiveEventId(frame.eventId)) {\n throw new ClientProtocolError(\"Invalid client stream_event frame.\", value);\n }\n const event = parseClientStreamEvent(frame.event, options);\n return { ...frame, event };\n }\n if (frame.type === \"stream_end\") {\n requireOnlyKeys(frame, [\"type\", \"streamId\", \"eventId\", \"status\"], \"stream_end frame\");\n if (typeof frame.streamId !== \"string\" || !isEventId(frame.eventId)) {\n throw new ClientProtocolError(\"Invalid client stream_end frame.\", value);\n }\n requireOneOf(frame.status, [\"completed\", \"error\", \"missing\"], \"stream_end.status\", value);\n return frame;\n }\n throw new ClientProtocolError(`Unknown client stream frame type \"${frame.type}\".`, value);\n}\nfunction maskedClientError() {\n return { message: \"An unexpected error occurred.\" };\n}\nfunction normalizeClientError(value) {\n if (value instanceof Error) return value;\n if (isClientStreamError(value)) {\n const error = new Error(value.message);\n if (value.name !== void 0) error.name = value.name;\n return error;\n }\n return new Error(typeof value === \"string\" ? value : \"An unexpected error occurred.\");\n}\nfunction parseDataEvent(name, data, schemas, value) {\n if (schemas === void 0) return data;\n const schema = schemas[name];\n if (schema === void 0) {\n throw new ClientProtocolError(`Invalid data event \"${name}\".`, value);\n }\n const parsed = schema.safeParse(data);\n if (parsed.success !== true || !isJsonValue2(parsed.data)) {\n throw new ClientProtocolError(`Invalid data event \"${name}\".`, value);\n }\n return parsed.data;\n}\nfunction parseUIMessagePart(value, schemas, root) {\n if (!isUIMessagePart(value)) {\n throw new ClientProtocolError(\"UI message contains an invalid part.\", root);\n }\n if (value.type !== \"data\") {\n return value;\n }\n return {\n ...value,\n data: parseDataEvent(value.name, value.data, schemas, root)\n };\n}\nfunction parseMetadata(value, schema, root) {\n if (schema === void 0) {\n if (!isJsonObject(value)) {\n throw new ClientProtocolError(\"Client metadata must be a JSON object.\", root);\n }\n return value;\n }\n const parsed = schema.safeParse(value);\n if (parsed.success !== true || !isJsonObject(parsed.data)) {\n throw new ClientProtocolError(\"Invalid client metadata.\", root);\n }\n return parsed.data;\n}\nfunction parseEventMetadata(event, schema, root) {\n if (event.metadata === void 0) return event;\n return { ...event, metadata: parseMetadata(event.metadata, schema, root) };\n}\nfunction isUIMessageGeneration(value) {\n if (!isRecord(value)) return false;\n if (!hasOnlyKeys(value, [\"runId\", \"status\", \"usage\", \"contextUsage\", \"trace\", \"memoryCompaction\"])) {\n return false;\n }\n return (value.runId === void 0 || typeof value.runId === \"string\") && (value.status === void 0 || [\"completed\", \"blocked\", \"suspended\", \"cancelled\", \"error\"].includes(\n value.status\n )) && (value.usage === void 0 || isUsage(value.usage)) && (value.contextUsage === void 0 || isContextUsage(value.contextUsage)) && (value.trace === void 0 || isTrace(value.trace)) && (value.memoryCompaction === void 0 || isRecord(value.memoryCompaction) && validateMemoryCompactionForGuard(value.memoryCompaction));\n}\nfunction validateMemoryCompactionForGuard(value) {\n try {\n requireOnlyKeys(\n value,\n [\n \"originalMessageCount\",\n \"compactedMessageCount\",\n \"retainedMessageCount\",\n \"attempts\",\n \"usage\"\n ],\n \"memory compaction\"\n );\n validateMemoryCompactionInfo(value, value);\n return true;\n } catch {\n return false;\n }\n}\nfunction isJsonObject(value) {\n return isRecord(value) && isJsonValue2(value);\n}\nfunction isClientStreamError(value) {\n return isRecord(value) && hasOnlyKeys(value, [\"name\", \"message\", \"code\", \"retryable\", \"details\"]) && typeof value.message === \"string\" && (value.name === void 0 || typeof value.name === \"string\") && (value.code === void 0 || typeof value.code === \"string\") && (value.retryable === void 0 || typeof value.retryable === \"boolean\") && (value.details === void 0 || isJsonValue2(value.details));\n}\nfunction isScope(value) {\n if (!isRecord(value)) return false;\n const keys = [\n \"agentId\",\n \"agentName\",\n \"parentRunId\",\n \"parentToolName\",\n \"parentToolCallId\",\n \"parentInternalToolCallId\"\n ];\n return hasOnlyKeys(value, keys) && keys.every((key) => value[key] === void 0 || typeof value[key] === \"string\");\n}\nfunction isAttachment(value) {\n if (!isRecord(value) || typeof value.id !== \"string\") return false;\n if (value.type !== \"image\" && value.type !== \"document\" && value.type !== \"file\") return false;\n return hasOnlyKeys(value, [\n \"id\",\n \"type\",\n \"name\",\n \"mediaType\",\n \"url\",\n \"data\",\n \"text\",\n \"detail\",\n \"metadata\"\n ]) && (value.name === void 0 || typeof value.name === \"string\") && (value.mediaType === void 0 || typeof value.mediaType === \"string\") && (value.url === void 0 || typeof value.url === \"string\") && (value.data === void 0 || typeof value.data === \"string\") && (value.text === void 0 || typeof value.text === \"string\") && (value.detail === void 0 || [\"auto\", \"low\", \"high\"].includes(value.detail)) && (value.metadata === void 0 || isJsonValue2(value.metadata));\n}\nfunction isUIMessagePart(value) {\n if (!isRecord(value) || typeof value.id !== \"string\" || typeof value.type !== \"string\") {\n return false;\n }\n if (value.type === \"text\") {\n return hasOnlyKeys(value, [\"id\", \"type\", \"text\", \"signature\"]) && typeof value.text === \"string\" && (value.signature === void 0 || typeof value.signature === \"string\");\n }\n if (value.type === \"reasoning\") {\n return hasOnlyKeys(value, [\"id\", \"type\", \"text\", \"reasoningId\", \"content\"]) && typeof value.text === \"string\" && (value.reasoningId === void 0 || typeof value.reasoningId === \"string\") && (value.content === void 0 || Array.isArray(value.content) && value.content.every(isReasoningContent));\n }\n if (value.type === \"source\") {\n return hasOnlyKeys(value, [\"id\", \"type\", \"source\"]) && isCompletionSource(value.source);\n }\n if (value.type === \"data\") {\n return hasOnlyKeys(value, [\"id\", \"type\", \"name\", \"data\"]) && typeof value.name === \"string\" && isJsonValue2(value.data);\n }\n if (value.type === \"attachment\") {\n return hasOnlyKeys(value, [\"id\", \"type\", \"attachment\"]) && isAttachment(value.attachment);\n }\n if (value.type === \"error\") {\n return hasOnlyKeys(value, [\"id\", \"type\", \"error\"]) && isClientStreamError(value.error);\n }\n return value.type === \"tool\" && hasOnlyKeys(value, [\n \"id\",\n \"type\",\n \"toolName\",\n \"toolCallId\",\n \"callId\",\n \"internalCallId\",\n \"turn\",\n \"state\",\n \"input\",\n \"output\",\n \"resultContent\",\n \"signature\",\n \"error\"\n ]) && typeof value.toolName === \"string\" && typeof value.toolCallId === \"string\" && (value.callId === void 0 || typeof value.callId === \"string\") && (value.internalCallId === void 0 || typeof value.internalCallId === \"string\") && (value.turn === void 0 || isPositiveEventId(value.turn)) && (value.signature === void 0 || typeof value.signature === \"string\") && (value.input === void 0 || isJsonValue2(value.input)) && (value.output === void 0 || isJsonValue2(value.output)) && (value.resultContent === void 0 || Array.isArray(value.resultContent) && value.resultContent.every(isToolResultContent)) && (value.error === void 0 || isClientStreamError(value.error)) && [\"input-streaming\", \"input-available\", \"output-available\", \"error\"].includes(\n value.state\n );\n}\nfunction isReasoningContent(value) {\n if (!isRecord(value) || typeof value.type !== \"string\") return false;\n if (value.type === \"text\") {\n return hasOnlyKeys(value, [\"type\", \"text\", \"signature\"]) && typeof value.text === \"string\" && (value.signature === void 0 || typeof value.signature === \"string\");\n }\n if (value.type === \"summary\") {\n return hasOnlyKeys(value, [\"type\", \"text\"]) && typeof value.text === \"string\";\n }\n if (value.type === \"encrypted\" || value.type === \"redacted\") {\n return hasOnlyKeys(value, [\"type\", \"data\"]) && typeof value.data === \"string\";\n }\n return false;\n}\nfunction isToolResultContent(value) {\n if (!isRecord(value)) return false;\n if (value.type === \"text\") {\n return hasOnlyKeys(value, [\"type\", \"text\", \"signature\"]) && typeof value.text === \"string\" && (value.signature === void 0 || typeof value.signature === \"string\");\n }\n return value.type === \"file\" && hasOnlyKeys(value, [\"type\", \"data\", \"mediaType\", \"filename\"]) && isFileData(value.data) && typeof value.mediaType === \"string\" && (value.filename === void 0 || typeof value.filename === \"string\");\n}\nfunction isFileData(value) {\n if (!isRecord(value)) return false;\n if (value.type === \"url\") {\n return hasOnlyKeys(value, [\"type\", \"url\"]) && typeof value.url === \"string\";\n }\n if (value.type === \"data\") {\n return hasOnlyKeys(value, [\"type\", \"data\"]) && typeof value.data === \"string\";\n }\n return value.type === \"text\" && hasOnlyKeys(value, [\"type\", \"text\"]) && typeof value.text === \"string\";\n}\nfunction isCompletionSource(value) {\n return isRecord(value) && value.type === \"url\" && hasOnlyKeys(value, [\"type\", \"url\", \"title\", \"id\", \"startIndex\", \"endIndex\"]) && typeof value.url === \"string\" && (value.title === void 0 || typeof value.title === \"string\") && (value.id === void 0 || typeof value.id === \"string\") && (value.startIndex === void 0 || isNonnegativeNumber(value.startIndex)) && (value.endIndex === void 0 || isNonnegativeNumber(value.endIndex));\n}\nfunction isProviderToolCall(value) {\n return isRecord(value) && hasOnlyKeys(value, [\"id\", \"name\", \"status\", \"details\"]) && typeof value.id === \"string\" && typeof value.name === \"string\" && (value.status === void 0 || typeof value.status === \"string\") && (value.details === void 0 || isRecord(value.details) && isJsonValue2(value.details));\n}\nfunction isGuardrailDecision(value) {\n return isRecord(value) && hasOnlyKeys(value, [\n \"policyId\",\n \"guardrailId\",\n \"boundary\",\n \"mode\",\n \"action\",\n \"applied\",\n \"reason\",\n \"message\",\n \"metadata\",\n \"latencyMs\"\n ]) && typeof value.policyId === \"string\" && typeof value.guardrailId === \"string\" && (value.boundary === \"input\" || value.boundary === \"output\") && (value.mode === \"enforce\" || value.mode === \"observe\") && typeof value.action === \"string\" && [\"allow\", \"block\", \"rewrite\", \"error\"].includes(value.action) && typeof value.applied === \"boolean\" && (value.reason === void 0 || typeof value.reason === \"string\") && (value.message === void 0 || typeof value.message === \"string\") && (value.metadata === void 0 || isRecord(value.metadata) && isJsonValue2(value.metadata)) && isNonnegativeNumber(value.latencyMs);\n}\nfunction isUsage(value) {\n if (!isRecord(value) || !hasOnlyKeys(value, [\n \"inputTokens\",\n \"outputTokens\",\n \"totalTokens\",\n \"cachedInputTokens\",\n \"cacheCreationInputTokens\",\n \"details\"\n ]) || ![\n value.inputTokens,\n value.outputTokens,\n value.totalTokens,\n value.cachedInputTokens,\n value.cacheCreationInputTokens\n ].every(isNonnegativeNumber)) {\n return false;\n }\n return value.details === void 0 || isRecord(value.details) && Object.values(value.details).every(isNonnegativeNumber);\n}\nfunction isContextUsage(value) {\n if (!isRecord(value) || !isRecord(value.model) || !isRecord(value.model.context)) return false;\n const context = value.model.context;\n return hasOnlyKeys(value, [\n \"model\",\n \"usedTokens\",\n \"remainingTokens\",\n \"usedPercent\",\n \"remainingPercent\"\n ]) && hasOnlyKeys(value.model, [\"modelId\", \"context\"]) && typeof value.model.modelId === \"string\" && hasOnlyKeys(context, [\"contextWindow\", \"maxInputTokens\", \"maxOutputTokens\"]) && isNonnegativeNumber(context.contextWindow) && (context.maxInputTokens === void 0 || isNonnegativeNumber(context.maxInputTokens)) && (context.maxOutputTokens === void 0 || isNonnegativeNumber(context.maxOutputTokens)) && isNonnegativeNumber(value.usedTokens) && isNonnegativeNumber(value.remainingTokens) && isNonnegativeNumber(value.usedPercent) && isNonnegativeNumber(value.remainingPercent);\n}\nfunction validateUsageAndContext(event, original) {\n if (event.usage !== void 0 && !isUsage(event.usage)) {\n invalid(`${String(event.type)}.usage`, original);\n }\n if (event.contextUsage !== void 0 && !isContextUsage(event.contextUsage)) {\n invalid(`${String(event.type)}.contextUsage`, original);\n }\n}\nfunction validateMemoryCompactionInfo(value, original) {\n for (const field of [\"originalMessageCount\", \"compactedMessageCount\", \"retainedMessageCount\"]) {\n if (!isEventId(value[field])) invalid(`memory_compaction.${field}`, original);\n }\n if (!isPositiveEventId(value.attempts)) invalid(\"memory_compaction.attempts\", original);\n if (!isUsage(value.usage)) invalid(\"memory_compaction.usage\", original);\n}\nfunction isTrace(value) {\n return isRecord(value) && hasOnlyKeys(value, [\"observer\", \"traceId\", \"observationId\"]) && typeof value.observer === \"string\" && value.observer.trim().length > 0 && (value.traceId === void 0 || typeof value.traceId === \"string\") && (value.observationId === void 0 || typeof value.observationId === \"string\");\n}\nfunction requireRecord(value, label) {\n if (!isRecord(value)) throw new ClientProtocolError(`${label} must be an object.`, value);\n return value;\n}\nfunction requireOnlyKeys(value, keys, label) {\n for (const key of Object.keys(value)) {\n if (!keys.includes(key)) throw new ClientProtocolError(`${label} has unknown field \"${key}\".`);\n }\n}\nfunction requireEventKeys(value, keys) {\n requireOnlyKeys(\n value,\n [\"type\", \"runId\", \"turn\", \"scope\", ...keys],\n `${String(value.type)} event`\n );\n}\nfunction requireStrings(value, keys, original) {\n for (const key of keys) {\n if (typeof value[key] !== \"string\") invalid(`${String(value.type)}.${key}`, original);\n }\n}\nfunction requireOptionalStrings(value, keys, original) {\n for (const key of keys) {\n if (value[key] !== void 0 && typeof value[key] !== \"string\") {\n invalid(`${String(value.type)}.${key}`, original);\n }\n }\n}\nfunction requireOneOf(value, allowed, label, original) {\n if (typeof value !== \"string\" || !allowed.includes(value)) invalid(label, original);\n}\nfunction invalid(label, value) {\n throw new ClientProtocolError(`Invalid ${label}.`, value);\n}\nfunction isEventId(value) {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\nfunction isPositiveEventId(value) {\n return isEventId(value) && value > 0;\n}\nfunction isNonnegativeNumber(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0;\n}\nfunction hasOnlyKeys(value, keys) {\n return Object.keys(value).every((key) => keys.includes(key));\n}\nfunction isRecord(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n// src/adapters.ts\nfunction completionToClientStream(options) {\n const { events } = options;\n const runId = options.runId ?? createClientId(\"run\");\n return propagateCancellation(events, (source) => ({\n async *[Symbol.asyncIterator]() {\n const state = createMessageState({ runId });\n const runStart = {\n type: \"run_start\",\n source: \"completion\"\n };\n if (options.metadata !== void 0) runStart.metadata = options.metadata;\n yield clientEvent(state, runStart);\n if (options.model !== void 0) {\n yield clientEvent(state, { type: \"generation_start\", model: options.model });\n }\n yield* startMessage(state);\n let terminal = false;\n try {\n for await (const event of source) {\n if (terminal) break;\n switch (event.type) {\n case \"text_delta\":\n yield* appendText(state, event.delta);\n break;\n case \"reasoning_delta\":\n yield* appendReasoning(state, event);\n break;\n case \"tool_call_delta\":\n yield* appendToolCall(state, event);\n break;\n case \"tool_call\":\n yield* finishToolCall(state, event.toolCall);\n break;\n case \"source\":\n yield* emitSource(state, event.source);\n break;\n case \"provider_tool_call\":\n yield* emitProviderToolCall(state, event.toolCall);\n break;\n case \"message_id\":\n state.modelMessageId = event.id;\n break;\n case \"final\": {\n const result = event.result;\n if (result.messageId !== void 0) state.modelMessageId = result.messageId;\n const finalMetadata = {\n usage: result.usage\n };\n if (result.contextUsage !== void 0) {\n finalMetadata.contextUsage = result.contextUsage;\n }\n if (result.sources !== void 0) finalMetadata.sources = result.sources;\n if (result.providerToolCalls !== void 0) {\n finalMetadata.providerToolCalls = result.providerToolCalls;\n }\n yield* finishMessage(state, result.content, finalMetadata);\n const output = clientOutput(result.output, options.mapOutput);\n const runEnd = {\n type: \"run_end\",\n status: \"completed\",\n text: result.text,\n usage: result.usage\n };\n if (output !== void 0) runEnd.output = output;\n if (result.contextUsage !== void 0) runEnd.contextUsage = result.contextUsage;\n yield clientEvent(state, runEnd);\n terminal = true;\n break;\n }\n case \"error\":\n yield* finishErroredRun(state, event.error, event.usage, options.mapError);\n terminal = true;\n break;\n }\n }\n if (!terminal) {\n yield* finishErroredRun(\n state,\n new Error(\"Completion stream ended without a terminal event.\"),\n void 0,\n options.mapError\n );\n }\n } catch (error) {\n if (!terminal) yield* finishErroredRun(state, error, void 0, options.mapError);\n }\n }\n }));\n}\nfunction agentToClientStream(options) {\n const { events } = options;\n const runId = options.runId ?? createClientId(\"run\");\n return propagateCancellation(events, (source) => ({\n async *[Symbol.asyncIterator]() {\n const runtime = {\n runId,\n options,\n messages: /* @__PURE__ */ new Map(),\n startedScopes: /* @__PURE__ */ new Set([\"root\"])\n };\n const runStart = {\n type: \"run_start\",\n source: \"agent\"\n };\n if (options.metadata !== void 0) runStart.metadata = options.metadata;\n yield rootEvent(runId, runStart);\n let terminal = false;\n try {\n for await (const event of source) {\n if (terminal) break;\n yield* translateAgentEvent(runtime, event, void 0);\n terminal = isRootTerminalAgentEvent(event);\n }\n if (!terminal) {\n const error = mapClientError(\n new Error(\"Agent stream ended without a terminal event.\"),\n options.mapError\n );\n yield rootEvent(runId, { type: \"error\", error });\n yield rootEvent(runId, { type: \"run_end\", status: \"error\" });\n }\n } catch (error) {\n if (!terminal) {\n yield rootEvent(runId, {\n type: \"error\",\n error: mapClientError(error, options.mapError)\n });\n yield rootEvent(runId, { type: \"run_end\", status: \"error\" });\n }\n }\n }\n }));\n}\nfunction customAgentEventsToClientStream(options) {\n return agentToClientStream(\n options\n );\n}\nasync function* translateAgentEvent(runtime, event, scope) {\n if (event.type === \"agent_tool_event\") {\n const childScope = {\n agentId: event.agentId,\n parentRunId: runtime.runId,\n parentToolName: event.toolName,\n parentToolCallId: event.toolCallId ?? event.internalCallId,\n parentInternalToolCallId: event.internalCallId\n };\n if (event.agentName !== void 0) childScope.agentName = event.agentName;\n const key = scopeKey(childScope);\n if (!runtime.startedScopes.has(key)) {\n runtime.startedScopes.add(key);\n yield rootEvent(runtime.runId, { type: \"run_start\", source: \"agent\" }, childScope);\n }\n yield* translateAgentEvent(runtime, event.event, childScope);\n return;\n }\n const turn = \"turn\" in event && typeof event.turn === \"number\" ? event.turn : void 0;\n switch (event.type) {\n case \"memory_compaction\":\n yield scopedEvent(runtime.runId, turn, scope, {\n type: \"memory_compaction\",\n originalMessageCount: event.originalMessageCount,\n compactedMessageCount: event.compactedMessageCount,\n retainedMessageCount: event.retainedMessageCount,\n attempts: event.attempts,\n usage: event.usage\n });\n return;\n case \"turn_start\":\n yield scopedEvent(runtime.runId, turn, scope, { type: \"turn_start\" });\n return;\n case \"generation_start\": {\n const state = getAgentMessage(runtime, event.turn, scope);\n yield scopedEvent(runtime.runId, event.turn, scope, {\n type: \"generation_start\",\n model: {\n provider: event.modelInfo.provider,\n modelId: event.modelInfo.modelId\n }\n });\n yield* startMessage(state);\n return;\n }\n case \"text_delta\": {\n const state = getAgentMessage(runtime, event.turn, scope);\n yield* startMessage(state);\n yield* appendText(state, event.delta);\n return;\n }\n case \"reasoning_delta\": {\n const state = getAgentMessage(runtime, event.turn, scope);\n yield* startMessage(state);\n yield* appendReasoning(state, event);\n return;\n }\n case \"tool_call_delta\": {\n const state = getAgentMessage(runtime, event.turn, scope);\n yield* startMessage(state);\n yield* appendToolCall(state, event);\n return;\n }\n case \"tool_call\": {\n const state = getAgentMessage(runtime, event.turn, scope);\n yield* startMessage(state);\n yield* finishToolCall(state, event.toolCall);\n return;\n }\n case \"source\": {\n const state = getAgentMessage(runtime, event.turn, scope);\n yield* startMessage(state);\n yield* emitSource(state, event.source);\n return;\n }\n case \"provider_tool_call\": {\n const state = getAgentMessage(runtime, event.turn, scope);\n yield* emitProviderToolCall(state, event.toolCall);\n return;\n }\n case \"tool_result\": {\n const state = getAgentMessage(runtime, event.turn, scope);\n yield* startMessage(state);\n const tool = getToolResultState(\n state,\n event.toolName,\n event.toolCallId,\n event.callId,\n event.internalCallId\n );\n tool.result = clientToolResult(event.output, event.result);\n const resultEvent = {\n type: \"tool_result\",\n messageId: state.messageId,\n partId: tool.partId,\n toolCallId: tool.toolCallId,\n internalCallId: event.internalCallId,\n toolName: event.toolName,\n input: parseJsonOrString(event.args),\n result: tool.result\n };\n if (tool.callId !== void 0) resultEvent.callId = tool.callId;\n yield clientEvent(state, resultEvent);\n return;\n }\n case \"turn_end\": {\n const state = getAgentMessage(runtime, event.turn, scope);\n yield* startMessage(state);\n if (event.response.messageId !== void 0) state.modelMessageId = event.response.messageId;\n const finalMetadata = {\n usage: event.response.usage\n };\n if (event.response.contextUsage !== void 0) {\n finalMetadata.contextUsage = event.response.contextUsage;\n }\n if (event.response.sources !== void 0) finalMetadata.sources = event.response.sources;\n if (event.response.providerToolCalls !== void 0) {\n finalMetadata.providerToolCalls = event.response.providerToolCalls;\n }\n yield* finishMessage(state, event.response.choice, finalMetadata);\n const turnEnd = {\n type: \"turn_end\",\n usage: event.response.usage\n };\n if (event.response.contextUsage !== void 0) {\n turnEnd.contextUsage = event.response.contextUsage;\n }\n if (event.firstDeltaMs !== void 0) turnEnd.firstDeltaMs = event.firstDeltaMs;\n yield scopedEvent(runtime.runId, event.turn, scope, turnEnd);\n return;\n }\n case \"guardrail_decision\":\n yield scopedEvent(runtime.runId, event.turn, scope, {\n type: \"guardrail_decision\",\n decision: event.decision\n });\n return;\n case \"final\": {\n const result = event.result;\n if (result.status === \"suspended\" && scope === void 0) {\n yield scopedEvent(runtime.runId, turn, scope, {\n type: \"interaction\",\n interaction: result.interaction\n });\n }\n const output = result.status === \"completed\" ? clientOutput(result.output, runtime.options.mapOutput) : void 0;\n const runEnd = {\n type: \"run_end\",\n status: result.status,\n text: result.text,\n usage: result.usage\n };\n if (output !== void 0) runEnd.output = output;\n if (result.contextUsage !== void 0) runEnd.contextUsage = result.contextUsage;\n if (result.trace !== void 0) runEnd.trace = clientTrace(result.trace);\n if (result.memoryCompaction !== void 0) {\n runEnd.memoryCompaction = result.memoryCompaction;\n }\n if (runtime.options.metadata !== void 0) runEnd.metadata = runtime.options.metadata;\n yield scopedEvent(runtime.runId, turn, scope, runEnd);\n return;\n }\n case \"error\": {\n const error = mapClientError(event.error, runtime.options.mapError);\n yield scopedEvent(runtime.runId, turn, scope, { type: \"error\", error, usage: event.usage });\n yield scopedEvent(runtime.runId, turn, scope, {\n type: \"run_end\",\n status: \"error\",\n usage: event.usage\n });\n return;\n }\n default: {\n const context = {\n runId: runtime.runId\n };\n if (turn !== void 0) context.turn = turn;\n if (scope !== void 0) context.scope = scope;\n const mapped = runtime.options.mapCustomEvent?.(event, context);\n if (mapped === void 0) return;\n if (Array.isArray(mapped)) {\n yield* mapped;\n } else {\n yield mapped;\n }\n }\n }\n}\nfunction createMessageState(input) {\n const state = {\n runId: input.runId,\n messageId: createClientId(\"msg\"),\n started: false,\n ended: false,\n textPartId: createClientId(\"text\"),\n text: \"\",\n textStarted: false,\n textEnded: false,\n reasoning: /* @__PURE__ */ new Map(),\n tools: /* @__PURE__ */ new Map(),\n sourceFingerprints: /* @__PURE__ */ new Set(),\n providerToolCallFingerprints: /* @__PURE__ */ new Set()\n };\n if (input.turn !== void 0) state.turn = input.turn;\n if (input.scope !== void 0) state.scope = input.scope;\n return state;\n}\nfunction getAgentMessage(runtime, turn, scope) {\n const key = `${scopeKey(scope)}:${turn}`;\n const current = runtime.messages.get(key);\n if (current !== void 0) return current;\n const input = {\n runId: runtime.runId,\n turn\n };\n if (scope !== void 0) input.scope = scope;\n const created = createMessageState(input);\n runtime.messages.set(key, created);\n return created;\n}\nasync function* startMessage(state) {\n if (state.started) return;\n state.started = true;\n yield clientEvent(state, {\n type: \"message_start\",\n messageId: state.messageId,\n role: \"assistant\"\n });\n}\nasync function* appendText(state, delta) {\n if (!state.textStarted) {\n state.textStarted = true;\n yield clientEvent(state, {\n type: \"text_start\",\n messageId: state.messageId,\n partId: state.textPartId\n });\n }\n state.text += delta;\n yield clientEvent(state, {\n type: \"text_delta\",\n messageId: state.messageId,\n partId: state.textPartId,\n delta\n });\n}\nasync function* emitSource(state, source) {\n const fingerprint = valueFingerprint(source);\n if (state.sourceFingerprints.has(fingerprint)) return;\n state.sourceFingerprints.add(fingerprint);\n yield clientEvent(state, {\n type: \"source\",\n messageId: state.messageId,\n partId: createClientId(\"source\"),\n source\n });\n}\nasync function* emitProviderToolCall(state, toolCall) {\n const fingerprint = valueFingerprint(toolCall);\n if (state.providerToolCallFingerprints.has(fingerprint)) return;\n state.providerToolCallFingerprints.add(fingerprint);\n yield clientEvent(state, { type: \"provider_tool_call\", toolCall });\n}\nasync function* appendReasoning(state, event) {\n const key = event.id ?? \"default\";\n let reasoning = state.reasoning.get(key);\n if (reasoning === void 0) {\n reasoning = {\n partId: createClientId(\"reasoning\"),\n text: \"\",\n ended: false\n };\n if (event.id !== void 0) reasoning.reasoningId = event.id;\n state.reasoning.set(key, reasoning);\n const reasoningStart = {\n type: \"reasoning_start\",\n messageId: state.messageId,\n partId: reasoning.partId\n };\n if (event.id !== void 0) reasoningStart.reasoningId = event.id;\n yield clientEvent(state, reasoningStart);\n }\n reasoning.text += event.delta;\n const reasoningDelta = {\n type: \"reasoning_delta\",\n messageId: state.messageId,\n partId: reasoning.partId,\n delta: event.delta\n };\n if (event.contentType !== void 0) reasoningDelta.contentType = event.contentType;\n if (event.signature !== void 0) reasoningDelta.signature = event.signature;\n yield clientEvent(state, reasoningDelta);\n}\nasync function* appendToolCall(state, event) {\n const tool = getToolState(state, event.id, event.name);\n if (!tool.started) {\n tool.started = true;\n const toolCallStart = {\n type: \"tool_call_start\",\n messageId: state.messageId,\n partId: tool.partId,\n toolCallId: event.id\n };\n if (event.callId !== void 0) toolCallStart.callId = event.callId;\n if (event.name !== void 0) toolCallStart.toolName = event.name;\n yield clientEvent(state, toolCallStart);\n }\n if (event.callId !== void 0) tool.callId = event.callId;\n if (event.name !== void 0) tool.toolName = event.name;\n if (event.signature !== void 0) tool.signature = event.signature;\n if (event.argumentsDelta === void 0) return;\n const mode = event.argumentsMode ?? \"append\";\n const prior = typeof tool.input === \"string\" ? tool.input : \"\";\n tool.input = mode === \"replace\" ? event.argumentsDelta : `${prior}${event.argumentsDelta}`;\n const toolCallDelta = {\n type: \"tool_call_delta\",\n messageId: state.messageId,\n partId: tool.partId,\n toolCallId: event.id,\n delta: event.argumentsDelta,\n mode\n };\n if (event.callId !== void 0) toolCallDelta.callId = event.callId;\n if (event.name !== void 0) toolCallDelta.toolName = event.name;\n if (event.signature !== void 0) toolCallDelta.signature = event.signature;\n yield clientEvent(state, toolCallDelta);\n}\nasync function* finishToolCall(state, toolCall) {\n const tool = getToolState(state, toolCall.toolCallId, toolCall.toolName);\n const wasEnded = tool.ended;\n if (!tool.started) {\n tool.started = true;\n const toolCallStart = {\n type: \"tool_call_start\",\n messageId: state.messageId,\n partId: tool.partId,\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName\n };\n if (toolCall.callId !== void 0) toolCallStart.callId = toolCall.callId;\n yield clientEvent(state, toolCallStart);\n }\n if (toolCall.callId === void 0) delete tool.callId;\n else tool.callId = toolCall.callId;\n tool.toolName = toolCall.toolName;\n tool.input = toolCall.input;\n if (toolCall.signature === void 0) delete tool.signature;\n else tool.signature = toolCall.signature;\n if (wasEnded) return;\n tool.ended = true;\n const toolCallEnd = {\n type: \"tool_call_end\",\n messageId: state.messageId,\n partId: tool.partId,\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input\n };\n if (toolCall.callId !== void 0) toolCallEnd.callId = toolCall.callId;\n if (toolCall.signature !== void 0) toolCallEnd.signature = toolCall.signature;\n yield clientEvent(state, toolCallEnd);\n}\nasync function* finishMessage(state, content, metadata) {\n if (state.ended) return;\n const textContent2 = content.filter(\n (part) => part.type === \"text\"\n );\n const text = textContent2.map((part) => part.text).join(\"\");\n if (state.textStarted || text.length > 0) {\n if (!state.textStarted) {\n state.textStarted = true;\n yield clientEvent(state, {\n type: \"text_start\",\n messageId: state.messageId,\n partId: state.textPartId\n });\n }\n state.text = text;\n state.textEnded = true;\n const textEnd = {\n type: \"text_end\",\n messageId: state.messageId,\n partId: state.textPartId,\n text\n };\n if (textContent2.length === 1 && textContent2[0]?.signature !== void 0) {\n textEnd.signature = textContent2[0].signature;\n }\n yield clientEvent(state, textEnd);\n }\n const finalReasoning = content.filter(\n (part) => part.type === \"reasoning\"\n );\n const anonymousReasoning = [...state.reasoning.values()].filter(\n (reasoning) => reasoning.reasoningId === void 0\n );\n let anonymousIndex = 0;\n for (const [index, reasoning] of finalReasoning.entries()) {\n const existing = reasoning.id === void 0 ? anonymousReasoning[anonymousIndex++] : state.reasoning.get(reasoning.id);\n const current = existing ?? createReasoningState(reasoning.id);\n if (existing === void 0) {\n state.reasoning.set(reasoning.id ?? `final:${index}`, current);\n const reasoningStart = {\n type: \"reasoning_start\",\n messageId: state.messageId,\n partId: current.partId\n };\n if (reasoning.id !== void 0) reasoningStart.reasoningId = reasoning.id;\n yield clientEvent(state, reasoningStart);\n }\n if (!current.ended) {\n current.ended = true;\n current.text = reasoning.text;\n const reasoningEnd = {\n type: \"reasoning_end\",\n messageId: state.messageId,\n partId: current.partId,\n text: reasoning.text\n };\n if (reasoning.details !== void 0) reasoningEnd.content = reasoning.details;\n yield clientEvent(state, reasoningEnd);\n }\n }\n for (const reasoning of state.reasoning.values()) {\n if (reasoning.ended) continue;\n reasoning.ended = true;\n yield clientEvent(state, {\n type: \"reasoning_end\",\n messageId: state.messageId,\n partId: reasoning.partId,\n text: reasoning.text\n });\n }\n for (const part of content) {\n if (part.type === \"tool-call\") yield* finishToolCall(state, part);\n if (part.type === \"image\" || part.type === \"file\") {\n const attachment = contentAttachment(part);\n yield clientEvent(state, {\n type: \"attachment\",\n messageId: state.messageId,\n partId: createClientId(\"attachment_part\"),\n attachment\n });\n }\n }\n for (const source of metadata.sources ?? []) yield* emitSource(state, source);\n for (const toolCall of metadata.providerToolCalls ?? []) {\n yield* emitProviderToolCall(state, toolCall);\n }\n state.ended = true;\n const messageEnd = {\n type: \"message_end\",\n messageId: state.messageId,\n parts: contentToUIMessageParts(content, state),\n usage: metadata.usage\n };\n if (state.modelMessageId !== void 0) messageEnd.modelMessageId = state.modelMessageId;\n if (metadata.contextUsage !== void 0) messageEnd.contextUsage = metadata.contextUsage;\n yield clientEvent(state, messageEnd);\n}\nasync function* finishErroredRun(state, error, usage, mapper) {\n const mapped = mapClientError(error, mapper);\n if (state.textStarted && !state.textEnded) {\n state.textEnded = true;\n yield clientEvent(state, {\n type: \"text_end\",\n messageId: state.messageId,\n partId: state.textPartId,\n text: state.text\n });\n }\n const errorEvent = {\n type: \"error\",\n error: mapped\n };\n if (usage !== void 0) errorEvent.usage = usage;\n yield clientEvent(state, errorEvent);\n if (!state.ended) {\n state.ended = true;\n const messageEnd = {\n type: \"message_end\",\n messageId: state.messageId\n };\n if (state.modelMessageId !== void 0) messageEnd.modelMessageId = state.modelMessageId;\n if (usage !== void 0) messageEnd.usage = usage;\n yield clientEvent(state, messageEnd);\n }\n const runEnd = {\n type: \"run_end\",\n status: \"error\"\n };\n if (usage !== void 0) runEnd.usage = usage;\n yield clientEvent(state, runEnd);\n}\nfunction contentToUIMessageParts(content, state) {\n let textIndex = 0;\n let anonymousReasoningIndex = 0;\n const anonymousReasoning = [...state.reasoning.values()].filter(\n (reasoning) => reasoning.reasoningId === void 0\n );\n return content.map((contentPart) => {\n if (contentPart.type === \"text\") {\n const part = {\n id: textIndex === 0 ? state.textPartId : createClientId(\"text\"),\n type: \"text\",\n text: contentPart.text\n };\n textIndex += 1;\n if (contentPart.signature !== void 0) part.signature = contentPart.signature;\n return part;\n }\n if (contentPart.type === \"reasoning\") {\n const current = contentPart.id === void 0 ? anonymousReasoning[anonymousReasoningIndex++] : state.reasoning.get(contentPart.id);\n const part = {\n id: current?.partId ?? createClientId(\"reasoning\"),\n type: \"reasoning\",\n text: contentPart.text\n };\n if (contentPart.id !== void 0) part.reasoningId = contentPart.id;\n if (contentPart.details !== void 0) part.content = contentPart.details;\n return part;\n }\n if (contentPart.type === \"tool-call\") {\n const tool = getToolState(state, contentPart.toolCallId, contentPart.toolName);\n const part = {\n id: tool.partId,\n type: \"tool\",\n toolName: contentPart.toolName,\n toolCallId: contentPart.toolCallId,\n state: tool.result?.status === \"error\" ? \"error\" : tool.result ? \"output-available\" : \"input-available\",\n input: contentPart.input\n };\n if (contentPart.callId !== void 0) part.callId = contentPart.callId;\n if (tool.internalCallId !== void 0) part.internalCallId = tool.internalCallId;\n if (state.turn !== void 0) part.turn = state.turn;\n if (contentPart.signature !== void 0) part.signature = contentPart.signature;\n if (tool.result?.status === \"success\") {\n part.output = tool.result.output;\n if (tool.result.content !== void 0) part.resultContent = tool.result.content;\n } else if (tool.result?.status === \"error\") {\n part.error = tool.result.error;\n }\n return part;\n }\n const attachment = contentAttachment(contentPart);\n return {\n id: createClientId(\"attachment_part\"),\n type: \"attachment\",\n attachment\n };\n });\n}\nfunction getToolState(state, id, name) {\n let tool = state.tools.get(id);\n if (tool === void 0) {\n tool = {\n partId: createClientId(\"tool\"),\n toolCallId: id,\n input: \"\",\n started: false,\n ended: false\n };\n if (name !== void 0) tool.toolName = name;\n state.tools.set(id, tool);\n } else if (name !== void 0) {\n tool.toolName = name;\n }\n return tool;\n}\nfunction getToolResultState(state, toolName, toolCallId, callId, internalCallId) {\n const matchedByToolCallId = state.tools.get(toolCallId);\n const matchedByCallId = callId === void 0 ? void 0 : [...state.tools.values()].find((tool2) => tool2.callId === callId);\n const tool = matchedByToolCallId ?? matchedByCallId ?? getToolState(state, toolCallId, toolName);\n tool.toolName = toolName;\n if (callId !== void 0) tool.callId = callId;\n tool.internalCallId = internalCallId;\n return tool;\n}\nfunction createReasoningState(id) {\n const state = {\n partId: createClientId(\"reasoning\"),\n text: \"\",\n ended: false\n };\n if (id !== void 0) state.reasoningId = id;\n return state;\n}\nfunction contentAttachment(content) {\n const attachment = {\n id: createClientId(\"attachment\"),\n type: content.type === \"image\" ? \"image\" : \"file\"\n };\n if (content.type === \"image\") {\n if (content.detail !== void 0) attachment.detail = content.detail;\n if (content.mediaType !== void 0) attachment.mediaType = content.mediaType;\n if (content.image.type === \"url\") attachment.url = content.image.url;\n else attachment.data = content.image.data;\n return attachment;\n }\n attachment.mediaType = content.mediaType;\n if (content.filename !== void 0) attachment.name = content.filename;\n if (content.data.type === \"url\") {\n attachment.url = content.data.url;\n } else if (content.data.type === \"data\") {\n attachment.data = content.data.data;\n } else {\n attachment.text = content.data.text;\n }\n return attachment;\n}\nfunction clientToolResult(output, result) {\n switch (output.type) {\n case \"text\":\n return { status: \"success\", output: output.value };\n case \"json\":\n return { status: \"success\", output: output.value };\n case \"content\":\n return { status: \"success\", output: result, content: output.value };\n case \"execution-denied\":\n return {\n status: \"error\",\n error: {\n message: output.reason ?? \"Tool execution was denied.\",\n code: \"tool_execution_denied\"\n }\n };\n case \"error-text\":\n return {\n status: \"error\",\n error: { message: output.value, code: \"tool_execution_error\" }\n };\n case \"error-json\":\n return {\n status: \"error\",\n error: {\n message: \"Tool execution failed.\",\n code: \"tool_execution_error\",\n details: output.value\n }\n };\n }\n}\nfunction parseJsonOrString(value) {\n try {\n const parsed = JSON.parse(value);\n return isJsonValue3(parsed) ? parsed : value;\n } catch {\n return value;\n }\n}\nfunction clientOutput(output, mapper) {\n const mapped = mapper === void 0 ? isJsonValue3(output) ? output : void 0 : mapper(output);\n if (mapped !== void 0 && !isJsonValue3(mapped)) {\n throw new TypeError(\"mapOutput must return a strict JSON value or undefined.\");\n }\n return mapped;\n}\nfunction valueFingerprint(value) {\n if (value === null) return \"null\";\n if (value === void 0) return \"undefined\";\n if (Array.isArray(value)) return `[${value.map(valueFingerprint).join(\",\")}]`;\n if (typeof value === \"object\") {\n return `{${Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, entry]) => `${JSON.stringify(key)}:${valueFingerprint(entry)}`).join(\",\")}}`;\n }\n return `${typeof value}:${JSON.stringify(value)}`;\n}\nfunction clientTrace(trace) {\n const result = {\n observer: trace.observer\n };\n if (trace.traceId !== void 0) result.traceId = trace.traceId;\n if (trace.observationId !== void 0) result.observationId = trace.observationId;\n return result;\n}\nfunction mapClientError(error, mapper) {\n const mapped = mapper?.(error) ?? maskedClientError();\n if (typeof mapped.message !== \"string\" || mapped.details !== void 0 && !isJsonValue3(mapped.details)) {\n throw new TypeError(\"mapError must return a JSON-safe ClientStreamError.\");\n }\n return mapped;\n}\nfunction clientEvent(state, event) {\n return scopedEvent(state.runId, state.turn, state.scope, event);\n}\nfunction rootEvent(runId, event, scope) {\n return scopedEvent(runId, void 0, scope, event);\n}\nfunction scopedEvent(runId, turn, scope, event) {\n let scoped = { runId, ...event };\n if (turn !== void 0) scoped = { ...scoped, turn };\n if (scope !== void 0) scoped = { ...scoped, scope };\n return scoped;\n}\nfunction scopeKey(scope) {\n if (scope === void 0) return \"root\";\n return [\n scope.agentId,\n scope.parentRunId,\n scope.parentToolName,\n scope.parentToolCallId,\n scope.parentInternalToolCallId\n ].join(\":\");\n}\nfunction isRootTerminalAgentEvent(event) {\n return event.type === \"final\" || event.type === \"error\";\n}\nfunction propagateCancellation(source, transform) {\n return {\n [Symbol.asyncIterator]() {\n const sourceIterator = source[Symbol.asyncIterator]();\n const sharedSource = {\n [Symbol.asyncIterator]: () => sourceIterator\n };\n const outputIterator = transform(sharedSource)[Symbol.asyncIterator]();\n let returned = false;\n return {\n next: () => outputIterator.next(),\n async return() {\n if (returned) return { done: true, value: void 0 };\n returned = true;\n const sourceReturn = sourceIterator.return?.();\n const outputReturn = outputIterator.return?.();\n await Promise.all([sourceReturn, outputReturn]);\n return { done: true, value: void 0 };\n }\n };\n }\n };\n}\n\n// src/client-transport.ts\nfunction createHttpClientTransport(options) {\n const transport = createFetchEventTransport({\n ...options,\n mapEvent: (event) => parseClientStreamFrame(event, protocolOptions(options)),\n validateResponse(response) {\n if (response.headers.get(\"x-anvia-stream-protocol\") !== CLIENT_STREAM_PROTOCOL) {\n throw new ClientProtocolError(\n `Expected x-anvia-stream-protocol: ${CLIENT_STREAM_PROTOCOL}.`\n );\n }\n }\n });\n return {\n async *send(sendOptions) {\n const resume = sendOptions.resume ?? resumeCursorFromRequest(sendOptions.request);\n yield* validateFrameSequence(transport.send(sendOptions), resume);\n }\n };\n}\nfunction createDirectClientTransport(options) {\n return {\n async *send(sendOptions) {\n const resume = sendOptions.resume ?? resumeCursorFromRequest(sendOptions.request);\n if (resume !== void 0) {\n throw new ClientProtocolError(\"Direct client transports do not support resume cursors.\");\n }\n const handlerOptions = {\n request: sendOptions.request\n };\n if (sendOptions.abortSignal !== void 0) {\n handlerOptions.abortSignal = sendOptions.abortSignal;\n }\n if (sendOptions.headers !== void 0) handlerOptions.headers = sendOptions.headers;\n const events = await options.handler(handlerOptions);\n const iterator = events[Symbol.asyncIterator]();\n const streamId = createClientId(\"stream\");\n let eventId = 0;\n yield {\n type: \"stream_start\",\n protocol: CLIENT_STREAM_PROTOCOL,\n streamId,\n eventId: 0,\n resumable: false\n };\n let status = \"completed\";\n try {\n let closePromise;\n const close = () => {\n closePromise ??= Promise.resolve(iterator.return?.());\n return closePromise;\n };\n const onAbort = () => {\n void close();\n };\n sendOptions.abortSignal?.addEventListener(\"abort\", onAbort, { once: true });\n try {\n while (!sendOptions.abortSignal?.aborted) {\n const next = await iterator.next();\n if (next.done) break;\n const event = parseClientStreamEvent(\n next.value,\n protocolOptions(options)\n );\n eventId += 1;\n yield { type: \"stream_event\", streamId, eventId, event };\n }\n } finally {\n sendOptions.abortSignal?.removeEventListener(\"abort\", onAbort);\n await close();\n }\n } catch {\n status = \"error\";\n }\n yield { type: \"stream_end\", streamId, eventId, status };\n }\n };\n}\nasync function* validateFrameSequence(frames, resume) {\n let streamId;\n let lastEventId = resume?.after ?? 0;\n let ended = false;\n for await (const frame of frames) {\n if (ended) throw new ClientProtocolError(\"Received a frame after stream_end.\", frame);\n if (streamId === void 0) {\n if (frame.type !== \"stream_start\") {\n throw new ClientProtocolError(\"The first client stream frame must be stream_start.\", frame);\n }\n streamId = frame.streamId;\n if (resume !== void 0 && frame.streamId !== resume.streamId) {\n throw new ClientProtocolError(\"Resume response streamId does not match the cursor.\", frame);\n }\n if (resume !== void 0 && !frame.resumable) {\n throw new ClientProtocolError(\"Resume response must identify a resumable stream.\", frame);\n }\n } else if (frame.type === \"stream_start\") {\n throw new ClientProtocolError(\"Received more than one stream_start frame.\", frame);\n } else if (frame.streamId !== streamId) {\n throw new ClientProtocolError(\"Client streamId changed during the response.\", frame);\n }\n if (frame.type === \"stream_event\") {\n if (frame.eventId !== lastEventId + 1) {\n throw new ClientProtocolError(\"Client stream event IDs must be contiguous.\", frame);\n }\n lastEventId = frame.eventId;\n } else if (frame.type === \"stream_end\") {\n if (frame.eventId !== lastEventId) {\n throw new ClientProtocolError(\"stream_end has an invalid eventId.\", frame);\n }\n ended = true;\n }\n yield frame;\n }\n if (streamId === void 0 || !ended) {\n throw new ClientProtocolError(\"Client stream ended without a complete frame sequence.\");\n }\n}\nfunction protocolOptions(options) {\n const result = {};\n if (options.metadataSchema !== void 0) result.metadataSchema = options.metadataSchema;\n if (options.dataSchemas !== void 0) result.dataSchemas = options.dataSchemas;\n return result;\n}\nfunction resumeCursorFromRequest(value) {\n if (typeof value !== \"object\" || value === null || !(\"resume\" in value)) return void 0;\n const resume = value.resume;\n if (typeof resume !== \"object\" || resume === null) return void 0;\n if (!(\"streamId\" in resume) || !(\"after\" in resume)) return void 0;\n return typeof resume.streamId === \"string\" && typeof resume.after === \"number\" && Number.isSafeInteger(resume.after) && resume.after >= 0 ? { streamId: resume.streamId, after: resume.after } : void 0;\n}\n\n// src/reducer.ts\nimport { isJsonValue as isJsonValue4 } from \"@anvia/core/completion\";\nfunction applyClientStreamEvent(messages, event) {\n if (event.scope?.parentToolCallId !== void 0) {\n return messages;\n }\n switch (event.type) {\n case \"message_start\": {\n if (messages.some((message2) => message2.id === event.messageId)) return messages;\n let message = {\n id: event.messageId,\n role: event.role,\n parts: []\n };\n if (event.metadata !== void 0) message = { ...message, metadata: event.metadata };\n return [...messages, message];\n }\n case \"text_start\":\n return upsertPart(messages, event.messageId, {\n id: event.partId,\n type: \"text\",\n text: \"\"\n });\n case \"text_delta\":\n return updatePart(messages, event.messageId, event.partId, (part) => ({\n id: event.partId,\n type: \"text\",\n text: part?.type === \"text\" ? `${part.text}${event.delta}` : event.delta\n }));\n case \"text_end\":\n return updatePart(messages, event.messageId, event.partId, (part) => {\n const next = {\n id: event.partId,\n type: \"text\",\n text: event.text ?? (part?.type === \"text\" ? part.text : \"\")\n };\n if (event.signature !== void 0) next.signature = event.signature;\n return next;\n });\n case \"reasoning_start\": {\n const reasoning = {\n id: event.partId,\n type: \"reasoning\",\n text: \"\"\n };\n if (event.reasoningId !== void 0) reasoning.reasoningId = event.reasoningId;\n return upsertPart(messages, event.messageId, reasoning);\n }\n case \"reasoning_delta\":\n return updatePart(messages, event.messageId, event.partId, (part) => {\n const reasoning = {\n id: event.partId,\n type: \"reasoning\",\n text: part?.type === \"reasoning\" ? `${part.text}${event.delta}` : event.delta\n };\n if (part?.type === \"reasoning\" && part.reasoningId !== void 0) {\n reasoning.reasoningId = part.reasoningId;\n }\n const content = appendReasoningContent(\n part?.type === \"reasoning\" ? part.content : void 0,\n event\n );\n if (content !== void 0) reasoning.content = content;\n return reasoning;\n });\n case \"reasoning_end\":\n return updatePart(messages, event.messageId, event.partId, (part) => {\n const reasoning = {\n id: event.partId,\n type: \"reasoning\",\n text: event.text ?? (part?.type === \"reasoning\" ? part.text : \"\")\n };\n if (part?.type === \"reasoning\" && part.reasoningId !== void 0) {\n reasoning.reasoningId = part.reasoningId;\n }\n if (event.content !== void 0) {\n reasoning.content = event.content;\n } else if (part?.type === \"reasoning\" && part.content !== void 0) {\n reasoning.content = part.content;\n }\n return reasoning;\n });\n case \"tool_call_start\": {\n const part = {\n id: event.partId,\n type: \"tool\",\n toolName: event.toolName ?? \"\",\n toolCallId: event.toolCallId,\n state: \"input-streaming\",\n input: \"\"\n };\n if (event.callId !== void 0) part.callId = event.callId;\n if (event.turn !== void 0) part.turn = event.turn;\n return upsertPart(messages, event.messageId, part);\n }\n case \"tool_call_delta\":\n return updatePart(messages, event.messageId, event.partId, (current) => {\n const part = current?.type === \"tool\" ? { ...current } : {\n id: event.partId,\n type: \"tool\",\n toolName: event.toolName ?? \"\",\n toolCallId: event.toolCallId,\n state: \"input-streaming\"\n };\n const previous = typeof part.input === \"string\" ? part.input : \"\";\n part.input = event.mode === \"replace\" ? event.delta : `${previous}${event.delta}`;\n part.state = \"input-streaming\";\n if (event.toolName !== void 0) part.toolName = event.toolName;\n if (event.callId !== void 0) part.callId = event.callId;\n if (event.signature !== void 0) part.signature = event.signature;\n if (event.turn !== void 0) part.turn = event.turn;\n return part;\n });\n case \"tool_call_end\": {\n const part = {\n id: event.partId,\n type: \"tool\",\n toolName: event.toolName,\n toolCallId: event.toolCallId,\n state: \"input-available\",\n input: event.input\n };\n if (event.callId !== void 0) part.callId = event.callId;\n if (event.turn !== void 0) part.turn = event.turn;\n if (event.signature !== void 0) part.signature = event.signature;\n return upsertPart(messages, event.messageId, part);\n }\n case \"tool_result\":\n return updatePart(messages, event.messageId, event.partId, (current) => {\n const part = current?.type === \"tool\" ? { ...current } : {\n id: event.partId,\n type: \"tool\",\n toolName: event.toolName,\n toolCallId: event.toolCallId,\n state: \"input-available\"\n };\n if (event.callId !== void 0) part.callId = event.callId;\n if (event.internalCallId !== void 0) part.internalCallId = event.internalCallId;\n if (event.input !== void 0) part.input = event.input;\n if (event.turn !== void 0) part.turn = event.turn;\n if (event.result.status === \"error\") {\n part.state = \"error\";\n part.error = event.result.error;\n } else {\n part.state = \"output-available\";\n part.output = event.result.output;\n if (event.result.content !== void 0) part.resultContent = event.result.content;\n }\n return part;\n });\n case \"source\":\n return upsertPart(messages, event.messageId, {\n id: event.partId,\n type: \"source\",\n source: event.source\n });\n case \"attachment\":\n return upsertPart(messages, event.messageId, {\n id: event.partId,\n type: \"attachment\",\n attachment: event.attachment\n });\n case \"data\":\n if (event.transient === true) return messages;\n return appendToLastAssistant(messages, {\n id: createClientId(\"data\"),\n type: \"data\",\n name: event.name,\n data: event.data\n });\n case \"message_end\":\n return messages.map((message) => {\n if (message.id !== event.messageId) return message;\n const metadata = mergeMetadata(message.metadata, event.metadata);\n const generationUpdate = {\n runId: event.runId\n };\n if (event.usage !== void 0) generationUpdate.usage = event.usage;\n if (event.contextUsage !== void 0) {\n generationUpdate.contextUsage = event.contextUsage;\n }\n const generation = mergeGeneration(message.generation, generationUpdate);\n let updated = {\n ...message,\n generation\n };\n if (event.parts !== void 0) {\n updated = { ...updated, parts: reconcileFinalParts(message.parts, event.parts) };\n }\n if (event.modelMessageId !== void 0) {\n updated = { ...updated, modelMessageId: event.modelMessageId };\n }\n if (metadata !== void 0) updated = { ...updated, metadata };\n return updated;\n });\n case \"run_end\": {\n const generation = {\n runId: event.runId,\n status: event.status\n };\n if (event.usage !== void 0) generation.usage = event.usage;\n if (event.contextUsage !== void 0) generation.contextUsage = event.contextUsage;\n if (event.trace !== void 0) generation.trace = event.trace;\n if (event.memoryCompaction !== void 0) {\n generation.memoryCompaction = event.memoryCompaction;\n }\n return updateLastAssistantGeneration(messages, generation);\n }\n case \"error\":\n return appendToLastAssistant(messages, {\n id: createClientId(\"error\"),\n type: \"error\",\n error: event.error\n });\n default:\n return messages;\n }\n}\nfunction reconcileFinalParts(current, final) {\n const clientOnly = current.filter(\n (part) => part.type === \"source\" || part.type === \"data\" || part.type === \"error\"\n );\n return [...final, ...clientOnly];\n}\nfunction appendReasoningContent(current, event) {\n if (event.contentType === void 0 && event.signature === void 0) return current;\n const type = event.contentType ?? \"text\";\n const next = [...current ?? []];\n const last = next.at(-1);\n if (type === \"text\") {\n if (last?.type === \"text\" && last.signature === event.signature) {\n next[next.length - 1] = { ...last, text: `${last.text}${event.delta}` };\n } else {\n let detail = {\n type,\n text: event.delta\n };\n if (event.signature !== void 0) detail = { ...detail, signature: event.signature };\n next.push(detail);\n }\n return next;\n }\n if (type === \"summary\") {\n if (last?.type === \"summary\") {\n next[next.length - 1] = { ...last, text: `${last.text}${event.delta}` };\n } else next.push({ type, text: event.delta });\n return next;\n }\n if (type === \"encrypted\") {\n if (last?.type === \"encrypted\") {\n next[next.length - 1] = { ...last, data: `${last.data}${event.delta}` };\n } else next.push({ type, data: event.delta });\n return next;\n }\n if (last?.type === \"redacted\") {\n next[next.length - 1] = { ...last, data: `${last.data}${event.delta}` };\n } else next.push({ type, data: event.delta });\n return next;\n}\nfunction messageText(message) {\n return message.parts.flatMap((part) => part.type === \"text\" ? [part.text] : []).join(\"\");\n}\nfunction assistantText(messages) {\n const assistant = [...messages].reverse().find((message) => message.role === \"assistant\");\n return assistant === void 0 ? \"\" : messageText(assistant);\n}\nfunction upsertPart(messages, messageId, part) {\n return updatePart(messages, messageId, part.id, () => part);\n}\nfunction updatePart(messages, messageId, partId, update) {\n const current = ensureAssistant(messages, messageId);\n return current.map((message) => {\n if (message.id !== messageId) return message;\n const index = message.parts.findIndex((part) => part.id === partId);\n if (index === -1) return { ...message, parts: [...message.parts, update(void 0)] };\n const parts = [...message.parts];\n parts[index] = update(parts[index]);\n return { ...message, parts };\n });\n}\nfunction ensureAssistant(messages, messageId) {\n return messages.some((message) => message.id === messageId) ? messages : [...messages, { id: messageId, role: \"assistant\", parts: [] }];\n}\nfunction appendToLastAssistant(messages, part) {\n const index = findLastIndex(messages, (message2) => message2.role === \"assistant\");\n if (index === -1) {\n return [...messages, { id: createClientId(\"msg\"), role: \"assistant\", parts: [part] }];\n }\n const next = [...messages];\n const message = next[index];\n next[index] = { ...message, parts: [...message.parts, part] };\n return next;\n}\nfunction updateLastAssistantGeneration(messages, value) {\n const index = findLastIndex(messages, (message2) => message2.role === \"assistant\");\n if (index === -1) return messages;\n const next = [...messages];\n const message = next[index];\n next[index] = { ...message, generation: mergeGeneration(message.generation, value) };\n return next;\n}\nfunction mergeMetadata(current, provided) {\n if (provided === void 0) return current;\n if (!isRecord2(current) || !isRecord2(provided)) return provided;\n const next = { ...current, ...provided };\n return isJsonValue4(next) ? next : provided;\n}\nfunction mergeGeneration(current, provided) {\n return {\n ...current,\n ...Object.fromEntries(Object.entries(provided).filter(([, value]) => value !== void 0))\n };\n}\nfunction findLastIndex(items, predicate) {\n for (let index = items.length - 1; index >= 0; index -= 1) {\n if (predicate(items[index])) return index;\n }\n return -1;\n}\nfunction isRecord2(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nexport {\n CLIENT_STREAM_PROTOCOL,\n ClientProtocolError,\n agentToClientStream,\n applyClientStreamEvent,\n assistantText,\n completionToClientStream,\n createClientId,\n createDirectClientTransport,\n createHttpClientTransport,\n customAgentEventsToClientStream,\n maskedClientError,\n messageText,\n messagesToUIMessages,\n normalizeClientError,\n parseClientStreamEvent,\n parseClientStreamFrame,\n parseClientStreamRequest,\n parseUIMessage,\n parseUIMessages,\n uiMessagesToMessages\n};\n//# sourceMappingURL=index.js.map","// src/memory.ts\nimport { messagesToUIMessages } from \"@anvia/client\";\nfunction initialMessagesFromMemory(messages) {\n return messagesToUIMessages(messages);\n}\n\n// src/use-chat.ts\nimport {\n applyClientStreamEvent,\n assistantText,\n ClientProtocolError,\n normalizeClientError,\n uiMessagesToMessages\n} from \"@anvia/client\";\nimport {\n assertAgentInteractionResponse,\n parseAgentInteractionResponse\n} from \"@anvia/core/agent\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\n// src/context-usage.ts\nfunction contextUsageUpdateFromEvent(event) {\n return event.type === \"message_end\" || event.type === \"turn_end\" || event.type === \"run_end\" ? event.contextUsage : void 0;\n}\nfunction contextUsageFromMessages(messages) {\n for (let index = messages.length - 1; index >= 0; index -= 1) {\n const message = messages[index];\n if (message?.role !== \"assistant\") continue;\n if (message.generation?.contextUsage !== void 0) return message.generation.contextUsage;\n if (!isRecord(message.metadata)) continue;\n const anvia = message.metadata.anvia;\n const generation = isRecord(anvia) ? anvia.generation : void 0;\n if (isRecord(generation) && isContextUsage(generation.contextUsage)) {\n return generation.contextUsage;\n }\n }\n return void 0;\n}\nfunction isContextUsage(value) {\n return isRecord(value) && isRecord(value.model) && typeof value.model.modelId === \"string\" && isRecord(value.model.context) && typeof value.model.context.contextWindow === \"number\" && typeof value.usedTokens === \"number\" && typeof value.remainingTokens === \"number\" && typeof value.usedPercent === \"number\" && typeof value.remainingPercent === \"number\";\n}\nfunction isRecord(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n// src/resume.ts\nimport {\n parseClientStreamRequest,\n parseUIMessages\n} from \"@anvia/client\";\nimport { parseAgentInteractionRequest } from \"@anvia/core/agent\";\nvar storageKeyPrefix = \"anvia:chat-resume:\";\nfunction loadChatResumeState(options) {\n const storage = resolveResumeStorage(options);\n const key = resumeStorageKey(options);\n if (storage === void 0 || key === void 0) return void 0;\n try {\n const raw = storage.getItem(key);\n if (raw === null) return void 0;\n const parsed = JSON.parse(raw);\n return parseChatResumeState(parsed);\n } catch {\n return void 0;\n }\n}\nfunction saveChatResumeState(options, state) {\n const storage = resolveResumeStorage(options);\n const key = resumeStorageKey(options);\n if (storage === void 0 || key === void 0) return;\n try {\n storage.setItem(key, JSON.stringify(state));\n } catch {\n }\n}\nfunction clearChatResumeState(options) {\n const storage = resolveResumeStorage(options);\n const key = resumeStorageKey(options);\n if (storage === void 0 || key === void 0) return;\n try {\n storage.removeItem(key);\n } catch {\n }\n}\nfunction resumeStorageKey(options) {\n return options === void 0 ? void 0 : `${storageKeyPrefix}${options.key}`;\n}\nfunction resolveResumeStorage(options) {\n if (options === void 0) return void 0;\n if (typeof options.storage === \"object\") return options.storage;\n if (typeof globalThis.window === \"undefined\") return void 0;\n try {\n return options.storage === \"localStorage\" ? window.localStorage : window.sessionStorage;\n } catch {\n return void 0;\n }\n}\nfunction parseChatResumeState(value) {\n if (!isRecord2(value) || value.version !== 3 || typeof value.streamId !== \"string\" || typeof value.lastEventId !== \"number\" || !Number.isSafeInteger(value.lastEventId) || value.lastEventId < 0) {\n return void 0;\n }\n try {\n return {\n version: 3,\n streamId: value.streamId,\n lastEventId: value.lastEventId,\n messages: parseUIMessages(value.messages),\n interactions: parseInteractions(value.interactions),\n request: parseClientStreamRequest(value.request)\n };\n } catch {\n return void 0;\n }\n}\nfunction parseInteractions(value) {\n if (!Array.isArray(value)) throw new TypeError(\"interactions must be an array\");\n return value.map((item) => {\n if (!isRecord2(item) || typeof item.runId !== \"string\" || item.status !== \"pending\" && item.status !== \"responded\" && item.status !== \"cancelled\") {\n throw new TypeError(\"interaction state is invalid\");\n }\n return {\n request: parseAgentInteractionRequest(item.request),\n runId: item.runId,\n status: item.status\n };\n });\n}\nfunction isRecord2(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n// src/ui-messages.ts\nimport {\n createClientId\n} from \"@anvia/client\";\nfunction createUserMessage(input) {\n const text = input.text ?? \"\";\n const attachments = input.attachments ?? [];\n if (text.trim().length === 0 && attachments.length === 0) {\n throw new TypeError(\"sendMessage requires nonblank text or at least one attachment.\");\n }\n const parts = [];\n if (text.trim().length > 0) {\n parts.push({ id: createClientId(\"part\"), type: \"text\", text });\n }\n for (const attachment of attachments) {\n parts.push({\n id: createClientId(\"part\"),\n type: \"attachment\",\n attachment: normalizeAttachment(attachment)\n });\n }\n let message = {\n id: createClientId(\"msg\"),\n role: \"user\",\n parts\n };\n if (input.metadata !== void 0) message = { ...message, metadata: input.metadata };\n return message;\n}\nfunction normalizeAttachment(attachment) {\n return { ...attachment, id: attachment.id ?? createClientId(\"attachment\") };\n}\n\n// src/use-chat.ts\nfunction useChat(options) {\n const [messages, setMessagesState] = useState(() => [\n ...options.initialMessages ?? []\n ]);\n const [events, setEvents] = useState([]);\n const [contextUsage, setContextUsage] = useState(\n () => contextUsageFromMessages(options.initialMessages ?? [])\n );\n const [status, setStatus] = useState(\"ready\");\n const [error, setError] = useState();\n const [interactions, setInteractions] = useState([]);\n const [respondingInteractions, setRespondingInteractions] = useState(\n () => /* @__PURE__ */ new Set()\n );\n const [streamId, setStreamIdState] = useState();\n const [isResuming, setIsResuming] = useState(false);\n const messagesRef = useRef(messages);\n const interactionsRef = useRef(interactions);\n const respondingRef = useRef(respondingInteractions);\n const requestRef = useRef(void 0);\n const waitingRef = useRef(false);\n const streamIdRef = useRef(void 0);\n const lastEventIdRef = useRef(0);\n const abortRef = useRef(void 0);\n const autoResumeStartedRef = useRef(false);\n useEffect(() => {\n messagesRef.current = messages;\n }, [messages]);\n useEffect(() => {\n interactionsRef.current = interactions;\n }, [interactions]);\n useEffect(() => () => abortRef.current?.abort(), []);\n const transport = options.transport;\n const updateMessages = useCallback((next) => {\n const value = typeof next === \"function\" ? next(messagesRef.current) : next;\n messagesRef.current = value;\n setMessagesState(value);\n }, []);\n const setMessages = useCallback(\n (next) => {\n updateMessages((current) => {\n const value = typeof next === \"function\" ? next(current) : next;\n setContextUsage(contextUsageFromMessages(value));\n return value;\n });\n },\n [updateMessages]\n );\n const setStreamId = useCallback((value) => {\n streamIdRef.current = value;\n setStreamIdState(value);\n }, []);\n const persistResumeState = useCallback(() => {\n if (streamIdRef.current === void 0 || requestRef.current === void 0) return;\n saveChatResumeState(options.resume, {\n version: 3,\n streamId: streamIdRef.current,\n lastEventId: lastEventIdRef.current,\n messages: messagesRef.current,\n interactions: interactionsRef.current,\n request: requestRef.current\n });\n }, [options.resume]);\n const clearResumeState = useCallback(() => {\n lastEventIdRef.current = 0;\n setStreamId(void 0);\n clearChatResumeState(options.resume);\n }, [options.resume, setStreamId]);\n const updateInteraction = useCallback((interaction) => {\n const current = interactionsRef.current;\n const index = current.findIndex((item) => item.request.id === interaction.request.id);\n const next = index === -1 ? [...current, interaction] : [...current];\n if (index !== -1) next[index] = interaction;\n interactionsRef.current = next;\n setInteractions(next);\n }, []);\n const applyEvent = useCallback(\n (event) => {\n setEvents((current) => [...current, event]);\n options.onEvent?.(event);\n const nextContextUsage = contextUsageUpdateFromEvent(event);\n if (nextContextUsage !== void 0) setContextUsage(nextContextUsage);\n if (event.type === \"interaction\") {\n updateInteraction({ request: event.interaction, runId: event.runId, status: \"pending\" });\n }\n if (event.type === \"run_end\") {\n waitingRef.current = event.status === \"suspended\";\n }\n updateMessages((current) => applyClientStreamEvent(current, event));\n if (event.type !== \"error\") return void 0;\n const nextError = normalizeClientError(event.error);\n setError(nextError);\n options.onError?.(nextError);\n return nextError;\n },\n [options, updateInteraction, updateMessages]\n );\n const runRequest = useCallback(\n async (request, nextMessages, runOptions = {}) => {\n abortRef.current?.abort();\n const controller = new AbortController();\n abortRef.current = controller;\n waitingRef.current = runOptions.isResuming === true && interactionsRef.current.some((interaction) => interaction.status === \"pending\");\n const activeRequest = runOptions.resume === void 0 ? request : { ...request, resume: runOptions.resume };\n requestRef.current = activeRequest;\n if (runOptions.resume === void 0) {\n clearResumeState();\n } else {\n lastEventIdRef.current = runOptions.resume.after;\n setStreamId(runOptions.resume.streamId);\n }\n updateMessages(nextMessages);\n setContextUsage(contextUsageFromMessages(nextMessages));\n setEvents([]);\n setError(void 0);\n if (runOptions.clearInteractions === true) {\n interactionsRef.current = [];\n setInteractions([]);\n }\n setStatus(\"submitted\");\n setIsResuming(runOptions.isResuming === true);\n let streamError;\n let accepted = false;\n try {\n const sendOptions = {\n request: activeRequest,\n abortSignal: controller.signal\n };\n if (runOptions.resume !== void 0) sendOptions.resume = runOptions.resume;\n for await (const frame of transport.send(sendOptions)) {\n if (abortRef.current !== controller || controller.signal.aborted) return accepted;\n if (frame.type === \"stream_start\") {\n accepted = true;\n runOptions.onAccepted?.();\n setStreamId(frame.streamId);\n persistResumeState();\n continue;\n }\n if (frame.type === \"stream_event\") {\n lastEventIdRef.current = frame.eventId;\n if (streamError === void 0) setStatus(\"streaming\");\n streamError = applyEvent(frame.event) ?? streamError;\n if (streamError !== void 0) setStatus(\"error\");\n persistResumeState();\n continue;\n }\n lastEventIdRef.current = frame.eventId;\n clearResumeState();\n if (frame.status !== \"completed\") {\n throw new ClientProtocolError(\n `Client stream ended with status ${frame.status}.`,\n frame\n );\n }\n }\n if (abortRef.current === controller && !controller.signal.aborted) {\n setStatus(streamError !== void 0 ? \"error\" : waitingRef.current ? \"waiting\" : \"ready\");\n }\n } catch (caught) {\n if (isAbortError(caught)) {\n if (abortRef.current === controller) setStatus(\"ready\");\n return accepted;\n }\n if (abortRef.current !== controller) return accepted;\n const nextError = normalizeClientError(caught);\n setError(nextError);\n setStatus(\"error\");\n options.onError?.(nextError);\n } finally {\n if (abortRef.current === controller) {\n abortRef.current = void 0;\n setIsResuming(false);\n }\n }\n return accepted;\n },\n [\n applyEvent,\n clearResumeState,\n options,\n persistResumeState,\n setStreamId,\n transport,\n updateMessages\n ]\n );\n const sendMessages = useCallback(\n async (nextMessages) => {\n await runRequest(\n { type: \"messages\", messages: uiMessagesToMessages(nextMessages) },\n nextMessages,\n { clearInteractions: true }\n );\n },\n [runRequest]\n );\n const resume = useCallback(async () => {\n const saved = loadChatResumeState(options.resume);\n if (saved === void 0) return;\n interactionsRef.current = [...saved.interactions];\n setInteractions([...saved.interactions]);\n await runRequest(saved.request, saved.messages, {\n resume: { streamId: saved.streamId, after: saved.lastEventId },\n isResuming: true\n });\n }, [options.resume, runRequest]);\n useEffect(() => {\n if (options.resume?.auto === false || autoResumeStartedRef.current) return;\n autoResumeStartedRef.current = true;\n void resume();\n }, [options.resume?.auto, resume]);\n const sendMessage = useCallback(\n async (input) => {\n const message = createUserMessage(input);\n const current = messagesRef.current;\n const base = abortRef.current !== void 0 && current.at(-1)?.role === \"assistant\" ? current.slice(0, -1) : current;\n await sendMessages([...base, message]);\n },\n [sendMessages]\n );\n const regenerate = useCallback(async () => {\n const lastUser = findLastUserIndex(messagesRef.current);\n if (lastUser !== -1) await sendMessages(messagesRef.current.slice(0, lastUser + 1));\n }, [sendMessages]);\n const respondToInteraction = useCallback(\n async (input) => {\n const interaction = interactionsRef.current.find(\n (item) => item.request.id === input.interactionId && item.status === \"pending\"\n );\n if (interaction === void 0) {\n throw new TypeError(`No pending interaction exists for \"${input.interactionId}\".`);\n }\n const response = parseAgentInteractionResponse(input.response);\n assertAgentInteractionResponse(interaction.request, response);\n if (respondingRef.current.has(input.interactionId)) return;\n const responding = new Set(respondingRef.current).add(input.interactionId);\n respondingRef.current = responding;\n setRespondingInteractions(responding);\n try {\n const accepted = await runRequest(\n {\n type: \"interaction_response\",\n interactionId: input.interactionId,\n response\n },\n messagesRef.current,\n {\n onAccepted: () => updateInteraction({ ...interaction, status: \"responded\" })\n }\n );\n if (!accepted) {\n throw new ClientProtocolError(\"The interaction response was not accepted.\");\n }\n } finally {\n const next = new Set(respondingRef.current);\n next.delete(input.interactionId);\n respondingRef.current = next;\n setRespondingInteractions(next);\n }\n },\n [runRequest, updateInteraction]\n );\n const stop = useCallback(() => {\n abortRef.current?.abort();\n abortRef.current = void 0;\n clearResumeState();\n setStatus(\"ready\");\n setIsResuming(false);\n }, [clearResumeState]);\n const reset = useCallback(() => {\n abortRef.current?.abort();\n abortRef.current = void 0;\n clearResumeState();\n updateMessages([]);\n setContextUsage(void 0);\n setEvents([]);\n interactionsRef.current = [];\n respondingRef.current = /* @__PURE__ */ new Set();\n setInteractions([]);\n setRespondingInteractions(/* @__PURE__ */ new Set());\n setError(void 0);\n setStatus(\"ready\");\n setIsResuming(false);\n }, [clearResumeState, updateMessages]);\n return {\n messages,\n events,\n contextUsage,\n suggestions: options.suggestions ?? [],\n setMessages,\n sendMessage,\n regenerate,\n stop,\n reset,\n status,\n error,\n text: assistantText(messages),\n streamId,\n isResuming,\n resume,\n interactions: {\n all: interactions,\n pending: interactions.filter((item) => item.status === \"pending\")\n },\n respondingInteractions: new Set(respondingInteractions),\n respondToInteraction\n };\n}\nfunction findLastUserIndex(messages) {\n for (let index = messages.length - 1; index >= 0; index -= 1) {\n if (messages[index]?.role === \"user\") return index;\n }\n return -1;\n}\nfunction isAbortError(error) {\n return typeof error === \"object\" && error !== null && \"name\" in error && error.name === \"AbortError\";\n}\n\n// src/use-completion.ts\nimport {\n applyClientStreamEvent as applyClientStreamEvent2,\n assistantText as assistantText2,\n ClientProtocolError as ClientProtocolError2,\n normalizeClientError as normalizeClientError2\n} from \"@anvia/client\";\nimport { useCallback as useCallback2, useEffect as useEffect2, useRef as useRef2, useState as useState2 } from \"react\";\nfunction useCompletion(options) {\n const [input, setInput] = useState2(options.initialInput ?? \"\");\n const [completion, setCompletion] = useState2(options.initialCompletion ?? \"\");\n const [events, setEvents] = useState2([]);\n const [contextUsage, setContextUsage] = useState2();\n const [status, setStatus] = useState2(\"ready\");\n const [error, setError] = useState2();\n const messagesRef = useRef2([]);\n const abortRef = useRef2(void 0);\n useEffect2(() => () => abortRef.current?.abort(), []);\n const stop = useCallback2(() => {\n abortRef.current?.abort();\n abortRef.current = void 0;\n setStatus(\"ready\");\n }, []);\n const complete = useCallback2(\n async (request) => {\n if (request.prompt.trim().length === 0) {\n throw new TypeError(\"complete requires a nonblank prompt.\");\n }\n abortRef.current?.abort();\n const controller = new AbortController();\n abortRef.current = controller;\n messagesRef.current = [];\n setCompletion(\"\");\n setEvents([]);\n setContextUsage(void 0);\n setError(void 0);\n setStatus(\"submitted\");\n let streamError;\n try {\n for await (const frame of options.transport.send({\n request,\n abortSignal: controller.signal\n })) {\n if (abortRef.current !== controller || controller.signal.aborted) return;\n if (frame.type === \"stream_start\") continue;\n if (frame.type === \"stream_event\") {\n setStatus(\"streaming\");\n const event = frame.event;\n setEvents((current) => [...current, event]);\n options.onEvent?.(event);\n const nextContextUsage = contextUsageUpdateFromEvent(event);\n if (nextContextUsage !== void 0) setContextUsage(nextContextUsage);\n messagesRef.current = applyClientStreamEvent2(messagesRef.current, event);\n setCompletion(assistantText2(messagesRef.current));\n if (event.type === \"error\") {\n const eventError = normalizeClientError2(event.error);\n streamError ??= eventError;\n setError(eventError);\n setStatus(\"error\");\n options.onError?.(eventError);\n }\n continue;\n }\n if (frame.status !== \"completed\") {\n throw new ClientProtocolError2(\n `Client completion stream ended with status ${frame.status}.`,\n frame\n );\n }\n }\n if (abortRef.current === controller && !controller.signal.aborted) {\n setStatus(streamError === void 0 ? \"ready\" : \"error\");\n }\n } catch (caught) {\n if (isAbortError2(caught)) {\n if (abortRef.current === controller) setStatus(\"ready\");\n return;\n }\n if (abortRef.current !== controller) return;\n const nextError = normalizeClientError2(caught);\n setError(nextError);\n setStatus(\"error\");\n options.onError?.(nextError);\n } finally {\n if (abortRef.current === controller) abortRef.current = void 0;\n }\n },\n [options]\n );\n const submit = useCallback2(() => complete({ prompt: input }), [complete, input]);\n const reset = useCallback2(() => {\n stop();\n setInput(options.initialInput ?? \"\");\n setCompletion(options.initialCompletion ?? \"\");\n setEvents([]);\n setContextUsage(void 0);\n setError(void 0);\n messagesRef.current = [];\n }, [options.initialCompletion, options.initialInput, stop]);\n return {\n completion,\n input,\n setInput,\n complete,\n submit,\n stop,\n reset,\n status,\n error,\n events,\n contextUsage\n };\n}\nfunction isAbortError2(error) {\n return typeof error === \"object\" && error !== null && \"name\" in error && error.name === \"AbortError\";\n}\n\n// src/use-smooth-stream-items.ts\nimport { useCallback as useCallback3, useEffect as useEffect3, useLayoutEffect, useRef as useRef3, useState as useState3 } from \"react\";\n\n// src/stream-smoothing.ts\nvar streamSmoothingConfig = {\n baseCharsPerSecond: 140,\n completionDrainMs: 700,\n initialSampleSpreadMs: 50,\n maxCommitFps: 60,\n maxCompletionCharsPerFrame: 30,\n maxCompletionCharsPerSecond: 1600,\n maxElapsedMs: 64,\n maxPendingChars: 1e3,\n maxSourceSamples: 64,\n maxStreamingCharsPerFrame: 6,\n maxStreamingCharsPerSecond: 360,\n sourceGapResetMs: 180,\n sourceInterpolationMs: 100,\n streamingBaseCharsPerSecond: 200,\n streamingDrainMs: 250,\n targetBufferMs: 225\n};\nfunction createStreamSmoothingState(items, options, adapter) {\n const targetItems = [...items];\n const totalChars = getSmoothCharacterCount(targetItems, adapter);\n return {\n displayedItems: targetItems,\n drainDeadlineAtMs: null,\n isSourceStreaming: options.isStreaming,\n lastAdvanceAtMs: options.nowMs,\n playbackCursorChars: totalChars,\n sourceSamples: [{ atMs: options.nowMs, totalChars }],\n targetItems\n };\n}\nfunction updateStreamSmoothingTarget(state, items, options, adapter) {\n const targetItems = [...items];\n if (!state.isSourceStreaming && !options.isStreaming && !hasPendingContent(state, adapter)) {\n return createStreamSmoothingState(targetItems, options, adapter);\n }\n const previousTargetChars = getSmoothCharacterCount(state.targetItems, adapter);\n const targetChars = getSmoothCharacterCount(targetItems, adapter);\n let displayedItems = reconcileDisplayedItems(state.displayedItems, targetItems, adapter);\n displayedItems = revealWithinBudget(displayedItems, targetItems, 0, adapter);\n let sourceSamples = state.sourceSamples;\n if (options.isStreaming) {\n sourceSamples = updateSourceSamples(\n sourceSamples,\n previousTargetChars,\n targetChars,\n options.nowMs\n );\n }\n let nextState = {\n ...state,\n displayedItems,\n drainDeadlineAtMs: options.isStreaming || state.drainDeadlineAtMs !== null ? options.isStreaming ? null : state.drainDeadlineAtMs : options.nowMs + streamSmoothingConfig.completionDrainMs,\n isSourceStreaming: options.isStreaming,\n sourceSamples,\n targetItems\n };\n nextState = applyBackpressure(nextState, adapter);\n if (!options.isStreaming && !hasPendingContent(nextState, adapter)) {\n return {\n ...nextState,\n displayedItems: targetItems,\n drainDeadlineAtMs: null,\n playbackCursorChars: targetChars\n };\n }\n if (!options.isStreaming && nextState.drainDeadlineAtMs === null) {\n nextState = {\n ...nextState,\n drainDeadlineAtMs: options.nowMs + streamSmoothingConfig.completionDrainMs\n };\n }\n return nextState;\n}\nfunction advanceStreamSmoothing(state, nowMs, adapter) {\n const elapsedMs = Math.min(\n Math.max(nowMs - state.lastAdvanceAtMs, 0),\n streamSmoothingConfig.maxElapsedMs\n );\n const displayedChars = getSmoothCharacterCount(state.displayedItems, adapter);\n const targetChars = getSmoothCharacterCount(state.targetItems, adapter);\n const pendingChars = Math.max(0, targetChars - displayedChars);\n const playbackTargetChars = state.isSourceStreaming ? getBufferedPlaybackTarget(state.sourceSamples, nowMs) : targetChars;\n const playbackPendingChars = Math.max(0, playbackTargetChars - displayedChars);\n const charsPerSecond = state.isSourceStreaming ? getStreamingCharsPerSecond(playbackPendingChars) : getCompletionCharsPerSecond(pendingChars, state.drainDeadlineAtMs, nowMs);\n const playbackCursorChars = Math.min(\n playbackTargetChars,\n Math.max(state.playbackCursorChars, displayedChars) + elapsedMs / 1e3 * charsPerSecond\n );\n const requestedBudget = Math.max(0, Math.floor(playbackCursorChars - displayedChars));\n const frameBudget = Math.min(\n requestedBudget,\n state.isSourceStreaming ? streamSmoothingConfig.maxStreamingCharsPerFrame : streamSmoothingConfig.maxCompletionCharsPerFrame\n );\n const revealedItems = revealWithinBudget(\n state.displayedItems,\n state.targetItems,\n frameBudget,\n adapter\n );\n const nextDisplayedChars = getSmoothCharacterCount(revealedItems, adapter);\n const pending = hasPendingItems(revealedItems, state.targetItems, adapter);\n return {\n ...state,\n displayedItems: pending ? revealedItems : state.targetItems,\n drainDeadlineAtMs: !state.isSourceStreaming && !pending ? null : state.drainDeadlineAtMs,\n lastAdvanceAtMs: nowMs,\n playbackCursorChars: Math.max(playbackCursorChars, nextDisplayedChars)\n };\n}\nfunction flushStreamSmoothing(state, nowMs, adapter) {\n const targetChars = getSmoothCharacterCount(state.targetItems, adapter);\n return {\n ...state,\n displayedItems: state.targetItems,\n drainDeadlineAtMs: null,\n lastAdvanceAtMs: nowMs,\n playbackCursorChars: targetChars,\n sourceSamples: [{ atMs: nowMs, totalChars: targetChars }]\n };\n}\nfunction getStreamSmoothingSnapshot(state, adapter) {\n const pending = hasPendingContent(state, adapter);\n const active = state.isSourceStreaming || pending;\n const lastItem = state.displayedItems.at(-1);\n const liveItemKey = active && lastItem !== void 0 && adapter.getText(lastItem) !== void 0 ? adapter.getKey(lastItem) : null;\n return {\n hasPendingContent: pending,\n isDraining: !state.isSourceStreaming && pending,\n items: state.displayedItems,\n liveItemKey\n };\n}\nfunction getBufferedPlaybackTarget(samples, nowMs) {\n const playbackAtMs = nowMs - streamSmoothingConfig.targetBufferMs;\n const firstSample = samples[0];\n if (firstSample === void 0) {\n return 0;\n }\n if (playbackAtMs <= firstSample.atMs) {\n return firstSample.totalChars;\n }\n for (let index = 1; index < samples.length; index += 1) {\n const previousSample = samples[index - 1];\n const nextSample = samples[index];\n if (previousSample === void 0 || nextSample === void 0 || playbackAtMs > nextSample.atMs) {\n continue;\n }\n const durationMs = Math.max(nextSample.atMs - previousSample.atMs, 1);\n const progress = Math.min(Math.max((playbackAtMs - previousSample.atMs) / durationMs, 0), 1);\n return previousSample.totalChars + (nextSample.totalChars - previousSample.totalChars) * progress;\n }\n return samples.at(-1)?.totalChars ?? 0;\n}\nfunction updateSourceSamples(samples, previousTotalChars, targetChars, nowMs) {\n if (targetChars === previousTotalChars) {\n return [...samples];\n }\n if (targetChars < previousTotalChars) {\n return [\n {\n atMs: nowMs - streamSmoothingConfig.initialSampleSpreadMs,\n totalChars: Math.min(previousTotalChars, targetChars)\n },\n { atMs: nowMs, totalChars: targetChars }\n ];\n }\n const nextSamples = [...samples];\n const lastSample = nextSamples.at(-1);\n if (lastSample === void 0) {\n nextSamples.push({\n atMs: nowMs - streamSmoothingConfig.initialSampleSpreadMs,\n totalChars: previousTotalChars\n });\n } else if (nowMs - lastSample.atMs > streamSmoothingConfig.sourceGapResetMs) {\n nextSamples.push({\n atMs: nowMs - streamSmoothingConfig.sourceInterpolationMs,\n totalChars: previousTotalChars\n });\n }\n nextSamples.push({ atMs: nowMs, totalChars: targetChars });\n return nextSamples.slice(-streamSmoothingConfig.maxSourceSamples);\n}\nfunction applyBackpressure(state, adapter) {\n const displayedChars = getSmoothCharacterCount(state.displayedItems, adapter);\n const targetChars = getSmoothCharacterCount(state.targetItems, adapter);\n const excess = targetChars - displayedChars - streamSmoothingConfig.maxPendingChars;\n if (excess <= 0) {\n return state;\n }\n const revealedItems = revealWithinBudget(\n state.displayedItems,\n state.targetItems,\n excess,\n adapter,\n true\n );\n const nextDisplayedChars = getSmoothCharacterCount(revealedItems, adapter);\n return {\n ...state,\n displayedItems: revealedItems,\n playbackCursorChars: Math.max(state.playbackCursorChars, nextDisplayedChars)\n };\n}\nfunction revealWithinBudget(displayedItems, targetItems, budget, adapter, preferSemanticBoundary = false) {\n const nextItems = [];\n let remainingBudget = Math.max(0, budget);\n for (let index = 0; index < targetItems.length; index += 1) {\n const targetItem = targetItems[index];\n if (targetItem === void 0) {\n continue;\n }\n const displayedItem = displayedItems[index];\n const displayedMatches = displayedItem !== void 0 && adapter.getKey(displayedItem) === adapter.getKey(targetItem);\n const targetText = adapter.getText(targetItem);\n if (targetText === void 0) {\n if (displayedMatches || index === nextItems.length) {\n nextItems.push(targetItem);\n continue;\n }\n break;\n }\n const displayedText = displayedMatches && displayedItem !== void 0 ? adapter.getText(displayedItem) ?? \"\" : \"\";\n if (displayedText === targetText) {\n nextItems.push(targetItem);\n continue;\n }\n if (remainingBudget <= 0) {\n if (displayedMatches || displayedText.length > 0) {\n nextItems.push(adapter.withText(targetItem, displayedText));\n }\n break;\n }\n const requestedLength = Math.min(targetText.length, displayedText.length + remainingBudget);\n const nextLength = preferSemanticBoundary ? findSemanticBoundaryAtOrAfter(targetText, requestedLength) : findGraphemeBoundaryAtOrAfter(targetText, requestedLength);\n const nextText = targetText.slice(0, nextLength);\n const revealed = Math.max(0, nextText.length - displayedText.length);\n remainingBudget = Math.max(0, remainingBudget - revealed);\n if (nextLength < targetText.length) {\n nextItems.push(adapter.withText(targetItem, nextText));\n break;\n }\n nextItems.push(targetItem);\n }\n return nextItems;\n}\nfunction reconcileDisplayedItems(displayedItems, targetItems, adapter) {\n const nextItems = [];\n for (let index = 0; index < targetItems.length; index += 1) {\n const targetItem = targetItems[index];\n const displayedItem = displayedItems[index];\n if (targetItem === void 0 || displayedItem === void 0 || adapter.getKey(targetItem) !== adapter.getKey(displayedItem)) {\n break;\n }\n const targetText = adapter.getText(targetItem);\n const displayedText = adapter.getText(displayedItem);\n if (targetText === void 0) {\n nextItems.push(targetItem);\n if (displayedText !== void 0) {\n continue;\n }\n continue;\n }\n if (displayedText === void 0) {\n nextItems.push(adapter.withText(targetItem, \"\"));\n break;\n }\n if (targetText.startsWith(displayedText)) {\n nextItems.push(\n displayedText === targetText ? targetItem : adapter.withText(targetItem, displayedText)\n );\n continue;\n }\n const commonPrefixLength = findCommonGraphemePrefixLength(displayedText, targetText);\n nextItems.push(adapter.withText(targetItem, targetText.slice(0, commonPrefixLength)));\n break;\n }\n return nextItems;\n}\nfunction hasPendingContent(state, adapter) {\n return hasPendingItems(state.displayedItems, state.targetItems, adapter);\n}\nfunction hasPendingItems(displayedItems, targetItems, adapter) {\n if (displayedItems.length !== targetItems.length) {\n return true;\n }\n return targetItems.some((targetItem, index) => {\n const displayedItem = displayedItems[index];\n if (displayedItem === void 0 || adapter.getKey(displayedItem) !== adapter.getKey(targetItem)) {\n return true;\n }\n const targetText = adapter.getText(targetItem);\n const displayedText = adapter.getText(displayedItem);\n return targetText === void 0 ? displayedItem !== targetItem : displayedText !== targetText;\n });\n}\nfunction getSmoothCharacterCount(items, adapter) {\n return items.reduce((total, item) => total + (adapter.getText(item)?.length ?? 0), 0);\n}\nfunction getStreamingCharsPerSecond(pendingChars) {\n return Math.min(\n streamSmoothingConfig.maxStreamingCharsPerSecond,\n Math.max(\n streamSmoothingConfig.streamingBaseCharsPerSecond,\n pendingChars / (streamSmoothingConfig.streamingDrainMs / 1e3)\n )\n );\n}\nfunction getCompletionCharsPerSecond(pendingChars, deadlineAtMs, nowMs) {\n const remainingMs = Math.max((deadlineAtMs ?? nowMs) - nowMs, 1);\n return Math.min(\n streamSmoothingConfig.maxCompletionCharsPerSecond,\n Math.max(streamSmoothingConfig.baseCharsPerSecond, pendingChars / (remainingMs / 1e3))\n );\n}\nfunction findCommonGraphemePrefixLength(left, right) {\n const leftSegments = segmentGraphemes(left);\n const rightSegments = segmentGraphemes(right);\n const length = Math.min(leftSegments.length, rightSegments.length);\n let offset = 0;\n for (let index = 0; index < length; index += 1) {\n const leftSegment = leftSegments[index];\n const rightSegment = rightSegments[index];\n if (leftSegment === void 0 || leftSegment !== rightSegment) {\n break;\n }\n offset += leftSegment.length;\n }\n return offset;\n}\nfunction findSemanticBoundaryAtOrAfter(content, requestedLength) {\n const safeRequestedLength = findGraphemeBoundaryAtOrAfter(content, requestedLength);\n const scanEnd = Math.min(content.length, safeRequestedLength + 64);\n for (let index = safeRequestedLength; index < scanEnd; index += 1) {\n const character = content[index];\n if (character === \"\\n\") {\n return findGraphemeBoundaryAtOrAfter(content, index + 1);\n }\n if ((character === \".\" || character === \"!\" || character === \"?\") && /\\s/u.test(content[index + 1] ?? \"\")) {\n return findGraphemeBoundaryAtOrAfter(content, index + 1);\n }\n if (/\\s/u.test(character ?? \"\")) {\n return findGraphemeBoundaryAtOrAfter(content, index + 1);\n }\n }\n return safeRequestedLength;\n}\nfunction findGraphemeBoundaryAtOrAfter(content, requestedLength) {\n const clampedLength = Math.min(Math.max(requestedLength, 0), content.length);\n if (clampedLength === 0 || clampedLength === content.length) {\n return clampedLength;\n }\n const segmenter = createGraphemeSegmenter();\n if (segmenter !== void 0) {\n const segment = segmenter.segment(content).containing(clampedLength - 1);\n if (segment !== void 0) {\n return segment.index + segment.segment.length;\n }\n return content.length;\n }\n const code = content.charCodeAt(clampedLength - 1);\n if (code >= 55296 && code <= 56319) {\n return Math.min(content.length, clampedLength + 1);\n }\n return clampedLength;\n}\nfunction segmentGraphemes(content) {\n const segmenter = createGraphemeSegmenter();\n if (segmenter !== void 0) {\n return [...segmenter.segment(content)].map((segment) => segment.segment);\n }\n return [...content];\n}\nfunction createGraphemeSegmenter() {\n if (typeof Intl === \"undefined\" || typeof Intl.Segmenter !== \"function\") {\n return void 0;\n }\n return new Intl.Segmenter(void 0, { granularity: \"grapheme\" });\n}\n\n// src/use-smooth-stream-items.ts\nvar useIsomorphicLayoutEffect = typeof window === \"undefined\" ? useEffect3 : useLayoutEffect;\nfunction useSmoothStreamItems(items, options) {\n const adapterRef = useRef3(options.adapter);\n adapterRef.current = options.adapter;\n const initialNowRef = useRef3(void 0);\n if (initialNowRef.current === void 0) {\n initialNowRef.current = currentTimeMs();\n }\n const stateRef = useRef3(void 0);\n if (stateRef.current === void 0) {\n stateRef.current = createStreamSmoothingState(\n items,\n { isStreaming: options.isStreaming, nowMs: initialNowRef.current },\n options.adapter\n );\n }\n const resetKeyRef = useRef3(options.resetKey);\n const animationFrameRef = useRef3(null);\n const mountedRef = useRef3(true);\n const [snapshot, setSnapshot] = useState3(\n () => getStreamSmoothingSnapshot(stateRef.current, options.adapter)\n );\n const clearAnimationFrame = useCallback3(() => {\n const frame = animationFrameRef.current;\n animationFrameRef.current = null;\n if (frame !== null && typeof window !== \"undefined\" && typeof window.cancelAnimationFrame === \"function\") {\n window.cancelAnimationFrame(frame);\n }\n }, []);\n const commitState = useCallback3((state) => {\n const adapter = adapterRef.current;\n stateRef.current = state;\n const nextSnapshot = getStreamSmoothingSnapshot(state, adapter);\n setSnapshot(\n (current) => streamSmoothingSnapshotsEqual(current, nextSnapshot, adapter) ? current : nextSnapshot\n );\n }, []);\n const flushToTarget = useCallback3(() => {\n const state = stateRef.current;\n if (state === void 0) {\n return;\n }\n clearAnimationFrame();\n commitState(flushStreamSmoothing(state, currentTimeMs(), adapterRef.current));\n }, [clearAnimationFrame, commitState]);\n const scheduleFrame = useCallback3(\n function scheduleFrame2() {\n if (animationFrameRef.current !== null || !mountedRef.current) {\n return;\n }\n if (typeof window === \"undefined\" || typeof window.requestAnimationFrame !== \"function\") {\n flushToTarget();\n return;\n }\n animationFrameRef.current = window.requestAnimationFrame((nowMs) => {\n animationFrameRef.current = null;\n const state = stateRef.current;\n if (!mountedRef.current || state === void 0) {\n return;\n }\n const minimumCommitIntervalMs = 1e3 / streamSmoothingConfig.maxCommitFps;\n if (nowMs - state.lastAdvanceAtMs + 0.5 < minimumCommitIntervalMs) {\n scheduleFrame2();\n return;\n }\n const nextState = advanceStreamSmoothing(state, nowMs, adapterRef.current);\n const nextSnapshot = getStreamSmoothingSnapshot(nextState, adapterRef.current);\n commitState(nextState);\n if (nextSnapshot.hasPendingContent) {\n scheduleFrame2();\n }\n });\n },\n [commitState, flushToTarget]\n );\n useEffect3(() => {\n mountedRef.current = true;\n return () => {\n mountedRef.current = false;\n clearAnimationFrame();\n };\n }, [clearAnimationFrame]);\n useIsomorphicLayoutEffect(() => {\n const nowMs = currentTimeMs();\n const reset = resetKeyRef.current !== options.resetKey;\n resetKeyRef.current = options.resetKey;\n let nextState = reset ? createStreamSmoothingState(\n items,\n { isStreaming: options.isStreaming, nowMs },\n options.adapter\n ) : updateStreamSmoothingTarget(\n stateRef.current,\n items,\n { isStreaming: options.isStreaming, nowMs },\n options.adapter\n );\n const hidden = typeof document !== \"undefined\" && document.visibilityState === \"hidden\";\n if (options.flushImmediately === true || hidden) {\n nextState = flushStreamSmoothing(nextState, nowMs, options.adapter);\n }\n const nextSnapshot = getStreamSmoothingSnapshot(nextState, options.adapter);\n commitState(nextState);\n if (nextSnapshot.hasPendingContent) {\n scheduleFrame();\n } else {\n clearAnimationFrame();\n }\n }, [\n clearAnimationFrame,\n commitState,\n items,\n options.adapter,\n options.flushImmediately,\n options.isStreaming,\n options.resetKey,\n scheduleFrame\n ]);\n useEffect3(() => {\n if (typeof document === \"undefined\") {\n return;\n }\n const handleVisibilityChange = () => {\n if (document.visibilityState === \"hidden\") {\n flushToTarget();\n }\n };\n document.addEventListener(\"visibilitychange\", handleVisibilityChange);\n return () => document.removeEventListener(\"visibilitychange\", handleVisibilityChange);\n }, [flushToTarget]);\n return {\n items: snapshot.items,\n isAnimating: snapshot.hasPendingContent,\n isDraining: snapshot.isDraining,\n liveItemKey: snapshot.liveItemKey,\n flush: flushToTarget\n };\n}\nfunction currentTimeMs() {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n return Date.now();\n}\nfunction streamSmoothingSnapshotsEqual(left, right, adapter) {\n if (left.hasPendingContent !== right.hasPendingContent || left.isDraining !== right.isDraining || left.liveItemKey !== right.liveItemKey || left.items.length !== right.items.length) {\n return false;\n }\n return left.items.every((leftItem, index) => {\n const rightItem = right.items[index];\n if (rightItem === void 0 || adapter.getKey(leftItem) !== adapter.getKey(rightItem)) {\n return false;\n }\n const leftText = adapter.getText(leftItem);\n const rightText = adapter.getText(rightItem);\n return leftText === void 0 ? leftItem === rightItem : leftText === rightText;\n });\n}\n\n// src/use-smooth-stream-text.ts\nimport { useMemo } from \"react\";\nvar textStreamAdapter = {\n getKey: (item) => item.key,\n getText: (item) => item.text,\n withText: (item, text) => item.text === text ? item : { ...item, text }\n};\nfunction useSmoothStreamText(content, options) {\n const items = useMemo(\n () => [{ key: \"text\", text: content }],\n [content]\n );\n const streamOptions = {\n adapter: textStreamAdapter,\n isStreaming: options.isStreaming,\n resetKey: options.resetKey\n };\n if (options.flushImmediately !== void 0) {\n Object.assign(streamOptions, { flushImmediately: options.flushImmediately });\n }\n const smooth = useSmoothStreamItems(items, streamOptions);\n return {\n text: smooth.items[0]?.text ?? \"\",\n isAnimating: smooth.isAnimating,\n isDraining: smooth.isDraining,\n flush: smooth.flush\n };\n}\nexport {\n initialMessagesFromMemory,\n useChat,\n useCompletion,\n useSmoothStreamItems,\n useSmoothStreamText\n};\n//# sourceMappingURL=index.js.map","import type { ClientStreamEvent, ClientStreamRequest, ClientTransport } from \"@anvia/client\";\nimport { createHttpClientTransport } from \"@anvia/client\";\nimport type { Message } from \"@anvia/core/completion\";\nimport { useChat } from \"@anvia/react\";\nimport { type RefObject, useMemo, useRef } from \"react\";\nimport type { StudioConfig, StudioSessionLogEntry, StudioTraceSummary } from \"../../../../types\";\nimport { agentRunErrorMessage, serializedStreamErrorText } from \"../../app-errors\";\nimport {\n enrichTranscriptWithTraceIds,\n type PromptAttachment,\n type StudioAgentRunRequest,\n studioModelRefFromKey,\n transcriptAttachmentsForPrompt,\n uiAttachmentsForPrompt,\n} from \"../../app-helpers\";\nimport type { useStudioSessions } from \"../sessions/use-studio-sessions\";\nimport { errorMessage, formatToolValue, titleFromText } from \"../shared/format\";\nimport { nextPaint, nextTranscriptId, resizeTextarea, toHistory } from \"../shared/transcript\";\nimport type { ActivePage, RunState, TranscriptEntry } from \"../shared/types\";\nimport type { useTraces } from \"../tracing/use-traces\";\nimport type { usePlaygroundTranscript } from \"./use-playground-transcript\";\n\ntype PlaygroundTranscriptController = ReturnType<typeof usePlaygroundTranscript>;\ntype StudioSessionsController = ReturnType<typeof useStudioSessions>;\ntype StudioTracesController = ReturnType<typeof useTraces>;\ntype PlaygroundRunRequestContext = Omit<\n Extract<StudioAgentRunRequest, { type: \"messages\" }>,\n \"messages\" | \"type\"\n> & {\n history?: readonly Message[];\n};\n\nconst studioAgentTransport = createHttpClientTransport<StudioAgentRunRequest>({\n endpoint: ({ request }) => `/agents/${encodeURIComponent(request.agentId)}/runs`,\n format: \"jsonl\",\n headers: { \"content-type\": \"application/json\" },\n body: ({ request }) => {\n const { agentId: _agentId, ...body } = request;\n return JSON.stringify(body);\n },\n});\n\nexport function usePlaygroundRun(props: {\n attachments: PromptAttachment[];\n messages: TranscriptEntry[];\n promptRef: RefObject<HTMLTextAreaElement | null>;\n runState: RunState;\n selectedAgent: StudioConfig[\"agents\"][number] | undefined;\n selectedAgentId: string;\n selectedModelRef: string;\n sessions: StudioSessionsController;\n sessionsEnabled: boolean;\n traces: StudioTracesController;\n transcript: PlaygroundTranscriptController;\n onActivePageChange: (page: ActivePage) => void;\n onAttachmentsChange: (attachments: PromptAttachment[]) => void;\n onBeforeRun: () => void;\n onError: (message: string) => void;\n onPromptChange: (prompt: string) => void;\n onRunStateChange: (runState: RunState) => void;\n onSessionTraceSummariesChange: (traceSummaries: StudioTraceSummary[]) => void;\n onStatus: (status: string) => void;\n onToolCall: (toolName: string) => void;\n}) {\n const {\n attachments,\n messages,\n onActivePageChange,\n onAttachmentsChange,\n onBeforeRun,\n onError,\n onPromptChange,\n onRunStateChange,\n onSessionTraceSummariesChange,\n onStatus,\n onToolCall,\n promptRef,\n runState,\n selectedAgent,\n selectedAgentId,\n selectedModelRef,\n sessions,\n sessionsEnabled,\n traces,\n transcript,\n } = props;\n const playgroundRunRequestRef = useRef<PlaygroundRunRequestContext | undefined>(undefined);\n const playgroundRunErrorRef = useRef<unknown>(undefined);\n const playgroundRunStoppedRef = useRef(false);\n const playgroundRunTerminalRef = useRef(false);\n const playgroundWaitingRef = useRef(false);\n const playgroundRunStartedAtRef = useRef<number | undefined>(undefined);\n const playgroundVisibleEventRef = useRef<Promise<void>>(Promise.resolve());\n\n const playgroundTransport = useMemo<ClientTransport<ClientStreamRequest>>(\n () => ({\n send(options) {\n const context = playgroundRunRequestRef.current;\n if (context === undefined) {\n throw new Error(\"Missing playground run request\");\n }\n if (options.request.type === \"interaction_response\") {\n const request = {\n agentId: context.agentId,\n ...options.request,\n stream: true,\n };\n if (context.metadata !== undefined) {\n Object.assign(request, { metadata: context.metadata });\n }\n return studioAgentTransport.send({\n ...options,\n request,\n });\n }\n const prompt = options.request.messages.at(-1);\n if (prompt === undefined || prompt.role !== \"user\") {\n throw new Error(\"Missing playground prompt message\");\n }\n return studioAgentTransport.send({\n ...options,\n request: runRequestFromContext(context, prompt),\n });\n },\n }),\n [],\n );\n\n const playgroundChat = useChat({\n transport: playgroundTransport,\n onEvent(event) {\n if (playgroundRunTerminalRef.current) {\n return;\n }\n const visibleDelta = acceptStreamEvent(event);\n if (visibleDelta) {\n playgroundVisibleEventRef.current = playgroundVisibleEventRef.current.then(nextPaint);\n }\n },\n onError(error) {\n if (playgroundRunStoppedRef.current || playgroundRunTerminalRef.current) {\n return;\n }\n playgroundRunTerminalRef.current = true;\n playgroundRunErrorRef.current = error;\n const message = agentRunErrorMessage(error);\n onError(message);\n transcript.appendAssistantError(message);\n completeWorkingRun();\n },\n });\n\n async function runPrompt(text: string) {\n const trimmed = text.trim();\n const promptAttachments = attachments;\n const agentId = selectedAgent?.id ?? selectedAgentId;\n if (\n (trimmed.length === 0 && promptAttachments.length === 0) ||\n agentId.length === 0 ||\n runState === \"running\" ||\n playgroundChat.status === \"submitted\" ||\n playgroundChat.status === \"streaming\"\n ) {\n return;\n }\n\n playgroundRunStoppedRef.current = false;\n playgroundRunTerminalRef.current = false;\n playgroundWaitingRef.current = false;\n onRunStateChange(\"running\");\n onBeforeRun();\n onActivePageChange(\"playground\");\n onError(\"\");\n onPromptChange(\"\");\n onAttachmentsChange([]);\n requestAnimationFrame(() => resizeTextarea(promptRef.current));\n transcript.setMessages((current) => {\n const userEntry: TranscriptEntry = {\n entryId: nextTranscriptId(),\n kind: \"message\",\n role: \"user\",\n text: trimmed,\n };\n if (promptAttachments.length > 0) {\n userEntry.attachments = transcriptAttachmentsForPrompt(promptAttachments);\n }\n return [\n ...current,\n userEntry,\n {\n entryId: nextTranscriptId(),\n kind: \"message\",\n role: \"assistant\",\n text: \"\",\n tone: \"pending\",\n },\n ];\n });\n\n try {\n const shouldCreateSession = sessionsEnabled && sessions.selectedSessionId.length === 0;\n const sessionId = shouldCreateSession\n ? (await sessions.createSession(titleFromText(trimmed), { updatePath: false })).id\n : sessions.selectedSessionId;\n const history = sessionsEnabled ? undefined : toHistory(messages);\n playgroundRunErrorRef.current = undefined;\n playgroundVisibleEventRef.current = Promise.resolve();\n const metadata: StudioAgentRunRequest[\"metadata\"] = { source: \"anvia-studio\" };\n if (selectedModelRef.length > 0) metadata.studioModel = selectedModelRef;\n const runContext: PlaygroundRunRequestContext = {\n agentId,\n stream: true,\n metadata,\n };\n if (sessionId.length > 0) runContext.sessionId = sessionId;\n if (history !== undefined) runContext.history = history;\n if (selectedModelRef.length > 0) {\n runContext.model = studioModelRefFromKey(selectedModelRef);\n }\n playgroundRunRequestRef.current = runContext;\n const startedAt = Date.now();\n playgroundRunStartedAtRef.current = startedAt;\n\n await playgroundChat.sendMessage({\n text: trimmed,\n attachments: uiAttachmentsForPrompt(promptAttachments),\n });\n await playgroundVisibleEventRef.current;\n if (playgroundWaitingRef.current) {\n return;\n }\n\n if (playgroundRunErrorRef.current === undefined) {\n await sessions.loadAllSessions();\n if (sessionId.length > 0) {\n sessions.setSelectedSessionId(sessionId);\n const [traceSummaries] = await Promise.all([\n traces.loadSessionTraceSummaries(sessionId),\n sessions.loadSessionLogs(sessionId),\n ]);\n onSessionTraceSummariesChange(traceSummaries);\n transcript.setMessages((current) =>\n enrichTranscriptWithTraceIds(current, traceSummaries),\n );\n if (shouldCreateSession) {\n sessions.openSessionPath(sessionId);\n }\n }\n onStatus(playgroundRunStoppedRef.current ? \"Stopped\" : \"Connected\");\n }\n } catch (runError) {\n if (!playgroundRunStoppedRef.current && !playgroundRunTerminalRef.current) {\n playgroundRunTerminalRef.current = true;\n const message = errorMessage(runError);\n onError(message);\n transcript.appendAssistantError(message);\n completeWorkingRun();\n }\n } finally {\n if (!playgroundWaitingRef.current) {\n completeWorkingRun();\n playgroundRunRequestRef.current = undefined;\n playgroundChat.reset();\n onRunStateChange(\"idle\");\n }\n }\n }\n\n function stopPrompt() {\n if (\n (playgroundChat.status !== \"submitted\" && playgroundChat.status !== \"streaming\") ||\n playgroundRunTerminalRef.current\n ) {\n return;\n }\n playgroundRunStoppedRef.current = true;\n playgroundRunTerminalRef.current = true;\n const durationMs = stopWorkingClock();\n playgroundChat.stop();\n transcript.cancelPendingRun(durationMs ?? 0);\n onStatus(\"Stopping\");\n }\n\n function decideToolApproval(interactionId: string, approved: boolean) {\n onError(\"\");\n playgroundWaitingRef.current = false;\n const decision = playgroundChat.respondToInteraction({\n interactionId,\n response: { type: \"tool-approval\", approved },\n });\n void decision\n .then(() => {\n transcript.resolveToolApproval(interactionId, approved);\n finishInteractionPhase();\n })\n .catch((decisionError) => onError(errorMessage(decisionError)));\n }\n\n function answerToolQuestion(\n interactionId: string,\n answers: Array<{ questionId: string; answer: string; choice?: string; custom?: boolean }>,\n ) {\n onError(\"\");\n playgroundWaitingRef.current = false;\n void playgroundChat\n .respondToInteraction({\n interactionId,\n response: {\n type: \"tool-question\",\n answers: answers.map((answer) => ({\n questionId: answer.questionId,\n value: answer.custom === true ? answer.answer : (answer.choice ?? answer.answer),\n })),\n },\n })\n .then(() => {\n transcript.resolveToolQuestion(interactionId, answers);\n finishInteractionPhase();\n })\n .catch((answerError) => onError(errorMessage(answerError)));\n }\n\n function finishInteractionPhase() {\n if (playgroundWaitingRef.current) return;\n completeWorkingRun();\n playgroundRunRequestRef.current = undefined;\n playgroundChat.reset();\n onRunStateChange(\"idle\");\n }\n\n function acceptStreamEvent(event: ClientStreamEvent): boolean {\n if (event.scope?.parentToolCallId !== undefined) {\n transcript.appendAgentToolEvent(event);\n return true;\n }\n if (event.type === \"text_delta\") {\n transcript.appendAssistantText(event.delta);\n return true;\n }\n if (event.type === \"reasoning_delta\") {\n transcript.appendReasoningText(event.delta, event.partId);\n return true;\n }\n if (event.type === \"tool_call_end\") {\n onToolCall(event.toolName);\n transcript.appendToolCall(\n event.toolName,\n formatToolValue(event.input),\n event.callId ?? event.toolCallId,\n );\n return true;\n }\n if (event.type === \"tool_result\") {\n const result: Parameters<typeof transcript.appendToolResult>[0] = {\n toolName: event.toolName,\n callId: event.callId ?? event.toolCallId,\n args: formatToolValue(event.input),\n result:\n event.result.status === \"success\"\n ? formatToolValue(event.result.output)\n : event.result.error.message,\n };\n if (event.result.status === \"success\" && event.result.content !== undefined) {\n result.structuredResult = event.result.content;\n }\n transcript.appendToolResult(result);\n return true;\n }\n if (event.type === \"interaction\") {\n const requestedAt = new Date().toISOString();\n if (event.interaction.type === \"tool-approval\") {\n const approval = {\n id: event.interaction.id,\n toolName: event.interaction.toolName,\n callId: event.interaction.callId ?? event.interaction.toolCallId,\n status: \"pending\",\n requestedAt,\n } as const;\n if (event.interaction.reason !== undefined) {\n Object.assign(approval, { reason: event.interaction.reason });\n }\n transcript.updateToolApproval(approval);\n } else {\n transcript.updateToolQuestion({\n id: event.interaction.id,\n toolName: event.interaction.toolName,\n callId: event.interaction.callId ?? event.interaction.toolCallId,\n status: \"pending\",\n requestedAt,\n questions: event.interaction.questions.map((question) => ({\n id: question.id,\n question: question.text,\n choices: [...(question.choices ?? [])],\n allowCustom: question.choices === undefined || question.allowCustom === true,\n })),\n });\n }\n return true;\n }\n if (event.type === \"data\" && event.name === \"studio.session_log\") {\n sessions.appendSessionLogEntry(event.data as unknown as StudioSessionLogEntry);\n return true;\n }\n if (event.type === \"run_end\") {\n if (event.status === \"suspended\") {\n playgroundWaitingRef.current = true;\n onRunStateChange(\"idle\");\n onStatus(\"Waiting for input\");\n return true;\n }\n playgroundRunTerminalRef.current = true;\n if (event.trace?.traceId !== undefined) {\n transcript.assignAssistantTraceId(event.trace.traceId);\n }\n transcript.clearPendingAssistant();\n completeWorkingRun();\n return true;\n }\n if (event.type === \"error\") {\n playgroundRunTerminalRef.current = true;\n const message = serializedStreamErrorText(event.error);\n playgroundRunErrorRef.current = event.error;\n onError(message);\n transcript.appendAssistantError(message);\n completeWorkingRun();\n return true;\n }\n return false;\n }\n\n function completeWorkingRun() {\n const durationMs = stopWorkingClock();\n if (durationMs !== undefined) {\n transcript.completeRun(durationMs);\n }\n }\n\n function stopWorkingClock(): number | undefined {\n const startedAt = playgroundRunStartedAtRef.current;\n if (startedAt === undefined) {\n return undefined;\n }\n playgroundRunStartedAtRef.current = undefined;\n return Date.now() - startedAt;\n }\n\n return {\n answeringQuestions: new Set(playgroundChat.respondingInteractions),\n decidingApprovals: new Set(playgroundChat.respondingInteractions),\n isStreaming: playgroundChat.status === \"submitted\" || playgroundChat.status === \"streaming\",\n answerToolQuestion,\n decideToolApproval,\n runPrompt,\n stopPrompt,\n };\n}\n\nfunction runRequestFromContext(\n context: PlaygroundRunRequestContext,\n message: Message,\n): StudioAgentRunRequest {\n const request: StudioAgentRunRequest = {\n agentId: context.agentId,\n type: \"messages\",\n messages: context.sessionId === undefined ? [...(context.history ?? []), message] : [message],\n };\n if (context.stream !== undefined) request.stream = context.stream;\n if (context.metadata !== undefined) request.metadata = context.metadata;\n if (context.sessionId !== undefined) request.sessionId = context.sessionId;\n if (context.model !== undefined) request.model = context.model;\n return request;\n}\n","import type { ClientStreamEvent } from \"@anvia/client\";\nimport type { ToolResultContentPart } from \"@anvia/core/completion\";\nimport { type Dispatch, type SetStateAction, useState } from \"react\";\nimport type { StudioToolQuestionAnswer, StudioTranscriptChildAgentEvent } from \"../../../../types\";\nimport { formatToolValue } from \"../shared/format\";\nimport {\n findMatchingToolIndex,\n findMatchingToolIndexByCall,\n nextTranscriptId,\n} from \"../shared/transcript\";\nimport type { ToolApprovalUpdate, ToolQuestionUpdate, TranscriptEntry } from \"../shared/types\";\n\ntype TranscriptToolEntry = Extract<TranscriptEntry, { kind: \"tool\" }>;\ntype TranscriptApproval = NonNullable<TranscriptToolEntry[\"approval\"]>;\ntype TranscriptQuestion = NonNullable<TranscriptToolEntry[\"question\"]>;\n\nexport function usePlaygroundTranscript(): {\n messages: TranscriptEntry[];\n setMessages: Dispatch<SetStateAction<TranscriptEntry[]>>;\n appendAgentToolEvent: (event: ClientStreamEvent) => void;\n appendAssistantError: (message: string) => void;\n appendAssistantText: (delta: string) => void;\n appendReasoningText: (delta: string, reasoningId: string | undefined) => void;\n appendToolCall: (toolName: string, args: string, callId: string | undefined) => void;\n appendToolResult: (props: {\n toolName: string;\n callId: string | undefined;\n args: string;\n result: string;\n structuredResult?: readonly ToolResultContentPart[];\n }) => void;\n assignAssistantTraceId: (traceId: string) => void;\n cancelPendingRun: (durationMs: number) => void;\n clearPendingAssistant: () => void;\n completeRun: (durationMs: number) => void;\n resolveToolApproval: (id: string, approved: boolean, reason?: string) => void;\n resolveToolQuestion: (id: string, answers: StudioToolQuestionAnswer[]) => void;\n updateToolApproval: (approval: ToolApprovalUpdate) => void;\n updateToolQuestion: (question: ToolQuestionUpdate) => void;\n} {\n const [messages, setMessages] = useState<TranscriptEntry[]>([]);\n\n return {\n messages,\n setMessages,\n appendAgentToolEvent: (event) => setMessages((current) => appendAgentToolEvent(current, event)),\n appendAssistantError: (message) =>\n setMessages((current) => appendAssistantError(current, message)),\n appendAssistantText: (delta) => setMessages((current) => appendAssistantText(current, delta)),\n appendReasoningText: (delta, reasoningId) =>\n setMessages((current) => appendReasoningText(current, delta, reasoningId)),\n appendToolCall: (toolName, args, callId) =>\n setMessages((current) => appendToolCall(current, toolName, args, callId)),\n appendToolResult: (props) => setMessages((current) => appendToolResult(current, props)),\n assignAssistantTraceId: (traceId) =>\n setMessages((current) => assignAssistantTraceId(current, traceId)),\n cancelPendingRun: (durationMs) =>\n setMessages((current) =>\n cancelPendingTranscriptRun(current, new Date().toISOString(), durationMs),\n ),\n clearPendingAssistant: () => setMessages((current) => withoutPendingAssistant(current)),\n completeRun: (durationMs) =>\n setMessages((current) => completeTranscriptRun(current, durationMs)),\n resolveToolApproval: (id, approved, reason) =>\n setMessages((current) => resolveToolApproval(current, id, approved, reason)),\n resolveToolQuestion: (id, answers) =>\n setMessages((current) => resolveToolQuestion(current, id, answers)),\n updateToolApproval: (approval) =>\n setMessages((current) => updateToolApproval(current, approval)),\n updateToolQuestion: (question) =>\n setMessages((current) => updateToolQuestion(current, question)),\n };\n}\n\nfunction resolveToolApproval(\n entries: TranscriptEntry[],\n id: string,\n approved: boolean,\n reason?: string,\n): TranscriptEntry[] {\n const next = [...entries];\n for (let index = next.length - 1; index >= 0; index -= 1) {\n const entry = next[index];\n if (entry?.kind !== \"tool\" || entry.approval?.id !== id) continue;\n const approval = {\n ...entry.approval,\n status: approved ? (\"approved\" as const) : (\"rejected\" as const),\n resolvedAt: new Date().toISOString(),\n };\n if (reason !== undefined) Object.assign(approval, { reason });\n next[index] = {\n ...entry,\n approval,\n };\n break;\n }\n return next;\n}\n\nfunction resolveToolQuestion(\n entries: TranscriptEntry[],\n id: string,\n answers: StudioToolQuestionAnswer[],\n): TranscriptEntry[] {\n const next = [...entries];\n for (let index = next.length - 1; index >= 0; index -= 1) {\n const entry = next[index];\n if (entry?.kind !== \"tool\" || entry.question?.id !== id) continue;\n next[index] = {\n ...entry,\n question: {\n ...entry.question,\n status: \"answered\",\n answeredAt: new Date().toISOString(),\n answers,\n },\n };\n break;\n }\n return next;\n}\n\nexport function cancelPendingTranscriptRun(\n entries: TranscriptEntry[],\n cancelledAt: string,\n durationMs: number,\n): TranscriptEntry[] {\n const next = withoutPendingAssistant(entries);\n let currentTurnStart = -1;\n for (let index = next.length - 1; index >= 0; index -= 1) {\n const entry = next[index];\n if (entry?.kind === \"message\" && entry.role === \"user\") {\n currentTurnStart = index;\n break;\n }\n }\n if (currentTurnStart < 0) {\n return completeTranscriptRun(next, durationMs);\n }\n\n for (let index = currentTurnStart + 1; index < next.length; index += 1) {\n const entry = next[index];\n if (entry?.kind !== \"tool\") {\n continue;\n }\n const updated: TranscriptToolEntry = { ...entry };\n if (entry.approval?.status === \"pending\") {\n updated.approval = {\n ...entry.approval,\n status: \"cancelled\",\n resolvedAt: cancelledAt,\n reason: \"Run cancelled in Anvia Studio.\",\n };\n }\n if (entry.question?.status === \"pending\") {\n updated.question = {\n ...entry.question,\n status: \"cancelled\",\n cancelledAt,\n };\n }\n next[index] = updated;\n }\n return completeTranscriptRun(next, durationMs);\n}\n\nexport function completeTranscriptRun(\n entries: TranscriptEntry[],\n durationMs: number,\n): TranscriptEntry[] {\n const next = [...entries];\n const normalizedDurationMs = Math.max(0, durationMs);\n for (let index = next.length - 1; index >= 0; index -= 1) {\n const entry = next[index];\n if (entry?.kind === \"message\" && entry.role === \"assistant\") {\n if (entry.tone === \"pending\") {\n const { tone: _tone, ...completedEntry } = entry;\n next[index] = { ...completedEntry, durationMs: normalizedDurationMs };\n } else {\n next[index] = { ...entry, durationMs: normalizedDurationMs };\n }\n return next;\n }\n if (entry?.kind === \"message\" && entry.role === \"user\") {\n break;\n }\n }\n next.push({\n entryId: nextTranscriptId(),\n kind: \"message\",\n role: \"assistant\",\n text: \"\",\n durationMs: normalizedDurationMs,\n });\n return next;\n}\n\nfunction appendAssistantText(entries: TranscriptEntry[], delta: string): TranscriptEntry[] {\n const next = [...entries];\n const last = next.at(-1);\n if (last?.kind === \"message\" && last.role === \"assistant\") {\n if (last.tone === \"pending\") {\n const { tone: _tone, ...readyMessage } = last;\n next[next.length - 1] = { ...readyMessage, text: delta };\n } else {\n next[next.length - 1] = { ...last, text: `${last.text}${delta}` };\n }\n } else {\n next.push({\n entryId: nextTranscriptId(),\n kind: \"message\",\n role: \"assistant\",\n text: delta,\n });\n }\n return next;\n}\n\nfunction appendAssistantError(entries: TranscriptEntry[], message: string): TranscriptEntry[] {\n const next = [...entries];\n const last = next.at(-1);\n const entry = {\n entryId:\n last?.kind === \"message\" && last.role === \"assistant\" && last.tone === \"pending\"\n ? last.entryId\n : nextTranscriptId(),\n kind: \"message\" as const,\n role: \"assistant\" as const,\n text: message,\n tone: \"error\" as const,\n };\n if (last?.kind === \"message\" && last.role === \"assistant\" && last.tone === \"pending\") {\n next[next.length - 1] = entry;\n return next;\n }\n return [...next, entry];\n}\n\nfunction assignAssistantTraceId(entries: TranscriptEntry[], traceId: string): TranscriptEntry[] {\n const next = [...entries];\n for (let index = next.length - 1; index >= 0; index -= 1) {\n const entry = next[index];\n if (entry?.kind === \"message\" && entry.role === \"assistant\") {\n next[index] = { ...entry, traceId };\n break;\n }\n }\n return next;\n}\n\nfunction updateToolApproval(\n entries: TranscriptEntry[],\n approval: ToolApprovalUpdate,\n): TranscriptEntry[] {\n const next = withoutPendingAssistant(entries);\n const matchedIndex = findMatchingToolIndexByCall(next, approval.toolName, approval.callId);\n const approvalState = transcriptApproval(approval);\n if (matchedIndex < 0) {\n const entry: TranscriptToolEntry = {\n entryId: nextTranscriptId(),\n kind: \"tool\",\n toolName: approval.toolName,\n approval: approvalState,\n };\n if (approval.callId !== undefined) entry.callId = approval.callId;\n next.push(entry);\n return next;\n }\n\n const existing = next[matchedIndex];\n if (existing !== undefined && existing.kind === \"tool\") {\n next[matchedIndex] = {\n ...existing,\n approval: approvalState,\n };\n }\n return next;\n}\n\nfunction updateToolQuestion(\n entries: TranscriptEntry[],\n question: ToolQuestionUpdate,\n): TranscriptEntry[] {\n const next = withoutPendingAssistant(entries);\n const matchedIndex = findMatchingToolIndexByCall(next, question.toolName, question.callId);\n const questionState = transcriptQuestion(question);\n if (matchedIndex < 0) {\n const entry: TranscriptToolEntry = {\n entryId: nextTranscriptId(),\n kind: \"tool\",\n toolName: question.toolName,\n question: questionState,\n };\n if (question.callId !== undefined) entry.callId = question.callId;\n next.push(entry);\n return next;\n }\n\n const existing = next[matchedIndex];\n if (existing !== undefined && existing.kind === \"tool\") {\n next[matchedIndex] = {\n ...existing,\n question: questionState,\n };\n }\n return next;\n}\n\nfunction transcriptApproval(approval: ToolApprovalUpdate): TranscriptApproval {\n const state: TranscriptApproval = {\n id: approval.id,\n status: approval.status,\n requestedAt: approval.requestedAt,\n };\n if (approval.resolvedAt !== undefined) state.resolvedAt = approval.resolvedAt;\n if (approval.reason !== undefined) state.reason = approval.reason;\n return state;\n}\n\nfunction transcriptQuestion(question: ToolQuestionUpdate): TranscriptQuestion {\n const state: TranscriptQuestion = {\n id: question.id,\n status: question.status,\n requestedAt: question.requestedAt,\n questions: question.questions,\n };\n if (question.answeredAt !== undefined) state.answeredAt = question.answeredAt;\n if (question.answers !== undefined) state.answers = question.answers;\n return state;\n}\n\nfunction appendReasoningText(\n entries: TranscriptEntry[],\n delta: string,\n reasoningId: string | undefined,\n): TranscriptEntry[] {\n const next = withoutPendingAssistant(entries);\n const last = next.at(-1);\n if (last?.kind === \"reasoning\" && (last.reasoningId ?? \"\") === (reasoningId ?? \"\")) {\n next[next.length - 1] = { ...last, text: `${last.text}${delta}` };\n } else {\n const entry: Extract<TranscriptEntry, { kind: \"reasoning\" }> = {\n entryId: nextTranscriptId(),\n kind: \"reasoning\",\n text: delta,\n };\n if (reasoningId !== undefined) entry.reasoningId = reasoningId;\n next.push(entry);\n }\n return next;\n}\n\nfunction appendToolCall(\n entries: TranscriptEntry[],\n toolName: string,\n args: string,\n callId: string | undefined,\n): TranscriptEntry[] {\n const entry: TranscriptToolEntry = {\n entryId: nextTranscriptId(),\n kind: \"tool\",\n toolName,\n };\n if (callId !== undefined) entry.callId = callId;\n if (args.length > 0) entry.args = args;\n return [...withoutPendingAssistant(entries), entry];\n}\n\nfunction appendToolResult(\n entries: TranscriptEntry[],\n props: {\n toolName: string;\n callId: string | undefined;\n args: string;\n result: string;\n structuredResult?: readonly ToolResultContentPart[];\n },\n): TranscriptEntry[] {\n const next = withoutPendingAssistant(entries);\n const matchedIndex = findMatchingToolIndex(next, props.toolName, props.callId);\n if (matchedIndex >= 0) {\n const existing = next[matchedIndex];\n if (existing !== undefined && existing.kind === \"tool\") {\n const updated: TranscriptToolEntry = {\n ...existing,\n args: existing.args ?? props.args,\n result: props.result,\n };\n if (props.structuredResult !== undefined) updated.structuredResult = props.structuredResult;\n next[matchedIndex] = updated;\n return next;\n }\n }\n\n const entry: TranscriptToolEntry = {\n entryId: nextTranscriptId(),\n kind: \"tool\",\n toolName: props.toolName,\n args: props.args,\n result: props.result,\n };\n if (props.callId !== undefined) entry.callId = props.callId;\n if (props.structuredResult !== undefined) entry.structuredResult = props.structuredResult;\n next.push(entry);\n return next;\n}\n\nfunction appendAgentToolEvent(\n entries: TranscriptEntry[],\n event: ClientStreamEvent,\n): TranscriptEntry[] {\n const scope = event.scope;\n if (scope?.agentId === undefined || scope.parentToolCallId === undefined) {\n return entries;\n }\n const childEvent = childAgentTranscriptEvent(event);\n if (childEvent === undefined) {\n return entries;\n }\n const next = withoutPendingAssistant(entries);\n const toolName = scope.parentToolName ?? \"agent\";\n const matchedIndex = findMatchingToolIndex(next, toolName, scope.parentToolCallId);\n if (matchedIndex < 0) {\n const entry: TranscriptToolEntry = {\n entryId: nextTranscriptId(),\n kind: \"tool\",\n toolName,\n childEvents: [childEvent],\n };\n entry.callId = scope.parentToolCallId;\n next.push(entry);\n return next;\n }\n\n const existing = next[matchedIndex];\n if (existing === undefined || existing.kind !== \"tool\") {\n return next;\n }\n const childEvents = [...(existing.childEvents ?? [])];\n appendChildAgentTranscriptEvent(childEvents, childEvent);\n next[matchedIndex] = {\n ...existing,\n childEvents,\n };\n return next;\n}\n\nfunction withoutPendingAssistant(entries: TranscriptEntry[]): TranscriptEntry[] {\n for (let index = entries.length - 1; index >= 0; index -= 1) {\n const entry = entries[index];\n if (\n entry?.kind === \"message\" &&\n entry.role === \"assistant\" &&\n entry.tone === \"pending\" &&\n entry.text.trim().length === 0\n ) {\n return entries.filter((_, itemIndex) => itemIndex !== index);\n }\n }\n return [...entries];\n}\n\nfunction childAgentTranscriptEvent(\n event: ClientStreamEvent,\n): StudioTranscriptChildAgentEvent | undefined {\n const scope = event.scope;\n if (scope?.agentId === undefined) return undefined;\n if (event.type === \"text_delta\") {\n const entry: Extract<StudioTranscriptChildAgentEvent, { kind: \"message\" }> = {\n kind: \"message\",\n agentId: scope.agentId,\n text: event.delta,\n };\n if (scope.agentName !== undefined) entry.agentName = scope.agentName;\n return entry;\n }\n if (event.type === \"reasoning_delta\") {\n const entry: Extract<StudioTranscriptChildAgentEvent, { kind: \"reasoning\" }> = {\n kind: \"reasoning\",\n agentId: scope.agentId,\n text: event.delta,\n };\n if (scope.agentName !== undefined) entry.agentName = scope.agentName;\n entry.reasoningId = event.partId;\n return entry;\n }\n if (event.type === \"tool_call_end\") {\n const entry: Extract<StudioTranscriptChildAgentEvent, { kind: \"tool\" }> = {\n kind: \"tool\",\n agentId: scope.agentId,\n toolName: event.toolName,\n args: formatToolValue(event.input),\n };\n if (scope.agentName !== undefined) entry.agentName = scope.agentName;\n entry.callId = event.callId ?? event.toolCallId;\n return entry;\n }\n if (event.type === \"tool_result\") {\n const entry: Extract<StudioTranscriptChildAgentEvent, { kind: \"tool\" }> = {\n kind: \"tool\",\n agentId: scope.agentId,\n toolName: event.toolName,\n args: formatToolValue(event.input),\n result:\n event.result.status === \"success\"\n ? formatToolValue(event.result.output)\n : event.result.error.message,\n };\n if (scope.agentName !== undefined) entry.agentName = scope.agentName;\n entry.callId = event.callId ?? event.toolCallId;\n if (event.result.status === \"success\" && event.result.content !== undefined) {\n entry.structuredResult = event.result.content;\n }\n return entry;\n }\n if (event.type === \"error\") {\n const entry: Extract<StudioTranscriptChildAgentEvent, { kind: \"message\" }> = {\n kind: \"message\",\n agentId: scope.agentId,\n text: `Error: ${event.error.message}`,\n };\n if (scope.agentName !== undefined) entry.agentName = scope.agentName;\n return entry;\n }\n return undefined;\n}\n\nfunction appendChildAgentTranscriptEvent(\n childEvents: StudioTranscriptChildAgentEvent[],\n childEvent: StudioTranscriptChildAgentEvent,\n) {\n if (childEvent.kind === \"message\") {\n const last = childEvents.at(-1);\n if (last?.kind === \"message\" && last.agentId === childEvent.agentId) {\n childEvents[childEvents.length - 1] = { ...last, text: `${last.text}${childEvent.text}` };\n } else {\n childEvents.push(childEvent);\n }\n return;\n }\n if (childEvent.kind === \"reasoning\") {\n const last = childEvents.at(-1);\n if (\n last?.kind === \"reasoning\" &&\n last.agentId === childEvent.agentId &&\n (last.reasoningId ?? \"\") === (childEvent.reasoningId ?? \"\")\n ) {\n childEvents[childEvents.length - 1] = { ...last, text: `${last.text}${childEvent.text}` };\n } else {\n childEvents.push(childEvent);\n }\n return;\n }\n const matchedIndex = findChildAgentToolEventIndex(childEvents, childEvent);\n if (matchedIndex < 0) {\n childEvents.push(childEvent);\n return;\n }\n const matched = childEvents[matchedIndex];\n if (matched?.kind === \"tool\") {\n const updated = { ...matched };\n if (matched.args === undefined && childEvent.args !== undefined) updated.args = childEvent.args;\n if (childEvent.result !== undefined) updated.result = childEvent.result;\n childEvents[matchedIndex] = updated;\n }\n}\n\nfunction findChildAgentToolEventIndex(\n childEvents: StudioTranscriptChildAgentEvent[],\n event: Extract<StudioTranscriptChildAgentEvent, { kind: \"tool\" }>,\n): number {\n for (let index = childEvents.length - 1; index >= 0; index -= 1) {\n const childEvent = childEvents[index];\n if (\n childEvent?.kind !== \"tool\" ||\n childEvent.agentId !== event.agentId ||\n childEvent.toolName !== event.toolName ||\n childEvent.result !== undefined\n ) {\n continue;\n }\n if (event.callId === undefined || childEvent.callId === event.callId) {\n return index;\n }\n }\n return -1;\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport type {\n StudioSession,\n StudioSessionLogEntry,\n StudioSessionSummary,\n StudioTraceSummary,\n} from \"../../../../types\";\nimport { responseErrorMessage } from \"../../app-errors\";\nimport { studioModelMetadataKey } from \"../../app-helpers\";\nimport { errorMessage } from \"../shared/format\";\nimport type { ActivePage, RunState, SessionLoadState } from \"../shared/types\";\n\nexport function useStudioSessions(props: {\n activePage: ActivePage;\n currentAgentId: string;\n enabled: boolean;\n loadSessionTraceSummaries: (sessionId: string) => Promise<StudioTraceSummary[]>;\n runState: RunState;\n selectedModelRef: string;\n onError: (message: string) => void;\n onSessionCreated: (sessionId: string) => void;\n onSessionDeleted: (sessionId: string, wasSelected: boolean) => void;\n onSessionLoaded: (\n session: StudioSession,\n traceSummaries: StudioTraceSummary[],\n options: { updatePath?: boolean },\n ) => void;\n onStatus: (status: string) => void;\n}) {\n const {\n currentAgentId,\n enabled,\n loadSessionTraceSummaries,\n runState,\n selectedModelRef,\n onError,\n onSessionCreated,\n onSessionDeleted,\n onSessionLoaded,\n onStatus,\n } = props;\n const [selectedSessionId, setSelectedSessionId] = useState(\"\");\n const [allSessions, setAllSessions] = useState<StudioSessionSummary[]>([]);\n const [sessionLogs, setSessionLogs] = useState<StudioSessionLogEntry[]>([]);\n const [sessionLoadState, setSessionLoadState] = useState<SessionLoadState>(\"idle\");\n const [sessionLogLoadState, setSessionLogLoadState] = useState<SessionLoadState>(\"idle\");\n const sessionLoadRequestRef = useRef(\"\");\n\n const loadAllSessions = useCallback(async () => {\n if (!enabled) {\n setAllSessions([]);\n return;\n }\n\n try {\n const response = await fetch(\"/sessions?limit=100\");\n if (!response.ok) {\n throw new Error(`Sessions failed with HTTP ${response.status}`);\n }\n const body = (await response.json()) as { sessions: StudioSessionSummary[] };\n setAllSessions(body.sessions);\n } catch (loadError) {\n onError(errorMessage(loadError));\n }\n }, [enabled, onError]);\n\n useEffect(() => {\n void loadAllSessions();\n }, [loadAllSessions]);\n\n const loadSessionLogs = useCallback(\n async (sessionId: string): Promise<StudioSessionLogEntry[]> => {\n if (!enabled) {\n setSessionLogs([]);\n return [];\n }\n\n setSessionLogLoadState(\"loading\");\n try {\n const params = new URLSearchParams({ limit: \"1000\" });\n const response = await fetch(`/sessions/${encodeURIComponent(sessionId)}/logs?${params}`);\n if (!response.ok) {\n throw new Error(`Session logs failed with HTTP ${response.status}`);\n }\n const body = (await response.json()) as { logs: StudioSessionLogEntry[] };\n setSessionLogs(body.logs);\n return body.logs;\n } catch (loadError) {\n onError(errorMessage(loadError));\n setSessionLogs([]);\n return [];\n } finally {\n setSessionLogLoadState(\"idle\");\n }\n },\n [enabled, onError],\n );\n\n const createSession = useCallback(\n async (\n title: string,\n options: { updatePath?: boolean } = {},\n ): Promise<StudioSessionSummary> => {\n const metadata: Record<string, string> = { source: \"anvia-studio\" };\n if (selectedModelRef.length > 0) metadata[studioModelMetadataKey] = selectedModelRef;\n const response = await fetch(\"/sessions\", {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({\n agentId: currentAgentId,\n title,\n metadata,\n }),\n });\n if (!response.ok) {\n throw new Error(await responseErrorMessage(response, \"Session create failed\"));\n }\n const session = (await response.json()) as StudioSessionSummary;\n setSelectedSessionId(session.id);\n setAllSessions((current) => [session, ...current.filter((item) => item.id !== session.id)]);\n if (options.updatePath !== false) {\n onSessionCreated(session.id);\n }\n await loadSessionLogs(session.id);\n return session;\n },\n [currentAgentId, loadSessionLogs, onSessionCreated, selectedModelRef],\n );\n\n const loadSession = useCallback(\n async (sessionId: string, options: { updatePath?: boolean } = {}) => {\n if (runState === \"running\") {\n return;\n }\n\n sessionLoadRequestRef.current = sessionId;\n setSessionLoadState(\"loading\");\n onError(\"\");\n try {\n const response = await fetch(`/sessions/${encodeURIComponent(sessionId)}`);\n if (!response.ok) {\n throw new Error(`Session load failed with HTTP ${response.status}`);\n }\n const session = (await response.json()) as StudioSession;\n const [traceSummaries] = await Promise.all([\n loadSessionTraceSummaries(session.id),\n loadSessionLogs(session.id),\n ]);\n if (sessionLoadRequestRef.current !== sessionId) {\n return;\n }\n setSelectedSessionId(session.id);\n onSessionLoaded(session, traceSummaries, options);\n onStatus(\"Connected\");\n } catch (loadError) {\n if (sessionLoadRequestRef.current === sessionId) {\n onError(errorMessage(loadError));\n }\n } finally {\n if (sessionLoadRequestRef.current === sessionId) {\n setSessionLoadState(\"idle\");\n }\n }\n },\n [loadSessionLogs, loadSessionTraceSummaries, onError, onSessionLoaded, onStatus, runState],\n );\n\n const deleteSession = useCallback(\n async (session: StudioSessionSummary) => {\n if (runState === \"running\") {\n return;\n }\n\n onError(\"\");\n try {\n const response = await fetch(`/sessions/${encodeURIComponent(session.id)}`, {\n method: \"DELETE\",\n });\n if (!response.ok) {\n throw new Error(`Session delete failed with HTTP ${response.status}`);\n }\n\n const wasSelected = selectedSessionId === session.id;\n setAllSessions((current) => current.filter((item) => item.id !== session.id));\n if (wasSelected) {\n setSelectedSessionId(\"\");\n setSessionLogs([]);\n }\n onSessionDeleted(session.id, wasSelected);\n onStatus(\"Connected\");\n } catch (deleteError) {\n onError(errorMessage(deleteError));\n }\n },\n [onError, onSessionDeleted, onStatus, runState, selectedSessionId],\n );\n\n const clearSelectedSession = useCallback(() => {\n setSelectedSessionId(\"\");\n setSessionLogs([]);\n }, []);\n\n const appendSessionLogEntry = useCallback((log: StudioSessionLogEntry) => {\n setSessionLogs((current) => {\n if (current.some((item) => item.id === log.id)) {\n return current;\n }\n return [...current, log].sort((left, right) => left.sequence - right.sequence);\n });\n }, []);\n\n return useMemo(\n () => ({\n allSessions,\n selectedSessionId,\n sessionLogs,\n sessionLoadState,\n sessionLogLoadState,\n appendSessionLogEntry,\n clearSelectedSession,\n createSession,\n deleteSession,\n loadAllSessions,\n loadSession,\n loadSessionLogs,\n openSessionPath: onSessionCreated,\n setSelectedSessionId,\n }),\n [\n allSessions,\n appendSessionLogEntry,\n clearSelectedSession,\n createSession,\n deleteSession,\n loadAllSessions,\n loadSession,\n loadSessionLogs,\n onSessionCreated,\n selectedSessionId,\n sessionLoadState,\n sessionLogLoadState,\n sessionLogs,\n ],\n );\n}\n","import type { ActivePage } from \"./types\";\n\nexport type StudioNavigationSection = \"workspace\" | \"inspect\";\n\nconst workspacePages: ReadonlySet<ActivePage> = new Set([\n \"playground\",\n \"pipelines\",\n \"sessions\",\n \"tracing\",\n]);\n\nexport function navigationSection(page: ActivePage): StudioNavigationSection {\n return workspacePages.has(page) ? \"workspace\" : \"inspect\";\n}\n\nexport type StudioPageAvailability = {\n hasAgents: boolean;\n sessionsEnabled: boolean;\n tracesEnabled: boolean;\n toolsEnabled: boolean;\n sandboxesEnabled: boolean;\n mcpsEnabled: boolean;\n pipelinesEnabled: boolean;\n memoryEnabled: boolean;\n statusEnabled: boolean;\n knowledgeEnabled: boolean;\n};\n\nexport function isActivePageEnabled(\n _page: ActivePage,\n _availability: StudioPageAvailability,\n): boolean {\n return true;\n}\n\nexport function fallbackActivePage(\n preferred: ActivePage,\n _availability: StudioPageAvailability,\n): ActivePage {\n return preferred;\n}\n","import type { ActivePage, KnowledgeTab, PageLocation } from \"./types\";\n\nconst root = typeof document === \"undefined\" ? null : document.getElementById(\"anvia-ui\");\nconst uiPath = root?.dataset.uiPath ?? \"/ui\";\nconst compatUiPath = root?.dataset.uiCompatPath ?? \"/ui\";\nconst assetPath = normalizePathPrefix(uiPath) || normalizePathPrefix(compatUiPath) || \"/ui\";\n\nexport const logoSrc = `${assetPath}/assets/logo.png`;\nexport const defaultKnowledgeTab: KnowledgeTab = \"static-context\";\n\nexport function pageLocationFromLocation(): PageLocation {\n const normalizedUiPath = normalizePathPrefix(uiPath);\n const normalizedCompatUiPath = normalizePathPrefix(compatUiPath);\n const pathname = window.location.pathname.replace(/\\/+$/, \"\");\n\n if (\n normalizedCompatUiPath.length > 0 &&\n (pathname === normalizedCompatUiPath || pathname.startsWith(`${normalizedCompatUiPath}/`))\n ) {\n return pageLocationFromSegments(\n pathname === normalizedCompatUiPath\n ? []\n : pathname\n .slice(normalizedCompatUiPath.length + 1)\n .split(\"/\")\n .filter((segment) => segment.length > 0)\n .map((segment) => decodeURIComponent(segment)),\n );\n }\n\n if (normalizedUiPath.length === 0 && pathname.length > 0) {\n return pageLocationFromSegments(\n pathname\n .slice(1)\n .split(\"/\")\n .filter((segment) => segment.length > 0)\n .map((segment) => decodeURIComponent(segment)),\n );\n }\n\n if (pathname === normalizedUiPath) {\n return { page: \"playground\" };\n }\n if (!pathname.startsWith(`${normalizedUiPath}/`)) {\n return { page: \"playground\" };\n }\n\n const segments = pathname\n .slice(normalizedUiPath.length + 1)\n .split(\"/\")\n .filter((segment) => segment.length > 0)\n .map((segment) => decodeURIComponent(segment));\n return pageLocationFromSegments(segments);\n}\n\nfunction pageLocationFromSegments(segments: string[]): PageLocation {\n const [first, second, third] = segments;\n if (first === \"tracing\") {\n if (second === \"sessions\") {\n const location: PageLocation = { page: \"tracing\" };\n if (third !== undefined) location.traceSessionId = third;\n return location;\n }\n const location: PageLocation = { page: \"tracing\" };\n if (second !== undefined) location.traceId = second;\n return location;\n }\n if (first === \"sessions\") {\n return { page: \"sessions\" };\n }\n if (first === \"agents\") {\n return { page: \"agents\" };\n }\n if (first === \"tools\") {\n return { page: \"tools\" };\n }\n if (first === \"sandboxes\") {\n return { page: \"sandboxes\" };\n }\n if (first === \"mcps\") {\n return { page: \"mcps\" };\n }\n if (first === \"pipelines\") {\n return { page: \"pipelines\" };\n }\n if (first === \"memory\") {\n return { page: \"memory\" };\n }\n if (first === \"status\") {\n return { page: \"status\" };\n }\n if (first === \"knowledge\") {\n return { page: \"knowledge\", knowledgeTab: knowledgeTabFromSegment(second) };\n }\n if (first === \"playground\") {\n const location: PageLocation = { page: \"playground\" };\n if (second !== undefined) location.sessionId = second;\n return location;\n }\n if (first !== undefined && second === undefined) {\n return { page: \"playground\", sessionId: first };\n }\n return { page: \"playground\" };\n}\n\nexport function updatePagePath(page: ActivePage): void {\n if (page === \"knowledge\") {\n updateKnowledgePath(defaultKnowledgeTab);\n return;\n }\n const basePath = canonicalUiPath();\n const nextPath = page === \"playground\" ? `${basePath}/playground` : `${basePath}/${page}`;\n updateLocationPath(nextPath);\n}\n\nexport function updateKnowledgePath(tab: KnowledgeTab): void {\n updateLocationPath(`${canonicalUiPath()}/knowledge/${tab}`);\n}\n\nexport function updateSessionPath(sessionId: string | undefined): void {\n const basePath = canonicalUiPath();\n const nextPath =\n sessionId === undefined\n ? `${basePath}/playground`\n : `${basePath}/playground/${encodeURIComponent(sessionId)}`;\n updateLocationPath(nextPath);\n}\n\nexport function updateTracePath(traceId: string): void {\n updateLocationPath(`${canonicalUiPath()}/tracing/${encodeURIComponent(traceId)}`);\n}\n\nexport function updateTraceSessionPath(sessionId: string): void {\n updateLocationPath(`${canonicalUiPath()}/tracing/sessions/${encodeURIComponent(sessionId)}`);\n}\n\nexport function normalizePathPrefix(path: string): string {\n return path === \"/\" ? \"\" : path.replace(/\\/+$/, \"\");\n}\n\nfunction canonicalUiPath(): string {\n return normalizePathPrefix(compatUiPath) || normalizePathPrefix(uiPath) || \"/ui\";\n}\n\nfunction updateLocationPath(nextPath: string): void {\n const nextUrl = `${nextPath}${window.location.search}${window.location.hash}`;\n if (`${window.location.pathname}${window.location.search}${window.location.hash}` === nextUrl) {\n return;\n }\n window.history.pushState({}, \"\", nextUrl);\n}\n\nfunction knowledgeTabFromSegment(segment: string | undefined): KnowledgeTab {\n switch (segment) {\n case \"dynamic-context\":\n case \"dynamic-tools\":\n case \"retrieval-log\":\n case \"static-context\":\n return segment;\n default:\n return defaultKnowledgeTab;\n }\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { StudioTrace, StudioTraceSummary } from \"../../../../types\";\nimport { errorMessage } from \"../shared/format\";\nimport type { ActivePage, TraceLoadState } from \"../shared/types\";\n\nexport function useTraces(props: {\n activePage: ActivePage;\n enabled: boolean;\n initialTraceId: string;\n initialTraceSessionId: string | undefined;\n onError: (message: string) => void;\n onNavigateTracing: () => void;\n onOpenTrace: (traceId: string) => void;\n onOpenTraceIndex: () => void;\n onOpenTraceSession: (sessionId: string) => void;\n}) {\n const {\n activePage,\n enabled,\n onError,\n onNavigateTracing,\n onOpenTrace,\n onOpenTraceIndex,\n onOpenTraceSession,\n } = props;\n const [traces, setTraces] = useState<StudioTrace[]>([]);\n const [selectedTraceId, setSelectedTraceId] = useState(() => props.initialTraceId);\n const [traceSessionDetailId, setTraceSessionDetailId] = useState<string | undefined>(\n () => props.initialTraceSessionId,\n );\n const [traceLoadState, setTraceLoadState] = useState<TraceLoadState>(\"idle\");\n\n const loadTraces = useCallback(async () => {\n if (!enabled) {\n setTraces([]);\n return;\n }\n\n setTraceLoadState(\"loading\");\n try {\n const params = new URLSearchParams({ include: \"detail\", limit: \"50\" });\n const response = await fetch(`/traces?${params.toString()}`);\n if (!response.ok) {\n throw new Error(`Traces failed with HTTP ${response.status}`);\n }\n const body = (await response.json()) as { traces: StudioTrace[] };\n const loaded = body.traces;\n if (selectedTraceId.length > 0 && !loaded.some((trace) => trace.id === selectedTraceId)) {\n const traceResponse = await fetch(`/traces/${encodeURIComponent(selectedTraceId)}`);\n if (traceResponse.ok) {\n setTraces([(await traceResponse.json()) as StudioTrace, ...loaded]);\n return;\n }\n }\n setTraces(loaded);\n } catch (loadError) {\n onError(errorMessage(loadError));\n } finally {\n setTraceLoadState(\"idle\");\n }\n }, [enabled, onError, selectedTraceId]);\n\n const showSessionTraces = useCallback(\n async (sessionId: string, options: { updatePath?: boolean } = {}) => {\n if (!enabled) {\n return;\n }\n\n setTraceLoadState(\"loading\");\n try {\n const params = new URLSearchParams({ include: \"detail\", limit: \"50\", sessionId });\n const response = await fetch(`/traces?${params.toString()}`);\n if (!response.ok) {\n throw new Error(`Session traces failed with HTTP ${response.status}`);\n }\n const body = (await response.json()) as { traces: StudioTrace[] };\n const loaded = body.traces;\n const ordered = [...loaded].sort(\n (left, right) => Date.parse(left.startedAt) - Date.parse(right.startedAt),\n );\n setTraces(ordered);\n const firstTraceId = ordered[0]?.id;\n if (firstTraceId === undefined) {\n setSelectedTraceId(\"\");\n setTraceSessionDetailId(sessionId);\n if (options.updatePath !== false) {\n onOpenTraceSession(sessionId);\n }\n return;\n }\n onNavigateTracing();\n setSelectedTraceId(firstTraceId);\n setTraceSessionDetailId(sessionId);\n if (options.updatePath !== false) {\n onOpenTraceSession(sessionId);\n }\n } catch (loadError) {\n onError(errorMessage(loadError));\n } finally {\n setTraceLoadState(\"idle\");\n }\n },\n [enabled, onError, onNavigateTracing, onOpenTraceSession],\n );\n\n const loadSessionTraceSummaries = useCallback(\n async (sessionId: string): Promise<StudioTraceSummary[]> => {\n if (!enabled) {\n return [];\n }\n\n const params = new URLSearchParams({ limit: \"100\" });\n const response = await fetch(`/sessions/${encodeURIComponent(sessionId)}/traces?${params}`);\n if (!response.ok) {\n return [];\n }\n const body = (await response.json()) as { traces: StudioTraceSummary[] };\n return body.traces;\n },\n [enabled],\n );\n\n useEffect(() => {\n if (activePage !== \"tracing\" || traceSessionDetailId !== undefined) {\n return;\n }\n void loadTraces();\n }, [activePage, loadTraces, traceSessionDetailId]);\n\n const setTraceLocation = useCallback((traceId: string, traceSessionId: string | undefined) => {\n setSelectedTraceId(traceId);\n setTraceSessionDetailId(traceSessionId);\n }, []);\n\n const clearTraceSelection = useCallback(() => {\n setSelectedTraceId(\"\");\n setTraceSessionDetailId(undefined);\n }, []);\n\n const selectTrace = useCallback(\n (traceId: string) => {\n onNavigateTracing();\n setSelectedTraceId(traceId);\n setTraceSessionDetailId(undefined);\n if (traceId.length === 0) {\n onOpenTraceIndex();\n return;\n }\n onOpenTrace(traceId);\n },\n [onNavigateTracing, onOpenTrace, onOpenTraceIndex],\n );\n\n const removeSessionTraces = useCallback((sessionId: string) => {\n setTraces((current) => current.filter((trace) => trace.sessionId !== sessionId));\n }, []);\n\n return useMemo(\n () => ({\n traces,\n selectedTraceId,\n traceSessionDetailId,\n traceLoadState,\n clearTraceSelection,\n loadSessionTraceSummaries,\n loadTraces,\n removeSessionTraces,\n selectTrace,\n setTraceLocation,\n showSessionTraces,\n }),\n [\n clearTraceSelection,\n loadSessionTraceSummaries,\n loadTraces,\n removeSessionTraces,\n selectTrace,\n selectedTraceId,\n setTraceLocation,\n showSessionTraces,\n traceLoadState,\n traceSessionDetailId,\n traces,\n ],\n );\n}\n","import type { ChangeEvent, KeyboardEvent, RefObject } from \"react\";\nimport { createContext, useContext } from \"react\";\nimport type {\n StudioConfig,\n StudioModelSummary,\n StudioSessionSummary,\n StudioTraceSummary,\n} from \"../../types\";\nimport type { PromptAttachment } from \"./app-helpers\";\nimport type { ResolvedStudioTheme, StudioTheme } from \"./app-theme\";\nimport type { BrowserWorkspace } from \"./modules/playground/browser-workspace\";\nimport type { useStudioSessions } from \"./modules/sessions/use-studio-sessions\";\nimport type { ActivePage, KnowledgeTab, RunState, TranscriptEntry } from \"./modules/shared/types\";\nimport type { useTraces } from \"./modules/tracing/use-traces\";\n\ntype StudioSessionsController = ReturnType<typeof useStudioSessions>;\ntype StudioTracesController = ReturnType<typeof useTraces>;\n\nexport type StudioConsoleContextValue = {\n activePage: ActivePage;\n agents: StudioConfig[\"agents\"];\n answeringQuestions: Set<string>;\n attachments: PromptAttachment[];\n browserWorkspace: BrowserWorkspace | undefined;\n browserWorkspaceOpen: boolean;\n decidingApprovals: Set<string>;\n deleteCandidate: StudioSessionSummary | undefined;\n hasAgents: boolean;\n hasMessages: boolean;\n isStreaming: boolean;\n knowledgeEnabled: boolean;\n knowledgeTab: KnowledgeTab;\n mcpsEnabled: boolean;\n memoryEnabled: boolean;\n messages: TranscriptEntry[];\n pageEnabled: (page: ActivePage) => boolean;\n pipelines: StudioConfig[\"pipelines\"];\n pipelinesEnabled: boolean;\n prompt: string;\n runState: RunState;\n resolvedTheme: ResolvedStudioTheme;\n sandboxesEnabled: boolean;\n selectedAgent: StudioConfig[\"agents\"][number] | undefined;\n selectedAgentId: string;\n selectedAgentModels: StudioModelSummary[];\n selectedAgentQuickPrompts: string[];\n selectedModelRef: string;\n sessionTraceSummaries: StudioTraceSummary[];\n sessions: StudioSessionsController;\n sessionsEnabled: boolean;\n status: string;\n statusEnabled: boolean;\n theme: StudioTheme;\n toolsEnabled: boolean;\n traces: StudioTracesController;\n tracesEnabled: boolean;\n attachmentInputRef: RefObject<HTMLInputElement | null>;\n promptRef: RefObject<HTMLTextAreaElement | null>;\n transcriptScrollerRef: RefObject<HTMLElement | null>;\n transcriptResetKey: string | number;\n activateRoute: (page: ActivePage) => void;\n navigateFallback: (preferred: ActivePage) => void;\n navigatePage: (page: ActivePage) => void;\n navigateKnowledgeTab: (tab: KnowledgeTab) => void;\n setDeleteCandidate: (session: StudioSessionSummary | undefined) => void;\n closeBrowserWorkspace: () => void;\n openBrowserWorkspace: () => void;\n setError: (message: string) => void;\n setKnowledgeTab: (tab: KnowledgeTab) => void;\n setSelectedModelRef: (modelRef: string) => void;\n setStatus: (status: string) => void;\n startNewChat: (options?: { updatePath?: boolean }) => void;\n selectPlaygroundAgent: (agentId: string) => void;\n addPromptAttachments: (event: ChangeEvent<HTMLInputElement>) => void;\n decideToolApproval: (approvalId: string, approved: boolean) => void;\n updatePrompt: (event: ChangeEvent<HTMLTextAreaElement>) => void;\n handlePromptKeyDown: (event: KeyboardEvent<HTMLTextAreaElement>) => void;\n answerToolQuestion: (\n questionId: string,\n answers: Array<{ questionId: string; answer: string; choice?: string; custom?: boolean }>,\n ) => void;\n removePromptAttachment: (id: string) => void;\n runPrompt: (prompt: string) => void;\n stopPrompt: () => void;\n toggleTheme: () => void;\n updateTranscriptStickiness: () => void;\n};\n\nexport const StudioConsoleContext = createContext<StudioConsoleContextValue | undefined>(undefined);\n\nexport function useStudioConsole(): StudioConsoleContextValue {\n const value = useContext(StudioConsoleContext);\n if (value === undefined) {\n throw new Error(\"StudioConsoleContext is missing\");\n }\n return value;\n}\n","import { lazy } from \"react\";\n\nexport const AgentsPage = lazy(() =>\n import(\"./modules/agents/agents-page\").then((module) => ({\n default: module.AgentsPage,\n })),\n);\n\nexport const KnowledgePage = lazy(() =>\n import(\"./modules/knowledge/knowledge-page\").then((module) => ({\n default: module.KnowledgePage,\n })),\n);\n\nexport const McpsPage = lazy(() =>\n import(\"./modules/mcps/mcps-page\").then((module) => ({\n default: module.McpsPage,\n })),\n);\n\nexport const MemoryPage = lazy(() =>\n import(\"./modules/memory/memory-page\").then((module) => ({\n default: module.MemoryPage,\n })),\n);\n\nexport const PipelinesPage = lazy(() =>\n import(\"./modules/pipelines/pipelines-page\").then((module) => ({\n default: module.PipelinesPage,\n })),\n);\n\nexport const SessionsPage = lazy(() =>\n import(\"./modules/sessions/sessions-page\").then((module) => ({\n default: module.SessionsPage,\n })),\n);\n\nexport const SandboxesPage = lazy(() =>\n import(\"./modules/sandboxes/sandboxes-page\").then((module) => ({\n default: module.SandboxesPage,\n })),\n);\n\nexport const DeleteSessionDialog = lazy(() =>\n import(\"./modules/sessions/sessions-page\").then((module) => ({\n default: module.DeleteSessionDialog,\n })),\n);\n\nexport const StatusPage = lazy(() =>\n import(\"./modules/status/status-page\").then((module) => ({\n default: module.StatusPage,\n })),\n);\n\nexport const ToolsPage = lazy(() =>\n import(\"./modules/tools/tools-page\").then((module) => ({\n default: module.ToolsPage,\n })),\n);\n\nexport const TraceBrowser = lazy(() =>\n import(\"./modules/tracing/trace-browser\").then((module) => ({\n default: module.TraceBrowser,\n })),\n);\n\nexport function PageLoading() {\n return (\n <section className=\"grid h-full min-h-0 place-items-center bg-background/45 text-base font-medium text-muted-foreground\">\n Loading\n </section>\n );\n}\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,44H32A20,20,0,0,0,12,64V88a20,20,0,0,0,16,19.6V192a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V107.6A20,20,0,0,0,244,88V64A20,20,0,0,0,224,44ZM36,68H220V84H36ZM52,188V108H204v80Zm112-52a12,12,0,0,1-12,12H104a12,12,0,0,1,0-24h48A12,12,0,0,1,164,136Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,96v96a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V96Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,48H32A16,16,0,0,0,16,64V88a16,16,0,0,0,16,16v88a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V104a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48ZM208,192H48V104H208ZM224,88H32V64H224V88ZM96,136a8,8,0,0,1,8-8h48a8,8,0,0,1,0,16H104A8,8,0,0,1,96,136Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,48H32A16,16,0,0,0,16,64V88a16,16,0,0,0,16,16v88a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V104a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48Zm-72,96H104a8,8,0,0,1,0-16h48a8,8,0,0,1,0,16Zm72-56H32V64H224V88Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,50H32A14,14,0,0,0,18,64V88a14,14,0,0,0,14,14h2v90a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V102h2a14,14,0,0,0,14-14V64A14,14,0,0,0,224,50ZM210,192a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V102H210ZM226,88a2,2,0,0,1-2,2H32a2,2,0,0,1-2-2V64a2,2,0,0,1,2-2H224a2,2,0,0,1,2,2ZM98,136a6,6,0,0,1,6-6h48a6,6,0,0,1,0,12H104A6,6,0,0,1,98,136Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,48H32A16,16,0,0,0,16,64V88a16,16,0,0,0,16,16v88a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V104a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48ZM208,192H48V104H208ZM224,88H32V64H224V88ZM96,136a8,8,0,0,1,8-8h48a8,8,0,0,1,0,16H104A8,8,0,0,1,96,136Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,52H32A12,12,0,0,0,20,64V88a12,12,0,0,0,12,12h4v92a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V100h4a12,12,0,0,0,12-12V64A12,12,0,0,0,224,52ZM212,192a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V100H212ZM228,88a4,4,0,0,1-4,4H32a4,4,0,0,1-4-4V64a4,4,0,0,1,4-4H224a4,4,0,0,1,4,4ZM100,136a4,4,0,0,1,4-4h48a4,4,0,0,1,0,8H104A4,4,0,0,1,100,136Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208.49,120.49a12,12,0,0,1-17,0L140,69V216a12,12,0,0,1-24,0V69L64.49,120.49a12,12,0,0,1-17-17l72-72a12,12,0,0,1,17,0l72,72A12,12,0,0,1,208.49,120.49Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M200,112H56l72-72Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M205.66,106.34l-72-72a8,8,0,0,0-11.32,0l-72,72A8,8,0,0,0,56,120h64v96a8,8,0,0,0,16,0V120h64a8,8,0,0,0,5.66-13.66ZM75.31,104,128,51.31,180.69,104Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M207.39,115.06A8,8,0,0,1,200,120H136v96a8,8,0,0,1-16,0V120H56a8,8,0,0,1-5.66-13.66l72-72a8,8,0,0,1,11.32,0l72,72A8,8,0,0,1,207.39,115.06Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M204.24,116.24a6,6,0,0,1-8.48,0L134,54.49V216a6,6,0,0,1-12,0V54.49L60.24,116.24a6,6,0,0,1-8.48-8.48l72-72a6,6,0,0,1,8.48,0l72,72A6,6,0,0,1,204.24,116.24Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M205.66,117.66a8,8,0,0,1-11.32,0L136,59.31V216a8,8,0,0,1-16,0V59.31L61.66,117.66a8,8,0,0,1-11.32-11.32l72-72a8,8,0,0,1,11.32,0l72,72A8,8,0,0,1,205.66,117.66Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M202.83,114.83a4,4,0,0,1-5.66,0L132,49.66V216a4,4,0,0,1-8,0V49.66L58.83,114.83a4,4,0,0,1-5.66-5.66l72-72a4,4,0,0,1,5.66,0l72,72A4,4,0,0,1,202.83,114.83Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,44H160a43.86,43.86,0,0,0-32,13.85A43.86,43.86,0,0,0,96,44H24A12,12,0,0,0,12,56V200a12,12,0,0,0,12,12H96a20,20,0,0,1,20,20,12,12,0,0,0,24,0,20,20,0,0,1,20-20h72a12,12,0,0,0,12-12V56A12,12,0,0,0,232,44ZM96,188H36V68H96a20,20,0,0,1,20,20V192.81A43.79,43.79,0,0,0,96,188Zm124,0H160a43.71,43.71,0,0,0-20,4.83V88a20,20,0,0,1,20-20h60ZM164,96h32a12,12,0,0,1,0,24H164a12,12,0,0,1,0-24Zm44,52a12,12,0,0,1-12,12H164a12,12,0,0,1,0-24h32A12,12,0,0,1,208,148Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M232,56V200H160a32,32,0,0,0-32,32V88a32,32,0,0,1,32-32Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,48H160a40,40,0,0,0-32,16A40,40,0,0,0,96,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,24,8,8,0,0,0,16,0,24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM96,192H32V64H96a24,24,0,0,1,24,24V200A39.81,39.81,0,0,0,96,192Zm128,0H160a39.81,39.81,0,0,0-24,8V88a24,24,0,0,1,24-24h64ZM160,88h40a8,8,0,0,1,0,16H160a8,8,0,0,1,0-16Zm48,40a8,8,0,0,1-8,8H160a8,8,0,0,1,0-16h40A8,8,0,0,1,208,128Zm0,32a8,8,0,0,1-8,8H160a8,8,0,0,1,0-16h40A8,8,0,0,1,208,160Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,48H168a32,32,0,0,0-32,32v87.73a8.17,8.17,0,0,1-7.47,8.25,8,8,0,0,1-8.53-8V80A32,32,0,0,0,88,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,23.94,7.9,7.9,0,0,0,5.12,7.55A8,8,0,0,0,136,232a24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM208,168H168.27a8.17,8.17,0,0,1-8.25-7.47,8,8,0,0,1,8-8.53h39.73a8.17,8.17,0,0,1,8.25,7.47A8,8,0,0,1,208,168Zm0-32H168.27a8.17,8.17,0,0,1-8.25-7.47,8,8,0,0,1,8-8.53h39.73a8.17,8.17,0,0,1,8.25,7.47A8,8,0,0,1,208,136Zm0-32H168.27A8.17,8.17,0,0,1,160,96.53,8,8,0,0,1,168,88h39.73A8.17,8.17,0,0,1,216,95.47,8,8,0,0,1,208,104Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,50H160a38,38,0,0,0-32,17.55A38,38,0,0,0,96,50H24a6,6,0,0,0-6,6V200a6,6,0,0,0,6,6H96a26,26,0,0,1,26,26,6,6,0,0,0,12,0,26,26,0,0,1,26-26h72a6,6,0,0,0,6-6V56A6,6,0,0,0,232,50ZM96,194H30V62H96a26,26,0,0,1,26,26V204.31A37.86,37.86,0,0,0,96,194Zm130,0H160a37.87,37.87,0,0,0-26,10.32V88a26,26,0,0,1,26-26h66ZM160,90h40a6,6,0,0,1,0,12H160a6,6,0,0,1,0-12Zm46,38a6,6,0,0,1-6,6H160a6,6,0,0,1,0-12h40A6,6,0,0,1,206,128Zm0,32a6,6,0,0,1-6,6H160a6,6,0,0,1,0-12h40A6,6,0,0,1,206,160Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,48H160a40,40,0,0,0-32,16A40,40,0,0,0,96,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,24,8,8,0,0,0,16,0,24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM96,192H32V64H96a24,24,0,0,1,24,24V200A39.81,39.81,0,0,0,96,192Zm128,0H160a39.81,39.81,0,0,0-24,8V88a24,24,0,0,1,24-24h64ZM160,88h40a8,8,0,0,1,0,16H160a8,8,0,0,1,0-16Zm48,40a8,8,0,0,1-8,8H160a8,8,0,0,1,0-16h40A8,8,0,0,1,208,128Zm0,32a8,8,0,0,1-8,8H160a8,8,0,0,1,0-16h40A8,8,0,0,1,208,160Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,52H160a36,36,0,0,0-32,19.54A36,36,0,0,0,96,52H24a4,4,0,0,0-4,4V200a4,4,0,0,0,4,4H96a28,28,0,0,1,28,28,4,4,0,0,0,8,0,28,28,0,0,1,28-28h72a4,4,0,0,0,4-4V56A4,4,0,0,0,232,52ZM96,196H28V60H96a28,28,0,0,1,28,28V209.4A35.94,35.94,0,0,0,96,196Zm132,0H160a35.94,35.94,0,0,0-28,13.41V88a28,28,0,0,1,28-28h68ZM160,92h40a4,4,0,0,1,0,8H160a4,4,0,0,1,0-8Zm44,36a4,4,0,0,1-4,4H160a4,4,0,0,1,0-8h40A4,4,0,0,1,204,128Zm0,32a4,4,0,0,1-4,4H160a4,4,0,0,1,0-8h40A4,4,0,0,1,204,160Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,36H40A20,20,0,0,0,20,56V200a20,20,0,0,0,20,20H216a20,20,0,0,0,20-20V56A20,20,0,0,0,216,36Zm-4,24V84H44V60ZM44,196V108H212v88Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M224,56V96H32V56a8,8,0,0,1,8-8H216A8,8,0,0,1,224,56Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm0,16V88H40V56Zm0,144H40V104H216v96Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm0,16V88H40V56Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,42H40A14,14,0,0,0,26,56V200a14,14,0,0,0,14,14H216a14,14,0,0,0,14-14V56A14,14,0,0,0,216,42ZM40,54H216a2,2,0,0,1,2,2V90H38V56A2,2,0,0,1,40,54ZM216,202H40a2,2,0,0,1-2-2V102H218v98A2,2,0,0,1,216,202Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm0,16V88H40V56Zm0,144H40V104H216v96Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,44H40A12,12,0,0,0,28,56V200a12,12,0,0,0,12,12H216a12,12,0,0,0,12-12V56A12,12,0,0,0,216,44ZM40,52H216a4,4,0,0,1,4,4V92H36V56A4,4,0,0,1,40,52ZM216,204H40a4,4,0,0,1-4-4V100H220V200A4,4,0,0,1,216,204Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nconst l = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M225.6,62.64l-88-48.17a19.91,19.91,0,0,0-19.2,0l-88,48.17A20,20,0,0,0,20,80.19v95.62a20,20,0,0,0,10.4,17.55l88,48.17a19.89,19.89,0,0,0,19.2,0l88-48.17A20,20,0,0,0,236,175.81V80.19A20,20,0,0,0,225.6,62.64ZM128,36.57,200,76,128,115.4,56,76ZM44,96.79l72,39.4v76.67L44,173.44Zm96,116.07V136.19l72-39.4v76.65Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M128,129.09V232a8,8,0,0,1-3.84-1l-88-48.16a8,8,0,0,1-4.16-7V80.2a8,8,0,0,1,.7-3.27Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M223.68,66.15,135.68,18h0a15.88,15.88,0,0,0-15.36,0l-88,48.17a16,16,0,0,0-8.32,14v95.64a16,16,0,0,0,8.32,14l88,48.17a15.88,15.88,0,0,0,15.36,0l88-48.17a16,16,0,0,0,8.32-14V80.18A16,16,0,0,0,223.68,66.15ZM128,32h0l80.34,44L128,120,47.66,76ZM40,90l80,43.78v85.79L40,175.82Zm96,129.57V133.82L216,90v85.78Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M223.68,66.15,135.68,18a15.88,15.88,0,0,0-15.36,0l-88,48.17a16,16,0,0,0-8.32,14v95.64a16,16,0,0,0,8.32,14l88,48.17a15.88,15.88,0,0,0,15.36,0l88-48.17a16,16,0,0,0,8.32-14V80.18A16,16,0,0,0,223.68,66.15ZM128,120,47.65,76,128,32l80.35,44Zm8,99.64V133.83l80-43.78v85.76Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M222.72,67.9l-88-48.17a13.9,13.9,0,0,0-13.44,0l-88,48.18A14,14,0,0,0,26,80.18v95.64a14,14,0,0,0,7.28,12.27l88,48.18a13.92,13.92,0,0,0,13.44,0l88-48.18A14,14,0,0,0,230,175.82V80.18A14,14,0,0,0,222.72,67.9ZM127,30.25a2,2,0,0,1,1.92,0L212.51,76,128,122.24,43.49,76ZM39,177.57a2,2,0,0,1-1-1.75V86.66l84,46V223Zm177.92,0L134,223V132.64l84-46v89.16A2,2,0,0,1,217,177.57Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M223.68,66.15,135.68,18h0a15.88,15.88,0,0,0-15.36,0l-88,48.17a16,16,0,0,0-8.32,14v95.64a16,16,0,0,0,8.32,14l88,48.17a15.88,15.88,0,0,0,15.36,0l88-48.17a16,16,0,0,0,8.32-14V80.18A16,16,0,0,0,223.68,66.15ZM128,32h0l80.34,44L128,120,47.66,76ZM40,90l80,43.78v85.79L40,175.82Zm96,129.57V133.82L216,90v85.78Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M221.76,69.66l-88-48.18a12,12,0,0,0-11.52,0l-88,48.18A12,12,0,0,0,28,80.18v95.64a12,12,0,0,0,6.24,10.52l88,48.18a11.95,11.95,0,0,0,11.52,0l88-48.18A12,12,0,0,0,228,175.82V80.18A12,12,0,0,0,221.76,69.66ZM126.08,28.5a3.94,3.94,0,0,1,3.84,0L216.67,76,128,124.52,39.33,76Zm-88,150.83A4,4,0,0,1,36,175.82V83.29l88,48.16v94.91Zm179.84,0-85.92,47V131.45l88-48.16v92.53A4,4,0,0,1,217.92,179.32Z\" }))\n ]\n]);\nexport {\n l as default\n};\n","import * as e from \"react\";\nconst t = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M196,35.52C177.62,25.51,153.48,20,128,20S78.38,25.51,60,35.52C39.37,46.79,28,62.58,28,80v96c0,17.42,11.37,33.21,32,44.48,18.35,10,42.49,15.52,68,15.52s49.62-5.51,68-15.52c20.66-11.27,32-27.06,32-44.48V80C228,62.58,216.63,46.79,196,35.52ZM204,128c0,17-31.21,36-76,36s-76-19-76-36v-8.46a88.9,88.9,0,0,0,8,4.94c18.35,10,42.49,15.52,68,15.52s49.62-5.51,68-15.52a88.9,88.9,0,0,0,8-4.94ZM128,44c44.79,0,76,19,76,36s-31.21,36-76,36S52,97,52,80,83.21,44,128,44Zm0,168c-44.79,0-76-19-76-36v-8.46a88.9,88.9,0,0,0,8,4.94c18.35,10,42.49,15.52,68,15.52s49.62-5.51,68-15.52a88.9,88.9,0,0,0,8-4.94V176C204,193,172.79,212,128,212Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M216,80c0,26.51-39.4,48-88,48S40,106.51,40,80s39.4-48,88-48S216,53.49,216,80Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24C74.17,24,32,48.6,32,80v96c0,31.4,42.17,56,96,56s96-24.6,96-56V80C224,48.6,181.83,24,128,24Zm80,104c0,9.62-7.88,19.43-21.61,26.92C170.93,163.35,150.19,168,128,168s-42.93-4.65-58.39-13.08C55.88,147.43,48,137.62,48,128V111.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64ZM69.61,53.08C85.07,44.65,105.81,40,128,40s42.93,4.65,58.39,13.08C200.12,60.57,208,70.38,208,80s-7.88,19.43-21.61,26.92C170.93,115.35,150.19,120,128,120s-42.93-4.65-58.39-13.08C55.88,99.43,48,89.62,48,80S55.88,60.57,69.61,53.08ZM186.39,202.92C170.93,211.35,150.19,216,128,216s-42.93-4.65-58.39-13.08C55.88,195.43,48,185.62,48,176V159.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64V176C208,185.62,200.12,195.43,186.39,202.92Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24C74.17,24,32,48.6,32,80v96c0,31.4,42.17,56,96,56s96-24.6,96-56V80C224,48.6,181.83,24,128,24Zm80,104c0,9.62-7.88,19.43-21.61,26.92C170.93,163.35,150.19,168,128,168s-42.93-4.65-58.39-13.08C55.88,147.43,48,137.62,48,128V111.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64Zm-21.61,74.92C170.93,211.35,150.19,216,128,216s-42.93-4.65-58.39-13.08C55.88,195.43,48,185.62,48,176V159.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64V176C208,185.62,200.12,195.43,186.39,202.92Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,26C75.29,26,34,49.72,34,80v96c0,30.28,41.29,54,94,54s94-23.72,94-54V80C222,49.72,180.71,26,128,26Zm0,12c44.45,0,82,19.23,82,42s-37.55,42-82,42S46,102.77,46,80,83.55,38,128,38Zm82,138c0,22.77-37.55,42-82,42s-82-19.23-82-42V154.79C62,171.16,92.37,182,128,182s66-10.84,82-27.21Zm0-48c0,22.77-37.55,42-82,42s-82-19.23-82-42V106.79C62,123.16,92.37,134,128,134s66-10.84,82-27.21Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24C74.17,24,32,48.6,32,80v96c0,31.4,42.17,56,96,56s96-24.6,96-56V80C224,48.6,181.83,24,128,24Zm80,104c0,9.62-7.88,19.43-21.61,26.92C170.93,163.35,150.19,168,128,168s-42.93-4.65-58.39-13.08C55.88,147.43,48,137.62,48,128V111.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64ZM69.61,53.08C85.07,44.65,105.81,40,128,40s42.93,4.65,58.39,13.08C200.12,60.57,208,70.38,208,80s-7.88,19.43-21.61,26.92C170.93,115.35,150.19,120,128,120s-42.93-4.65-58.39-13.08C55.88,99.43,48,89.62,48,80S55.88,60.57,69.61,53.08ZM186.39,202.92C170.93,211.35,150.19,216,128,216s-42.93-4.65-58.39-13.08C55.88,195.43,48,185.62,48,176V159.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64V176C208,185.62,200.12,195.43,186.39,202.92Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M192.14,42.55C174.94,33.17,152.16,28,128,28S81.06,33.17,63.86,42.55C45.89,52.35,36,65.65,36,80v96c0,14.35,9.89,27.65,27.86,37.45,17.2,9.38,40,14.55,64.14,14.55s46.94-5.17,64.14-14.55c18-9.8,27.86-23.1,27.86-37.45V80C220,65.65,210.11,52.35,192.14,42.55ZM212,176c0,11.29-8.41,22.1-23.69,30.43C172.27,215.18,150.85,220,128,220s-44.27-4.82-60.31-13.57C52.41,198.1,44,187.29,44,176V149.48c4.69,5.93,11.37,11.34,19.86,16,17.2,9.38,40,14.55,64.14,14.55s46.94-5.17,64.14-14.55c8.49-4.63,15.17-10,19.86-16Zm0-48c0,11.29-8.41,22.1-23.69,30.43C172.27,167.18,150.85,172,128,172s-44.27-4.82-60.31-13.57C52.41,150.1,44,139.29,44,128V101.48c4.69,5.93,11.37,11.34,19.86,16,17.2,9.38,40,14.55,64.14,14.55s46.94-5.17,64.14-14.55c8.49-4.63,15.17-10,19.86-16Zm-23.69-17.57C172.27,119.18,150.85,124,128,124s-44.27-4.82-60.31-13.57C52.41,102.1,44,91.29,44,80s8.41-22.1,23.69-30.43C83.73,40.82,105.15,36,128,36s44.27,4.82,60.31,13.57C203.59,57.9,212,68.71,212,80S203.59,102.1,188.31,110.43Z\" }))\n ]\n]);\nexport {\n t as default\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M248.49,71.51l-32-32a12,12,0,0,0-17,17L211,68h-3c-52,0-64.8,30.71-75.08,55.38-8.82,21.17-15.45,37.05-42.75,40.09a44,44,0,1,0,.28,24.08c43.34-3.87,55.07-32,64.63-54.93C164.9,109,172,92,208,92h3l-11.52,11.51a12,12,0,0,0,17,17l32-32A12,12,0,0,0,248.49,71.51ZM48,196a20,20,0,1,1,20-20A20,20,0,0,1,48,196Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M80,176a32,32,0,1,1-32-32A32,32,0,0,1,80,176Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M245.66,74.34l-32-32a8,8,0,0,0-11.32,11.32L220.69,72H208c-49.33,0-61.05,28.12-71.38,52.92-9.38,22.51-16.92,40.59-49.48,42.84a40,40,0,1,0,.1,16c43.26-2.65,54.34-29.15,64.14-52.69C161.41,107,169.33,88,208,88h12.69l-18.35,18.34a8,8,0,0,0,11.32,11.32l32-32A8,8,0,0,0,245.66,74.34ZM48,200a24,24,0,1,1,24-24A24,24,0,0,1,48,200Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M245.66,85.66l-32,32a8,8,0,0,1-11.32-11.32L220.69,88H208c-38.67,0-46.59,19-56.62,43.08C141.05,155.88,129.33,184,80,184H79a32,32,0,1,1,0-16h1c38.67,0,46.59-19,56.62-43.08C147,100.12,158.67,72,208,72h12.69L202.34,53.66a8,8,0,0,1,11.32-11.32l32,32A8,8,0,0,1,245.66,85.66Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M244.24,75.76l-32-32a6,6,0,0,0-8.48,8.48L225.51,74H208c-48,0-59.44,27.46-69.54,51.69-9.43,22.64-17.66,42.33-53,44.16a38,38,0,1,0,.06,12c43.34-2.06,54.29-28.29,64-51.55C159.44,106.53,168,86,208,86h17.51l-21.75,21.76a6,6,0,1,0,8.48,8.48l32-32A6,6,0,0,0,244.24,75.76ZM48,202a26,26,0,1,1,26-26A26,26,0,0,1,48,202Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M245.66,74.34l-32-32a8,8,0,0,0-11.32,11.32L220.69,72H208c-49.33,0-61.05,28.12-71.38,52.92-9.38,22.51-16.92,40.59-49.48,42.84a40,40,0,1,0,.1,16c43.26-2.65,54.34-29.15,64.14-52.69C161.41,107,169.33,88,208,88h12.69l-18.35,18.34a8,8,0,0,0,11.32,11.32l32-32A8,8,0,0,0,245.66,74.34ZM48,200a24,24,0,1,1,24-24A24,24,0,0,1,48,200Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M242.83,77.17l-32-32a4,4,0,0,0-5.66,5.66L230.34,76H208c-46.67,0-57.84,26.81-67.69,50.46-9.46,22.69-18.4,44.16-56.55,45.48a36,36,0,1,0,0,8c43.49-1.42,54.33-27.39,63.91-50.39C157.45,106.12,166.67,84,208,84h22.34l-25.17,25.17a4,4,0,0,0,5.66,5.66l32-32A4,4,0,0,0,242.83,77.17ZM48,204a28,28,0,1,1,28-28A28,28,0,0,1,48,204Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M209.88,69.83A115.19,115.19,0,0,0,128,36h-.41C63.85,36.22,12,88.76,12,153.13V176a20,20,0,0,0,20,20H224a20,20,0,0,0,20-20V152A115.25,115.25,0,0,0,209.88,69.83ZM220,172H127.32l46.44-65A12,12,0,1,0,154.24,93L97.82,172H36V153.13c0-1.72,0-3.43.14-5.13H56a12,12,0,0,0,0-24H40.62c10.91-33.39,40-58.52,75.38-63.21V80a12,12,0,0,0,24,0V60.8A92,92,0,0,1,215.66,124H200a12,12,0,0,0,0,24h19.9c.06,1.33.1,2.66.1,4Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M232,152v24a8,8,0,0,1-8,8H32a8,8,0,0,1-8-8V153.13C24,95.65,70.15,48.2,127.63,48A104,104,0,0,1,232,152Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M207.06,72.67A111.24,111.24,0,0,0,128,40h-.4C66.07,40.21,16,91,16,153.13V176a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V152A111.25,111.25,0,0,0,207.06,72.67ZM224,176H119.71l54.76-75.3a8,8,0,0,0-12.94-9.42L99.92,176H32V153.13c0-3.08.15-6.12.43-9.13H56a8,8,0,0,0,0-16H35.27c10.32-38.86,44-68.24,84.73-71.66V80a8,8,0,0,0,16,0V56.33A96.14,96.14,0,0,1,221,128H200a8,8,0,0,0,0,16h23.67c.21,2.65.33,5.31.33,8Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M240,152v24a16,16,0,0,1-16,16H115.93a4,4,0,0,1-3.24-6.35L174.27,101a8.21,8.21,0,0,0-1.37-11.3,8,8,0,0,0-11.37,1.61l-72,99.06A4,4,0,0,1,86.25,192H32a16,16,0,0,1-16-16V153.13c0-1.79,0-3.57.13-5.33a4,4,0,0,1,4-3.8H48a8,8,0,0,0,8-8.53A8.17,8.17,0,0,0,47.73,128H23.92a4,4,0,0,1-3.87-5c12-43.84,49.66-77.13,95.52-82.28a4,4,0,0,1,4.43,4V72a8,8,0,0,0,8.53,8A8.17,8.17,0,0,0,136,71.73V44.67a4,4,0,0,1,4.43-4A112.18,112.18,0,0,1,236.23,123a4,4,0,0,1-3.88,5H208.27a8.17,8.17,0,0,0-8.25,7.47,8,8,0,0,0,8,8.53h27.92a4,4,0,0,1,4,3.86C240,149.23,240,150.61,240,152Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M205.65,74.08A109.26,109.26,0,0,0,128,42h-.39C67.17,42.21,18,92.06,18,153.13V176a14,14,0,0,0,14,14H224a14,14,0,0,0,14-14V152A109.3,109.3,0,0,0,205.65,74.08ZM226,176a2,2,0,0,1-2,2H115.78l57.07-78.47a6,6,0,0,0-9.7-7.06L100.94,178H32a2,2,0,0,1-2-2V153.13A102.36,102.36,0,0,1,30.62,142H56a6,6,0,0,0,0-12H32.71C42.6,88.4,78.53,56.86,122,54.19V80a6,6,0,0,0,12,0V54.19A98.05,98.05,0,0,1,223.53,130H200a6,6,0,0,0,0,12h25.5c.33,3.3.5,6.64.5,10Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M207.06,72.67A111.24,111.24,0,0,0,128,40h-.4C66.07,40.21,16,91,16,153.13V176a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V152A111.25,111.25,0,0,0,207.06,72.67ZM224,176H119.71l54.76-75.3a8,8,0,0,0-12.94-9.42L99.92,176H32V153.13c0-3.08.15-6.12.43-9.13H56a8,8,0,0,0,0-16H35.27c10.32-38.86,44-68.24,84.73-71.66V80a8,8,0,0,0,16,0V56.33A96.14,96.14,0,0,1,221,128H200a8,8,0,0,0,0,16h23.67c.21,2.65.33,5.31.33,8Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M204.23,75.5A107.37,107.37,0,0,0,127.62,44C68.28,44.21,20,93.16,20,153.13V176a12,12,0,0,0,12,12H224a12,12,0,0,0,12-12V152A107.25,107.25,0,0,0,204.23,75.5ZM228,176a4,4,0,0,1-4,4H111.85l59.38-81.65a4,4,0,1,0-6.46-4.7L102,180H32a4,4,0,0,1-4-4V153.13A103.42,103.42,0,0,1,28.84,140H56a4,4,0,0,0,0-8H30.21C39.59,87.66,77.84,53.93,124,52.09V80a4,4,0,0,0,8,0V52.08A100.08,100.08,0,0,1,226,132H200a4,4,0,0,0,0,8h27.29a101.6,101.6,0,0,1,.71,12Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M212.62,75.17A63.7,63.7,0,0,0,206.39,26,12,12,0,0,0,196,20a63.71,63.71,0,0,0-50,24H126A63.71,63.71,0,0,0,76,20a12,12,0,0,0-10.39,6,63.7,63.7,0,0,0-6.23,49.17A61.5,61.5,0,0,0,52,104v8a60.1,60.1,0,0,0,45.76,58.28A43.66,43.66,0,0,0,92,192v4H76a20,20,0,0,1-20-20,44.05,44.05,0,0,0-44-44,12,12,0,0,0,0,24,20,20,0,0,1,20,20,44.05,44.05,0,0,0,44,44H92v12a12,12,0,0,0,24,0V192a20,20,0,0,1,40,0v40a12,12,0,0,0,24,0V192a43.66,43.66,0,0,0-5.76-21.72A60.1,60.1,0,0,0,220,112v-8A61.5,61.5,0,0,0,212.62,75.17ZM196,112a36,36,0,0,1-36,36H112a36,36,0,0,1-36-36v-8a37.87,37.87,0,0,1,6.13-20.12,11.65,11.65,0,0,0,1.58-11.49,39.9,39.9,0,0,1-.4-27.72,39.87,39.87,0,0,1,26.41,17.8A12,12,0,0,0,119.82,68h32.35a12,12,0,0,0,10.11-5.53,39.84,39.84,0,0,1,26.41-17.8,39.9,39.9,0,0,1-.4,27.72,12,12,0,0,0,1.61,11.53A37.85,37.85,0,0,1,196,104Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M208,104v8a48,48,0,0,1-48,48H136a32,32,0,0,1,32,32v40H104V192a32,32,0,0,1,32-32H112a48,48,0,0,1-48-48v-8a49.28,49.28,0,0,1,8.51-27.3A51.92,51.92,0,0,1,76,32a52,52,0,0,1,43.83,24h32.34A52,52,0,0,1,196,32a51.92,51.92,0,0,1,3.49,44.7A49.28,49.28,0,0,1,208,104Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M208.3,75.68A59.74,59.74,0,0,0,202.93,28,8,8,0,0,0,196,24a59.75,59.75,0,0,0-48,24H124A59.75,59.75,0,0,0,76,24a8,8,0,0,0-6.93,4,59.78,59.78,0,0,0-5.38,47.68A58.14,58.14,0,0,0,56,104v8a56.06,56.06,0,0,0,48.44,55.47A39.8,39.8,0,0,0,96,192v8H72a24,24,0,0,1-24-24A40,40,0,0,0,8,136a8,8,0,0,0,0,16,24,24,0,0,1,24,24,40,40,0,0,0,40,40H96v16a8,8,0,0,0,16,0V192a24,24,0,0,1,48,0v40a8,8,0,0,0,16,0V192a39.8,39.8,0,0,0-8.44-24.53A56.06,56.06,0,0,0,216,112v-8A58,58,0,0,0,208.3,75.68ZM200,112a40,40,0,0,1-40,40H112a40,40,0,0,1-40-40v-8a41.74,41.74,0,0,1,6.9-22.48A8,8,0,0,0,80,73.83a43.81,43.81,0,0,1,.79-33.58,43.88,43.88,0,0,1,32.32,20.06A8,8,0,0,0,119.82,64h32.35a8,8,0,0,0,6.74-3.69,43.87,43.87,0,0,1,32.32-20.06A43.81,43.81,0,0,1,192,73.83a8.09,8.09,0,0,0,1,7.65A41.76,41.76,0,0,1,200,104Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,104v8a56.06,56.06,0,0,1-48.44,55.47A39.8,39.8,0,0,1,176,192v40a8,8,0,0,1-8,8H104a8,8,0,0,1-8-8V216H72a40,40,0,0,1-40-40A24,24,0,0,0,8,152a8,8,0,0,1,0-16,40,40,0,0,1,40,40,24,24,0,0,0,24,24H96v-8a39.8,39.8,0,0,1,8.44-24.53A56.06,56.06,0,0,1,56,112v-8a58.14,58.14,0,0,1,7.69-28.32A59.78,59.78,0,0,1,69.07,28,8,8,0,0,1,76,24a59.75,59.75,0,0,1,48,24h24a59.75,59.75,0,0,1,48-24,8,8,0,0,1,6.93,4,59.74,59.74,0,0,1,5.37,47.68A58,58,0,0,1,216,104Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M206.13,75.92A57.79,57.79,0,0,0,201.2,29a6,6,0,0,0-5.2-3,57.77,57.77,0,0,0-47,24H123A57.77,57.77,0,0,0,76,26a6,6,0,0,0-5.2,3,57.79,57.79,0,0,0-4.93,46.92A55.88,55.88,0,0,0,58,104v8a54.06,54.06,0,0,0,50.45,53.87A37.85,37.85,0,0,0,98,192v10H72a26,26,0,0,1-26-26A38,38,0,0,0,8,138a6,6,0,0,0,0,12,26,26,0,0,1,26,26,38,38,0,0,0,38,38H98v18a6,6,0,0,0,12,0V192a26,26,0,0,1,52,0v40a6,6,0,0,0,12,0V192a37.85,37.85,0,0,0-10.45-26.13A54.06,54.06,0,0,0,214,112v-8A55.88,55.88,0,0,0,206.13,75.92ZM202,112a42,42,0,0,1-42,42H112a42,42,0,0,1-42-42v-8a43.86,43.86,0,0,1,7.3-23.69,6,6,0,0,0,.81-5.76,45.85,45.85,0,0,1,1.43-36.42,45.85,45.85,0,0,1,35.23,21.1A6,6,0,0,0,119.83,62h32.34a6,6,0,0,0,5.06-2.76,45.83,45.83,0,0,1,35.23-21.11,45.85,45.85,0,0,1,1.43,36.42,6,6,0,0,0,.79,5.74A43.78,43.78,0,0,1,202,104Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208.31,75.68A59.78,59.78,0,0,0,202.93,28,8,8,0,0,0,196,24a59.75,59.75,0,0,0-48,24H124A59.75,59.75,0,0,0,76,24a8,8,0,0,0-6.93,4,59.78,59.78,0,0,0-5.38,47.68A58.14,58.14,0,0,0,56,104v8a56.06,56.06,0,0,0,48.44,55.47A39.8,39.8,0,0,0,96,192v8H72a24,24,0,0,1-24-24A40,40,0,0,0,8,136a8,8,0,0,0,0,16,24,24,0,0,1,24,24,40,40,0,0,0,40,40H96v16a8,8,0,0,0,16,0V192a24,24,0,0,1,48,0v40a8,8,0,0,0,16,0V192a39.8,39.8,0,0,0-8.44-24.53A56.06,56.06,0,0,0,216,112v-8A58.14,58.14,0,0,0,208.31,75.68ZM200,112a40,40,0,0,1-40,40H112a40,40,0,0,1-40-40v-8a41.74,41.74,0,0,1,6.9-22.48A8,8,0,0,0,80,73.83a43.81,43.81,0,0,1,.79-33.58,43.88,43.88,0,0,1,32.32,20.06A8,8,0,0,0,119.82,64h32.35a8,8,0,0,0,6.74-3.69,43.87,43.87,0,0,1,32.32-20.06A43.81,43.81,0,0,1,192,73.83a8.09,8.09,0,0,0,1,7.65A41.72,41.72,0,0,1,200,104Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M203.94,76.16A55.73,55.73,0,0,0,199.46,30,4,4,0,0,0,196,28a55.78,55.78,0,0,0-46,24H122A55.78,55.78,0,0,0,76,28a4,4,0,0,0-3.46,2,55.73,55.73,0,0,0-4.48,46.16A53.78,53.78,0,0,0,60,104v8a52.06,52.06,0,0,0,52,52h1.41A36,36,0,0,0,100,192v12H72a28,28,0,0,1-28-28A36,36,0,0,0,8,140a4,4,0,0,0,0,8,28,28,0,0,1,28,28,36,36,0,0,0,36,36h28v20a4,4,0,0,0,8,0V192a28,28,0,0,1,56,0v40a4,4,0,0,0,8,0V192a36,36,0,0,0-13.41-28H160a52.06,52.06,0,0,0,52-52v-8A53.78,53.78,0,0,0,203.94,76.16ZM204,112a44.05,44.05,0,0,1-44,44H112a44.05,44.05,0,0,1-44-44v-8a45.76,45.76,0,0,1,7.71-24.89,4,4,0,0,0,.53-3.84,47.82,47.82,0,0,1,2.1-39.21,47.8,47.8,0,0,1,38.12,22.1A4,4,0,0,0,119.83,60h32.34a4,4,0,0,0,3.37-1.84,47.8,47.8,0,0,1,38.12-22.1,47.82,47.82,0,0,1,2.1,39.21,4,4,0,0,0,.53,3.83A45.85,45.85,0,0,1,204,104Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,156h-4V72a28,28,0,0,0-28-28H56A28,28,0,0,0,28,72v84H24a12,12,0,0,0-12,12v24a28,28,0,0,0,28,28H216a28,28,0,0,0,28-28V168A12,12,0,0,0,232,156ZM52,72a4,4,0,0,1,4-4H200a4,4,0,0,1,4,4v84H52ZM220,192a4,4,0,0,1-4,4H40a4,4,0,0,1-4-4V180H220ZM156,96a12,12,0,0,1-12,12H112a12,12,0,0,1,0-24h32A12,12,0,0,1,156,96Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M216,72V176H40V72A16,16,0,0,1,56,56H200A16,16,0,0,1,216,72Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,168h-8V72a24,24,0,0,0-24-24H56A24,24,0,0,0,32,72v96H24a8,8,0,0,0-8,8v16a24,24,0,0,0,24,24H216a24,24,0,0,0,24-24V176A8,8,0,0,0,232,168ZM48,72a8,8,0,0,1,8-8H200a8,8,0,0,1,8,8v96H48ZM224,192a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8v-8H224ZM152,88a8,8,0,0,1-8,8H112a8,8,0,0,1,0-16h32A8,8,0,0,1,152,88Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,168h-8V72a24,24,0,0,0-24-24H56A24,24,0,0,0,32,72v96H24a8,8,0,0,0-8,8v16a24,24,0,0,0,24,24H216a24,24,0,0,0,24-24V176A8,8,0,0,0,232,168ZM112,72h32a8,8,0,0,1,0,16H112a8,8,0,0,1,0-16ZM224,192a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8v-8H224Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,170H222V72a22,22,0,0,0-22-22H56A22,22,0,0,0,34,72v98H24a6,6,0,0,0-6,6v16a22,22,0,0,0,22,22H216a22,22,0,0,0,22-22V176A6,6,0,0,0,232,170ZM46,72A10,10,0,0,1,56,62H200a10,10,0,0,1,10,10v98H46ZM226,192a10,10,0,0,1-10,10H40a10,10,0,0,1-10-10V182H226ZM150,88a6,6,0,0,1-6,6H112a6,6,0,0,1,0-12h32A6,6,0,0,1,150,88Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,168h-8V72a24,24,0,0,0-24-24H56A24,24,0,0,0,32,72v96H24a8,8,0,0,0-8,8v16a24,24,0,0,0,24,24H216a24,24,0,0,0,24-24V176A8,8,0,0,0,232,168ZM48,72a8,8,0,0,1,8-8H200a8,8,0,0,1,8,8v96H48ZM224,192a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8v-8H224ZM152,88a8,8,0,0,1-8,8H112a8,8,0,0,1,0-16h32A8,8,0,0,1,152,88Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,172H220V72a20,20,0,0,0-20-20H56A20,20,0,0,0,36,72V172H24a4,4,0,0,0-4,4v16a20,20,0,0,0,20,20H216a20,20,0,0,0,20-20V176A4,4,0,0,0,232,172ZM44,72A12,12,0,0,1,56,60H200a12,12,0,0,1,12,12V172H44ZM228,192a12,12,0,0,1-12,12H40a12,12,0,0,1-12-12V180H228ZM148,88a4,4,0,0,1-4,4H112a4,4,0,0,1,0-8h32A4,4,0,0,1,148,88Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M228,128a12,12,0,0,1-12,12H40a12,12,0,0,1,0-24H216A12,12,0,0,1,228,128ZM40,76H216a12,12,0,0,0,0-24H40a12,12,0,0,0,0,24ZM216,180H40a12,12,0,0,0,0,24H216a12,12,0,0,0,0-24Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,64V192H40V64Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM40,72H216a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16ZM216,184H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM192,184H64a8,8,0,0,1,0-16H192a8,8,0,0,1,0,16Zm0-48H64a8,8,0,0,1,0-16H192a8,8,0,0,1,0,16Zm0-48H64a8,8,0,0,1,0-16H192a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M222,128a6,6,0,0,1-6,6H40a6,6,0,0,1,0-12H216A6,6,0,0,1,222,128ZM40,70H216a6,6,0,0,0,0-12H40a6,6,0,0,0,0,12ZM216,186H40a6,6,0,0,0,0,12H216a6,6,0,0,0,0-12Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM40,72H216a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16ZM216,184H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M220,128a4,4,0,0,1-4,4H40a4,4,0,0,1,0-8H216A4,4,0,0,1,220,128ZM40,68H216a4,4,0,0,0,0-8H40a4,4,0,0,0,0,8ZM216,188H40a4,4,0,0,0,0,8H216a4,4,0,0,0,0-8Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M76,64A12,12,0,0,1,88,52H216a12,12,0,0,1,0,24H88A12,12,0,0,1,76,64Zm140,52H88a12,12,0,0,0,0,24H216a12,12,0,0,0,0-24Zm0,64H88a12,12,0,0,0,0,24H216a12,12,0,0,0,0-24ZM44,112a16,16,0,1,0,16,16A16,16,0,0,0,44,112Zm0-64A16,16,0,1,0,60,64,16,16,0,0,0,44,48Zm0,128a16,16,0,1,0,16,16A16,16,0,0,0,44,176Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,64V192H88V64Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M80,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H88A8,8,0,0,1,80,64Zm136,56H88a8,8,0,1,0,0,16H216a8,8,0,0,0,0-16Zm0,64H88a8,8,0,1,0,0,16H216a8,8,0,0,0,0-16ZM44,52A12,12,0,1,0,56,64,12,12,0,0,0,44,52Zm0,64a12,12,0,1,0,12,12A12,12,0,0,0,44,116Zm0,64a12,12,0,1,0,12,12A12,12,0,0,0,44,180Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM68,188a12,12,0,1,1,12-12A12,12,0,0,1,68,188Zm0-48a12,12,0,1,1,12-12A12,12,0,0,1,68,140Zm0-48A12,12,0,1,1,80,80,12,12,0,0,1,68,92Zm124,92H104a8,8,0,0,1,0-16h88a8,8,0,0,1,0,16Zm0-48H104a8,8,0,0,1,0-16h88a8,8,0,0,1,0,16Zm0-48H104a8,8,0,0,1,0-16h88a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M82,64a6,6,0,0,1,6-6H216a6,6,0,0,1,0,12H88A6,6,0,0,1,82,64Zm134,58H88a6,6,0,0,0,0,12H216a6,6,0,0,0,0-12Zm0,64H88a6,6,0,0,0,0,12H216a6,6,0,0,0,0-12ZM44,54A10,10,0,1,0,54,64,10,10,0,0,0,44,54Zm0,128a10,10,0,1,0,10,10A10,10,0,0,0,44,182Zm0-64a10,10,0,1,0,10,10A10,10,0,0,0,44,118Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M80,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H88A8,8,0,0,1,80,64Zm136,56H88a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Zm0,64H88a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16ZM44,52A12,12,0,1,0,56,64,12,12,0,0,0,44,52Zm0,64a12,12,0,1,0,12,12A12,12,0,0,0,44,116Zm0,64a12,12,0,1,0,12,12A12,12,0,0,0,44,180Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M84,64a4,4,0,0,1,4-4H216a4,4,0,0,1,0,8H88A4,4,0,0,1,84,64Zm132,60H88a4,4,0,0,0,0,8H216a4,4,0,0,0,0-8Zm0,64H88a4,4,0,0,0,0,8H216a4,4,0,0,0,0-8ZM44,120a8,8,0,1,0,8,8A8,8,0,0,0,44,120Zm0-64a8,8,0,1,0,8,8A8,8,0,0,0,44,56Zm0,128a8,8,0,1,0,8,8A8,8,0,0,0,44,184Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M28,64A12,12,0,0,1,40,52H216a12,12,0,0,1,0,24H40A12,12,0,0,1,28,64Zm12,76h64a12,12,0,0,0,0-24H40a12,12,0,0,0,0,24Zm80,40H40a12,12,0,0,0,0,24h80a12,12,0,0,0,0-24Zm120.49,20.49a12,12,0,0,1-17,0l-18.08-18.08a44,44,0,1,1,17-17l18.08,18.07A12,12,0,0,1,240.49,200.49ZM184,164a20,20,0,1,0-20-20A20,20,0,0,0,184,164Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,144a32,32,0,1,1-32-32A32,32,0,0,1,216,144Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M32,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H40A8,8,0,0,1,32,64Zm8,72h72a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16Zm88,48H40a8,8,0,0,0,0,16h88a8,8,0,0,0,0-16Zm109.66,13.66a8,8,0,0,1-11.32,0L206,177.36A40,40,0,1,1,217.36,166l20.3,20.3A8,8,0,0,1,237.66,197.66ZM184,168a24,24,0,1,0-24-24A24,24,0,0,0,184,168Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M32,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H40A8,8,0,0,1,32,64Zm8,72h72a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16Zm88,48H40a8,8,0,0,0,0,16h88a8,8,0,0,0,0-16Zm109.66,2.34L217.36,166A40,40,0,1,0,206,177.36l20.3,20.3a8,8,0,0,0,11.32-11.32Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M34,64a6,6,0,0,1,6-6H216a6,6,0,0,1,0,12H40A6,6,0,0,1,34,64Zm6,70h72a6,6,0,0,0,0-12H40a6,6,0,0,0,0,12Zm88,52H40a6,6,0,0,0,0,12h88a6,6,0,0,0,0-12Zm108.24,10.24a6,6,0,0,1-8.48,0l-21.49-21.48a38.06,38.06,0,1,1,8.49-8.49l21.48,21.49A6,6,0,0,1,236.24,196.24ZM184,170a26,26,0,1,0-26-26A26,26,0,0,0,184,170Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M32,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H40A8,8,0,0,1,32,64Zm8,72h72a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16Zm88,48H40a8,8,0,0,0,0,16h88a8,8,0,0,0,0-16Zm109.66,13.66a8,8,0,0,1-11.32,0L206,177.36A40,40,0,1,1,217.36,166l20.3,20.3A8,8,0,0,1,237.66,197.66ZM184,168a24,24,0,1,0-24-24A24,24,0,0,0,184,168Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M36,64a4,4,0,0,1,4-4H216a4,4,0,0,1,0,8H40A4,4,0,0,1,36,64Zm4,68h72a4,4,0,0,0,0-8H40a4,4,0,0,0,0,8Zm88,56H40a4,4,0,0,0,0,8h88a4,4,0,0,0,0-8Zm106.83,6.83a4,4,0,0,1-5.66,0l-22.72-22.72a36.06,36.06,0,1,1,5.66-5.66l22.72,22.72A4,4,0,0,1,234.83,194.83ZM184,172a28,28,0,1,0-28-28A28,28,0,0,0,184,172Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M236.37,139.4a12,12,0,0,0-12-3A84.07,84.07,0,0,1,119.6,31.59a12,12,0,0,0-15-15A108.86,108.86,0,0,0,49.69,55.07,108,108,0,0,0,136,228a107.09,107.09,0,0,0,64.93-21.69,108.86,108.86,0,0,0,38.44-54.94A12,12,0,0,0,236.37,139.4Zm-49.88,47.74A84,84,0,0,1,68.86,69.51,84.93,84.93,0,0,1,92.27,48.29Q92,52.13,92,56A108.12,108.12,0,0,0,200,164q3.87,0,7.71-.27A84.79,84.79,0,0,1,186.49,187.14Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M227.89,147.89A96,96,0,1,1,108.11,28.11,96.09,96.09,0,0,0,227.89,147.89Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M233.54,142.23a8,8,0,0,0-8-2,88.08,88.08,0,0,1-109.8-109.8,8,8,0,0,0-10-10,104.84,104.84,0,0,0-52.91,37A104,104,0,0,0,136,224a103.09,103.09,0,0,0,62.52-20.88,104.84,104.84,0,0,0,37-52.91A8,8,0,0,0,233.54,142.23ZM188.9,190.34A88,88,0,0,1,65.66,67.11a89,89,0,0,1,31.4-26A106,106,0,0,0,96,56,104.11,104.11,0,0,0,200,160a106,106,0,0,0,14.92-1.06A89,89,0,0,1,188.9,190.34Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M235.54,150.21a104.84,104.84,0,0,1-37,52.91A104,104,0,0,1,32,120,103.09,103.09,0,0,1,52.88,57.48a104.84,104.84,0,0,1,52.91-37,8,8,0,0,1,10,10,88.08,88.08,0,0,0,109.8,109.8,8,8,0,0,1,10,10Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M232.13,143.64a6,6,0,0,0-6-1.49A90.07,90.07,0,0,1,113.86,29.85a6,6,0,0,0-7.49-7.48A102.88,102.88,0,0,0,54.48,58.68,102,102,0,0,0,197.32,201.52a102.88,102.88,0,0,0,36.31-51.89A6,6,0,0,0,232.13,143.64Zm-42,48.29a90,90,0,0,1-126-126A90.9,90.9,0,0,1,99.65,37.66,102.06,102.06,0,0,0,218.34,156.35,90.9,90.9,0,0,1,190.1,191.93Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M233.54,142.23a8,8,0,0,0-8-2,88.08,88.08,0,0,1-109.8-109.8,8,8,0,0,0-10-10,104.84,104.84,0,0,0-52.91,37A104,104,0,0,0,136,224a103.09,103.09,0,0,0,62.52-20.88,104.84,104.84,0,0,0,37-52.91A8,8,0,0,0,233.54,142.23ZM188.9,190.34A88,88,0,0,1,65.66,67.11a89,89,0,0,1,31.4-26A106,106,0,0,0,96,56,104.11,104.11,0,0,0,200,160a106,106,0,0,0,14.92-1.06A89,89,0,0,1,188.9,190.34Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M230.72,145.06a4,4,0,0,0-4-1A92.08,92.08,0,0,1,111.94,29.27a4,4,0,0,0-5-5A100.78,100.78,0,0,0,56.08,59.88a100,100,0,0,0,140,140,100.78,100.78,0,0,0,35.59-50.87A4,4,0,0,0,230.72,145.06ZM191.3,193.53A92,92,0,0,1,62.47,64.7a93,93,0,0,1,39.88-30.35,100.09,100.09,0,0,0,119.3,119.3A93,93,0,0,1,191.3,193.53Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M212.48,136.49l-82.06,82a60,60,0,0,1-84.85-84.88l98.16-97.89a40,40,0,0,1,56.56,56.59l-.17.16-95.8,92.22a12,12,0,1,1-16.64-17.3l95.71-92.12a16,16,0,0,0-22.7-22.56L62.53,150.57a36,36,0,0,0,50.93,50.91l82.06-82a12,12,0,0,1,17,17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M180.75,104.75,204,128l-82.06,81.94a48,48,0,0,1-67.88-67.88L153.37,41.37a32,32,0,0,1,45.26,45.26Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M209.66,122.34a8,8,0,0,1,0,11.32l-82.05,82a56,56,0,0,1-79.2-79.21L147.67,35.73a40,40,0,1,1,56.61,56.55L105,193A24,24,0,1,1,71,159L154.3,74.38A8,8,0,1,1,165.7,85.6L82.39,170.31a8,8,0,1,0,11.27,11.36L192.93,81A24,24,0,1,0,159,47L59.76,147.68a40,40,0,1,0,56.53,56.62l82.06-82A8,8,0,0,1,209.66,122.34Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm37.66,50.34a8,8,0,0,0-11.32,0L87.09,143A24,24,0,1,0,121,177l49.32-50.32a8,8,0,1,1,11.42,11.2l-49.37,50.38a40,40,0,1,1-56.62-56.51L143,63.09A24,24,0,1,1,177,97L109.71,165.6a8,8,0,1,1-11.42-11.2L165.6,85.71a8,8,0,0,0,.06-11.37Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208.25,123.76a6,6,0,0,1,0,8.49l-82.06,82a54,54,0,0,1-76.36-76.39L149.1,37.14a38,38,0,1,1,53.77,53.72L103.59,191.54a22,22,0,1,1-31.15-31.09l83.28-84.67a6,6,0,0,1,8.56,8.42L81,168.91a10,10,0,1,0,14.11,14.18L194.35,82.4a26,26,0,1,0-36.74-36.8L58.33,146.28a42,42,0,1,0,59.37,59.44l82.06-82A6,6,0,0,1,208.25,123.76Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M209.66,122.34a8,8,0,0,1,0,11.32l-82.05,82a56,56,0,0,1-79.2-79.21L147.67,35.73a40,40,0,1,1,56.61,56.55L105,193A24,24,0,1,1,71,159L154.3,74.38A8,8,0,1,1,165.7,85.6L82.39,170.31a8,8,0,1,0,11.27,11.36L192.93,81A24,24,0,1,0,159,47L59.76,147.68a40,40,0,1,0,56.53,56.62l82.06-82A8,8,0,0,1,209.66,122.34Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M206.83,125.17a4,4,0,0,1,0,5.66l-82.06,82a52,52,0,0,1-73.54-73.55L150.52,38.55a36,36,0,1,1,50.94,50.9l-99.3,100.69a20,20,0,1,1-28.3-28.27l83.29-84.68a4,4,0,1,1,5.7,5.61L79.54,167.5a12,12,0,1,0,16.95,17L195.78,83.81A28,28,0,1,0,156.2,44.18L56.91,144.87a44,44,0,1,0,62.21,62.26l82-82A4,4,0,0,1,206.83,125.17Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst l = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M240.49,63.51a12,12,0,0,0-17,0L192,95,161,64l31.52-31.51a12,12,0,0,0-17-17L144,47,120.49,23.51a12,12,0,1,0-17,17L107,44,56.89,94.14a44,44,0,0,0,0,62.23l12.88,12.88L23.51,215.51a12,12,0,0,0,17,17l46.26-46.26,12.88,12.88a44,44,0,0,0,62.23,0L212,149l3.51,3.52a12,12,0,0,0,17-17L209,112l31.52-31.51A12,12,0,0,0,240.49,63.51Zm-95.6,118.63a20,20,0,0,1-28.29,0L73.86,139.4a20,20,0,0,1,0-28.29L124,61l71,71Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M212,132l-58.63,58.63a32,32,0,0,1-45.25,0L65.37,147.88a32,32,0,0,1,0-45.25L124,44Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M237.66,66.34a8,8,0,0,0-11.32,0L192,100.69,155.31,64l34.35-34.34a8,8,0,1,0-11.32-11.32L144,52.69,117.66,26.34a8,8,0,0,0-11.32,11.32L112.69,44l-53,53a40,40,0,0,0,0,56.57l15.71,15.71L26.34,218.34a8,8,0,0,0,11.32,11.32l49.09-49.09,15.71,15.71a40,40,0,0,0,56.57,0l53-53,6.34,6.35a8,8,0,0,0,11.32-11.32L203.31,112l34.35-34.34A8,8,0,0,0,237.66,66.34ZM147.72,185a24,24,0,0,1-33.95,0L71,142.23a24,24,0,0,1,0-33.95l53-53L200.69,132Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M237.66,77.66,203.31,112l26.35,26.34a8,8,0,0,1-11.32,11.32L212,143.31l-53,53a40,40,0,0,1-56.57,0L86.75,180.57,37.66,229.66a8,8,0,0,1-11.32-11.32l49.09-49.09L59.72,153.54a40,40,0,0,1,0-56.57l53-53-6.35-6.34a8,8,0,0,1,11.32-11.32L144,52.69l34.34-34.35a8,8,0,1,1,11.32,11.32L155.31,64,192,100.69l34.34-34.35a8,8,0,0,1,11.32,11.32Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M236.24,67.76a6,6,0,0,0-8.48,0L192,103.51,152.49,64l35.75-35.76a6,6,0,0,0-8.48-8.48L144,55.51,116.24,27.76a6,6,0,1,0-8.48,8.48L115.51,44,61.13,98.38a38,38,0,0,0,0,53.75l17.13,17.12-50.5,50.51a6,6,0,1,0,8.48,8.48l50.51-50.5,17.13,17.13a38,38,0,0,0,53.74,0L212,140.49l7.76,7.75a6,6,0,0,0,8.48-8.48L200.49,112l35.75-35.76A6,6,0,0,0,236.24,67.76ZM149.13,186.38a26,26,0,0,1-36.77,0L69.62,143.64a26,26,0,0,1,0-36.77L124,52.49,203.51,132Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M237.66,66.34a8,8,0,0,0-11.32,0L192,100.69,155.31,64l34.35-34.34a8,8,0,1,0-11.32-11.32L144,52.69,117.66,26.34a8,8,0,0,0-11.32,11.32L112.69,44l-53,53a40,40,0,0,0,0,56.57l15.71,15.71L26.34,218.34a8,8,0,0,0,11.32,11.32l49.09-49.09,15.71,15.71a40,40,0,0,0,56.57,0l53-53,6.34,6.35a8,8,0,0,0,11.32-11.32L203.31,112l34.35-34.34A8,8,0,0,0,237.66,66.34ZM147.72,185a24,24,0,0,1-33.95,0L71,142.23a24,24,0,0,1,0-33.95l53-53L200.69,132Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M234.83,69.17a4,4,0,0,0-5.66,0L192,106.34,149.66,64l37.17-37.17a4,4,0,1,0-5.66-5.66L144,58.34,114.83,29.17a4,4,0,0,0-5.66,5.66L118.34,44,62.54,99.8a36.05,36.05,0,0,0,0,50.91l18.55,18.54L29.17,221.17a4,4,0,0,0,5.66,5.66l51.92-51.92,18.54,18.55a36.06,36.06,0,0,0,50.91,0l55.8-55.8,9.17,9.17a4,4,0,0,0,5.66-5.66L197.66,112l37.17-37.17A4,4,0,0,0,234.83,69.17ZM150.54,187.8a28,28,0,0,1-39.59,0L68.2,145.05a28,28,0,0,1,0-39.59L124,49.66,206.34,132Z\" }))\n ]\n]);\nexport {\n l as default\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M200,36H56A20,20,0,0,0,36,56V200a20,20,0,0,0,20,20H200a20,20,0,0,0,20-20V56A20,20,0,0,0,200,36Zm-4,160H60V60H196Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M208,56V200a8,8,0,0,1-8,8H56a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H200A8,8,0,0,1,208,56Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M200,40H56A16,16,0,0,0,40,56V200a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40Zm0,160H56V56H200V200Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M200,42H56A14,14,0,0,0,42,56V200a14,14,0,0,0,14,14H200a14,14,0,0,0,14-14V56A14,14,0,0,0,200,42Zm2,158a2,2,0,0,1-2,2H56a2,2,0,0,1-2-2V56a2,2,0,0,1,2-2H200a2,2,0,0,1,2,2Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M200,40H56A16,16,0,0,0,40,56V200a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40Zm0,160H56V56H200V200Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M200,44H56A12,12,0,0,0,44,56V200a12,12,0,0,0,12,12H200a12,12,0,0,0,12-12V56A12,12,0,0,0,200,44Zm4,156a4,4,0,0,1-4,4H56a4,4,0,0,1-4-4V56a4,4,0,0,1,4-4H200a4,4,0,0,1,4,4Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M116,36V20a12,12,0,0,1,24,0V36a12,12,0,0,1-24,0Zm80,92a68,68,0,1,1-68-68A68.07,68.07,0,0,1,196,128Zm-24,0a44,44,0,1,0-44,44A44.05,44.05,0,0,0,172,128ZM51.51,68.49a12,12,0,1,0,17-17l-12-12a12,12,0,0,0-17,17Zm0,119-12,12a12,12,0,0,0,17,17l12-12a12,12,0,1,0-17-17ZM196,72a12,12,0,0,0,8.49-3.51l12-12a12,12,0,0,0-17-17l-12,12A12,12,0,0,0,196,72Zm8.49,115.51a12,12,0,0,0-17,17l12,12a12,12,0,0,0,17-17ZM48,128a12,12,0,0,0-12-12H20a12,12,0,0,0,0,24H36A12,12,0,0,0,48,128Zm80,80a12,12,0,0,0-12,12v16a12,12,0,0,0,24,0V220A12,12,0,0,0,128,208Zm108-92H220a12,12,0,0,0,0,24h16a12,12,0,0,0,0-24Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M184,128a56,56,0,1,1-56-56A56,56,0,0,1,184,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm8,24a64,64,0,1,0,64,64A64.07,64.07,0,0,0,128,64ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M122,40V16a6,6,0,0,1,12,0V40a6,6,0,0,1-12,0Zm68,88a62,62,0,1,1-62-62A62.07,62.07,0,0,1,190,128Zm-12,0a50,50,0,1,0-50,50A50.06,50.06,0,0,0,178,128ZM59.76,68.24a6,6,0,1,0,8.48-8.48l-16-16a6,6,0,0,0-8.48,8.48Zm0,119.52-16,16a6,6,0,1,0,8.48,8.48l16-16a6,6,0,1,0-8.48-8.48ZM192,70a6,6,0,0,0,4.24-1.76l16-16a6,6,0,0,0-8.48-8.48l-16,16A6,6,0,0,0,192,70Zm4.24,117.76a6,6,0,0,0-8.48,8.48l16,16a6,6,0,0,0,8.48-8.48ZM46,128a6,6,0,0,0-6-6H16a6,6,0,0,0,0,12H40A6,6,0,0,0,46,128Zm82,82a6,6,0,0,0-6,6v24a6,6,0,0,0,12,0V216A6,6,0,0,0,128,210Zm112-88H216a6,6,0,0,0,0,12h24a6,6,0,0,0,0-12Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M124,40V16a4,4,0,0,1,8,0V40a4,4,0,0,1-8,0Zm64,88a60,60,0,1,1-60-60A60.07,60.07,0,0,1,188,128Zm-8,0a52,52,0,1,0-52,52A52.06,52.06,0,0,0,180,128ZM61.17,66.83a4,4,0,0,0,5.66-5.66l-16-16a4,4,0,0,0-5.66,5.66Zm0,122.34-16,16a4,4,0,0,0,5.66,5.66l16-16a4,4,0,0,0-5.66-5.66ZM192,68a4,4,0,0,0,2.83-1.17l16-16a4,4,0,1,0-5.66-5.66l-16,16A4,4,0,0,0,192,68Zm2.83,121.17a4,4,0,0,0-5.66,5.66l16,16a4,4,0,0,0,5.66-5.66ZM40,124H16a4,4,0,0,0,0,8H40a4,4,0,0,0,0-8Zm88,88a4,4,0,0,0-4,4v24a4,4,0,0,0,8,0V216A4,4,0,0,0,128,212Zm112-88H216a4,4,0,0,0,0,8h24a4,4,0,0,0,0-8Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,64H180V56a28,28,0,0,0-28-28H104A28,28,0,0,0,76,56v8H32A20,20,0,0,0,12,84V192a20,20,0,0,0,20,20H224a20,20,0,0,0,20-20V84A20,20,0,0,0,224,64ZM100,56a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4v8H100ZM220,88v32H196v-4a12,12,0,0,0-24,0v4H84v-4a12,12,0,0,0-24,0v4H36V88ZM36,188V144H60v4a12,12,0,0,0,24,0v-4h88v4a12,12,0,0,0,24,0v-4h24v44Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,120v72a8,8,0,0,1-8,8H32a8,8,0,0,1-8-8V120Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,64H176V56a24,24,0,0,0-24-24H104A24,24,0,0,0,80,56v8H32A16,16,0,0,0,16,80V192a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V80A16,16,0,0,0,224,64ZM96,56a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96ZM32,80H224v32H192v-8a8,8,0,0,0-16,0v8H80v-8a8,8,0,0,0-16,0v8H32ZM224,192H32V128H64v8a8,8,0,0,0,16,0v-8h96v8a8,8,0,0,0,16,0v-8h32v64Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,64H176V56a24,24,0,0,0-24-24H104A24,24,0,0,0,80,56v8H32A16,16,0,0,0,16,80v28a4,4,0,0,0,4,4H64V96.27A8.17,8.17,0,0,1,71.47,88,8,8,0,0,1,80,96v16h96V96.27A8.17,8.17,0,0,1,183.47,88,8,8,0,0,1,192,96v16h44a4,4,0,0,0,4-4V80A16,16,0,0,0,224,64Zm-64,0H96V56a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8Zm80,68v60a16,16,0,0,1-16,16H32a16,16,0,0,1-16-16V132a4,4,0,0,1,4-4H64v16a8,8,0,0,0,8.53,8A8.17,8.17,0,0,0,80,143.73V128h96v16a8,8,0,0,0,8.53,8,8.17,8.17,0,0,0,7.47-8.25V128h44A4,4,0,0,1,240,132Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,66H174V56a22,22,0,0,0-22-22H104A22,22,0,0,0,82,56V66H32A14,14,0,0,0,18,80V192a14,14,0,0,0,14,14H224a14,14,0,0,0,14-14V80A14,14,0,0,0,224,66ZM94,56a10,10,0,0,1,10-10h48a10,10,0,0,1,10,10V66H94ZM32,78H224a2,2,0,0,1,2,2v34H190V104a6,6,0,0,0-12,0v10H78V104a6,6,0,0,0-12,0v10H30V80A2,2,0,0,1,32,78ZM224,194H32a2,2,0,0,1-2-2V126H66v10a6,6,0,0,0,12,0V126H178v10a6,6,0,0,0,12,0V126h36v66A2,2,0,0,1,224,194Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,64H176V56a24,24,0,0,0-24-24H104A24,24,0,0,0,80,56v8H32A16,16,0,0,0,16,80V192a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V80A16,16,0,0,0,224,64ZM96,56a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96ZM224,80v32H192v-8a8,8,0,0,0-16,0v8H80v-8a8,8,0,0,0-16,0v8H32V80Zm0,112H32V128H64v8a8,8,0,0,0,16,0v-8h96v8a8,8,0,0,0,16,0v-8h32v64Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,68H172V56a20,20,0,0,0-20-20H104A20,20,0,0,0,84,56V68H32A12,12,0,0,0,20,80V192a12,12,0,0,0,12,12H224a12,12,0,0,0,12-12V80A12,12,0,0,0,224,68ZM92,56a12,12,0,0,1,12-12h48a12,12,0,0,1,12,12V68H92ZM32,76H224a4,4,0,0,1,4,4v36H188V104a4,4,0,0,0-8,0v12H76V104a4,4,0,0,0-8,0v12H28V80A4,4,0,0,1,32,76ZM224,196H32a4,4,0,0,1-4-4V124H68v12a4,4,0,0,0,8,0V124H180v12a4,4,0,0,0,8,0V124h40v68A4,4,0,0,1,224,196Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208.49,191.51a12,12,0,0,1-17,17L128,145,64.49,208.49a12,12,0,0,1-17-17L111,128,47.51,64.49a12,12,0,0,1,17-17L128,111l63.51-63.52a12,12,0,0,1,17,17L145,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM181.66,170.34a8,8,0,0,1-11.32,11.32L128,139.31,85.66,181.66a8,8,0,0,1-11.32-11.32L116.69,128,74.34,85.66A8,8,0,0,1,85.66,74.34L128,116.69l42.34-42.35a8,8,0,0,1,11.32,11.32L139.31,128Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M204.24,195.76a6,6,0,1,1-8.48,8.48L128,136.49,60.24,204.24a6,6,0,0,1-8.48-8.48L119.51,128,51.76,60.24a6,6,0,0,1,8.48-8.48L128,119.51l67.76-67.75a6,6,0,0,1,8.48,8.48L136.49,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M202.83,197.17a4,4,0,0,1-5.66,5.66L128,133.66,58.83,202.83a4,4,0,0,1-5.66-5.66L122.34,128,53.17,58.83a4,4,0,0,1,5.66-5.66L128,122.34l69.17-69.17a4,4,0,1,1,5.66,5.66L133.66,128Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport a from \"../defs/Archive.es.js\";\nconst o = e.forwardRef((r, c) => /* @__PURE__ */ e.createElement(t, { ref: c, ...r, weights: a }));\no.displayName = \"ArchiveIcon\";\nconst s = o;\nexport {\n s as Archive,\n o as ArchiveIcon\n};\n","import * as o from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport m from \"../defs/ArrowUp.es.js\";\nconst r = o.forwardRef((e, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...e, weights: m }));\nr.displayName = \"ArrowUpIcon\";\nconst s = r;\nexport {\n s as ArrowUp,\n r as ArrowUpIcon\n};\n","import * as o from \"react\";\nimport n from \"../lib/IconBase.es.js\";\nimport a from \"../defs/BookOpenText.es.js\";\nconst e = o.forwardRef((t, r) => /* @__PURE__ */ o.createElement(n, { ref: r, ...t, weights: a }));\ne.displayName = \"BookOpenTextIcon\";\nconst c = e;\nexport {\n c as BookOpenText,\n e as BookOpenTextIcon\n};\n","import * as o from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport a from \"../defs/Browser.es.js\";\nconst r = o.forwardRef((e, s) => /* @__PURE__ */ o.createElement(t, { ref: s, ...e, weights: a }));\nr.displayName = \"BrowserIcon\";\nconst n = r;\nexport {\n n as Browser,\n r as BrowserIcon\n};\n","import * as e from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport m from \"../defs/Cube.es.js\";\nconst o = e.forwardRef((r, t) => /* @__PURE__ */ e.createElement(a, { ref: t, ...r, weights: m }));\no.displayName = \"CubeIcon\";\nconst n = o;\nexport {\n n as Cube,\n o as CubeIcon\n};\n","import * as a from \"react\";\nimport r from \"../lib/IconBase.es.js\";\nimport s from \"../defs/Database.es.js\";\nconst e = a.forwardRef((o, t) => /* @__PURE__ */ a.createElement(r, { ref: t, ...o, weights: s }));\ne.displayName = \"DatabaseIcon\";\nconst n = e;\nexport {\n n as Database,\n e as DatabaseIcon\n};\n","import * as o from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport m from \"../defs/FlowArrow.es.js\";\nconst r = o.forwardRef((e, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...e, weights: m }));\nr.displayName = \"FlowArrowIcon\";\nconst s = r;\nexport {\n s as FlowArrow,\n r as FlowArrowIcon\n};\n","import * as e from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport m from \"../defs/Gauge.es.js\";\nconst o = e.forwardRef((a, r) => /* @__PURE__ */ e.createElement(t, { ref: r, ...a, weights: m }));\no.displayName = \"GaugeIcon\";\nconst n = o;\nexport {\n n as Gauge,\n o as GaugeIcon\n};\n","import * as o from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport i from \"../defs/GithubLogo.es.js\";\nconst t = o.forwardRef((e, r) => /* @__PURE__ */ o.createElement(a, { ref: r, ...e, weights: i }));\nt.displayName = \"GithubLogoIcon\";\nconst s = t;\nexport {\n s as GithubLogo,\n t as GithubLogoIcon\n};\n","import * as o from \"react\";\nimport e from \"../lib/IconBase.es.js\";\nimport r from \"../defs/Laptop.es.js\";\nconst t = o.forwardRef((a, p) => /* @__PURE__ */ o.createElement(e, { ref: p, ...a, weights: r }));\nt.displayName = \"LaptopIcon\";\nconst s = t;\nexport {\n s as Laptop,\n t as LaptopIcon\n};\n","import * as o from \"react\";\nimport s from \"../lib/IconBase.es.js\";\nimport a from \"../defs/List.es.js\";\nconst t = o.forwardRef((e, r) => /* @__PURE__ */ o.createElement(s, { ref: r, ...e, weights: a }));\nt.displayName = \"ListIcon\";\nconst c = t;\nexport {\n c as List,\n t as ListIcon\n};\n","import * as t from \"react\";\nimport r from \"../lib/IconBase.es.js\";\nimport a from \"../defs/ListBullets.es.js\";\nconst e = t.forwardRef((o, s) => /* @__PURE__ */ t.createElement(r, { ref: s, ...o, weights: a }));\ne.displayName = \"ListBulletsIcon\";\nconst m = e;\nexport {\n m as ListBullets,\n e as ListBulletsIcon\n};\n","import * as s from \"react\";\nimport t from \"../lib/IconBase.es.js\";\nimport n from \"../defs/ListMagnifyingGlass.es.js\";\nconst a = s.forwardRef((i, o) => /* @__PURE__ */ s.createElement(t, { ref: o, ...i, weights: n }));\na.displayName = \"ListMagnifyingGlassIcon\";\nconst f = a;\nexport {\n f as ListMagnifyingGlass,\n a as ListMagnifyingGlassIcon\n};\n","import * as o from \"react\";\nimport n from \"../lib/IconBase.es.js\";\nimport a from \"../defs/Moon.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(n, { ref: t, ...r, weights: a }));\ne.displayName = \"MoonIcon\";\nconst s = e;\nexport {\n s as Moon,\n e as MoonIcon\n};\n","import * as e from \"react\";\nimport p from \"../lib/IconBase.es.js\";\nimport c from \"../defs/Paperclip.es.js\";\nconst o = e.forwardRef((r, a) => /* @__PURE__ */ e.createElement(p, { ref: a, ...r, weights: c }));\no.displayName = \"PaperclipIcon\";\nconst m = o;\nexport {\n m as Paperclip,\n o as PaperclipIcon\n};\n","import * as o from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport m from \"../defs/Plug.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: m }));\ne.displayName = \"PlugIcon\";\nconst n = e;\nexport {\n n as Plug,\n e as PlugIcon\n};\n","import * as o from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport m from \"../defs/Stop.es.js\";\nconst t = o.forwardRef((e, r) => /* @__PURE__ */ o.createElement(a, { ref: r, ...e, weights: m }));\nt.displayName = \"StopIcon\";\nconst s = t;\nexport {\n s as Stop,\n t as StopIcon\n};\n","import * as o from \"react\";\nimport n from \"../lib/IconBase.es.js\";\nimport a from \"../defs/Sun.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(n, { ref: t, ...r, weights: a }));\ne.displayName = \"SunIcon\";\nconst s = e;\nexport {\n s as Sun,\n e as SunIcon\n};\n","import * as o from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport m from \"../defs/Toolbox.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: m }));\ne.displayName = \"ToolboxIcon\";\nconst n = e;\nexport {\n n as Toolbox,\n e as ToolboxIcon\n};\n","import * as o from \"react\";\nimport a from \"../lib/IconBase.es.js\";\nimport m from \"../defs/X.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: m }));\ne.displayName = \"XIcon\";\nconst n = e;\nexport {\n n as X,\n e as XIcon\n};\n","export function AnviaLensLogo({ markClassName }: { markClassName?: string }) {\n return (\n <span className=\"flex min-w-0 items-center gap-1.5\">\n <svg\n aria-hidden=\"true\"\n className={`size-6 shrink-0 ${markClassName ?? \"text-[#2BF563]\"}`}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 2.5c.58 5.17 4.33 8.92 9.5 9.5-5.17.58-8.92 4.33-9.5 9.5-.58-5.17-4.33-8.92-9.5-9.5 5.17-.58 8.92-4.33 9.5-9.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n </span>\n );\n}\n","import type { Icon } from \"@phosphor-icons/react\";\nimport {\n BookOpenText,\n Chat,\n Cube,\n Database,\n FlowArrow,\n Gauge,\n ListBullets,\n ListMagnifyingGlass,\n Plug,\n Pulse,\n Robot,\n Toolbox,\n Wrench,\n} from \"@phosphor-icons/react\";\nimport { Button } from \"../../components/ui/button\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport { cn } from \"../../lib/utils\";\n\nexport function NavButton(props: {\n active: boolean;\n icon: IconName;\n label: string;\n onClick: () => void;\n}) {\n const Icon = navIcon(props.icon);\n return (\n <Button\n className={cn(\n \"h-8 min-h-8 w-full justify-start gap-2 rounded-lg bg-transparent px-2 text-base font-[400] tracking-[-0.006em] text-sidebar-foreground/65 transition-none hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n props.active && \"bg-sidebar-accent text-sidebar-accent-foreground\",\n )}\n aria-current={props.active ? \"page\" : undefined}\n variant=\"ghost\"\n type=\"button\"\n onClick={props.onClick}\n >\n <StudioIcon icon={Icon} />\n <span>{props.label}</span>\n </Button>\n );\n}\n\nexport type IconName =\n | \"activity\"\n | \"bot\"\n | \"book-open-text\"\n | \"container\"\n | \"database\"\n | \"database-lightning\"\n | \"gauge\"\n | \"list\"\n | \"message\"\n | \"plug\"\n | \"search-list\"\n | \"tools\"\n | \"wrench\"\n | \"workflow\";\n\nexport function navIcon(name: IconName): Icon {\n switch (name) {\n case \"activity\":\n return Pulse;\n case \"bot\":\n return Robot;\n case \"book-open-text\":\n return BookOpenText;\n case \"container\":\n return Cube;\n case \"database\":\n return Database;\n case \"database-lightning\":\n return Database;\n case \"gauge\":\n return Gauge;\n case \"list\":\n return ListBullets;\n case \"message\":\n return Chat;\n case \"plug\":\n return Plug;\n case \"search-list\":\n return ListMagnifyingGlass;\n case \"tools\":\n return Toolbox;\n case \"wrench\":\n return Wrench;\n case \"workflow\":\n return FlowArrow;\n }\n}\n","import { ArrowSquareOut, GithubLogo, Laptop, List, Moon, Sun } from \"@phosphor-icons/react\";\nimport { useState } from \"react\";\nimport type { StudioTheme } from \"../../app-theme\";\nimport { AnviaLensLogo } from \"../../components/anvia-lens-logo\";\nimport { Button } from \"../../components/ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogTitle,\n DialogTrigger,\n} from \"../../components/ui/dialog\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport { knowledgeTabs } from \"../knowledge/knowledge-model\";\nimport { pageTitle } from \"../shared/format\";\nimport { navigationSection } from \"../shared/navigation\";\nimport type { ActivePage, KnowledgeTab } from \"../shared/types\";\nimport { type IconName, NavButton } from \"./nav-button\";\n\nconst knowledgeNavIcons = {\n \"static-context\": \"book-open-text\",\n \"dynamic-context\": \"database-lightning\",\n \"dynamic-tools\": \"tools\",\n \"retrieval-log\": \"search-list\",\n} as const;\n\nexport type StudioNavigationProps = {\n activePage: ActivePage;\n hasAgents: boolean;\n knowledgeEnabled: boolean;\n mcpsEnabled: boolean;\n memoryEnabled: boolean;\n pipelinesEnabled: boolean;\n sandboxesEnabled: boolean;\n sessionsEnabled: boolean;\n status: string;\n statusEnabled: boolean;\n toolsEnabled: boolean;\n tracesEnabled: boolean;\n knowledgeTab: KnowledgeTab;\n onNavigate: (page: ActivePage) => void;\n onNavigateKnowledgeTab: (tab: KnowledgeTab) => void;\n};\n\ntype NavigationItem = {\n label: string;\n icon: IconName;\n page: ActivePage;\n knowledgeTab?: KnowledgeTab;\n};\n\nfunction navigationItems(): NavigationItem[] {\n return [\n {\n page: \"playground\",\n label: \"Chat\",\n icon: \"message\",\n },\n {\n page: \"pipelines\",\n label: \"Pipelines\",\n icon: \"workflow\",\n },\n { page: \"sessions\", label: \"Sessions\", icon: \"list\" },\n { page: \"tracing\", label: \"Traces\", icon: \"activity\" },\n { page: \"agents\", label: \"Studio\", icon: \"bot\" },\n { page: \"tools\", label: \"Tools\", icon: \"wrench\" },\n {\n page: \"sandboxes\",\n label: \"Sandboxes\",\n icon: \"container\",\n },\n { page: \"mcps\", label: \"MCPs\", icon: \"plug\" },\n ...knowledgeTabs.map((tab) => ({\n page: \"knowledge\" as const,\n label: tab.label,\n icon: knowledgeNavIcons[tab.id],\n knowledgeTab: tab.id,\n })),\n { page: \"memory\", label: \"Memory\", icon: \"database\" },\n { page: \"status\", label: \"Status\", icon: \"gauge\" },\n ];\n}\n\nfunction itemIsActive(item: NavigationItem, props: StudioNavigationProps): boolean {\n return (\n item.page === props.activePage &&\n (item.knowledgeTab === undefined || item.knowledgeTab === props.knowledgeTab)\n );\n}\n\nfunction navigateToItem(item: NavigationItem, props: StudioNavigationProps): void {\n if (item.knowledgeTab === undefined) {\n props.onNavigate(item.page);\n } else {\n props.onNavigateKnowledgeTab(item.knowledgeTab);\n }\n}\n\nexport function StudioRail(props: StudioNavigationProps) {\n return (\n <aside\n aria-label=\"Anvia Studio\"\n className=\"flex h-[100dvh] w-14 shrink-0 flex-col border-r border-sidebar-border bg-sidebar text-sidebar-foreground\"\n >\n <div className=\"flex shrink-0 justify-center p-2\">\n <button\n className=\"flex size-10 items-center justify-center rounded-lg outline-none transition-colors hover:bg-sidebar-accent focus-visible:bg-sidebar-accent\"\n type=\"button\"\n aria-label=\"Open Chat\"\n title=\"Anvia Studio\"\n onClick={() => props.onNavigate(\"playground\")}\n >\n <span className=\"grid size-8 place-items-center rounded-md border border-[#2BF563] bg-[#2BF563]\">\n <AnviaLensLogo markClassName=\"text-black\" />\n </span>\n </button>\n </div>\n <span className=\"sr-only\" aria-live=\"polite\">\n {props.status}\n </span>\n </aside>\n );\n}\n\nexport function StudioSidebar(props: StudioNavigationProps) {\n const items = navigationItems();\n const workspaceItems = items.filter((item) => navigationSection(item.page) === \"workspace\");\n const inspectItems = items.filter((item) => navigationSection(item.page) === \"inspect\");\n\n return (\n <aside className=\"hidden h-[100dvh] w-64 min-h-0 shrink-0 flex-col overflow-hidden border-r border-sidebar-border bg-sidebar text-sidebar-foreground lg:flex\">\n <div className=\"min-h-0 flex-1 overflow-y-auto py-2\">\n <nav className=\"grid gap-1 px-2\" aria-label=\"Workspace\">\n {workspaceItems.map((item) => (\n <NavButton\n active={itemIsActive(item, props)}\n icon={item.icon}\n key={`${item.page}-${item.knowledgeTab ?? \"page\"}`}\n label={item.label}\n onClick={() => navigateToItem(item, props)}\n />\n ))}\n </nav>\n <hr className=\"my-2 border-sidebar-border\" />\n <nav className=\"grid gap-1 px-2\" aria-label=\"Inspect\">\n {inspectItems.map((item) => (\n <NavButton\n active={itemIsActive(item, props)}\n icon={item.icon}\n key={`${item.page}-${item.knowledgeTab ?? \"page\"}`}\n label={item.label}\n onClick={() => navigateToItem(item, props)}\n />\n ))}\n </nav>\n </div>\n <div className=\"shrink-0 p-2\">\n <a\n className=\"mb-2 flex items-center gap-2 rounded-lg border border-sidebar-border bg-sidebar-accent/40 p-3 transition-colors hover:bg-sidebar-accent\"\n href=\"https://github.com/anvia-hq/anvia\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <StudioIcon icon={GithubLogo} aria-hidden=\"true\" className=\"size-5 shrink-0\" />\n <span className=\"grid min-w-0\">\n <span className=\"truncate text-xs font-medium\">Enjoying Anvia Studio?</span>\n <span className=\"truncate text-xs text-muted-foreground\">Star us on GitHub</span>\n </span>\n </a>\n <SidebarLink href=\"https://docs.anvia.dev\" label=\"Anvia Docs\" />\n </div>\n </aside>\n );\n}\n\nexport function StudioHeader(props: {\n activePage: ActivePage;\n knowledgeTab: KnowledgeTab;\n navigation: StudioNavigationProps;\n selectedAgentLabel: string;\n sessionsEnabled: boolean;\n theme: StudioTheme;\n onNewSession: () => void;\n onToggleTheme: () => void;\n}) {\n const section = navigationSection(props.activePage);\n const pageLabel =\n props.activePage === \"playground\"\n ? \"Chat\"\n : props.activePage === \"knowledge\"\n ? (knowledgeTabs.find((tab) => tab.id === props.knowledgeTab)?.label ?? \"Knowledge\")\n : pageTitle(props.activePage, undefined);\n const nextTheme =\n props.theme === \"system\" ? \"light\" : props.theme === \"light\" ? \"dark\" : \"system\";\n const themeLabel = `Theme: ${props.theme}. Switch to ${nextTheme} theme`;\n const themeIcon = props.theme === \"system\" ? Laptop : props.theme === \"light\" ? Sun : Moon;\n\n return (\n <header className=\"flex h-14 shrink-0 items-center gap-3 border-b bg-background px-4\">\n <StudioMobileNavigation {...props.navigation} />\n <nav className=\"flex min-w-0 flex-1 items-center gap-2 text-base\" aria-label=\"Breadcrumb\">\n <span className=\"font-medium\">{section === \"workspace\" ? \"Workspace\" : \"Inspect\"}</span>\n <span className=\"text-muted-foreground\" aria-hidden=\"true\">\n /\n </span>\n <span className=\"truncate text-muted-foreground\">{pageLabel}</span>\n {props.activePage === \"playground\" ? (\n <>\n <span className=\"text-muted-foreground\" aria-hidden=\"true\">\n /\n </span>\n <span className=\"truncate text-muted-foreground\">{props.selectedAgentLabel}</span>\n </>\n ) : null}\n </nav>\n <Button\n aria-label={themeLabel}\n title={themeLabel}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={props.onToggleTheme}\n >\n <StudioIcon icon={themeIcon} aria-hidden=\"true\" />\n </Button>\n <Button type=\"button\" disabled={!props.sessionsEnabled} onClick={props.onNewSession}>\n New session\n </Button>\n </header>\n );\n}\n\nfunction StudioMobileNavigation(props: StudioNavigationProps) {\n const [open, setOpen] = useState(false);\n const items = navigationItems();\n const workspaceItems = items.filter((item) => navigationSection(item.page) === \"workspace\");\n const inspectItems = items.filter((item) => navigationSection(item.page) === \"inspect\");\n const navigate = (item: NavigationItem) => {\n navigateToItem(item, props);\n setOpen(false);\n };\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger asChild>\n <Button\n aria-label=\"Open navigation\"\n className=\"lg:hidden\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n >\n <StudioIcon icon={List} aria-hidden=\"true\" />\n </Button>\n </DialogTrigger>\n <DialogContent className=\"max-h-[calc(100dvh-32px)] gap-0 overflow-y-auto p-0 lg:hidden\">\n <DialogTitle className=\"sr-only\">Studio navigation</DialogTitle>\n <DialogDescription className=\"sr-only\">\n Navigate between Studio workspace and inspection pages.\n </DialogDescription>\n <nav className=\"grid gap-1 p-2\" aria-label=\"Workspace\">\n {workspaceItems.map((item) => (\n <NavButton\n active={itemIsActive(item, props)}\n icon={item.icon}\n key={`${item.page}-${item.knowledgeTab ?? \"page\"}`}\n label={item.label}\n onClick={() => navigate(item)}\n />\n ))}\n </nav>\n <hr className=\"border-sidebar-border\" />\n <nav className=\"grid gap-1 p-2\" aria-label=\"Inspect\">\n {inspectItems.map((item) => (\n <NavButton\n active={itemIsActive(item, props)}\n icon={item.icon}\n key={`${item.page}-${item.knowledgeTab ?? \"page\"}`}\n label={item.label}\n onClick={() => navigate(item)}\n />\n ))}\n </nav>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction SidebarLink(props: { href: string; label: string }) {\n return (\n <a\n className=\"flex h-8 items-center justify-between rounded-lg px-2 text-base font-[450] tracking-[-0.006em] text-sidebar-foreground/65 transition-colors hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\"\n href={props.href}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <span>{props.label}</span>\n <StudioIcon icon={ArrowSquareOut} aria-hidden=\"true\" className=\"size-3.5\" />\n </a>\n );\n}\n","import { Outlet } from \"@tanstack/react-router\";\nimport { Suspense } from \"react\";\nimport { DeleteSessionDialog } from \"../../app-pages\";\nimport { useStudioConsole } from \"../../studio-console-context\";\nimport { StudioHeader, StudioRail, StudioSidebar } from \"./studio-shell\";\n\nexport function StudioConsoleLayout() {\n const studio = useStudioConsole();\n const navigation = {\n activePage: studio.activePage,\n hasAgents: studio.hasAgents,\n knowledgeEnabled: studio.knowledgeEnabled,\n mcpsEnabled: studio.mcpsEnabled,\n memoryEnabled: studio.memoryEnabled,\n pipelinesEnabled: studio.pipelinesEnabled,\n sandboxesEnabled: studio.sandboxesEnabled,\n sessionsEnabled: studio.sessionsEnabled,\n status: studio.status,\n statusEnabled: studio.statusEnabled,\n toolsEnabled: studio.toolsEnabled,\n tracesEnabled: studio.tracesEnabled,\n knowledgeTab: studio.knowledgeTab,\n onNavigate: studio.navigatePage,\n onNavigateKnowledgeTab: studio.navigateKnowledgeTab,\n };\n\n return (\n <div className=\"flex h-[100dvh] min-h-0 overflow-hidden bg-background text-foreground\">\n <StudioRail {...navigation} />\n <StudioSidebar {...navigation} />\n\n <main className=\"grid h-[100dvh] min-w-0 flex-1 grid-rows-[56px_minmax(0,1fr)] overflow-hidden bg-background\">\n <StudioHeader\n activePage={studio.activePage}\n knowledgeTab={studio.knowledgeTab}\n navigation={navigation}\n selectedAgentLabel={\n studio.activePage === \"sandboxes\"\n ? \"Sandboxes\"\n : (studio.selectedAgent?.name ?? studio.selectedAgent?.id ?? \"Agent\")\n }\n sessionsEnabled={studio.sessionsEnabled}\n theme={studio.theme}\n onNewSession={() => studio.startNewChat()}\n onToggleTheme={studio.toggleTheme}\n />\n <Outlet />\n </main>\n\n <Suspense fallback={null}>\n <DeleteSessionDialog\n session={studio.deleteCandidate}\n onOpenChange={(open) => {\n if (!open) {\n studio.setDeleteCandidate(undefined);\n }\n }}\n onConfirm={(session) => {\n void studio.sessions.deleteSession(session).finally(() => {\n studio.setDeleteCandidate(undefined);\n });\n }}\n />\n </Suspense>\n </div>\n );\n}\n","import { useEffect } from \"react\";\nimport type { ActivePage, KnowledgeTab } from \"../modules/shared/types\";\nimport { useStudioConsole } from \"../studio-console-context\";\n\nexport function useActivatedRoute(page: ActivePage) {\n const studio = useStudioConsole();\n const { activateRoute } = studio;\n useEffect(() => {\n activateRoute(page);\n }, [activateRoute, page]);\n return studio;\n}\n\nexport function knowledgeTabFromRoute(tab: string | undefined): KnowledgeTab {\n switch (tab) {\n case \"dynamic-context\":\n case \"dynamic-tools\":\n case \"retrieval-log\":\n case \"static-context\":\n return tab;\n default:\n return \"static-context\";\n }\n}\n","import { Suspense } from \"react\";\nimport { AgentsPage, PageLoading } from \"../app-pages\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function AgentsRoute() {\n const studio = useActivatedRoute(\"agents\");\n return (\n <Suspense fallback={<PageLoading />}>\n <AgentsPage agents={studio.agents} selectedAgentId={studio.selectedAgentId} />\n </Suspense>\n );\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport type {\n StudioAgentMcpsSummary,\n StudioAgentToolsSummary,\n StudioConfig,\n StudioKnowledgeSummary,\n} from \"../../../../types\";\nimport { KnowledgePage, McpsPage, ToolsPage } from \"../../app-pages\";\nimport { errorMessage } from \"../shared/format\";\nimport type { KnowledgeTab } from \"../shared/types\";\n\nexport function ToolsContainer(props: {\n active: boolean;\n agents: StudioConfig[\"agents\"];\n enabled: boolean;\n selectedAgentId: string;\n onError: (message: string) => void;\n}) {\n const [toolsAgentId, setToolsAgentId] = useState(\"\");\n const [tools, setTools] = useState<StudioAgentToolsSummary | undefined>();\n const [toolsLoadState, setToolsLoadState] = useState<\"idle\" | \"loading\">(\"idle\");\n\n const loadTools = useCallback(\n async (agentId: string) => {\n if (!props.enabled || agentId.length === 0) {\n setTools(undefined);\n return;\n }\n\n setToolsLoadState(\"loading\");\n try {\n const response = await fetch(`/agents/${encodeURIComponent(agentId)}/tools`);\n if (!response.ok) {\n throw new Error(`Tools failed with HTTP ${response.status}`);\n }\n setTools((await response.json()) as StudioAgentToolsSummary);\n } catch (loadError) {\n props.onError(errorMessage(loadError));\n setTools(undefined);\n } finally {\n setToolsLoadState(\"idle\");\n }\n },\n [props.enabled, props.onError],\n );\n\n useEffect(() => {\n if (props.active) {\n void loadTools(toolsAgentId || props.selectedAgentId);\n }\n }, [props.active, loadTools, props.selectedAgentId, toolsAgentId]);\n\n return (\n <ToolsPage\n agents={props.agents}\n selectedAgentId={toolsAgentId || props.selectedAgentId}\n summary={tools}\n enabled={props.enabled}\n loading={toolsLoadState === \"loading\"}\n onSelectAgent={(agentId) => {\n setToolsAgentId(agentId);\n void loadTools(agentId);\n }}\n />\n );\n}\n\nexport function McpsContainer(props: {\n active: boolean;\n agents: StudioConfig[\"agents\"];\n enabled: boolean;\n selectedAgentId: string;\n onError: (message: string) => void;\n}) {\n const [mcpsAgentId, setMcpsAgentId] = useState(\"\");\n const [mcps, setMcps] = useState<StudioAgentMcpsSummary | undefined>();\n const [mcpsLoadState, setMcpsLoadState] = useState<\"idle\" | \"loading\">(\"idle\");\n\n const loadMcps = useCallback(\n async (agentId: string) => {\n if (!props.enabled || agentId.length === 0) {\n setMcps(undefined);\n return;\n }\n\n setMcpsLoadState(\"loading\");\n try {\n const response = await fetch(`/agents/${encodeURIComponent(agentId)}/mcps`);\n if (!response.ok) {\n throw new Error(`MCPs failed with HTTP ${response.status}`);\n }\n setMcps((await response.json()) as StudioAgentMcpsSummary);\n } catch (loadError) {\n props.onError(errorMessage(loadError));\n setMcps(undefined);\n } finally {\n setMcpsLoadState(\"idle\");\n }\n },\n [props.enabled, props.onError],\n );\n\n useEffect(() => {\n if (props.active) {\n void loadMcps(mcpsAgentId || props.selectedAgentId);\n }\n }, [props.active, loadMcps, mcpsAgentId, props.selectedAgentId]);\n\n return (\n <McpsPage\n agents={props.agents}\n selectedAgentId={mcpsAgentId || props.selectedAgentId}\n summary={mcps}\n enabled={props.enabled}\n loading={mcpsLoadState === \"loading\"}\n onSelectAgent={(agentId) => {\n setMcpsAgentId(agentId);\n void loadMcps(agentId);\n }}\n />\n );\n}\n\nexport function KnowledgeContainer(props: {\n active: boolean;\n activeTab: KnowledgeTab;\n enabled: boolean;\n onError: (message: string) => void;\n onOpenTrace: (traceId: string) => void;\n}) {\n const [knowledge, setKnowledge] = useState<StudioKnowledgeSummary | undefined>();\n const [knowledgeLoadState, setKnowledgeLoadState] = useState<\"idle\" | \"loading\">(\"idle\");\n\n const loadKnowledge = useCallback(async () => {\n if (!props.enabled) {\n setKnowledge(undefined);\n return;\n }\n\n setKnowledgeLoadState(\"loading\");\n try {\n const response = await fetch(\"/knowledge?limit=25\");\n if (!response.ok) {\n throw new Error(`Knowledge failed with HTTP ${response.status}`);\n }\n setKnowledge((await response.json()) as StudioKnowledgeSummary);\n } catch (loadError) {\n props.onError(errorMessage(loadError));\n } finally {\n setKnowledgeLoadState(\"idle\");\n }\n }, [props.enabled, props.onError]);\n\n useEffect(() => {\n if (props.active) {\n void loadKnowledge();\n }\n }, [props.active, loadKnowledge]);\n\n return (\n <KnowledgePage\n activeTab={props.activeTab}\n enabled={props.enabled}\n summary={knowledge}\n loading={knowledgeLoadState === \"loading\"}\n onOpenTrace={props.onOpenTrace}\n onRefresh={() => void loadKnowledge()}\n />\n );\n}\n","import { useParams } from \"@tanstack/react-router\";\nimport { Suspense, useEffect } from \"react\";\nimport { PageLoading } from \"../app-pages\";\nimport { KnowledgeContainer } from \"../modules/inspectors/inspectors-containers\";\nimport { knowledgeTabFromRoute, useActivatedRoute } from \"./route-helpers\";\n\nexport function KnowledgeRoute() {\n const studio = useActivatedRoute(\"knowledge\");\n const { setKnowledgeTab } = studio;\n const params = useParams({ strict: false }) as { tab?: string };\n const tab = knowledgeTabFromRoute(params.tab);\n\n useEffect(() => {\n setKnowledgeTab(tab);\n }, [setKnowledgeTab, tab]);\n\n return (\n <Suspense fallback={<PageLoading />}>\n <KnowledgeContainer\n active\n activeTab={tab}\n enabled={studio.knowledgeEnabled}\n onError={studio.setError}\n onOpenTrace={studio.traces.selectTrace}\n />\n </Suspense>\n );\n}\n","import { Suspense } from \"react\";\nimport { PageLoading } from \"../app-pages\";\nimport { McpsContainer } from \"../modules/inspectors/inspectors-containers\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function McpsRoute() {\n const studio = useActivatedRoute(\"mcps\");\n return (\n <Suspense fallback={<PageLoading />}>\n <McpsContainer\n active\n agents={studio.agents}\n enabled={studio.mcpsEnabled}\n selectedAgentId={studio.selectedAgent?.id || studio.selectedAgentId}\n onError={studio.setError}\n />\n </Suspense>\n );\n}\n","import { Suspense } from \"react\";\nimport { MemoryPage, PageLoading } from \"../app-pages\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function MemoryRoute() {\n const studio = useActivatedRoute(\"memory\");\n return (\n <Suspense fallback={<PageLoading />}>\n <MemoryPage agents={studio.agents} enabled={studio.memoryEnabled} />\n </Suspense>\n );\n}\n","import { createFetchEventTransport, EventStreamHttpError } from \"@anvia/client/transport\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type {\n StudioConfig,\n StudioPipelineDetail,\n StudioPipelineLogEntry,\n StudioPipelineRunRecord,\n} from \"../../../../types\";\nimport { eventStreamResponseErrorMessage } from \"../../app-errors\";\nimport { isErrorStreamEvent, isPipelineFinalEvent, isPipelineLogEvent } from \"../../app-helpers\";\nimport { errorMessage } from \"../shared/format\";\nimport { nextPaint } from \"../shared/transcript\";\nimport type { RunState } from \"../shared/types\";\n\ntype PipelineRunStreamRequest = {\n endpoint: string;\n body: Record<string, unknown>;\n};\n\nconst pipelineRunStreamTransport = createFetchEventTransport<PipelineRunStreamRequest, unknown>({\n endpoint: ({ request }) => request.endpoint,\n method: \"POST\",\n format: \"jsonl\",\n headers: { \"content-type\": \"application/json\" },\n body: ({ request }) => JSON.stringify(request.body),\n});\n\nexport function usePipelines(props: {\n active: boolean;\n enabled: boolean;\n pipelines: StudioConfig[\"pipelines\"];\n onError: (message: string) => void;\n onStatus: (status: string) => void;\n}) {\n const [selectedPipelineId, setSelectedPipelineId] = useState(\"\");\n const [pipelineDetail, setPipelineDetail] = useState<StudioPipelineDetail | undefined>();\n const [pipelineLogs, setPipelineLogs] = useState<StudioPipelineLogEntry[]>([]);\n const [pipelineRuns, setPipelineRuns] = useState<StudioPipelineRunRecord[]>([]);\n const [pipelineRunInput, setPipelineRunInput] = useState('\"Hello from Studio\"');\n const [pipelineRunOutput, setPipelineRunOutput] = useState(\"\");\n const [activePipelineRunId, setActivePipelineRunId] = useState(\"\");\n const [pipelineDetailLoadState, setPipelineDetailLoadState] = useState<\"idle\" | \"loading\">(\n \"idle\",\n );\n const [pipelineLogLoadState, setPipelineLogLoadState] = useState<\"idle\" | \"loading\">(\"idle\");\n const [pipelineRunLoadState, setPipelineRunLoadState] = useState<\"idle\" | \"loading\">(\"idle\");\n const [pipelineRunState, setPipelineRunState] = useState<RunState>(\"idle\");\n const pipelineDetailRequestRef = useRef(0);\n const pipelineLogRequestRef = useRef(0);\n\n const loadPipelineLogs = useCallback(\n async (pipelineId: string): Promise<StudioPipelineLogEntry[]> => {\n if (!props.enabled || pipelineId.length === 0) {\n pipelineLogRequestRef.current += 1;\n setPipelineLogs([]);\n return [];\n }\n\n const requestId = pipelineLogRequestRef.current + 1;\n pipelineLogRequestRef.current = requestId;\n setPipelineLogLoadState(\"loading\");\n try {\n const params = new URLSearchParams({ limit: \"1000\" });\n const response = await fetch(`/pipelines/${encodeURIComponent(pipelineId)}/logs?${params}`);\n if (!response.ok) {\n throw new Error(`Pipeline logs failed with HTTP ${response.status}`);\n }\n const body = (await response.json()) as { logs: StudioPipelineLogEntry[] };\n if (pipelineLogRequestRef.current === requestId) {\n setPipelineLogs(body.logs);\n }\n return body.logs;\n } catch (loadError) {\n if (pipelineLogRequestRef.current === requestId) {\n props.onError(errorMessage(loadError));\n setPipelineLogs([]);\n }\n return [];\n } finally {\n if (pipelineLogRequestRef.current === requestId) {\n setPipelineLogLoadState(\"idle\");\n }\n }\n },\n [props.enabled, props.onError],\n );\n\n const loadPipelineRuns = useCallback(\n async (pipelineId: string): Promise<StudioPipelineRunRecord[]> => {\n if (!props.enabled || pipelineId.length === 0) {\n setPipelineRuns([]);\n return [];\n }\n\n setPipelineRunLoadState(\"loading\");\n try {\n const params = new URLSearchParams({ limit: \"50\" });\n const response = await fetch(`/pipelines/${encodeURIComponent(pipelineId)}/runs?${params}`);\n if (!response.ok) {\n throw new Error(`Pipeline runs failed with HTTP ${response.status}`);\n }\n const body = (await response.json()) as { runs: StudioPipelineRunRecord[] };\n setPipelineRuns(body.runs);\n return body.runs;\n } catch (loadError) {\n props.onError(errorMessage(loadError));\n setPipelineRuns([]);\n return [];\n } finally {\n setPipelineRunLoadState(\"idle\");\n }\n },\n [props.enabled, props.onError],\n );\n\n const loadPipeline = useCallback(\n async (pipelineId: string) => {\n if (!props.enabled || pipelineId.length === 0) {\n pipelineDetailRequestRef.current += 1;\n setPipelineDetail(undefined);\n setPipelineLogs([]);\n setPipelineRuns([]);\n return;\n }\n\n const requestId = pipelineDetailRequestRef.current + 1;\n pipelineDetailRequestRef.current = requestId;\n setPipelineDetailLoadState(\"loading\");\n props.onError(\"\");\n try {\n const response = await fetch(`/pipelines/${encodeURIComponent(pipelineId)}`);\n if (!response.ok) {\n throw new Error(`Pipeline load failed with HTTP ${response.status}`);\n }\n const detail = (await response.json()) as StudioPipelineDetail;\n if (pipelineDetailRequestRef.current !== requestId) {\n return;\n }\n setSelectedPipelineId(pipelineId);\n setPipelineDetail(detail);\n await Promise.all([loadPipelineLogs(pipelineId), loadPipelineRuns(pipelineId)]);\n } catch (loadError) {\n if (pipelineDetailRequestRef.current === requestId) {\n props.onError(errorMessage(loadError));\n setPipelineDetail(undefined);\n }\n } finally {\n if (pipelineDetailRequestRef.current === requestId) {\n setPipelineDetailLoadState(\"idle\");\n }\n }\n },\n [loadPipelineLogs, loadPipelineRuns, props.enabled, props.onError],\n );\n\n useEffect(() => {\n if (!props.active) {\n return;\n }\n const pipelineId = selectedPipelineId || props.pipelines[0]?.id || \"\";\n if (pipelineId.length > 0) {\n void loadPipeline(pipelineId);\n }\n }, [props.active, props.pipelines, loadPipeline, selectedPipelineId]);\n\n async function consumePipelineRunStream(events: AsyncIterable<unknown>) {\n for await (const event of events) {\n if (isPipelineLogEvent(event)) {\n if (event.log.runId !== undefined) {\n setActivePipelineRunId((current) => current || event.log.runId || \"\");\n }\n appendPipelineLogEntry(event.log);\n await nextPaint();\n continue;\n }\n if (isPipelineFinalEvent(event)) {\n setPipelineRunOutput(formatPipelineOutput(event.output));\n await nextPaint();\n continue;\n }\n if (isErrorStreamEvent(event)) {\n throw new Error(JSON.stringify(event.error));\n }\n }\n }\n\n async function runPipeline() {\n const pipelineId = selectedPipelineId || props.pipelines[0]?.id || \"\";\n if (pipelineId.length === 0 || pipelineRunState === \"running\") {\n return;\n }\n\n let input: unknown;\n try {\n input = JSON.parse(pipelineRunInput);\n } catch {\n props.onError(\"Pipeline input must be valid JSON\");\n return;\n }\n\n setPipelineRunState(\"running\");\n setPipelineRunOutput(\"\");\n setActivePipelineRunId(\"\");\n props.onError(\"\");\n try {\n await consumePipelineRunStream(\n pipelineRunStreamTransport.send({\n request: {\n endpoint: `/pipelines/${encodeURIComponent(pipelineId)}/runs`,\n body: {\n input,\n stream: true,\n metadata: { source: \"anvia-studio\" },\n },\n },\n }),\n );\n await Promise.all([loadPipelineLogs(pipelineId), loadPipelineRuns(pipelineId)]);\n props.onStatus(\"Connected\");\n } catch (runError) {\n props.onError(pipelineStreamErrorMessage(runError, \"Pipeline run failed\"));\n } finally {\n setPipelineRunState(\"idle\");\n }\n }\n\n async function replayPipelineRun(runId: string) {\n const pipelineId = selectedPipelineId || props.pipelines[0]?.id || \"\";\n if (pipelineId.length === 0 || runId.length === 0 || pipelineRunState === \"running\") {\n return;\n }\n\n setPipelineRunState(\"running\");\n setPipelineRunOutput(\"\");\n setActivePipelineRunId(\"\");\n props.onError(\"\");\n try {\n await consumePipelineRunStream(\n pipelineRunStreamTransport.send({\n request: {\n endpoint: `/pipelines/${encodeURIComponent(pipelineId)}/runs/${encodeURIComponent(\n runId,\n )}/replay`,\n body: {\n stream: true,\n metadata: { source: \"anvia-studio\" },\n },\n },\n }),\n );\n await Promise.all([loadPipelineLogs(pipelineId), loadPipelineRuns(pipelineId)]);\n props.onStatus(\"Connected\");\n } catch (runError) {\n props.onError(pipelineStreamErrorMessage(runError, \"Pipeline replay failed\"));\n } finally {\n setPipelineRunState(\"idle\");\n }\n }\n\n function selectPipeline(pipelineId: string) {\n setSelectedPipelineId(pipelineId);\n setPipelineRunOutput(\"\");\n setActivePipelineRunId(\"\");\n void loadPipeline(pipelineId);\n }\n\n function appendPipelineLogEntry(log: StudioPipelineLogEntry) {\n setPipelineLogs((current) => {\n if (current.some((item) => item.id === log.id)) {\n return current;\n }\n return [...current, log].sort((left, right) => left.sequence - right.sequence);\n });\n }\n\n return {\n selectedPipelineId,\n pipelineDetail,\n pipelineLogs,\n pipelineRuns,\n activePipelineRunId,\n pipelineRunInput,\n pipelineRunOutput,\n pipelineDetailLoadState,\n pipelineLogLoadState,\n pipelineRunLoadState,\n pipelineRunState,\n setPipelineRunInput,\n selectPipeline,\n runPipeline,\n replayPipelineRun,\n };\n}\n\nfunction pipelineStreamErrorMessage(error: unknown, label: string): string {\n if (error instanceof EventStreamHttpError) {\n return eventStreamResponseErrorMessage(error, label);\n }\n return errorMessage(error);\n}\n\nfunction formatPipelineOutput(output: unknown): string {\n return typeof output === \"string\" ? output : JSON.stringify(output, null, 2);\n}\n","import type { StudioConfig } from \"../../../../types\";\nimport { PipelinesPage } from \"../../app-pages\";\nimport type { ResolvedStudioTheme } from \"../../app-theme\";\nimport type { PipelineSidebarTab } from \"./pipelines-page\";\nimport { usePipelines } from \"./use-pipelines\";\n\nexport function PipelinesContainer(props: {\n active: boolean;\n enabled: boolean;\n pipelines: StudioConfig[\"pipelines\"];\n theme: ResolvedStudioTheme;\n activeTab: PipelineSidebarTab;\n onError: (message: string) => void;\n onStatus: (status: string) => void;\n onTabChange: (tab: PipelineSidebarTab) => void;\n}) {\n const pipelines = usePipelines({\n active: props.active,\n enabled: props.enabled,\n pipelines: props.pipelines,\n onError: props.onError,\n onStatus: props.onStatus,\n });\n\n return (\n <PipelinesPage\n pipelines={props.pipelines}\n selectedPipelineId={pipelines.selectedPipelineId}\n detail={pipelines.pipelineDetail}\n logs={pipelines.pipelineLogs}\n activeRunId={pipelines.activePipelineRunId}\n runs={pipelines.pipelineRuns}\n enabled={props.enabled}\n detailLoading={pipelines.pipelineDetailLoadState === \"loading\"}\n logsLoading={pipelines.pipelineLogLoadState === \"loading\"}\n runsLoading={pipelines.pipelineRunLoadState === \"loading\"}\n runState={pipelines.pipelineRunState}\n runInput={pipelines.pipelineRunInput}\n runOutput={pipelines.pipelineRunOutput}\n theme={props.theme}\n activeTab={props.activeTab}\n onSelectPipeline={pipelines.selectPipeline}\n onRunInputChange={pipelines.setPipelineRunInput}\n onRun={() => void pipelines.runPipeline()}\n onTabChange={props.onTabChange}\n onReplayRun={(runId) => void pipelines.replayPipelineRun(runId)}\n />\n );\n}\n","import { Suspense, useCallback, useEffect, useState } from \"react\";\nimport { PageLoading } from \"../app-pages\";\nimport { PipelinesContainer } from \"../modules/pipelines/pipelines-container\";\nimport type { PipelineSidebarTab } from \"../modules/pipelines/pipelines-page\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function PipelinesRoute() {\n const studio = useActivatedRoute(\"pipelines\");\n const [activeTab, setActiveTab] = useState<PipelineSidebarTab>(() => tabFromLocation());\n\n useEffect(() => {\n function syncTabFromLocation() {\n setActiveTab(tabFromLocation());\n }\n\n window.addEventListener(\"popstate\", syncTabFromLocation);\n return () => window.removeEventListener(\"popstate\", syncTabFromLocation);\n }, []);\n\n const updateTab = useCallback((tab: PipelineSidebarTab) => {\n setActiveTab(tab);\n const url = new URL(window.location.href);\n url.searchParams.set(\"tab\", tab);\n const nextUrl = `${url.pathname}${url.search}${url.hash}`;\n if (`${window.location.pathname}${window.location.search}${window.location.hash}` !== nextUrl) {\n window.history.pushState(null, \"\", nextUrl);\n }\n }, []);\n\n return (\n <Suspense fallback={<PageLoading />}>\n <PipelinesContainer\n active\n activeTab={activeTab}\n pipelines={studio.pipelines}\n enabled={studio.pipelinesEnabled}\n theme={studio.resolvedTheme}\n onError={studio.setError}\n onStatus={studio.setStatus}\n onTabChange={updateTab}\n />\n </Suspense>\n );\n}\n\nfunction tabFromLocation(): PipelineSidebarTab {\n return pipelineSidebarTab(window.location.search);\n}\n\nfunction pipelineSidebarTab(search: string): PipelineSidebarTab {\n const tab = new URLSearchParams(search).get(\"tab\");\n if (tab === \"metadata\" || tab === \"runs\" || tab === \"logs\") {\n return tab;\n }\n return \"input\";\n}\n","import { ArrowClockwise, X } from \"@phosphor-icons/react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { StudioSandboxViewConnection, StudioSandboxViewSummary } from \"../../../../types\";\nimport { Button } from \"../../components/ui/button\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport { StudioStatusBadge, StudioSurface } from \"../../components/ui/studio\";\nimport { cn } from \"../../lib/utils\";\nimport { requestJson } from \"../shared/request\";\n\ntype BrowserControlLeaseResponse = {\n id: string;\n ownerId: string;\n expiresAt: string;\n};\n\ntype BrowserControlStateResponse = {\n mode: \"agent\" | \"human\";\n ownerId?: string;\n expiresAt?: string;\n};\n\ntype ViewerStatus = \"connecting\" | \"connected\" | \"disconnected\" | \"error\";\n\nexport function StudioBrowserView(props: {\n sandboxRef: string;\n view: StudioSandboxViewSummary;\n className?: string;\n onClose?: () => void;\n onError: (error: unknown) => void;\n}) {\n const ownerId = useRef(crypto.randomUUID());\n const onErrorRef = useRef(props.onError);\n onErrorRef.current = props.onError;\n const targetRef = useRef<HTMLDivElement | null>(null);\n const rfbRef = useRef<InstanceType<typeof import(\"@novnc/novnc\").default> | undefined>(undefined);\n const [lease, setLease] = useState<BrowserControlLeaseResponse | undefined>();\n const leaseRef = useRef<BrowserControlLeaseResponse | undefined>(undefined);\n const [control, setControl] = useState<BrowserControlStateResponse>({ mode: \"agent\" });\n const [pending, setPending] = useState(false);\n const [viewerStatus, setViewerStatus] = useState<ViewerStatus>(\"connecting\");\n const [viewerError, setViewerError] = useState(\"\");\n const [connectionSequence, setConnectionSequence] = useState(0);\n const base = `/sandboxes/${encodeURIComponent(props.sandboxRef)}/views/${encodeURIComponent(props.view.id)}`;\n const leaseTimeoutMs = 30_000;\n const leaseId = lease?.id;\n const heldByThisViewer = lease?.ownerId === ownerId.current;\n const reportError = useCallback((error: unknown) => onErrorRef.current(error), []);\n\n const refreshControl = useCallback(\n async (signal?: AbortSignal) => {\n const state = await requestJson<BrowserControlStateResponse>(\n `${base}/control`,\n \"Browser control\",\n signal,\n );\n setControl(state);\n if (state.mode === \"agent\") {\n leaseRef.current = undefined;\n setLease(undefined);\n }\n },\n [base],\n );\n\n useEffect(() => {\n const controller = new AbortController();\n void refreshControl(controller.signal).catch((error: unknown) => {\n if (!controller.signal.aborted) reportError(error);\n });\n const interval = window.setInterval(() => {\n void refreshControl(controller.signal).catch((error: unknown) => {\n if (!controller.signal.aborted) reportError(error);\n });\n }, 5_000);\n return () => {\n controller.abort();\n window.clearInterval(interval);\n };\n }, [refreshControl, reportError]);\n\n useEffect(() => {\n if (leaseId === undefined) return;\n const controller = new AbortController();\n const interval = window.setInterval(() => {\n void requestJson<BrowserControlLeaseResponse>(\n `${base}/control/renew`,\n \"Browser control renewal\",\n controller.signal,\n \"default\",\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ leaseId, leaseTimeoutMs }),\n },\n )\n .then((next) => {\n leaseRef.current = next;\n setLease(next);\n setControl({ mode: \"human\", ownerId: next.ownerId, expiresAt: next.expiresAt });\n })\n .catch((error: unknown) => {\n if (!controller.signal.aborted) {\n setLease(undefined);\n leaseRef.current = undefined;\n reportError(error);\n }\n });\n }, 10_000);\n return () => {\n controller.abort();\n window.clearInterval(interval);\n };\n }, [base, leaseId, reportError]);\n\n useEffect(\n () => () => {\n const activeLease = leaseRef.current;\n if (activeLease === undefined) return;\n void fetch(`${base}/control/release`, {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ leaseId: activeLease.id }),\n keepalive: true,\n });\n },\n [base],\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: Incrementing the retry counter intentionally reconnects the noVNC client.\n useEffect(() => {\n const target = targetRef.current;\n if (target === null) return;\n const controller = new AbortController();\n setViewerStatus(\"connecting\");\n setViewerError(\"\");\n target.replaceChildren();\n\n void Promise.all([\n requestJson<StudioSandboxViewConnection>(\n `${base}/connection`,\n \"Browser connection\",\n controller.signal,\n \"no-store\",\n ),\n import(\"@novnc/novnc\"),\n ])\n .then(([connection, noVnc]) => {\n if (controller.signal.aborted) return;\n const websocketUrl = new URL(connection.websocketPath, window.location.origin);\n websocketUrl.protocol = window.location.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n const credentials =\n connection.authentication.type === \"password\"\n ? { username: \"\", password: connection.authentication.password, target: \"\" }\n : undefined;\n const rfbOptions: ConstructorParameters<typeof noVnc.default>[2] = {};\n if (credentials !== undefined) rfbOptions.credentials = credentials;\n const rfb = new noVnc.default(target, websocketUrl.href, rfbOptions);\n rfbRef.current = rfb;\n rfb.scaleViewport = true;\n rfb.resizeSession = false;\n rfb.viewOnly = leaseRef.current === undefined;\n rfb.background = \"var(--background)\";\n rfb.addEventListener(\"connect\", () => {\n if (!controller.signal.aborted) setViewerStatus(\"connected\");\n });\n rfb.addEventListener(\"credentialsrequired\", () => {\n if (credentials === undefined) {\n setViewerStatus(\"error\");\n setViewerError(\"The browser desktop requires credentials that Studio does not have.\");\n return;\n }\n rfb.sendCredentials(credentials);\n });\n rfb.addEventListener(\"securityfailure\", (event) => {\n setViewerStatus(\"error\");\n setViewerError(event.detail.reason ?? \"Browser desktop authentication failed.\");\n });\n rfb.addEventListener(\"disconnect\", (event) => {\n if (controller.signal.aborted) return;\n setViewerStatus(event.detail.clean ? \"disconnected\" : \"error\");\n if (!event.detail.clean)\n setViewerError(\"The browser desktop connection was interrupted.\");\n });\n })\n .catch((error: unknown) => {\n if (controller.signal.aborted) return;\n setViewerStatus(\"error\");\n setViewerError(error instanceof Error ? error.message : \"Unable to open browser desktop.\");\n reportError(error);\n });\n\n return () => {\n controller.abort();\n rfbRef.current?.disconnect();\n rfbRef.current = undefined;\n target.replaceChildren();\n };\n }, [base, connectionSequence, reportError]);\n\n useEffect(() => {\n const rfb = rfbRef.current;\n if (rfb === undefined) return;\n rfb.viewOnly = lease === undefined;\n if (lease === undefined) rfb.blur();\n else rfb.focus({ preventScroll: true });\n }, [lease]);\n\n const acquire = useCallback(async () => {\n setPending(true);\n try {\n const next = await requestJson<BrowserControlLeaseResponse>(\n `${base}/control/acquire`,\n \"Browser control\",\n undefined,\n \"default\",\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ ownerId: ownerId.current, leaseTimeoutMs }),\n },\n );\n leaseRef.current = next;\n setLease(next);\n setControl({ mode: \"human\", ownerId: next.ownerId, expiresAt: next.expiresAt });\n } catch (error) {\n reportError(error);\n } finally {\n setPending(false);\n }\n }, [base, reportError]);\n\n const release = useCallback(async () => {\n if (lease === undefined) return;\n setPending(true);\n try {\n await requestJson<{ released: boolean }>(\n `${base}/control/release`,\n \"Browser control\",\n undefined,\n \"default\",\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ leaseId: lease.id }),\n },\n );\n leaseRef.current = undefined;\n setLease(undefined);\n setControl({ mode: \"agent\" });\n } catch (error) {\n reportError(error);\n } finally {\n setPending(false);\n }\n }, [base, lease, reportError]);\n\n return (\n <StudioSurface\n className={cn(\n \"grid h-full min-h-0 min-w-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background\",\n props.className,\n )}\n >\n <div className=\"flex min-h-12 items-center justify-between gap-3 border-b border-white/10 bg-background px-3 py-2\">\n <div className=\"flex min-w-0 items-center gap-2.5\">\n <span className=\"truncate text-sm font-semibold text-foreground\">{props.view.label}</span>\n <StudioStatusBadge>\n {viewerStatus === \"connected\"\n ? heldByThisViewer\n ? \"You control\"\n : \"Agent control\"\n : viewerStatus}\n </StudioStatusBadge>\n </div>\n <div className=\"flex shrink-0 items-center gap-1.5\">\n {heldByThisViewer ? (\n <Button\n disabled={pending}\n size=\"sm\"\n type=\"button\"\n variant=\"secondary\"\n onClick={() => void release()}\n >\n Release control\n </Button>\n ) : (\n <Button\n disabled={pending || control.mode === \"human\" || viewerStatus !== \"connected\"}\n size=\"sm\"\n type=\"button\"\n variant=\"secondary\"\n onClick={() => void acquire()}\n >\n {control.mode === \"human\" ? \"In human control\" : \"Take control\"}\n </Button>\n )}\n {props.onClose === undefined ? null : (\n <Button\n aria-label=\"Close browser workspace\"\n className=\"size-8 min-h-8 p-0\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n onClick={props.onClose}\n >\n <StudioIcon icon={X} />\n </Button>\n )}\n </div>\n </div>\n <div className=\"relative grid min-h-0 min-w-0 place-items-stretch overflow-hidden bg-background\">\n <section\n aria-label=\"Live browser desktop\"\n className=\"h-full min-h-0 min-w-0 overflow-hidden [&_canvas]:outline-none\"\n data-studio-browser-view=\"\"\n ref={targetRef}\n />\n {viewerStatus === \"connecting\" ? (\n <div className=\"absolute inset-0 grid place-items-center bg-background text-sm text-muted-foreground\">\n Connecting to browser…\n </div>\n ) : null}\n {viewerStatus === \"error\" || viewerStatus === \"disconnected\" ? (\n <div className=\"absolute inset-0 grid place-items-center bg-background p-6 text-center\">\n <div className=\"grid max-w-sm gap-3\">\n <p className=\"m-0 text-sm text-muted-foreground\">\n {viewerError || \"Browser desktop disconnected.\"}\n </p>\n <Button\n className=\"mx-auto\"\n size=\"sm\"\n type=\"button\"\n variant=\"secondary\"\n onClick={() => setConnectionSequence((current) => current + 1)}\n >\n <StudioIcon icon={ArrowClockwise} />\n Reconnect\n </Button>\n </div>\n </div>\n ) : null}\n </div>\n </StudioSurface>\n );\n}\n","import type { StudioSessionLogEntry, StudioTraceSummary } from \"../../../../types\";\nimport { isRecord } from \"../shared/object\";\nimport type { TranscriptEntry } from \"../shared/types\";\n\nexport type ResponseUsageMetrics = {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n cachedInputTokens?: number;\n cacheCreationInputTokens?: number;\n};\n\nexport type AssistantResponseMetrics = {\n durationMs?: number;\n usage?: ResponseUsageMetrics;\n};\n\nexport function assistantResponseMetricsByEntryId(props: {\n entries: TranscriptEntry[];\n traceSummaries: StudioTraceSummary[];\n logs: StudioSessionLogEntry[];\n}): Map<number, AssistantResponseMetrics> {\n const byEntryId = new Map<number, AssistantResponseMetrics>();\n const traceMetrics = new Map(\n props.traceSummaries\n .map((trace): [string, AssistantResponseMetrics] | undefined => {\n const metrics = metricsFromTrace(trace);\n return metrics === undefined ? undefined : [trace.id, metrics];\n })\n .filter((item): item is [string, AssistantResponseMetrics] => item !== undefined),\n );\n const terminalRunMetrics = props.logs\n .filter(\n (log) =>\n log.category === \"run\" &&\n (log.event === \"run.completed\" ||\n log.event === \"run.cancelled\" ||\n log.event === \"run.failed\"),\n )\n .sort((left, right) => left.sequence - right.sequence)\n .map(metricsFromTerminalRunLog);\n\n let terminalRunIndex = 0;\n for (const entry of props.entries) {\n if (!isTerminalAssistantMessage(entry)) {\n continue;\n }\n\n const fallbackMetrics = terminalRunMetrics[terminalRunIndex];\n terminalRunIndex += 1;\n const observedMetrics =\n entry.traceId === undefined\n ? fallbackMetrics\n : (traceMetrics.get(entry.traceId) ?? fallbackMetrics);\n const metrics = mergeEntryDuration(entry.durationMs, observedMetrics);\n if (metrics !== undefined) {\n byEntryId.set(entry.entryId, metrics);\n }\n }\n\n return byEntryId;\n}\n\nfunction isTerminalAssistantMessage(\n entry: TranscriptEntry,\n): entry is Extract<TranscriptEntry, { kind: \"message\"; role: \"assistant\" }> {\n return (\n entry.kind === \"message\" &&\n entry.role === \"assistant\" &&\n (entry.text.trim().length > 0 || nonnegativeNumericValue(entry.durationMs) !== undefined) &&\n (!(\"tone\" in entry) || entry.tone !== \"pending\")\n );\n}\n\nfunction metricsFromTrace(trace: StudioTraceSummary): AssistantResponseMetrics | undefined {\n const durationMs = nonnegativeNumericValue(trace.durationMs);\n const usage = usageMetrics(trace.usage);\n const metrics: AssistantResponseMetrics = {};\n if (durationMs !== undefined) metrics.durationMs = durationMs;\n if (usage !== undefined) metrics.usage = usage;\n return definedMetrics(metrics);\n}\n\nfunction metricsFromTerminalRunLog(\n log: StudioSessionLogEntry,\n): AssistantResponseMetrics | undefined {\n const metadata = log.metadata;\n if (!isRecord(metadata)) {\n return undefined;\n }\n const durationMs = nonnegativeNumericValue(metadata.durationMs);\n const usage = usageMetrics(metadata.usage);\n const metrics: AssistantResponseMetrics = {};\n if (durationMs !== undefined) metrics.durationMs = durationMs;\n if (usage !== undefined) metrics.usage = usage;\n return definedMetrics(metrics);\n}\n\nfunction usageMetrics(value: unknown): ResponseUsageMetrics | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n\n const inputTokens = numericValue(value.inputTokens);\n const outputTokens = numericValue(value.outputTokens);\n const totalTokens =\n numericValue(value.totalTokens) ??\n (inputTokens === undefined || outputTokens === undefined\n ? undefined\n : inputTokens + outputTokens);\n const usage: ResponseUsageMetrics = {};\n if (inputTokens !== undefined) usage.inputTokens = inputTokens;\n if (outputTokens !== undefined) usage.outputTokens = outputTokens;\n if (totalTokens !== undefined) usage.totalTokens = totalTokens;\n const cachedInputTokens = numericValue(value.cachedInputTokens);\n const cacheCreationInputTokens = numericValue(value.cacheCreationInputTokens);\n if (cachedInputTokens !== undefined) usage.cachedInputTokens = cachedInputTokens;\n if (cacheCreationInputTokens !== undefined) {\n usage.cacheCreationInputTokens = cacheCreationInputTokens;\n }\n return Object.keys(usage).length === 0 ? undefined : usage;\n}\n\nfunction definedMetrics(metrics: AssistantResponseMetrics): AssistantResponseMetrics | undefined {\n return metrics.durationMs === undefined && metrics.usage === undefined ? undefined : metrics;\n}\n\nfunction mergeEntryDuration(\n durationMs: number | undefined,\n metrics: AssistantResponseMetrics | undefined,\n): AssistantResponseMetrics | undefined {\n const persistedDurationMs = nonnegativeNumericValue(durationMs);\n if (persistedDurationMs === undefined) {\n return metrics;\n }\n return {\n ...metrics,\n durationMs: persistedDurationMs,\n };\n}\n\nfunction nonnegativeNumericValue(value: unknown): number | undefined {\n const number = numericValue(value);\n return number !== undefined && number >= 0 ? number : undefined;\n}\n\nfunction numericValue(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n","import type { SmoothStreamItemAdapter } from \"@anvia/react\";\nimport type { TranscriptEntry } from \"../shared/types\";\n\nexport const transcriptStreamAdapter: SmoothStreamItemAdapter<TranscriptEntry> = {\n getKey(entry) {\n return String(entry.entryId);\n },\n getText(entry) {\n if (entry.kind === \"reasoning\") {\n return entry.text;\n }\n if (entry.kind === \"message\" && entry.role === \"assistant\") {\n return entry.text;\n }\n return undefined;\n },\n withText(entry, text) {\n if (entry.kind === \"reasoning\") {\n return { ...entry, text };\n }\n if (entry.kind === \"message\" && entry.role === \"assistant\") {\n if (\"tone\" in entry && entry.tone === \"pending\") {\n return entry;\n }\n return { ...entry, text };\n }\n return entry;\n },\n};\n\nexport function hasTerminalTranscriptError(entries: TranscriptEntry[]): boolean {\n const entry = entries.at(-1);\n return (\n entry?.kind === \"message\" &&\n entry.role === \"assistant\" &&\n \"tone\" in entry &&\n entry.tone === \"error\"\n );\n}\n","import { useSmoothStreamItems } from \"@anvia/react\";\nimport { lazy, Suspense, useMemo } from \"react\";\nimport type { StudioSessionLogEntry, StudioTraceSummary } from \"../../../../types\";\nimport type { TranscriptEntry } from \"../shared/types\";\nimport { assistantResponseMetricsByEntryId } from \"./response-metrics\";\nimport { hasTerminalTranscriptError, transcriptStreamAdapter } from \"./transcript-stream\";\n\nconst TranscriptItem = lazy(() =>\n import(\"./transcript-item\").then((module) => ({\n default: module.TranscriptItem,\n })),\n);\n\nexport function SmoothedTranscript(props: {\n answeringQuestions: Set<string>;\n decidingApprovals: Set<string>;\n isStreaming: boolean;\n messages: TranscriptEntry[];\n resetKey: string | number;\n sessionLogs: StudioSessionLogEntry[];\n sessionTraceSummaries: StudioTraceSummary[];\n onApprovalDecision: (approvalId: string, approved: boolean) => void;\n onOpenTrace: (traceId: string) => void;\n onQuestionAnswer: (\n questionId: string,\n answers: Array<{ questionId: string; answer: string; choice?: string; custom?: boolean }>,\n ) => void;\n}) {\n const smoothed = useSmoothStreamItems(props.messages, {\n adapter: transcriptStreamAdapter,\n flushImmediately: hasTerminalTranscriptError(props.messages),\n isStreaming: props.isStreaming,\n resetKey: props.resetKey,\n });\n const sourceEntriesById = useMemo(\n () => new Map(props.messages.map((entry) => [entry.entryId, entry])),\n [props.messages],\n );\n const responseMetricsByEntryId = useMemo(\n () =>\n assistantResponseMetricsByEntryId({\n entries: props.messages,\n traceSummaries: props.sessionTraceSummaries,\n logs: props.sessionLogs,\n }),\n [props.messages, props.sessionLogs, props.sessionTraceSummaries],\n );\n return (\n <Suspense fallback={null}>\n {smoothed.items.map((displayEntry) => {\n const sourceEntry = sourceEntriesById.get(displayEntry.entryId) ?? displayEntry;\n return (\n <TranscriptItem\n key={displayEntry.entryId}\n entry={sourceEntry}\n displayText={transcriptStreamAdapter.getText(displayEntry)}\n live={smoothed.liveItemKey === String(displayEntry.entryId)}\n metrics={responseMetricsByEntryId.get(displayEntry.entryId)}\n decidingApprovals={props.decidingApprovals}\n answeringQuestions={props.answeringQuestions}\n onApprovalDecision={props.onApprovalDecision}\n onQuestionAnswer={props.onQuestionAnswer}\n onOpenTrace={props.onOpenTrace}\n />\n );\n })}\n </Suspense>\n );\n}\n","import {\n Archive,\n ArrowUp,\n Browser as BrowserIcon,\n Paperclip,\n Stop,\n X,\n} from \"@phosphor-icons/react\";\nimport {\n type ChangeEvent,\n type CSSProperties,\n type KeyboardEvent,\n type RefObject,\n useState,\n} from \"react\";\nimport type {\n StudioConfig,\n StudioModelSummary,\n StudioSessionLogEntry,\n StudioSessionSummary,\n StudioTraceSummary,\n} from \"../../../../types\";\nimport {\n modelSelectLabel,\n type PromptAttachment,\n supportedAttachmentTypes,\n} from \"../../app-helpers\";\nimport { Button } from \"../../components/ui/button\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../components/ui/select\";\nimport { StudioPageShell } from \"../../components/ui/studio\";\nimport { Textarea } from \"../../components/ui/textarea\";\nimport { cn } from \"../../lib/utils\";\nimport { StudioBrowserView } from \"../sandboxes/browser-view\";\nimport type { RunState, TranscriptEntry } from \"../shared/types\";\nimport type { BrowserWorkspace } from \"./browser-workspace\";\nimport { SmoothedTranscript } from \"./smoothed-transcript\";\n\nexport function PlaygroundPage(props: {\n agents: StudioConfig[\"agents\"];\n allSessions: StudioSessionSummary[];\n answeringQuestions: Set<string>;\n attachments: PromptAttachment[];\n browserWorkspace: BrowserWorkspace | undefined;\n browserWorkspaceOpen: boolean;\n decidingApprovals: Set<string>;\n hasMessages: boolean;\n isStreaming: boolean;\n transcriptResetKey: string | number;\n messages: TranscriptEntry[];\n prompt: string;\n runState: RunState;\n selectedAgent: StudioConfig[\"agents\"][number] | undefined;\n selectedAgentId: string;\n selectedAgentModels: StudioModelSummary[];\n selectedAgentQuickPrompts: string[];\n selectedModelRef: string;\n selectedSessionId: string;\n sessionLogs: StudioSessionLogEntry[];\n sessionTraceSummaries: StudioTraceSummary[];\n attachmentInputRef: RefObject<HTMLInputElement | null>;\n promptRef: RefObject<HTMLTextAreaElement | null>;\n transcriptScrollerRef: RefObject<HTMLElement | null>;\n onAddPromptAttachments: (event: ChangeEvent<HTMLInputElement>) => void;\n onApprovalDecision: (approvalId: string, approved: boolean) => void;\n onDeleteSession: (session: StudioSessionSummary) => void;\n onCloseBrowserWorkspace: () => void;\n onError: (error: unknown) => void;\n onLoadSession: (sessionId: string) => void;\n onOpenBrowserWorkspace: () => void;\n onOpenTrace: (traceId: string) => void;\n onPromptChange: (event: ChangeEvent<HTMLTextAreaElement>) => void;\n onPromptKeyDown: (event: KeyboardEvent<HTMLTextAreaElement>) => void;\n onQuestionAnswer: (\n questionId: string,\n answers: Array<{ questionId: string; answer: string; choice?: string; custom?: boolean }>,\n ) => void;\n onRemovePromptAttachment: (id: string) => void;\n onRunPrompt: (prompt: string) => void;\n onStopPrompt: () => void;\n onSelectAgent: (agentId: string) => void;\n onSelectModel: (modelRef: string) => void;\n onTranscriptScroll: () => void;\n}) {\n const [browserPanelWidth, setBrowserPanelWidth] = useState(720);\n const activeBrowserWorkspace = props.browserWorkspaceOpen ? props.browserWorkspace : undefined;\n const browserPanelStyle =\n activeBrowserWorkspace === undefined\n ? undefined\n : ({\n \"--studio-browser-panel-width\": `${browserPanelWidth}px`,\n gridTemplateColumns:\n \"minmax(0, 1fr) minmax(440px, min(var(--studio-browser-panel-width), 72vw))\",\n } as CSSProperties);\n\n return (\n <StudioPageShell\n className={cn(\n activeBrowserWorkspace === undefined\n ? \"grid-cols-[minmax(0,1fr)_minmax(0,460px)] max-xl:grid-cols-1\"\n : undefined,\n )}\n style={browserPanelStyle}\n >\n <div className=\"grid min-h-0 min-w-0\">\n <div className=\"grid h-full min-h-0 min-w-0 grid-rows-[minmax(0,1fr)_auto]\">\n <section\n className=\"min-h-0 overflow-y-auto overflow-x-hidden px-4 py-4 [overflow-anchor:none] [scrollbar-gutter:stable]\"\n ref={props.transcriptScrollerRef}\n onScroll={props.onTranscriptScroll}\n >\n <div\n className=\"mx-auto grid min-h-full w-full max-w-200 content-start items-start gap-5 pb-8 [&>[data-entry-kind=tool]+[data-entry-kind=tool]]:-mt-3\"\n data-studio-transcript-content=\"\"\n >\n {!props.hasMessages ? (\n <div className=\"grid min-h-96 place-items-center text-sm font-medium text-muted-foreground\">\n <div className=\"grid max-w-xl gap-4 text-center\">\n <div className=\"mx-auto h-px w-28 bg-muted/55\" />\n <h1 className=\"m-0 font-heading text-2xl font-medium tracking-tight text-foreground text-balance\">\n What should this agent work on?\n </h1>\n <p className=\"m-0 text-sm leading-6 text-muted-foreground text-pretty\">\n Choose a prompt below or write a task. Studio will stream the response, tool\n calls, approvals, and trace data here.\n </p>\n </div>\n </div>\n ) : null}\n <SmoothedTranscript\n answeringQuestions={props.answeringQuestions}\n decidingApprovals={props.decidingApprovals}\n isStreaming={props.isStreaming}\n messages={props.messages}\n resetKey={props.transcriptResetKey}\n sessionLogs={props.sessionLogs}\n sessionTraceSummaries={props.sessionTraceSummaries}\n onApprovalDecision={props.onApprovalDecision}\n onOpenTrace={props.onOpenTrace}\n onQuestionAnswer={props.onQuestionAnswer}\n />\n </div>\n </section>\n <form\n className=\"grid gap-3 bg-background px-4 pb-4 pt-2\"\n onSubmit={(event) => {\n event.preventDefault();\n props.onRunPrompt(props.prompt);\n }}\n >\n {props.hasMessages || props.selectedAgentQuickPrompts.length === 0 ? null : (\n <div className=\"mx-auto grid w-full max-w-200 grid-cols-3 gap-2 max-md:grid-cols-1\">\n {props.selectedAgentQuickPrompts.map((quickPrompt) => (\n <Button\n className=\"h-auto min-h-16 justify-start whitespace-normal rounded-lg border border-border/80 bg-card/85 px-3 py-2.5 text-left text-sm font-medium leading-5 text-foreground shadow-sm hover:border-border/80 hover:bg-muted/45 hover:text-foreground\"\n type=\"button\"\n variant=\"ghost\"\n disabled={props.runState === \"running\" || props.selectedAgentId.length === 0}\n onClick={() => props.onRunPrompt(quickPrompt)}\n key={quickPrompt}\n >\n <span className=\"min-w-0 whitespace-normal wrap-break-words\">\n {quickPrompt}\n </span>\n </Button>\n ))}\n </div>\n )}\n <div className=\"mx-auto grid w-full max-w-200 gap-1.5 rounded-xl border border-border/80 bg-card/95 p-1.5 backdrop-blur\">\n <Textarea\n className=\"min-h-9 min-w-0 resize-none rounded-lg border-0 bg-muted px-2.5 py-1.5 text-base leading-6 text-foreground shadow-none outline-none ring-0 placeholder:text-muted-foreground/70 focus-visible:border-transparent focus-visible:ring-0 focus-visible:outline-none dark:bg-muted\"\n ref={props.promptRef}\n rows={1}\n value={props.prompt}\n onChange={props.onPromptChange}\n onKeyDown={props.onPromptKeyDown}\n placeholder=\"Ask anything...\"\n />\n {props.attachments.length === 0 ? null : (\n <div className=\"flex min-w-0 flex-wrap gap-1.5 px-2\">\n {props.attachments.map((attachment) => (\n <span\n className=\"inline-flex max-w-full items-center gap-1.5 rounded-lg border border-border/80 bg-muted/55 px-2 py-1 text-xs font-medium text-muted-foreground\"\n key={attachment.id}\n >\n <span className=\"min-w-0 truncate\">\n {attachment.kind === \"image\" ? \"Image\" : \"Doc\"} / {attachment.name}\n </span>\n <Button\n aria-label={`Remove ${attachment.name}`}\n className=\"h-5 min-h-5 w-5 rounded-md border-0 bg-transparent p-0 text-muted-foreground shadow-none hover:bg-accent hover:text-foreground [&_svg]:h-3 [&_svg]:w-3\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onRemovePromptAttachment(attachment.id)}\n >\n <StudioIcon icon={X} aria-hidden=\"true\" />\n </Button>\n </span>\n ))}\n </div>\n )}\n <div className=\"flex min-w-0 items-center justify-between gap-2\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <input\n ref={props.attachmentInputRef}\n className=\"hidden\"\n type=\"file\"\n multiple\n accept={supportedAttachmentTypes}\n onChange={props.onAddPromptAttachments}\n />\n <Button\n aria-label=\"Attach image or document\"\n className=\"size-9 min-h-9 rounded-lg border-border bg-transparent p-0 text-muted-foreground shadow-none hover:bg-accent hover:text-accent-foreground\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n disabled={props.runState === \"running\"}\n onClick={() => props.attachmentInputRef.current?.click()}\n >\n <StudioIcon icon={Paperclip} aria-hidden=\"true\" />\n </Button>\n {props.browserWorkspace === undefined || props.browserWorkspaceOpen ? null : (\n <Button\n aria-label=\"Open browser workspace\"\n className=\"h-9 min-h-9 gap-1.5 rounded-lg border-border bg-transparent px-2.5 text-xs text-muted-foreground shadow-none hover:bg-accent hover:text-accent-foreground\"\n type=\"button\"\n variant=\"ghost\"\n onClick={props.onOpenBrowserWorkspace}\n >\n <StudioIcon icon={BrowserIcon} aria-hidden=\"true\" />\n Browser\n </Button>\n )}\n </div>\n <div className=\"flex min-w-0 items-center gap-2\">\n {props.selectedAgentModels.length === 0 ? null : (\n <Select\n value={props.selectedModelRef}\n onValueChange={props.onSelectModel}\n disabled={props.runState === \"running\"}\n >\n <SelectTrigger\n aria-label=\"Select model\"\n className=\"flex h-8 min-h-8 w-auto max-w-44 gap-2 border-0 bg-transparent px-2 py-1 text-xs font-medium text-muted-foreground shadow-none hover:bg-accent hover:text-accent-foreground sm:max-w-72\"\n >\n <SelectValue placeholder=\"Model\" />\n </SelectTrigger>\n <SelectContent align=\"end\">\n {props.selectedAgentModels.map((model) => (\n <SelectItem value={model.ref} key={model.ref}>\n {modelSelectLabel(model)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n {props.agents.length > 1 ? (\n <Select\n value={props.selectedAgent?.id ?? props.selectedAgentId}\n onValueChange={props.onSelectAgent}\n disabled={props.runState === \"running\"}\n >\n <SelectTrigger\n aria-label=\"Select agent\"\n className=\"flex h-8 min-h-8 w-auto max-w-64 gap-2 border-0 bg-transparent px-2 py-1 text-xs font-medium text-muted-foreground shadow-none hover:bg-accent hover:text-accent-foreground\"\n >\n <SelectValue placeholder=\"Agent\" />\n </SelectTrigger>\n <SelectContent align=\"end\">\n {props.agents.map((agent) => (\n <SelectItem value={agent.id} key={agent.id}>\n {agent.name ?? agent.id}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : null}\n <Button\n aria-label={\n props.isStreaming\n ? \"Stop generating\"\n : props.runState === \"running\"\n ? \"Running\"\n : \"Send message\"\n }\n className=\"size-9 min-h-9 rounded-lg\"\n size=\"icon\"\n type={props.isStreaming ? \"button\" : \"submit\"}\n disabled={\n !props.isStreaming &&\n (props.runState === \"running\" || props.selectedAgentId.length === 0)\n }\n onClick={props.isStreaming ? props.onStopPrompt : undefined}\n >\n <StudioIcon\n icon={props.isStreaming ? Stop : ArrowUp}\n weight={props.isStreaming ? \"fill\" : \"regular\"}\n />\n </Button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n {activeBrowserWorkspace === undefined ? (\n <PlaygroundSessionsPanel\n sessions={props.allSessions}\n selectedSessionId={props.selectedSessionId}\n runState={props.runState}\n onDeleteSession={props.onDeleteSession}\n onLoadSession={props.onLoadSession}\n />\n ) : (\n <PlaygroundBrowserPanel\n workspace={activeBrowserWorkspace}\n width={browserPanelWidth}\n onClose={props.onCloseBrowserWorkspace}\n onError={props.onError}\n onWidthChange={setBrowserPanelWidth}\n />\n )}\n </StudioPageShell>\n );\n}\n\nfunction PlaygroundBrowserPanel(props: {\n workspace: BrowserWorkspace;\n width: number;\n onClose: () => void;\n onError: (error: unknown) => void;\n onWidthChange: (width: number) => void;\n}) {\n const resize = (clientX: number) => {\n const maximum = Math.max(440, Math.min(1_100, window.innerWidth * 0.72));\n props.onWidthChange(Math.round(Math.min(maximum, Math.max(440, window.innerWidth - clientX))));\n };\n\n return (\n <aside\n className=\"relative h-full min-h-0 min-w-0 overflow-hidden border-l border-border bg-background\"\n aria-label=\"Browser workspace\"\n >\n <hr\n aria-label=\"Resize browser workspace\"\n aria-orientation=\"vertical\"\n aria-valuemax={1100}\n aria-valuemin={440}\n aria-valuenow={props.width}\n className=\"absolute inset-y-0 -left-1 z-20 m-0 h-auto w-2 cursor-col-resize touch-none border-0 bg-transparent transition-colors hover:bg-primary/35 focus-visible:bg-primary/35 focus-visible:outline-none\"\n tabIndex={0}\n onKeyDown={(event) => {\n if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") return;\n event.preventDefault();\n props.onWidthChange(\n Math.min(1_100, Math.max(440, props.width + (event.key === \"ArrowLeft\" ? 24 : -24))),\n );\n }}\n onPointerDown={(event) => {\n event.currentTarget.setPointerCapture(event.pointerId);\n resize(event.clientX);\n }}\n onPointerMove={(event) => {\n if (event.currentTarget.hasPointerCapture(event.pointerId)) resize(event.clientX);\n }}\n />\n <StudioBrowserView\n className=\"border-0\"\n sandboxRef={props.workspace.sandboxRef}\n view={props.workspace.view}\n onClose={props.onClose}\n onError={props.onError}\n />\n </aside>\n );\n}\n\nfunction PlaygroundSessionsPanel(props: {\n sessions: StudioSessionSummary[];\n selectedSessionId: string;\n runState: RunState;\n onDeleteSession: (session: StudioSessionSummary) => void;\n onLoadSession: (sessionId: string) => void;\n}) {\n return (\n <aside\n className=\"grid h-full min-h-0 min-w-0 max-h-full overflow-hidden border-l border-sidebar-border bg-sidebar text-sidebar-foreground max-xl:hidden\"\n aria-label=\"Sessions\"\n >\n <nav\n className=\"grid min-h-0 content-start gap-0.5 overflow-auto px-3 py-3\"\n aria-label=\"Sessions\"\n >\n {props.sessions.map((session) => (\n <PlaygroundSessionRow\n session={session}\n active={session.id === props.selectedSessionId}\n disabled={props.runState === \"running\"}\n onDeleteSession={props.onDeleteSession}\n onLoadSession={props.onLoadSession}\n key={session.id}\n />\n ))}\n </nav>\n </aside>\n );\n}\n\nfunction PlaygroundSessionRow(props: {\n session: StudioSessionSummary;\n active: boolean;\n disabled: boolean;\n onDeleteSession: (session: StudioSessionSummary) => void;\n onLoadSession: (sessionId: string) => void;\n}) {\n const title = props.session.title ?? \"Untitled chat\";\n return (\n <div className=\"group relative min-w-0\">\n <Button\n className={cn(\n \"h-9 min-h-9 w-full justify-start rounded-lg bg-transparent px-2.5 py-0.5 pr-9 text-base font-[450] tracking-[-0.006em] text-sidebar-foreground/65 shadow-none transition duration-200 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:translate-y-px\",\n props.active && \"bg-sidebar-accent font-semibold text-sidebar-accent-foreground\",\n )}\n type=\"button\"\n variant=\"ghost\"\n disabled={props.disabled}\n onClick={() => props.onLoadSession(props.session.id)}\n >\n <span className=\"min-w-0 flex-1 truncate text-left\">{title}</span>\n </Button>\n <Button\n aria-label={`Delete ${title}`}\n className=\"absolute right-1 top-1/2 hidden h-7 min-h-7 w-7 -translate-y-1/2 rounded-lg border-0 bg-transparent p-0 text-muted-foreground opacity-70 shadow-none hover:bg-sidebar-accent hover:text-destructive hover:opacity-100 group-hover:inline-flex group-focus-within:inline-flex [&_svg]:h-4 [&_svg]:w-4\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n disabled={props.disabled}\n onClick={() => props.onDeleteSession(props.session)}\n >\n <StudioIcon icon={Archive} aria-hidden=\"true\" />\n </Button>\n </div>\n );\n}\n","import { useParams } from \"@tanstack/react-router\";\nimport { useEffect, useRef } from \"react\";\nimport { PlaygroundPage } from \"../modules/playground/playground-page\";\nimport { errorMessage } from \"../modules/shared/format\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function PlaygroundRoute() {\n const studio = useActivatedRoute(\"playground\");\n const params = useParams({ strict: false }) as { sessionId?: string };\n const sessionId = params.sessionId;\n const handledSessionIdRef = useRef<string | undefined | null>(null);\n\n useEffect(() => {\n if (handledSessionIdRef.current === sessionId) {\n return;\n }\n if (!studio.pageEnabled(\"playground\")) {\n return;\n }\n if (studio.runState === \"running\") {\n handledSessionIdRef.current = sessionId;\n return;\n }\n if (sessionId === undefined) {\n handledSessionIdRef.current = sessionId;\n studio.startNewChat({ updatePath: false });\n return;\n }\n if (!studio.sessionsEnabled) {\n return;\n }\n handledSessionIdRef.current = sessionId;\n if (sessionId !== studio.sessions.selectedSessionId) {\n void studio.sessions.loadSession(sessionId, { updatePath: false });\n }\n }, [sessionId, studio]);\n\n return (\n <PlaygroundPage\n agents={studio.agents}\n allSessions={studio.sessions.allSessions}\n answeringQuestions={studio.answeringQuestions}\n attachments={studio.attachments}\n browserWorkspace={studio.browserWorkspace}\n browserWorkspaceOpen={studio.browserWorkspaceOpen}\n decidingApprovals={studio.decidingApprovals}\n hasMessages={studio.hasMessages}\n isStreaming={studio.isStreaming}\n messages={studio.messages}\n prompt={studio.prompt}\n runState={studio.runState}\n selectedAgent={studio.selectedAgent}\n selectedAgentId={studio.selectedAgentId}\n selectedAgentModels={studio.selectedAgentModels}\n selectedAgentQuickPrompts={studio.selectedAgentQuickPrompts}\n selectedModelRef={studio.selectedModelRef}\n selectedSessionId={studio.sessions.selectedSessionId}\n sessionLogs={studio.sessions.sessionLogs}\n sessionTraceSummaries={studio.sessionTraceSummaries}\n attachmentInputRef={studio.attachmentInputRef}\n promptRef={studio.promptRef}\n transcriptScrollerRef={studio.transcriptScrollerRef}\n transcriptResetKey={studio.transcriptResetKey}\n onAddPromptAttachments={studio.addPromptAttachments}\n onApprovalDecision={studio.decideToolApproval}\n onDeleteSession={studio.setDeleteCandidate}\n onCloseBrowserWorkspace={studio.closeBrowserWorkspace}\n onError={(error) => studio.setError(errorMessage(error))}\n onLoadSession={(sessionId) => void studio.sessions.loadSession(sessionId)}\n onOpenTrace={studio.traces.selectTrace}\n onOpenBrowserWorkspace={studio.openBrowserWorkspace}\n onPromptChange={studio.updatePrompt}\n onPromptKeyDown={studio.handlePromptKeyDown}\n onQuestionAnswer={studio.answerToolQuestion}\n onRemovePromptAttachment={studio.removePromptAttachment}\n onRunPrompt={studio.runPrompt}\n onStopPrompt={studio.stopPrompt}\n onSelectAgent={studio.selectPlaygroundAgent}\n onSelectModel={studio.setSelectedModelRef}\n onTranscriptScroll={studio.updateTranscriptStickiness}\n />\n );\n}\n","import { useNavigate, useParams } from \"@tanstack/react-router\";\nimport { Suspense } from \"react\";\nimport { PageLoading, SandboxesPage } from \"../app-pages\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function SandboxesRoute() {\n const studio = useActivatedRoute(\"sandboxes\");\n const params = useParams({ strict: false }) as { sandboxRef?: string };\n const navigate = useNavigate();\n const pageProps: { initialSandboxRef?: string } = {};\n if (params.sandboxRef !== undefined) pageProps.initialSandboxRef = params.sandboxRef;\n\n return (\n <Suspense fallback={<PageLoading />}>\n <SandboxesPage\n enabled={studio.sandboxesEnabled}\n onError={studio.setError}\n onSelectSandbox={(sandboxRef) => {\n void navigate({\n to: \"/sandboxes/$sandboxRef\",\n params: { sandboxRef },\n });\n }}\n {...pageProps}\n />\n </Suspense>\n );\n}\n","import { Suspense } from \"react\";\nimport { PageLoading, SessionsPage } from \"../app-pages\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function SessionsRoute() {\n const studio = useActivatedRoute(\"sessions\");\n\n return (\n <Suspense fallback={<PageLoading />}>\n <SessionsPage\n agents={studio.agents}\n sessions={studio.sessions.allSessions}\n sessionsEnabled={studio.sessionsEnabled}\n sessionLoadState={studio.sessions.sessionLoadState}\n selectedSessionId={studio.sessions.selectedSessionId}\n onOpenSession={(sessionId) => void studio.sessions.loadSession(sessionId)}\n onViewSessionTracing={(sessionId) => void studio.traces.showSessionTraces(sessionId)}\n onDeleteSession={studio.setDeleteCandidate}\n />\n </Suspense>\n );\n}\n","import { Suspense } from \"react\";\nimport { PageLoading, StatusPage } from \"../app-pages\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function StatusRoute() {\n const studio = useActivatedRoute(\"status\");\n return (\n <Suspense fallback={<PageLoading />}>\n <StatusPage enabled={studio.statusEnabled} />\n </Suspense>\n );\n}\n","import { Suspense } from \"react\";\nimport { PageLoading } from \"../app-pages\";\nimport { ToolsContainer } from \"../modules/inspectors/inspectors-containers\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function ToolsRoute() {\n const studio = useActivatedRoute(\"tools\");\n return (\n <Suspense fallback={<PageLoading />}>\n <ToolsContainer\n active\n agents={studio.agents}\n enabled={studio.toolsEnabled}\n selectedAgentId={studio.selectedAgent?.id || studio.selectedAgentId}\n onError={studio.setError}\n />\n </Suspense>\n );\n}\n","import { useParams } from \"@tanstack/react-router\";\nimport { Suspense, useEffect, useRef } from \"react\";\nimport { PageLoading, TraceBrowser } from \"../app-pages\";\nimport { useActivatedRoute } from \"./route-helpers\";\n\nexport function TracingRoute() {\n const studio = useActivatedRoute(\"tracing\");\n const params = useParams({ strict: false }) as {\n traceId?: string;\n sessionId?: string;\n };\n const handledTraceLocationRef = useRef(\"\");\n\n useEffect(() => {\n const locationKey =\n params.sessionId === undefined\n ? `trace:${params.traceId ?? \"\"}`\n : `session:${params.sessionId}`;\n if (handledTraceLocationRef.current === locationKey) {\n return;\n }\n if (!studio.pageEnabled(\"tracing\")) {\n return;\n }\n handledTraceLocationRef.current = locationKey;\n if (params.sessionId !== undefined) {\n void studio.traces.showSessionTraces(params.sessionId, { updatePath: false });\n return;\n }\n studio.traces.setTraceLocation(params.traceId ?? \"\", undefined);\n }, [params.sessionId, params.traceId, studio]);\n\n return (\n <Suspense fallback={<PageLoading />}>\n <TraceBrowser\n agents={studio.agents}\n traces={studio.traces.traces}\n tracesEnabled={studio.tracesEnabled}\n traceLoadState={studio.traces.traceLoadState}\n selectedTraceId={studio.traces.selectedTraceId}\n traceSessionDetailId={studio.traces.traceSessionDetailId}\n onRefresh={() => void studio.traces.loadTraces()}\n onSelectTrace={studio.traces.selectTrace}\n onShowSessionTraces={(sessionId) => void studio.traces.showSessionTraces(sessionId)}\n />\n </Suspense>\n );\n}\n","import { createRootRoute, createRoute, createRouter, Navigate } from \"@tanstack/react-router\";\nimport { StudioConsoleLayout } from \"./modules/shell/studio-console-layout\";\nimport { AgentsRoute } from \"./routes/agents-route\";\nimport { KnowledgeRoute } from \"./routes/knowledge-route\";\nimport { McpsRoute } from \"./routes/mcps-route\";\nimport { MemoryRoute } from \"./routes/memory-route\";\nimport { PipelinesRoute } from \"./routes/pipelines-route\";\nimport { PlaygroundRoute } from \"./routes/playground-route\";\nimport { SandboxesRoute } from \"./routes/sandboxes-route\";\nimport { SessionsRoute } from \"./routes/sessions-route\";\nimport { StatusRoute } from \"./routes/status-route\";\nimport { ToolsRoute } from \"./routes/tools-route\";\nimport { TracingRoute } from \"./routes/tracing-route\";\n\nconst rootRoute = createRootRoute({\n component: StudioConsoleLayout,\n});\n\nconst indexRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"/\",\n component: () => <Navigate to=\"/playground\" replace />,\n});\n\nconst playgroundRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"playground\",\n component: PlaygroundRoute,\n});\n\nconst playgroundSessionRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"playground/$sessionId\",\n component: PlaygroundRoute,\n});\n\nconst tracingRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"tracing\",\n component: TracingRoute,\n});\n\nconst tracingTraceRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"tracing/$traceId\",\n component: TracingRoute,\n});\n\nconst tracingSessionRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"tracing/sessions/$sessionId\",\n component: TracingRoute,\n});\n\nconst sessionsRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"sessions\",\n component: SessionsRoute,\n});\n\nconst agentsRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"agents\",\n component: AgentsRoute,\n});\n\nconst toolsRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"tools\",\n component: ToolsRoute,\n});\n\nconst sandboxesRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"sandboxes\",\n component: SandboxesRoute,\n});\n\nconst sandboxDetailRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"sandboxes/$sandboxRef\",\n component: SandboxesRoute,\n});\n\nconst mcpsRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"mcps\",\n component: McpsRoute,\n});\n\nconst pipelinesRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"pipelines\",\n component: PipelinesRoute,\n});\n\nconst knowledgeRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"knowledge\",\n component: KnowledgeRoute,\n});\n\nconst knowledgeTabRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"knowledge/$tab\",\n component: KnowledgeRoute,\n});\n\nconst memoryRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"memory\",\n component: MemoryRoute,\n});\n\nconst statusRoute = createRoute({\n getParentRoute: () => rootRoute,\n path: \"status\",\n component: StatusRoute,\n});\n\nconst routeTree = rootRoute.addChildren([\n indexRoute,\n playgroundRoute,\n playgroundSessionRoute,\n tracingRoute,\n tracingTraceRoute,\n tracingSessionRoute,\n sessionsRoute,\n agentsRoute,\n toolsRoute,\n sandboxesRoute,\n sandboxDetailRoute,\n mcpsRoute,\n pipelinesRoute,\n knowledgeRoute,\n knowledgeTabRoute,\n memoryRoute,\n statusRoute,\n]);\n\nexport const studioRouter = createRouter({\n routeTree,\n});\n\ndeclare module \"@tanstack/react-router\" {\n interface Register {\n router: typeof studioRouter;\n }\n}\n","import { RouterProvider } from \"@tanstack/react-router\";\nimport {\n type ChangeEvent,\n type KeyboardEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type {\n StudioConfig,\n StudioSandboxesSummary,\n StudioSandboxSummary,\n StudioSession,\n StudioSessionSummary,\n StudioTraceSummary,\n} from \"../../types\";\nimport {\n enrichTranscriptWithTraceIds,\n fileToAttachment,\n type PromptAttachment,\n sessionModelRef,\n} from \"./app-helpers\";\nimport { useStudioTheme } from \"./app-theme\";\nimport { useAgentModels } from \"./modules/agents/use-agent-models\";\nimport {\n type BrowserWorkspace,\n browserWorkspaceForTool,\n} from \"./modules/playground/browser-workspace\";\nimport { usePlaygroundRun } from \"./modules/playground/use-playground-run\";\nimport { usePlaygroundTranscript } from \"./modules/playground/use-playground-transcript\";\nimport { useStudioSessions } from \"./modules/sessions/use-studio-sessions\";\nimport { errorMessage } from \"./modules/shared/format\";\nimport {\n fallbackActivePage,\n isActivePageEnabled,\n type StudioPageAvailability,\n} from \"./modules/shared/navigation\";\nimport { defaultKnowledgeTab } from \"./modules/shared/path\";\nimport { requestJson } from \"./modules/shared/request\";\nimport {\n formValue,\n nextSequence,\n resetTranscriptSequence,\n resizeTextarea,\n setTranscriptSequence,\n} from \"./modules/shared/transcript\";\nimport type { ActivePage, KnowledgeTab, RunState } from \"./modules/shared/types\";\nimport { useTraces } from \"./modules/tracing/use-traces\";\nimport { StudioConsoleContext } from \"./studio-console-context\";\nimport { studioRouter } from \"./studio-router\";\n\nexport function StudioConsole() {\n const [config, setConfig] = useState<StudioConfig | undefined>();\n const [selectedAgentId, setSelectedAgentId] = useState(\"\");\n const transcript = usePlaygroundTranscript();\n const { messages, setMessages } = transcript;\n const [sessionTraceSummaries, setSessionTraceSummaries] = useState<StudioTraceSummary[]>([]);\n const [prompt, setPrompt] = useState(\"\");\n const [attachments, setAttachments] = useState<PromptAttachment[]>([]);\n const [activePage, setActivePage] = useState<ActivePage>(\"playground\");\n const { theme, resolvedTheme, toggleTheme } = useStudioTheme();\n const [knowledgeTab, setKnowledgeTab] = useState<KnowledgeTab>(defaultKnowledgeTab);\n const [deleteCandidate, setDeleteCandidate] = useState<StudioSessionSummary | undefined>();\n const [status, setStatus] = useState(\"Loading\");\n const [, setError] = useState(\"\");\n const [runState, setRunState] = useState<RunState>(\"idle\");\n const [sandboxes, setSandboxes] = useState<StudioSandboxSummary[]>([]);\n const [browserWorkspace, setBrowserWorkspace] = useState<BrowserWorkspace | undefined>();\n const [browserWorkspaceOpen, setBrowserWorkspaceOpen] = useState(false);\n const [transcriptResetKey, setTranscriptResetKey] = useState(0);\n const promptRef = useRef<HTMLTextAreaElement | null>(null);\n const attachmentInputRef = useRef<HTMLInputElement | null>(null);\n const transcriptScrollerRef = useRef<HTMLElement | null>(null);\n const transcriptStickToBottomRef = useRef(true);\n\n function updateTranscriptStickiness() {\n const node = transcriptScrollerRef.current;\n if (node === null) {\n return;\n }\n transcriptStickToBottomRef.current =\n node.scrollHeight - node.scrollTop - node.clientHeight < 80;\n }\n\n useEffect(() => {\n if (\n activePage !== \"playground\" ||\n messages.length === 0 ||\n !transcriptStickToBottomRef.current\n ) {\n return;\n }\n const frame = window.requestAnimationFrame(() => {\n const node = transcriptScrollerRef.current;\n if (node === null) {\n return;\n }\n node.scrollTop = node.scrollHeight;\n });\n return () => window.cancelAnimationFrame(frame);\n }, [activePage, messages]);\n\n useEffect(() => {\n if (activePage !== \"playground\" || typeof ResizeObserver === \"undefined\") {\n return;\n }\n const scroller = transcriptScrollerRef.current;\n if (scroller === null) {\n return;\n }\n const content = scroller.querySelector<HTMLElement>(\"[data-studio-transcript-content]\");\n if (content === null) {\n return;\n }\n const observer = new ResizeObserver(() => {\n if (transcriptStickToBottomRef.current) {\n scroller.scrollTop = scroller.scrollHeight;\n }\n });\n observer.observe(content);\n return () => observer.disconnect();\n }, [activePage]);\n\n const loadConfig = useCallback(async () => {\n setStatus(\"Loading\");\n setError(\"\");\n try {\n const response = await fetch(\"/config\");\n if (response.status === 401) {\n setStatus(\"Authentication required\");\n return;\n }\n if (!response.ok) {\n throw new Error(`Config failed with HTTP ${response.status}`);\n }\n\n const nextConfig = (await response.json()) as StudioConfig;\n setConfig(nextConfig);\n setSelectedAgentId((current) => current || nextConfig.agents[0]?.id || \"\");\n setStatus(\"Connected\");\n } catch (loadError) {\n setError(errorMessage(loadError));\n setStatus(\"Config error\");\n }\n }, []);\n\n useEffect(() => {\n void loadConfig();\n }, [loadConfig]);\n\n const sessionsEnabled = config?.capabilities.sessions?.enabled === true;\n const tracesEnabled = config?.capabilities.traces?.enabled === true;\n const knowledgeEnabled = config?.capabilities.knowledge?.enabled === true;\n const mcpsEnabled = config?.capabilities.mcps?.enabled === true;\n const toolsEnabled = config?.capabilities.tools?.enabled === true;\n const sandboxesEnabled = config?.capabilities.sandboxes?.enabled === true;\n const pipelinesEnabled = config?.capabilities.pipelines?.enabled === true;\n const memoryEnabled = config?.capabilities.memory?.enabled === true;\n const statusEnabled = config?.capabilities.status?.enabled === true;\n const agents = config?.agents ?? [];\n const pipelines = config?.pipelines ?? [];\n const hasAgents = agents.length > 0;\n useEffect(() => {\n if (!sandboxesEnabled) {\n setSandboxes([]);\n setBrowserWorkspace(undefined);\n setBrowserWorkspaceOpen(false);\n return;\n }\n const controller = new AbortController();\n void requestJson<StudioSandboxesSummary>(\"/sandboxes\", \"Sandboxes\", controller.signal)\n .then((summary) => setSandboxes(summary.sandboxes))\n .catch((loadError: unknown) => {\n if (!controller.signal.aborted) setError(errorMessage(loadError));\n });\n return () => controller.abort();\n }, [sandboxesEnabled]);\n const navigateToTracing = useCallback(() => {\n setActivePage(\"tracing\");\n }, []);\n const navigateSessionPath = useCallback((sessionId: string | undefined) => {\n if (sessionId === undefined) {\n void studioRouter.navigate({ to: \"/playground\" });\n return;\n }\n void studioRouter.navigate({\n to: \"/playground/$sessionId\",\n params: { sessionId },\n });\n }, []);\n const navigateTraceIndex = useCallback(() => {\n void studioRouter.navigate({ to: \"/tracing\" });\n }, []);\n const navigateTracePath = useCallback((traceId: string) => {\n void studioRouter.navigate({\n to: \"/tracing/$traceId\",\n params: { traceId },\n });\n }, []);\n const navigateTraceSessionPath = useCallback((sessionId: string) => {\n void studioRouter.navigate({\n to: \"/tracing/sessions/$sessionId\",\n params: { sessionId },\n });\n }, []);\n const traces = useTraces({\n activePage,\n enabled: tracesEnabled,\n initialTraceId: \"\",\n initialTraceSessionId: undefined,\n onError: setError,\n onNavigateTracing: navigateToTracing,\n onOpenTrace: navigateTracePath,\n onOpenTraceIndex: navigateTraceIndex,\n onOpenTraceSession: navigateTraceSessionPath,\n });\n const pageAvailability: StudioPageAvailability = useMemo(\n () => ({\n hasAgents,\n sessionsEnabled,\n tracesEnabled,\n toolsEnabled,\n sandboxesEnabled,\n mcpsEnabled,\n pipelinesEnabled,\n memoryEnabled,\n statusEnabled,\n knowledgeEnabled,\n }),\n [\n hasAgents,\n sessionsEnabled,\n tracesEnabled,\n toolsEnabled,\n sandboxesEnabled,\n mcpsEnabled,\n pipelinesEnabled,\n memoryEnabled,\n statusEnabled,\n knowledgeEnabled,\n ],\n );\n const selectedAgent =\n agents.find((agent) => agent.id === selectedAgentId) ?? agents[0] ?? undefined;\n const selectedAgentModelId = selectedAgent?.id;\n const selectedAgentQuickPrompts = selectedAgent?.quickPrompts ?? [];\n const { selectedAgentModels, selectedModelRef, setSelectedModelRef } = useAgentModels({\n enabled: config?.models !== undefined,\n selectedAgentId: selectedAgentModelId,\n onError: setError,\n });\n const hasMessages = messages.length > 0;\n const openBrowserWorkspaceForTool = useCallback(\n (toolName: string) => {\n const workspace = browserWorkspaceForTool(\n sandboxes,\n selectedAgent?.id ?? selectedAgentId,\n toolName,\n );\n if (workspace !== undefined) {\n setBrowserWorkspace(workspace);\n setBrowserWorkspaceOpen(true);\n }\n },\n [sandboxes, selectedAgent?.id, selectedAgentId],\n );\n const handleSessionLoaded = useCallback(\n (\n session: StudioSession,\n traceSummaries: StudioTraceSummary[],\n options: { updatePath?: boolean },\n ) => {\n setTranscriptResetKey((current) => current + 1);\n setTranscriptSequence(nextSequence(session.transcript));\n setSelectedAgentId(session.agentId);\n setSelectedModelRef(sessionModelRef(session));\n setSessionTraceSummaries(traceSummaries);\n setMessages(enrichTranscriptWithTraceIds(session.transcript, traceSummaries));\n setAttachments([]);\n setBrowserWorkspace(undefined);\n setBrowserWorkspaceOpen(false);\n if (options.updatePath !== false) {\n setActivePage(\"playground\");\n navigateSessionPath(session.id);\n }\n },\n [navigateSessionPath, setMessages, setSelectedModelRef],\n );\n const handleSessionDeleted = useCallback(\n (sessionId: string, wasSelected: boolean) => {\n traces.removeSessionTraces(sessionId);\n if (!wasSelected) {\n return;\n }\n resetTranscriptSequence();\n setTranscriptResetKey((current) => current + 1);\n setMessages([]);\n setSessionTraceSummaries([]);\n setPrompt(\"\");\n setAttachments([]);\n setBrowserWorkspace(undefined);\n setBrowserWorkspaceOpen(false);\n if (activePage === \"playground\") {\n navigateSessionPath(undefined);\n }\n },\n [activePage, navigateSessionPath, setMessages, traces],\n );\n const sessions = useStudioSessions({\n activePage,\n currentAgentId: selectedAgent?.id ?? selectedAgentId,\n enabled: sessionsEnabled,\n loadSessionTraceSummaries: traces.loadSessionTraceSummaries,\n runState,\n selectedModelRef,\n onError: setError,\n onSessionCreated: navigateSessionPath,\n onSessionDeleted: handleSessionDeleted,\n onSessionLoaded: handleSessionLoaded,\n onStatus: setStatus,\n });\n\n const {\n answeringQuestions,\n decidingApprovals,\n isStreaming,\n answerToolQuestion,\n decideToolApproval,\n runPrompt,\n stopPrompt,\n } = usePlaygroundRun({\n attachments,\n messages,\n promptRef,\n runState,\n selectedAgent,\n selectedAgentId,\n selectedModelRef,\n sessions,\n sessionsEnabled,\n traces,\n transcript,\n onActivePageChange: setActivePage,\n onAttachmentsChange: setAttachments,\n onBeforeRun: () => {\n transcriptStickToBottomRef.current = true;\n },\n onError: setError,\n onPromptChange: setPrompt,\n onRunStateChange: setRunState,\n onSessionTraceSummariesChange: setSessionTraceSummaries,\n onStatus: setStatus,\n onToolCall: openBrowserWorkspaceForTool,\n });\n\n const startNewChat = useCallback(\n (options: { updatePath?: boolean } = {}) => {\n if (runState === \"running\") {\n return;\n }\n resetTranscriptSequence();\n setTranscriptResetKey((current) => current + 1);\n sessions.clearSelectedSession();\n setMessages([]);\n setSessionTraceSummaries([]);\n setPrompt(\"\");\n setAttachments([]);\n setBrowserWorkspace(undefined);\n setBrowserWorkspaceOpen(false);\n setActivePage(\"playground\");\n setError(\"\");\n if (options.updatePath !== false) {\n navigateSessionPath(undefined);\n }\n requestAnimationFrame(() => resizeTextarea(promptRef.current));\n },\n [navigateSessionPath, runState, sessions, setMessages],\n );\n\n const selectPlaygroundAgent = useCallback(\n (agentId: string) => {\n if (runState === \"running\" || agentId === selectedAgentId) {\n return;\n }\n\n setSelectedAgentId(agentId);\n setSelectedModelRef(\"\");\n resetTranscriptSequence();\n setTranscriptResetKey((current) => current + 1);\n sessions.clearSelectedSession();\n setMessages([]);\n setSessionTraceSummaries([]);\n setPrompt(\"\");\n setAttachments([]);\n setBrowserWorkspace(undefined);\n setBrowserWorkspaceOpen(false);\n setActivePage(\"playground\");\n setError(\"\");\n navigateSessionPath(undefined);\n requestAnimationFrame(() => resizeTextarea(promptRef.current));\n },\n [navigateSessionPath, runState, selectedAgentId, sessions, setMessages, setSelectedModelRef],\n );\n\n function updatePrompt(event: ChangeEvent<HTMLTextAreaElement>) {\n setPrompt(formValue(event));\n resizeTextarea(event.currentTarget);\n }\n\n async function addPromptAttachments(event: ChangeEvent<HTMLInputElement>) {\n const files = Array.from(event.currentTarget.files ?? []);\n event.currentTarget.value = \"\";\n if (files.length === 0) {\n return;\n }\n\n try {\n const nextAttachments = await Promise.all(files.map(fileToAttachment));\n setAttachments((current) => [...current, ...nextAttachments]);\n } catch (attachmentError) {\n setError(errorMessage(attachmentError));\n }\n }\n\n function removePromptAttachment(id: string) {\n setAttachments((current) => current.filter((attachment) => attachment.id !== id));\n }\n\n function handlePromptKeyDown(event: KeyboardEvent<HTMLTextAreaElement>) {\n if (event.key !== \"Enter\" || event.shiftKey || event.nativeEvent.isComposing) {\n return;\n }\n\n event.preventDefault();\n void runPrompt(prompt);\n }\n\n const pageEnabled = useCallback(\n (page: ActivePage) => isActivePageEnabled(page, pageAvailability),\n [pageAvailability],\n );\n\n const navigatePage = useCallback(\n (page: ActivePage) => {\n if (!isActivePageEnabled(page, pageAvailability)) {\n return;\n }\n\n setActivePage(page);\n if (page === \"tracing\") {\n traces.clearTraceSelection();\n void studioRouter.navigate({ to: \"/tracing\" });\n return;\n }\n if (page === \"knowledge\") {\n traces.clearTraceSelection();\n void studioRouter.navigate({\n to: \"/knowledge/$tab\",\n params: { tab: knowledgeTab },\n });\n return;\n }\n traces.clearTraceSelection();\n if (page === \"playground\" && sessions.selectedSessionId.length > 0) {\n navigateSessionPath(sessions.selectedSessionId);\n return;\n }\n void studioRouter.navigate({ to: `/${page}` });\n },\n [knowledgeTab, navigateSessionPath, pageAvailability, sessions.selectedSessionId, traces],\n );\n\n const navigateFallback = useCallback(\n (preferred: ActivePage) => {\n const nextPage = fallbackActivePage(preferred, pageAvailability);\n navigatePage(nextPage);\n },\n [navigatePage, pageAvailability],\n );\n\n function navigateKnowledgeTab(tab: KnowledgeTab) {\n setActivePage(\"knowledge\");\n setKnowledgeTab(tab);\n traces.clearTraceSelection();\n void studioRouter.navigate({\n to: \"/knowledge/$tab\",\n params: { tab },\n });\n }\n\n const activateRoute = useCallback(\n (page: ActivePage) => {\n if (!isActivePageEnabled(page, pageAvailability)) {\n navigateFallback(page);\n return;\n }\n setActivePage(page);\n if (page !== \"tracing\") {\n traces.clearTraceSelection();\n }\n },\n [navigateFallback, pageAvailability, traces],\n );\n\n const contextValue = {\n activePage,\n agents,\n answeringQuestions,\n attachments,\n browserWorkspace,\n browserWorkspaceOpen,\n decidingApprovals,\n deleteCandidate,\n hasAgents,\n hasMessages,\n isStreaming,\n knowledgeEnabled,\n knowledgeTab,\n mcpsEnabled,\n memoryEnabled,\n messages,\n pageEnabled,\n pipelines,\n pipelinesEnabled,\n prompt,\n runState,\n resolvedTheme,\n sandboxesEnabled,\n selectedAgent,\n selectedAgentId,\n selectedAgentModels,\n selectedAgentQuickPrompts,\n selectedModelRef,\n sessionTraceSummaries,\n sessions,\n sessionsEnabled,\n status,\n statusEnabled,\n theme,\n toolsEnabled,\n traces,\n tracesEnabled,\n attachmentInputRef,\n promptRef,\n transcriptScrollerRef,\n transcriptResetKey,\n activateRoute,\n navigateFallback,\n navigatePage,\n navigateKnowledgeTab,\n setDeleteCandidate,\n closeBrowserWorkspace: () => setBrowserWorkspaceOpen(false),\n openBrowserWorkspace: () => setBrowserWorkspaceOpen(true),\n setError,\n setKnowledgeTab,\n setSelectedModelRef,\n setStatus,\n startNewChat,\n selectPlaygroundAgent,\n addPromptAttachments,\n decideToolApproval,\n updatePrompt,\n handlePromptKeyDown,\n answerToolQuestion,\n removePromptAttachment,\n runPrompt,\n stopPrompt,\n toggleTheme,\n updateTranscriptStickiness,\n };\n\n return (\n <StudioConsoleContext.Provider value={contextValue}>\n <RouterProvider router={studioRouter} />\n </StudioConsoleContext.Provider>\n );\n}\n","import { createRoot } from \"react-dom/client\";\nimport \"@anvia/react-ui/stream/styles.css\";\nimport { StudioConsole } from \"./app\";\nimport \"./styles.css\";\n\nconst root = document.getElementById(\"anvia-ui\");\n\nif (root !== null) {\n createRoot(root).render(<StudioConsole />);\n}\n"],"file":"index-BLaXiUWO.js"}