@anvia/studio 1.0.0 → 1.0.2

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 (99) hide show
  1. package/README.md +21 -1
  2. package/dist/index.d.ts +14 -3
  3. package/dist/index.js +203 -40
  4. package/dist/index.js.map +1 -1
  5. package/dist/ui/assets/{ArrowClockwise.es-CSEY3Qr6.js → ArrowClockwise.es-5vr4h4OH.js} +2 -2
  6. package/dist/ui/assets/{ArrowClockwise.es-CSEY3Qr6.js.map → ArrowClockwise.es-5vr4h4OH.js.map} +1 -1
  7. package/dist/ui/assets/{CaretDown.es-BHAPbv1R.js → CaretDown.es-CXu4Fvbf.js} +2 -2
  8. package/dist/ui/assets/{CaretDown.es-BHAPbv1R.js.map → CaretDown.es-CXu4Fvbf.js.map} +1 -1
  9. package/dist/ui/assets/{Check.es-BLChmggz.js → Check.es-DSXK9-8c.js} +2 -2
  10. package/dist/ui/assets/{Check.es-BLChmggz.js.map → Check.es-DSXK9-8c.js.map} +1 -1
  11. package/dist/ui/assets/{Wrench.es-BL6BmNv7.js → Wrench.es-Cl38Pi3C.js} +2 -2
  12. package/dist/ui/assets/{Wrench.es-BL6BmNv7.js.map → Wrench.es-Cl38Pi3C.js.map} +1 -1
  13. package/dist/ui/assets/{agents-page-DQqt45If.js → agents-page-h-83w9EN.js} +2 -2
  14. package/dist/ui/assets/{agents-page-DQqt45If.js.map → agents-page-h-83w9EN.js.map} +1 -1
  15. package/dist/ui/assets/{badge-CcajoiAt.js → badge-O3YyUN3G.js} +2 -2
  16. package/dist/ui/assets/{badge-CcajoiAt.js.map → badge-O3YyUN3G.js.map} +1 -1
  17. package/dist/ui/assets/{button-07gzSO47.js → button-Dsqwey2_.js} +2 -2
  18. package/dist/ui/assets/{button-07gzSO47.js.map → button-Dsqwey2_.js.map} +1 -1
  19. package/dist/ui/assets/dialog-DN8F1Aaq.js +2 -0
  20. package/dist/ui/assets/{dialog-CNNQ3hoF.js.map → dialog-DN8F1Aaq.js.map} +1 -1
  21. package/dist/ui/assets/{dist-CqMdRzwk.js → dist-CUv0NHNl.js} +2 -2
  22. package/dist/ui/assets/{dist-CqMdRzwk.js.map → dist-CUv0NHNl.js.map} +1 -1
  23. package/dist/ui/assets/dist-PrGeYMiK.js +2 -0
  24. package/dist/ui/assets/{dist-DWqJwN1i.js.map → dist-PrGeYMiK.js.map} +1 -1
  25. package/dist/ui/assets/es2015-Ck1KeeEx.js +42 -0
  26. package/dist/ui/assets/es2015-Ck1KeeEx.js.map +1 -0
  27. package/dist/ui/assets/{icon-CqkMSRbt.js → icon-DyadsXLr.js} +2 -2
  28. package/dist/ui/assets/icon-DyadsXLr.js.map +1 -0
  29. package/dist/ui/assets/index-DmctBqLn.js +75 -0
  30. package/dist/ui/assets/index-DmctBqLn.js.map +1 -0
  31. package/dist/ui/assets/{index-CFbK-pX6.css → index-VCdJ2Rb4.css} +1 -1
  32. package/dist/ui/assets/{input-BiI6gsxA.js → input-DHvac9Uq.js} +2 -2
  33. package/dist/ui/assets/{input-BiI6gsxA.js.map → input-DHvac9Uq.js.map} +1 -1
  34. package/dist/ui/assets/{knowledge-model-S51n2rKh.js → knowledge-model-B6kRb7zc.js} +1 -1
  35. package/dist/ui/assets/{knowledge-model-S51n2rKh.js.map → knowledge-model-B6kRb7zc.js.map} +1 -1
  36. package/dist/ui/assets/{knowledge-page-DZeLh92t.js → knowledge-page-DKnPrmhK.js} +2 -2
  37. package/dist/ui/assets/knowledge-page-DKnPrmhK.js.map +1 -0
  38. package/dist/ui/assets/mcps-page-MSz67ifn.js +2 -0
  39. package/dist/ui/assets/mcps-page-MSz67ifn.js.map +1 -0
  40. package/dist/ui/assets/{memory-page-D3UhjpTb.js → memory-page-2qr2eMrI.js} +2 -2
  41. package/dist/ui/assets/{memory-page-D3UhjpTb.js.map → memory-page-2qr2eMrI.js.map} +1 -1
  42. package/dist/ui/assets/pipelines-page-D1IB1tw-.js +8 -0
  43. package/dist/ui/assets/pipelines-page-D1IB1tw-.js.map +1 -0
  44. package/dist/ui/assets/renderers-BIw5yJkg.js +94 -0
  45. package/dist/ui/assets/renderers-BIw5yJkg.js.map +1 -0
  46. package/dist/ui/assets/{request-7oUPS8zY.js → request-CnFL8L6p.js} +3 -3
  47. package/dist/ui/assets/{request-7oUPS8zY.js.map → request-CnFL8L6p.js.map} +1 -1
  48. package/dist/ui/assets/rfb-NV_fh9Db.js +6 -0
  49. package/dist/ui/assets/{rfb-DiW3PDuT.js.map → rfb-NV_fh9Db.js.map} +1 -1
  50. package/dist/ui/assets/sandboxes-page-DWMtrKYJ.js +2 -0
  51. package/dist/ui/assets/sandboxes-page-DWMtrKYJ.js.map +1 -0
  52. package/dist/ui/assets/select-C1_9fsRu.js +2 -0
  53. package/dist/ui/assets/{select-BOYfrfck.js.map → select-C1_9fsRu.js.map} +1 -1
  54. package/dist/ui/assets/{sessions-page-ClXzRM9K.js → sessions-page-BIk4q-L8.js} +2 -2
  55. package/dist/ui/assets/{sessions-page-ClXzRM9K.js.map → sessions-page-BIk4q-L8.js.map} +1 -1
  56. package/dist/ui/assets/{status-page-eA8uRLZQ.js → status-page-jKTghmnz.js} +2 -2
  57. package/dist/ui/assets/{status-page-eA8uRLZQ.js.map → status-page-jKTghmnz.js.map} +1 -1
  58. package/dist/ui/assets/{studio-CeTsQ4gf.js → studio-Bh00wIF1.js} +2 -2
  59. package/dist/ui/assets/{studio-CeTsQ4gf.js.map → studio-Bh00wIF1.js.map} +1 -1
  60. package/dist/ui/assets/{textarea-DESKg_ZK.js → textarea-CZvhTJxB.js} +2 -2
  61. package/dist/ui/assets/{textarea-DESKg_ZK.js.map → textarea-CZvhTJxB.js.map} +1 -1
  62. package/dist/ui/assets/{tool-runner-D3-SlGqQ.js → tool-runner-BtaZqE3R.js} +2 -2
  63. package/dist/ui/assets/{tool-runner-D3-SlGqQ.js.map → tool-runner-BtaZqE3R.js.map} +1 -1
  64. package/dist/ui/assets/tools-page-D1ewvG0D.js +2 -0
  65. package/dist/ui/assets/tools-page-D1ewvG0D.js.map +1 -0
  66. package/dist/ui/assets/{trace-browser-D93H7Xxs.js → trace-browser-CuBl9__d.js} +3 -3
  67. package/dist/ui/assets/trace-browser-CuBl9__d.js.map +1 -0
  68. package/dist/ui/assets/{transcript-item-BmjdZLbS.js → transcript-item-ChtaJvPe.js} +2 -2
  69. package/dist/ui/assets/{transcript-item-BmjdZLbS.js.map → transcript-item-ChtaJvPe.js.map} +1 -1
  70. package/dist/ui/assets/utils-DzstcfqT.js +2 -0
  71. package/dist/ui/assets/{utils-C9GMruoG.js.map → utils-DzstcfqT.js.map} +1 -1
  72. package/dist/ui/assets/{with-selector-CRZWaZzC.js → with-selector-B8ah9Wvu.js} +2 -2
  73. package/dist/ui/assets/{with-selector-CRZWaZzC.js.map → with-selector-B8ah9Wvu.js.map} +1 -1
  74. package/dist/ui/index.html +19 -20
  75. package/package.json +14 -11
  76. package/dist/ui/assets/chunk-QGX73TSQ-D9QAGlAY.js +0 -65
  77. package/dist/ui/assets/chunk-QGX73TSQ-D9QAGlAY.js.map +0 -1
  78. package/dist/ui/assets/dialog-CNNQ3hoF.js +0 -2
  79. package/dist/ui/assets/dist-DWqJwN1i.js +0 -2
  80. package/dist/ui/assets/es2015-DsZq7PFO.js +0 -42
  81. package/dist/ui/assets/es2015-DsZq7PFO.js.map +0 -1
  82. package/dist/ui/assets/icon-CqkMSRbt.js.map +0 -1
  83. package/dist/ui/assets/index-BtvoCaW7.js +0 -12
  84. package/dist/ui/assets/index-BtvoCaW7.js.map +0 -1
  85. package/dist/ui/assets/knowledge-page-DZeLh92t.js.map +0 -1
  86. package/dist/ui/assets/mcps-page-CDPMO2x9.js +0 -2
  87. package/dist/ui/assets/mcps-page-CDPMO2x9.js.map +0 -1
  88. package/dist/ui/assets/pipelines-page-BP8R6NI7.js +0 -8
  89. package/dist/ui/assets/pipelines-page-BP8R6NI7.js.map +0 -1
  90. package/dist/ui/assets/renderers-DHMEAblV.js +0 -94
  91. package/dist/ui/assets/renderers-DHMEAblV.js.map +0 -1
  92. package/dist/ui/assets/rfb-DiW3PDuT.js +0 -6
  93. package/dist/ui/assets/sandboxes-page-C6kokYwc.js +0 -2
  94. package/dist/ui/assets/sandboxes-page-C6kokYwc.js.map +0 -1
  95. package/dist/ui/assets/select-BOYfrfck.js +0 -2
  96. package/dist/ui/assets/tools-page-D3gnQf1_.js +0 -2
  97. package/dist/ui/assets/tools-page-D3gnQf1_.js.map +0 -1
  98. package/dist/ui/assets/trace-browser-D93H7Xxs.js.map +0 -1
  99. package/dist/ui/assets/utils-C9GMruoG.js +0 -2
@@ -1 +0,0 @@
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-OJBFDBLG.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 isJsonValue\n} from \"./chunk-3XQGVDU5.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\nexport {\n agentInteractionRequestSchema,\n agentInteractionResponseSchema,\n agentContinuationSchema,\n parseAgentInteractionRequest,\n parseAgentInteractionResponse,\n parseAgentQuestionPrompts,\n parseAgentContinuation,\n assertAgentInteractionResponse\n};\n//# sourceMappingURL=chunk-OJBFDBLG.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 assertReplayableToolPart(part);\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 = [];\n for (const part of message.parts) {\n if (part.type !== \"tool\") continue;\n assertToolResultPart(part);\n content.push(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 ownerPart = toolPartAt(result, location);\n if (ownerPart === void 0 || ownerPart.state === \"input-streaming\") {\n throw new TypeError(\n `Tool result \"${content.toolCallId}\" requires a matching completed tool call.`\n );\n }\n const part = toolResultToUIMessagePart(content, ownerPart.toolName, ownerPart.input);\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 };\n }\n if (part.resultContent !== void 0) {\n return { type: \"content\", value: part.resultContent };\n }\n const output = part.output;\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, input) {\n const output = content.output;\n const common = {\n id: toolPartId(content.toolCallId),\n type: \"tool\",\n toolName: content.toolName || fallbackToolName,\n toolCallId: content.toolCallId,\n input\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 toolPartAt(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 : void 0;\n}\nfunction assertReplayableToolPart(part) {\n if (part.state === \"input-streaming\") {\n throw new TypeError(\n `Tool call \"${part.toolCallId}\" is still streaming and cannot be converted to a model message.`\n );\n }\n if (!isJsonValue(part.input)) {\n throw new TypeError(`Tool call \"${part.toolCallId}\" input must be a strict JSON value.`);\n }\n}\nfunction assertToolResultPart(part) {\n assertReplayableToolPart(part);\n if (part.state === \"input-available\") {\n throw new TypeError(\n `Tool message part \"${part.toolCallId}\" requires an output or execution error.`\n );\n }\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 {\n parseAgentInteractionRequest,\n parseAgentInteractionResponse\n} from \"@anvia/core/agent/interactions\";\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 (!isJsonValue2(event.input)) invalid(\"tool_result.input\", 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 \"originalTokenCount\",\n \"compactedTokenCount\",\n \"retainedTokenCount\",\n \"resultTokenCount\",\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 \"originalTokenCount\",\n \"compactedTokenCount\",\n \"retainedTokenCount\",\n \"resultTokenCount\",\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 \"originalTokenCount\",\n \"compactedTokenCount\",\n \"retainedTokenCount\",\n \"resultTokenCount\",\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 if (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\") {\n return false;\n }\n if (value.state === \"input-streaming\") {\n return typeof value.input === \"string\" && value.output === void 0 && value.resultContent === void 0 && value.error === void 0;\n }\n if (value.state === \"input-available\") {\n return isJsonValue2(value.input) && value.output === void 0 && value.resultContent === void 0 && value.error === void 0;\n }\n if (value.state === \"output-available\") {\n return isJsonValue2(value.input) && isJsonValue2(value.output) && (value.resultContent === void 0 || Array.isArray(value.resultContent) && value.resultContent.every(isToolResultContent)) && value.error === void 0;\n }\n return value.state === \"error\" && isJsonValue2(value.input) && value.output === void 0 && value.resultContent === void 0 && isClientStreamError(value.error);\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 [\n \"originalMessageCount\",\n \"compactedMessageCount\",\n \"retainedMessageCount\",\n \"originalTokenCount\",\n \"compactedTokenCount\",\n \"retainedTokenCount\",\n \"resultTokenCount\"\n ]) {\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 originalTokenCount: event.originalTokenCount,\n compactedTokenCount: event.compactedTokenCount,\n retainedTokenCount: event.retainedTokenCount,\n resultTokenCount: event.resultTokenCount,\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 \"response\":\n case \"interaction\":\n case \"blocked\": {\n const result = event;\n if (result.type === \"interaction\" && scope === void 0) {\n yield scopedEvent(runtime.runId, turn, scope, {\n type: \"interaction\",\n interaction: result.interaction\n });\n }\n const output = result.type === \"response\" ? clientOutput(result.output, runtime.options.mapOutput) : void 0;\n const runEnd = {\n type: \"run_end\",\n status: agentOutcomeStatus(result.type),\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 partBase = {\n id: tool.partId,\n type: \"tool\",\n toolName: contentPart.toolName,\n toolCallId: contentPart.toolCallId\n };\n if (contentPart.callId !== void 0) Object.assign(partBase, { callId: contentPart.callId });\n if (tool.internalCallId !== void 0) {\n Object.assign(partBase, { internalCallId: tool.internalCallId });\n }\n if (state.turn !== void 0) Object.assign(partBase, { turn: state.turn });\n if (contentPart.signature !== void 0) {\n Object.assign(partBase, { signature: contentPart.signature });\n }\n if (tool.result?.status === \"success\") {\n const part = {\n ...partBase,\n state: \"output-available\",\n input: contentPart.input,\n output: tool.result.output\n };\n if (tool.result.content !== void 0) part.resultContent = tool.result.content;\n return part;\n }\n if (tool.result?.status === \"error\") {\n return {\n ...partBase,\n state: \"error\",\n input: contentPart.input,\n error: tool.result.error\n };\n }\n return {\n ...partBase,\n state: \"input-available\",\n input: contentPart.input\n };\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 === \"response\" || event.type === \"interaction\" || event.type === \"blocked\" || event.type === \"error\";\n}\nfunction agentOutcomeStatus(type) {\n if (type === \"response\") return \"completed\";\n if (type === \"interaction\") return \"suspended\";\n return \"blocked\";\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\" ? toolPartBase(current) : {\n id: event.partId,\n type: \"tool\",\n toolName: event.toolName ?? \"\",\n toolCallId: event.toolCallId\n };\n const previous = current?.type === \"tool\" && typeof current.input === \"string\" ? current.input : \"\";\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 {\n ...part,\n state: \"input-streaming\",\n input: event.mode === \"replace\" ? event.delta : `${previous}${event.delta}`\n };\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\" ? toolPartBase(current) : {\n id: event.partId,\n type: \"tool\",\n toolName: event.toolName,\n toolCallId: event.toolCallId\n };\n if (event.callId !== void 0) part.callId = event.callId;\n if (event.internalCallId !== void 0) part.internalCallId = event.internalCallId;\n if (event.turn !== void 0) part.turn = event.turn;\n if (event.result.status === \"error\") {\n return {\n ...part,\n state: \"error\",\n input: event.input,\n error: event.result.error\n };\n }\n const completed = {\n ...part,\n state: \"output-available\",\n input: event.input,\n output: event.result.output\n };\n if (event.result.content !== void 0) completed.resultContent = event.result.content;\n return completed;\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 toolPartBase(part) {\n const base = {\n id: part.id,\n type: part.type,\n toolName: part.toolName,\n toolCallId: part.toolCallId\n };\n if (part.callId !== void 0) Object.assign(base, { callId: part.callId });\n if (part.internalCallId !== void 0) {\n Object.assign(base, { internalCallId: part.internalCallId });\n }\n if (part.turn !== void 0) Object.assign(base, { turn: part.turn });\n if (part.signature !== void 0) Object.assign(base, { signature: part.signature });\n return base;\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/interactions\";\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/interactions\";\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 { 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-BtvoCaW7.js"}