@epic-web/workshop-app 5.22.4 → 5.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/build/client/assets/{_-CHaVBRQw.js → _-BaHOmd8F.js} +2 -2
  2. package/build/client/assets/{_-CHaVBRQw.js.map → _-BaHOmd8F.js.map} +1 -1
  3. package/build/client/assets/_basePickBy-B3Ji82Lk.js +2 -0
  4. package/build/client/assets/_basePickBy-B3Ji82Lk.js.map +1 -0
  5. package/build/client/assets/_baseUniq-BoGoqSUm.js +2 -0
  6. package/build/client/assets/_baseUniq-BoGoqSUm.js.map +1 -0
  7. package/build/client/assets/{_exerciseNumber-3uq8PYSd.js → _exerciseNumber-DtILU6SM.js} +2 -2
  8. package/build/client/assets/{_exerciseNumber-3uq8PYSd.js.map → _exerciseNumber-DtILU6SM.js.map} +1 -1
  9. package/build/client/assets/{_exerciseNumber_._stepNumber-D5VDI7vZ.js → _exerciseNumber_._stepNumber-DoOFEk-P.js} +2 -2
  10. package/build/client/assets/{_exerciseNumber_._stepNumber-D5VDI7vZ.js.map → _exerciseNumber_._stepNumber-DoOFEk-P.js.map} +1 -1
  11. package/build/client/assets/{_exerciseNumber_.finished-3Iv9ikNq.js → _exerciseNumber_.finished-CEK9anWX.js} +2 -2
  12. package/build/client/assets/{_exerciseNumber_.finished-3Iv9ikNq.js.map → _exerciseNumber_.finished-CEK9anWX.js.map} +1 -1
  13. package/build/client/assets/{_layout-DV29dlKr.js → _layout-B_BIIcpM.js} +2 -2
  14. package/build/client/assets/{_layout-DV29dlKr.js.map → _layout-B_BIIcpM.js.map} +1 -1
  15. package/build/client/assets/_layout-D1r_62oj.js +6 -0
  16. package/build/client/assets/_layout-D1r_62oj.js.map +1 -0
  17. package/build/client/assets/{_layout-CwTidn3v.js → _layout-D7_F6t3x.js} +2 -2
  18. package/build/client/assets/{_layout-CwTidn3v.js.map → _layout-D7_F6t3x.js.map} +1 -1
  19. package/build/client/assets/_layout-DzlTTMQ0.js +2 -0
  20. package/build/client/assets/_layout-DzlTTMQ0.js.map +1 -0
  21. package/build/client/assets/accordion-CpiLc1m2.js +2 -0
  22. package/build/client/assets/accordion-CpiLc1m2.js.map +1 -0
  23. package/build/client/assets/{account-CN4B8rm4.js → account-CbFDiVNd.js} +2 -2
  24. package/build/client/assets/{account-CN4B8rm4.js.map → account-CbFDiVNd.js.map} +1 -1
  25. package/build/client/assets/app-CQvK51s0.js +2 -0
  26. package/build/client/assets/{app-lUkT_xku.js.map → app-CQvK51s0.js.map} +1 -1
  27. package/build/client/assets/{app-DGPT3Jy6.css → app-DSmkkXO5.css} +1 -1
  28. package/build/client/assets/arc-rF8TbXNV.js +2 -0
  29. package/build/client/assets/arc-rF8TbXNV.js.map +1 -0
  30. package/build/client/assets/architectureDiagram-IEHRJDOE-D7gCCmY9.js +37 -0
  31. package/build/client/assets/architectureDiagram-IEHRJDOE-D7gCCmY9.js.map +1 -0
  32. package/build/client/assets/blockDiagram-JOT3LUYC-yGQOzhkw.js +122 -0
  33. package/build/client/assets/blockDiagram-JOT3LUYC-yGQOzhkw.js.map +1 -0
  34. package/build/client/assets/{button-ChOzbirS.js → button-Dt4EcDfR.js} +2 -2
  35. package/build/client/assets/{button-ChOzbirS.js.map → button-Dt4EcDfR.js.map} +1 -1
  36. package/build/client/assets/c4Diagram-VJAJSXHY-CTFjYF37.js +11 -0
  37. package/build/client/assets/c4Diagram-VJAJSXHY-CTFjYF37.js.map +1 -0
  38. package/build/client/assets/channel-5s71-OE9.js +2 -0
  39. package/build/client/assets/channel-5s71-OE9.js.map +1 -0
  40. package/build/client/assets/chunk-4BMEZGHF-BIe0IUDz.js +2 -0
  41. package/build/client/assets/chunk-4BMEZGHF-BIe0IUDz.js.map +1 -0
  42. package/build/client/assets/chunk-A2AXSNBT-B-nCbUBj.js +165 -0
  43. package/build/client/assets/chunk-A2AXSNBT-B-nCbUBj.js.map +1 -0
  44. package/build/client/assets/chunk-AEK57VVT-B-cCHPs2.js +221 -0
  45. package/build/client/assets/chunk-AEK57VVT-B-cCHPs2.js.map +1 -0
  46. package/build/client/assets/chunk-D6G4REZN-EQ3R8OZx.js +2 -0
  47. package/build/client/assets/chunk-D6G4REZN-EQ3R8OZx.js.map +1 -0
  48. package/build/client/assets/chunk-RZ5BOZE2-h6svq8Xk.js +2 -0
  49. package/build/client/assets/chunk-RZ5BOZE2-h6svq8Xk.js.map +1 -0
  50. package/build/client/assets/chunk-XZIHB7SX-74-HFRcU.js +2 -0
  51. package/build/client/assets/chunk-XZIHB7SX-74-HFRcU.js.map +1 -0
  52. package/build/client/assets/classDiagram-GIVACNV2-CWogZCzR.js +2 -0
  53. package/build/client/assets/classDiagram-GIVACNV2-CWogZCzR.js.map +1 -0
  54. package/build/client/assets/classDiagram-v2-COTLJTTW-CWogZCzR.js +2 -0
  55. package/build/client/assets/classDiagram-v2-COTLJTTW-CWogZCzR.js.map +1 -0
  56. package/build/client/assets/clone-nHZ14b_E.js +2 -0
  57. package/build/client/assets/clone-nHZ14b_E.js.map +1 -0
  58. package/build/client/assets/{components-DrvY4pal.js → components-5arJTWsS.js} +5 -5
  59. package/build/client/assets/{components-DrvY4pal.js.map → components-5arJTWsS.js.map} +1 -1
  60. package/build/client/assets/cytoscape.esm-BY7v1xhs.js +332 -0
  61. package/build/client/assets/cytoscape.esm-BY7v1xhs.js.map +1 -0
  62. package/build/client/assets/dagre-OKDRZEBW-Bq-HgVN8.js +5 -0
  63. package/build/client/assets/dagre-OKDRZEBW-Bq-HgVN8.js.map +1 -0
  64. package/build/client/assets/diagram-SSKATNLV-Cls675Lh.js +44 -0
  65. package/build/client/assets/diagram-SSKATNLV-Cls675Lh.js.map +1 -0
  66. package/build/client/assets/diagram-VNBRO52H-CJDqBhLa.js +25 -0
  67. package/build/client/assets/diagram-VNBRO52H-CJDqBhLa.js.map +1 -0
  68. package/build/client/assets/diff-8N5KyD7o.js +2 -0
  69. package/build/client/assets/{diff-CVrsnWqw.js.map → diff-8N5KyD7o.js.map} +1 -1
  70. package/build/client/assets/{diff-CTHVtVGQ.js → diff-Bu4t2NGL.js} +2 -2
  71. package/build/client/assets/{diff-CTHVtVGQ.js.map → diff-Bu4t2NGL.js.map} +1 -1
  72. package/build/client/assets/{discord-gROK6Zn6.js → discord-BU7RzE6-.js} +2 -2
  73. package/build/client/assets/{discord-gROK6Zn6.js.map → discord-BU7RzE6-.js.map} +1 -1
  74. package/build/client/assets/discord-ut4t-aMQ.js +2 -0
  75. package/build/client/assets/discord-ut4t-aMQ.js.map +1 -0
  76. package/build/client/assets/entry.client-BLUlgPHE.js +44 -0
  77. package/build/client/assets/{entry.client-CQusg5Iz.js.map → entry.client-BLUlgPHE.js.map} +1 -1
  78. package/build/client/assets/epic-video-DN9DRRHf.js +3206 -0
  79. package/build/client/assets/epic-video-DN9DRRHf.js.map +1 -0
  80. package/build/client/assets/erDiagram-Q7BY3M3F-DdKn4jVQ.js +61 -0
  81. package/build/client/assets/erDiagram-Q7BY3M3F-DdKn4jVQ.js.map +1 -0
  82. package/build/client/assets/{error-boundary-CAu3AmhN.js → error-boundary-B07cWiEy.js} +2 -2
  83. package/build/client/assets/{error-boundary-CAu3AmhN.js.map → error-boundary-B07cWiEy.js.map} +1 -1
  84. package/build/client/assets/{finished-9PhQncNF.js → finished-B3G1RUDO.js} +2 -2
  85. package/build/client/assets/{finished-9PhQncNF.js.map → finished-B3G1RUDO.js.map} +1 -1
  86. package/build/client/assets/flowDiagram-4HSFHLVR-5Mg796nh.js +162 -0
  87. package/build/client/assets/flowDiagram-4HSFHLVR-5Mg796nh.js.map +1 -0
  88. package/build/client/assets/ganttDiagram-APWFNJXF-YO2fxWzG.js +258 -0
  89. package/build/client/assets/ganttDiagram-APWFNJXF-YO2fxWzG.js.map +1 -0
  90. package/build/client/assets/gitGraphDiagram-7IBYFJ6S-DQCZvhP_.js +66 -0
  91. package/build/client/assets/gitGraphDiagram-7IBYFJ6S-DQCZvhP_.js.map +1 -0
  92. package/build/client/assets/graph-BFAO9Sgp.js +2 -0
  93. package/build/client/assets/graph-BFAO9Sgp.js.map +1 -0
  94. package/build/client/assets/{index-egcHQOpF.js → index-B8yUFowV.js} +2 -2
  95. package/build/client/assets/{index-egcHQOpF.js.map → index-B8yUFowV.js.map} +1 -1
  96. package/build/client/assets/{index-qo6WmPUa.js → index-BfCSiT_X.js} +2 -2
  97. package/build/client/assets/{index-qo6WmPUa.js.map → index-BfCSiT_X.js.map} +1 -1
  98. package/build/client/assets/index-BmMpCvYx.js +2 -0
  99. package/build/client/assets/index-BmMpCvYx.js.map +1 -0
  100. package/build/client/assets/index-CEP3Xxa0.js +36 -0
  101. package/build/client/assets/index-CEP3Xxa0.js.map +1 -0
  102. package/build/client/assets/index-Dkt2MSig.js +2 -0
  103. package/build/client/assets/index-Dkt2MSig.js.map +1 -0
  104. package/build/client/assets/index-Do-KWT0a.js +42 -0
  105. package/build/client/assets/index-Do-KWT0a.js.map +1 -0
  106. package/build/client/assets/index-Dsusf_Av.js +38 -0
  107. package/build/client/assets/{index-CGzylDPY.js.map → index-Dsusf_Av.js.map} +1 -1
  108. package/build/client/assets/index-DvQyydjU.js +3 -0
  109. package/build/client/assets/index-DvQyydjU.js.map +1 -0
  110. package/build/client/assets/{index-CYZfnGWa.js → index-Fw2eA3AF.js} +2 -2
  111. package/build/client/assets/{index-CYZfnGWa.js.map → index-Fw2eA3AF.js.map} +1 -1
  112. package/build/client/assets/infoDiagram-PH2N3AL5-x87RxSs8.js +3 -0
  113. package/build/client/assets/infoDiagram-PH2N3AL5-x87RxSs8.js.map +1 -0
  114. package/build/client/assets/init-Gi6I4Gst.js +2 -0
  115. package/build/client/assets/init-Gi6I4Gst.js.map +1 -0
  116. package/build/client/assets/journeyDiagram-U35MCT3I-D5yGbOLJ.js +139 -0
  117. package/build/client/assets/journeyDiagram-U35MCT3I-D5yGbOLJ.js.map +1 -0
  118. package/build/client/assets/kanban-definition-NDS4AKOZ-BM6KyRww.js +89 -0
  119. package/build/client/assets/kanban-definition-NDS4AKOZ-BM6KyRww.js.map +1 -0
  120. package/build/client/assets/katex-ChWnQ-fc.js +262 -0
  121. package/build/client/assets/katex-ChWnQ-fc.js.map +1 -0
  122. package/build/client/assets/layout-qCiM2Jgn.js +2 -0
  123. package/build/client/assets/layout-qCiM2Jgn.js.map +1 -0
  124. package/build/client/assets/linear-B3zp51yW.js +2 -0
  125. package/build/client/assets/linear-B3zp51yW.js.map +1 -0
  126. package/build/client/assets/{loading-CPEkK5hO.js → loading-BPTYJOXN.js} +2 -2
  127. package/build/client/assets/{loading-CPEkK5hO.js.map → loading-BPTYJOXN.js.map} +1 -1
  128. package/build/client/assets/login-CfyUfm-m.js +2 -0
  129. package/build/client/assets/{login-C9JmYc0v.js.map → login-CfyUfm-m.js.map} +1 -1
  130. package/build/client/assets/{manifest-4acdd3e2.js → manifest-fe4b7228.js} +1 -1
  131. package/build/client/assets/mdx-Dfsh6Vjk.js +3 -0
  132. package/build/client/assets/mdx-Dfsh6Vjk.js.map +1 -0
  133. package/build/client/assets/mermaid.core-ZaxoMXOj.js +214 -0
  134. package/build/client/assets/mermaid.core-ZaxoMXOj.js.map +1 -0
  135. package/build/client/assets/mindmap-definition-ALO5MXBD-CF3siXp6.js +96 -0
  136. package/build/client/assets/mindmap-definition-ALO5MXBD-CF3siXp6.js.map +1 -0
  137. package/build/client/assets/misc-2sBiisF5.js +2 -0
  138. package/build/client/assets/misc-2sBiisF5.js.map +1 -0
  139. package/build/client/assets/{nav-chevrons-DCuva9-Q.js → nav-chevrons-CV-dpXNR.js} +2 -2
  140. package/build/client/assets/{nav-chevrons-DCuva9-Q.js.map → nav-chevrons-CV-dpXNR.js.map} +1 -1
  141. package/build/client/assets/{onboarding-DzfDHJg_.js → onboarding-5LC4kIVW.js} +2 -2
  142. package/build/client/assets/{onboarding-DzfDHJg_.js.map → onboarding-5LC4kIVW.js.map} +1 -1
  143. package/build/client/assets/{online-BsTX44az.js → online-IWqRB9zP.js} +2 -2
  144. package/build/client/assets/{online-BsTX44az.js.map → online-IWqRB9zP.js.map} +1 -1
  145. package/build/client/assets/ordinal-Cboi1Yqb.js +2 -0
  146. package/build/client/assets/ordinal-Cboi1Yqb.js.map +1 -0
  147. package/build/client/assets/{pe-DXT2FOp1.js → pe-BShc2dvc.js} +2 -2
  148. package/build/client/assets/{pe-DXT2FOp1.js.map → pe-BShc2dvc.js.map} +1 -1
  149. package/build/client/assets/pieDiagram-IB7DONF6-B-gWQIHI.js +31 -0
  150. package/build/client/assets/pieDiagram-IB7DONF6-B-gWQIHI.js.map +1 -0
  151. package/build/client/assets/{preferences-BYBJKp8k.js → preferences-BkWQyRCq.js} +2 -2
  152. package/build/client/assets/{preferences-BYBJKp8k.js.map → preferences-BkWQyRCq.js.map} +1 -1
  153. package/build/client/assets/presence-BAL3jDku.js +28 -0
  154. package/build/client/assets/presence-BAL3jDku.js.map +1 -0
  155. package/build/client/assets/preview-D4amucCL.js +2 -0
  156. package/build/client/assets/{preview-DaTpH6lj.js.map → preview-D4amucCL.js.map} +1 -1
  157. package/build/client/assets/{product-BKhLQKd7.js → product-Cyum2biy.js} +2 -2
  158. package/build/client/assets/{product-BKhLQKd7.js.map → product-Cyum2biy.js.map} +1 -1
  159. package/build/client/assets/progress-BJ4ADF-s.js +2 -0
  160. package/build/client/assets/progress-BJ4ADF-s.js.map +1 -0
  161. package/build/client/assets/{progress-bar-ZCHf2Y4W.js → progress-bar-DgnkQxQw.js} +2 -2
  162. package/build/client/assets/{progress-bar-ZCHf2Y4W.js.map → progress-bar-DgnkQxQw.js.map} +1 -1
  163. package/build/client/assets/quadrantDiagram-7GDLP6J5-BQzo7p61.js +8 -0
  164. package/build/client/assets/quadrantDiagram-7GDLP6J5-BQzo7p61.js.map +1 -0
  165. package/build/client/assets/radar-MK3ICKWK-CM-Iz9PA.js +129 -0
  166. package/build/client/assets/radar-MK3ICKWK-CM-Iz9PA.js.map +1 -0
  167. package/build/client/assets/requirementDiagram-KVF5MWMF-DzaHc66R.js +65 -0
  168. package/build/client/assets/requirementDiagram-KVF5MWMF-DzaHc66R.js.map +1 -0
  169. package/build/client/assets/revalidation-ws-ho-umDqd.js +2 -0
  170. package/build/client/assets/{revalidation-ws-BoJZTvOQ.js.map → revalidation-ws-ho-umDqd.js.map} +1 -1
  171. package/build/client/assets/{root-4MvCzrFd.js → root-tJmOmO9T.js} +3 -3
  172. package/build/client/assets/{root-4MvCzrFd.js.map → root-tJmOmO9T.js.map} +1 -1
  173. package/build/client/assets/sankeyDiagram-QLVOVGJD-DfAVeZCk.js +11 -0
  174. package/build/client/assets/sankeyDiagram-QLVOVGJD-DfAVeZCk.js.map +1 -0
  175. package/build/client/assets/sequenceDiagram-X6HHIX6F-CljZRLoS.js +123 -0
  176. package/build/client/assets/sequenceDiagram-X6HHIX6F-CljZRLoS.js.map +1 -0
  177. package/build/client/assets/{set-playground-IUJCGVu2.js → set-playground-DW2Ys-rV.js} +2 -2
  178. package/build/client/assets/{set-playground-IUJCGVu2.js.map → set-playground-DW2Ys-rV.js.map} +1 -1
  179. package/build/client/assets/stateDiagram-DGXRK772-BzVfGv3W.js +2 -0
  180. package/build/client/assets/stateDiagram-DGXRK772-BzVfGv3W.js.map +1 -0
  181. package/build/client/assets/stateDiagram-v2-YXO3MK2T-8oX001yq.js +2 -0
  182. package/build/client/assets/stateDiagram-v2-YXO3MK2T-8oX001yq.js.map +1 -0
  183. package/build/client/assets/{support-CW3-Iilk.js → support-Bg0iSyle.js} +2 -2
  184. package/build/client/assets/{support-CW3-Iilk.js.map → support-Bg0iSyle.js.map} +1 -1
  185. package/build/client/assets/tailwind-DtnE_2an.css +1 -0
  186. package/build/client/assets/test-C14D-N72.js +2 -0
  187. package/build/client/assets/{test-B8jDo0X4.js.map → test-C14D-N72.js.map} +1 -1
  188. package/build/client/assets/tests-6__AtHpI.js +4 -0
  189. package/build/client/assets/{tests-y-atkhWB.js.map → tests-6__AtHpI.js.map} +1 -1
  190. package/build/client/assets/timeline-definition-BDJGKUSR-2TO9MtLY.js +62 -0
  191. package/build/client/assets/timeline-definition-BDJGKUSR-2TO9MtLY.js.map +1 -0
  192. package/build/client/assets/tooltip-Bzd6O8vq.js +2 -0
  193. package/build/client/assets/tooltip-Bzd6O8vq.js.map +1 -0
  194. package/build/client/assets/{use-event-source-AZJtQsFX.js → use-event-source-Dar8h_B8.js} +2 -2
  195. package/build/client/assets/{use-event-source-AZJtQsFX.js.map → use-event-source-Dar8h_B8.js.map} +1 -1
  196. package/build/client/assets/{user-C0j04V55.js → user-DNSnhqGn.js} +2 -2
  197. package/build/client/assets/{user-C0j04V55.js.map → user-DNSnhqGn.js.map} +1 -1
  198. package/build/client/assets/{version-D61Qvt0X.js → version-DriSvNMy.js} +2 -2
  199. package/build/client/assets/{version-D61Qvt0X.js.map → version-DriSvNMy.js.map} +1 -1
  200. package/build/client/assets/{workshop-config-oL_FWDKq.js → workshop-config-DchzGYJM.js} +2 -2
  201. package/build/client/assets/{workshop-config-oL_FWDKq.js.map → workshop-config-DchzGYJM.js.map} +1 -1
  202. package/build/client/assets/xychartDiagram-VJFVF3MP-Dh4nsbBT.js +8 -0
  203. package/build/client/assets/xychartDiagram-VJFVF3MP-Dh4nsbBT.js.map +1 -0
  204. package/build/server/index.js +50 -58
  205. package/build/server/index.js.map +1 -1
  206. package/dist/server/index.js +6 -0
  207. package/package.json +6 -5
  208. package/build/client/assets/_layout-Brb3LPqZ.js +0 -5
  209. package/build/client/assets/_layout-Brb3LPqZ.js.map +0 -1
  210. package/build/client/assets/_layout-CkabS-6c.js +0 -9
  211. package/build/client/assets/_layout-CkabS-6c.js.map +0 -1
  212. package/build/client/assets/accordion-BjQ-5Z44.js +0 -2
  213. package/build/client/assets/accordion-BjQ-5Z44.js.map +0 -1
  214. package/build/client/assets/app-lUkT_xku.js +0 -2
  215. package/build/client/assets/diff-CVrsnWqw.js +0 -2
  216. package/build/client/assets/discord-Cl4hiMqz.js +0 -2
  217. package/build/client/assets/discord-Cl4hiMqz.js.map +0 -1
  218. package/build/client/assets/entry.client-CQusg5Iz.js +0 -44
  219. package/build/client/assets/epic-video-BQtjG_Y0.js +0 -3053
  220. package/build/client/assets/epic-video-BQtjG_Y0.js.map +0 -1
  221. package/build/client/assets/index-BncqUVfr.js +0 -39
  222. package/build/client/assets/index-BncqUVfr.js.map +0 -1
  223. package/build/client/assets/index-CB8bjE90.js +0 -3
  224. package/build/client/assets/index-CB8bjE90.js.map +0 -1
  225. package/build/client/assets/index-CGzylDPY.js +0 -38
  226. package/build/client/assets/index-CMYl882D.js +0 -36
  227. package/build/client/assets/index-CMYl882D.js.map +0 -1
  228. package/build/client/assets/index-CSGHuBiw.js +0 -5
  229. package/build/client/assets/index-CSGHuBiw.js.map +0 -1
  230. package/build/client/assets/index-mZJ8sz9i.js +0 -2
  231. package/build/client/assets/index-mZJ8sz9i.js.map +0 -1
  232. package/build/client/assets/login-C9JmYc0v.js +0 -2
  233. package/build/client/assets/mdx-CnaWQCDw.js +0 -2
  234. package/build/client/assets/mdx-CnaWQCDw.js.map +0 -1
  235. package/build/client/assets/misc-CQmANiHr.js +0 -2
  236. package/build/client/assets/misc-CQmANiHr.js.map +0 -1
  237. package/build/client/assets/presence-D5UF-NOM.js +0 -28
  238. package/build/client/assets/presence-D5UF-NOM.js.map +0 -1
  239. package/build/client/assets/preview-DaTpH6lj.js +0 -2
  240. package/build/client/assets/progress-DwE8EkAa.js +0 -2
  241. package/build/client/assets/progress-DwE8EkAa.js.map +0 -1
  242. package/build/client/assets/revalidation-ws-BoJZTvOQ.js +0 -2
  243. package/build/client/assets/tailwind-O9k3JIDs.css +0 -1
  244. package/build/client/assets/test-B8jDo0X4.js +0 -2
  245. package/build/client/assets/tests-y-atkhWB.js +0 -4
  246. package/build/client/assets/tooltip-Cd0yJoQb.js +0 -2
  247. package/build/client/assets/tooltip-Cd0yJoQb.js.map +0 -1
  248. /package/build/client/assets/{epic-video-DUnRvy1A.css → epic-video-D2Xftn6t.css} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear-B3zp51yW.js","sources":["../../../../../node_modules/d3-array/src/ascending.js","../../../../../node_modules/d3-array/src/descending.js","../../../../../node_modules/d3-array/src/bisector.js","../../../../../node_modules/d3-array/src/number.js","../../../../../node_modules/d3-array/src/bisect.js","../../../../../node_modules/d3-array/src/ticks.js","../../../../../node_modules/d3-interpolate/src/numberArray.js","../../../../../node_modules/d3-interpolate/src/array.js","../../../../../node_modules/d3-interpolate/src/date.js","../../../../../node_modules/d3-interpolate/src/object.js","../../../../../node_modules/d3-interpolate/src/value.js","../../../../../node_modules/d3-interpolate/src/round.js","../../../../../node_modules/d3-format/src/formatDecimal.js","../../../../../node_modules/d3-format/src/exponent.js","../../../../../node_modules/d3-format/src/formatGroup.js","../../../../../node_modules/d3-format/src/formatNumerals.js","../../../../../node_modules/d3-format/src/formatSpecifier.js","../../../../../node_modules/d3-format/src/formatTrim.js","../../../../../node_modules/d3-format/src/formatPrefixAuto.js","../../../../../node_modules/d3-format/src/formatRounded.js","../../../../../node_modules/d3-format/src/formatTypes.js","../../../../../node_modules/d3-format/src/identity.js","../../../../../node_modules/d3-format/src/locale.js","../../../../../node_modules/d3-format/src/defaultLocale.js","../../../../../node_modules/d3-format/src/precisionFixed.js","../../../../../node_modules/d3-format/src/precisionPrefix.js","../../../../../node_modules/d3-format/src/precisionRound.js","../../../../../node_modules/d3-scale/src/constant.js","../../../../../node_modules/d3-scale/src/number.js","../../../../../node_modules/d3-scale/src/continuous.js","../../../../../node_modules/d3-scale/src/tickFormat.js","../../../../../node_modules/d3-scale/src/linear.js"],"sourcesContent":["export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n"],"names":["ascending","a","b","descending","bisector","f","compare1","compare2","delta","d","x","zero","left","lo","hi","mid","right","center","i","number","ascendingBisect","bisectRight","e10","e5","e2","tickSpec","start","stop","count","step","power","error","factor","i1","i2","inc","ticks","reverse","n","tickIncrement","tickStep","numberArray","c","t","isNumberArray","genericArray","nb","na","value","date","object","k","interpolate","constant","color","rgb","string","interpolateRound","formatDecimal","formatDecimalParts","p","coefficient","exponent","formatGroup","grouping","thousands","width","j","g","length","formatNumerals","numerals","re","formatSpecifier","specifier","match","FormatSpecifier","formatTrim","s","out","i0","prefixExponent","formatPrefixAuto","formatRounded","formatTypes","identity$1","map","prefixes","formatLocale","locale","group","identity","currencyPrefix","currencySuffix","decimal","percent","minus","nan","newFormat","fill","align","sign","symbol","comma","precision","trim","type","prefix","suffix","formatType","maybeSuffix","format","valuePrefix","valueSuffix","valueNegative","padding","formatPrefix","e","defaultLocale","definition","precisionFixed","precisionPrefix","precisionRound","max","constants","unit","normalize","clamper","bimap","domain","range","d0","d1","r0","r1","polymap","r","bisect","copy","source","target","transformer","interpolateValue","transform","untransform","unknown","clamp","piecewise","output","input","rescale","scale","y","interpolateNumber","_","u","continuous","tickFormat","linearish","prestep","maxIter","linear","initRange"],"mappings":"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","x_google_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]}
@@ -1,2 +1,2 @@
1
- import{j as r,r as n}from"./index-CGzylDPY.js";import{b as f}from"./index-CMYl882D.js";import{a as d}from"./misc-CQmANiHr.js";function p({className:s,children:t="Loading"}){const{reducedMotion:e}=f();return e==="reduce"?r.jsx("div",{className:"animate-pulse",children:t}):r.jsxs("div",{className:d("flex items-center gap-2 font-mono text-sm font-medium uppercase",s),role:"status",children:[r.jsx("div",{"aria-hidden":"true",children:r.jsx(u,{})}),t,r.jsx("div",{"aria-hidden":"true",children:r.jsx(u,{})})]})}const o="█<▓█ ▒░/▒░ █░>▒▓/ █▒▒ ▓▒▓/█<░▒ ▓/░>",i=()=>o[Math.floor(Math.random()*o.length)];function u(){const[s,t]=n.useState(o[0]),[e,c]=n.useState(o[1]);return m(()=>{t(i()),c(i())},80),r.jsxs("span",{children:[s,e]})}function m(s,t=1e3){const e=n.useRef(null);n.useEffect(()=>{e.current=s},[s]),n.useEffect(()=>{function c(){var a;(a=e.current)==null||a.call(e)}if(t!==null){const a=setInterval(c,t);return()=>clearInterval(a)}},[t])}export{p as L};
2
- //# sourceMappingURL=loading-CPEkK5hO.js.map
1
+ import{j as r,r as n}from"./index-Dsusf_Av.js";import{c as f}from"./index-CEP3Xxa0.js";import{a as d}from"./misc-2sBiisF5.js";function p({className:s,children:t="Loading"}){const{reducedMotion:e}=f();return e==="reduce"?r.jsx("div",{className:"animate-pulse",children:t}):r.jsxs("div",{className:d("flex items-center gap-2 font-mono text-sm font-medium uppercase",s),role:"status",children:[r.jsx("div",{"aria-hidden":"true",children:r.jsx(u,{})}),t,r.jsx("div",{"aria-hidden":"true",children:r.jsx(u,{})})]})}const o="█<▓█ ▒░/▒░ █░>▒▓/ █▒▒ ▓▒▓/█<░▒ ▓/░>",i=()=>o[Math.floor(Math.random()*o.length)];function u(){const[s,t]=n.useState(o[0]),[e,c]=n.useState(o[1]);return m(()=>{t(i()),c(i())},80),r.jsxs("span",{children:[s,e]})}function m(s,t=1e3){const e=n.useRef(null);n.useEffect(()=>{e.current=s},[s]),n.useEffect(()=>{function c(){var a;(a=e.current)==null||a.call(e)}if(t!==null){const a=setInterval(c,t);return()=>clearInterval(a)}},[t])}export{p as L};
2
+ //# sourceMappingURL=loading-BPTYJOXN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loading-CPEkK5hO.js","sources":["../../../app/components/loading.tsx"],"sourcesContent":["// originally this was based on baffle-react, but it was unnecessarily bloated\n// and very out-dated. I've replaced it with a simple Characters component that\n// does the same thing we were using baffle-react for\nimport { useEffect, useRef, useState } from 'react'\nimport { useHints } from '#app/utils/client-hints.tsx'\nimport { cn } from '#app/utils/misc.tsx'\n\nexport function Loading({\n\tclassName,\n\tchildren = 'Loading',\n}: {\n\tclassName?: string\n\tchildren?: React.ReactNode\n}) {\n\tconst { reducedMotion } = useHints()\n\tif (reducedMotion === 'reduce') {\n\t\treturn <div className=\"animate-pulse\">{children}</div>\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'flex items-center gap-2 font-mono text-sm font-medium uppercase',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\trole=\"status\"\n\t\t>\n\t\t\t<div aria-hidden=\"true\">\n\t\t\t\t<Characters />\n\t\t\t</div>\n\t\t\t{children}\n\t\t\t<div aria-hidden=\"true\">\n\t\t\t\t<Characters />\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nconst characters = '█<▓█ ▒░/▒░ █░>▒▓/ █▒▒ ▓▒▓/█<░▒ ▓/░>'\nconst randomCharacter = () =>\n\tcharacters[Math.floor(Math.random() * characters.length)]\nexport function Characters() {\n\tconst [char1, setChar1] = useState(characters[0])\n\tconst [char2, setChar2] = useState(characters[1])\n\n\tuseInterval(() => {\n\t\tsetChar1(randomCharacter())\n\t\tsetChar2(randomCharacter())\n\t}, 80)\n\n\treturn (\n\t\t<span>\n\t\t\t{char1}\n\t\t\t{char2}\n\t\t</span>\n\t)\n}\n\nfunction useInterval(callback: () => void, delay: number | null = 1000) {\n\tconst savedCallback = useRef<() => void>(null)\n\n\t// Remember the latest function.\n\tuseEffect(() => {\n\t\tsavedCallback.current = callback\n\t}, [callback])\n\n\t// Set up the interval.\n\tuseEffect(() => {\n\t\tfunction tick() {\n\t\t\tsavedCallback.current?.()\n\t\t}\n\t\tif (delay !== null) {\n\t\t\tconst id = setInterval(tick, delay)\n\t\t\treturn () => clearInterval(id)\n\t\t}\n\t}, [delay])\n}\n"],"names":["Loading","className","children","reducedMotion","useHints","jsx","jsxs","cn","Characters","characters","randomCharacter","char1","setChar1","useState","char2","setChar2","useInterval","callback","delay","savedCallback","useRef","useEffect","tick","_a","id"],"mappings":"8HAOO,SAASA,EAAQ,CACvB,UAAAC,EACA,SAAAC,EAAW,SACZ,EAGG,CACI,KAAA,CAAE,cAAAC,GAAkBC,IAC1B,OAAID,IAAkB,SACbE,EAAAA,IAAA,MAAA,CAAI,UAAU,gBAAiB,SAAAH,CAAS,CAAA,EAIhDI,EAAA,KAAC,MAAA,CACA,UAAWC,EACV,kEACAN,CACD,EACA,KAAK,SAEL,SAAA,CAAAI,MAAC,MAAI,CAAA,cAAY,OAChB,SAAAA,MAACG,GAAW,CAAA,EACb,EACCN,QACA,MAAI,CAAA,cAAY,OAChB,SAAAG,MAACG,GAAW,CAAA,EACb,CAAA,CAAA,CAAA,CAGH,CAEA,MAAMC,EAAa,sCACbC,EAAkB,IACvBD,EAAW,KAAK,MAAM,KAAK,SAAWA,EAAW,MAAM,CAAC,EAClD,SAASD,GAAa,CAC5B,KAAM,CAACG,EAAOC,CAAQ,EAAIC,EAAS,SAAAJ,EAAW,CAAC,CAAC,EAC1C,CAACK,EAAOC,CAAQ,EAAIF,EAAS,SAAAJ,EAAW,CAAC,CAAC,EAEhD,OAAAO,EAAY,IAAM,CACjBJ,EAASF,GAAiB,EAC1BK,EAASL,GAAiB,GACxB,EAAE,SAGH,OACC,CAAA,SAAA,CAAAC,EACAG,CACF,CAAA,CAAA,CAEF,CAEA,SAASE,EAAYC,EAAsBC,EAAuB,IAAM,CACjE,MAAAC,EAAgBC,SAAmB,IAAI,EAG7CC,EAAAA,UAAU,IAAM,CACfF,EAAc,QAAUF,CAAA,EACtB,CAACA,CAAQ,CAAC,EAGbI,EAAAA,UAAU,IAAM,CACf,SAASC,GAAO,QACfC,EAAAJ,EAAc,UAAd,MAAAI,EAAA,KAAAJ,EACD,CACA,GAAID,IAAU,KAAM,CACb,MAAAM,EAAK,YAAYF,EAAMJ,CAAK,EAC3B,MAAA,IAAM,cAAcM,CAAE,CAC9B,CAAA,EACE,CAACN,CAAK,CAAC,CACX"}
1
+ {"version":3,"file":"loading-BPTYJOXN.js","sources":["../../../app/components/loading.tsx"],"sourcesContent":["// originally this was based on baffle-react, but it was unnecessarily bloated\n// and very out-dated. I've replaced it with a simple Characters component that\n// does the same thing we were using baffle-react for\nimport { useEffect, useRef, useState } from 'react'\nimport { useHints } from '#app/utils/client-hints.tsx'\nimport { cn } from '#app/utils/misc.tsx'\n\nexport function Loading({\n\tclassName,\n\tchildren = 'Loading',\n}: {\n\tclassName?: string\n\tchildren?: React.ReactNode\n}) {\n\tconst { reducedMotion } = useHints()\n\tif (reducedMotion === 'reduce') {\n\t\treturn <div className=\"animate-pulse\">{children}</div>\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'flex items-center gap-2 font-mono text-sm font-medium uppercase',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\trole=\"status\"\n\t\t>\n\t\t\t<div aria-hidden=\"true\">\n\t\t\t\t<Characters />\n\t\t\t</div>\n\t\t\t{children}\n\t\t\t<div aria-hidden=\"true\">\n\t\t\t\t<Characters />\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nconst characters = '█<▓█ ▒░/▒░ █░>▒▓/ █▒▒ ▓▒▓/█<░▒ ▓/░>'\nconst randomCharacter = () =>\n\tcharacters[Math.floor(Math.random() * characters.length)]\nexport function Characters() {\n\tconst [char1, setChar1] = useState(characters[0])\n\tconst [char2, setChar2] = useState(characters[1])\n\n\tuseInterval(() => {\n\t\tsetChar1(randomCharacter())\n\t\tsetChar2(randomCharacter())\n\t}, 80)\n\n\treturn (\n\t\t<span>\n\t\t\t{char1}\n\t\t\t{char2}\n\t\t</span>\n\t)\n}\n\nfunction useInterval(callback: () => void, delay: number | null = 1000) {\n\tconst savedCallback = useRef<() => void>(null)\n\n\t// Remember the latest function.\n\tuseEffect(() => {\n\t\tsavedCallback.current = callback\n\t}, [callback])\n\n\t// Set up the interval.\n\tuseEffect(() => {\n\t\tfunction tick() {\n\t\t\tsavedCallback.current?.()\n\t\t}\n\t\tif (delay !== null) {\n\t\t\tconst id = setInterval(tick, delay)\n\t\t\treturn () => clearInterval(id)\n\t\t}\n\t}, [delay])\n}\n"],"names":["Loading","className","children","reducedMotion","useHints","jsx","jsxs","cn","Characters","characters","randomCharacter","char1","setChar1","useState","char2","setChar2","useInterval","callback","delay","savedCallback","useRef","useEffect","tick","_a","id"],"mappings":"8HAOO,SAASA,EAAQ,CACvB,UAAAC,EACA,SAAAC,EAAW,SACZ,EAGG,CACI,KAAA,CAAE,cAAAC,CAAc,EAAIC,EAAS,EACnC,OAAID,IAAkB,SACbE,EAAAA,IAAA,MAAA,CAAI,UAAU,gBAAiB,SAAAH,CAAS,CAAA,EAIhDI,EAAA,KAAC,MAAA,CACA,UAAWC,EACV,kEACAN,CACD,EACA,KAAK,SAEL,SAAA,CAAAI,MAAC,MAAI,CAAA,cAAY,OAChB,SAAAA,MAACG,GAAW,CAAA,EACb,EACCN,QACA,MAAI,CAAA,cAAY,OAChB,SAAAG,EAAA,IAACG,IAAW,CACb,CAAA,CAAA,CAAA,CACD,CAEF,CAEA,MAAMC,EAAa,sCACbC,EAAkB,IACvBD,EAAW,KAAK,MAAM,KAAK,OAAO,EAAIA,EAAW,MAAM,CAAC,EAClD,SAASD,GAAa,CAC5B,KAAM,CAACG,EAAOC,CAAQ,EAAIC,EAAAA,SAASJ,EAAW,CAAC,CAAC,EAC1C,CAACK,EAAOC,CAAQ,EAAIF,EAAAA,SAASJ,EAAW,CAAC,CAAC,EAEhD,OAAAO,EAAY,IAAM,CACjBJ,EAASF,GAAiB,EAC1BK,EAASL,GAAiB,GACxB,EAAE,SAGH,OACC,CAAA,SAAA,CAAAC,EACAG,CAAA,EACF,CAEF,CAEA,SAASE,EAAYC,EAAsBC,EAAuB,IAAM,CACjE,MAAAC,EAAgBC,SAAmB,IAAI,EAG7CC,EAAAA,UAAU,IAAM,CACfF,EAAc,QAAUF,CAAA,EACtB,CAACA,CAAQ,CAAC,EAGbI,EAAAA,UAAU,IAAM,CACf,SAASC,GAAO,QACfC,EAAAJ,EAAc,UAAd,MAAAI,EAAA,KAAAJ,EAAwB,CAEzB,GAAID,IAAU,KAAM,CACb,MAAAM,EAAK,YAAYF,EAAMJ,CAAK,EAC3B,MAAA,IAAM,cAAcM,CAAE,CAAA,CAC9B,EACE,CAACN,CAAK,CAAC,CACX"}
@@ -0,0 +1,2 @@
1
+ import{r as o,e as j,d as y,j as e}from"./index-Dsusf_Av.js";import{u as N}from"./use-event-source-Dar8h_B8.js";import{a as R,B as C}from"./button-Dt4EcDfR.js";import{L as b}from"./loading-BPTYJOXN.js";import{L as k}from"./product-Cyum2biy.js";import{u as S}from"./workshop-config-DchzGYJM.js";import{d as T,o as c,s as l,l as d}from"./index-CEP3Xxa0.js";import{a as _,L as w}from"./components-5arJTWsS.js";import"./misc-2sBiisF5.js";import"./tooltip-Bzd6O8vq.js";import"./pe-BShc2dvc.js";const t={USER_CODE_RECEIVED:"USER_CODE_RECEIVED",AUTH_RESOLVED:"AUTH_RESOLVED",AUTH_REJECTED:"AUTH_REJECTED"},D=c({type:d(t.USER_CODE_RECEIVED),code:l(),url:l()}),L=c({type:d(t.AUTH_RESOLVED)}),A=c({type:d(t.AUTH_REJECTED),error:l().optional().default("Unknown error")}),U=T([D,L,A]),M={getSitemapEntries:()=>null};function z(){var f;const{product:{displayName:r}}=S(),i=_(),[x,h]=o.useState(!1),[u,E]=o.useState(null),[a,g]=o.useState(null),m=j(),p=y(),n=N("/login-sse");return o.useEffect(()=>{if(!n)return;const v=JSON.parse(n),s=U.safeParse(v);if(!s.success){console.error(s.error.flatten());return}switch(s.data.type){case t.USER_CODE_RECEIVED:{g(s.data);break}case t.AUTH_RESOLVED:{p.revalidate(),m("/");break}case t.AUTH_REJECTED:{E(s.data.error);break}}},[n,m,p]),e.jsx("main",{className:"flex h-full w-full flex-grow flex-col items-center justify-center p-10",children:e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsx(k,{className:"h-16 w-16"}),e.jsxs("h1",{className:"pt-5 text-2xl font-semibold md:text-3xl",children:["Login to ",r]}),e.jsxs("div",{className:"flex w-full flex-col items-center pt-5",children:[a?e.jsxs("div",{className:"flex w-full max-w-md flex-col items-center gap-3",children:[e.jsxs("div",{className:"my-2 flex w-full flex-col items-center gap-2",children:[e.jsx("p",{className:"text-lg",children:"Your verification code is: "}),e.jsx("div",{className:"mb-3 w-full bg-gray-100 px-5 py-3 text-center text-lg font-bold dark:bg-black/40",children:e.jsx("code",{children:a.code})}),e.jsxs("p",{className:"text-base",children:["You'll use this to verify your device on ",r,". Click verify code below to open the verification page."]})]}),e.jsx(R,{varient:"primary",to:a.url,target:"_blank",rel:"noreferrer",onClick:()=>h(!0),children:"Verify Auth Code"}),x?e.jsxs("div",{className:"justify-center pt-5 text-center opacity-60",children:[e.jsx(b,{className:"justify-center",children:"Waiting for confirmation"}),e.jsxs("p",{className:"pt-2",children:["Please open"," ",e.jsx("a",{href:a.url,target:"_blank",className:"underline",children:"your auth page"})," ","in a new tab to continue."]})]}):null]}):e.jsxs("div",{className:"flex flex-col items-center gap-8",children:[e.jsxs("div",{className:"flex max-w-lg flex-col gap-3 pt-3 text-base text-gray-700 dark:text-gray-300",children:[e.jsxs("p",{children:["If you have access to this workshop on ",r,", you'll be able to watch videos, track progress, run tests, view the diffs, and more!"]}),e.jsxs("p",{children:["First you need to authenticate your device by requesting an access code and verifying on ",r,"."]})]}),e.jsx(i.Form,{method:"POST",children:e.jsx(C,{varient:"primary",type:"submit",children:i.state==="idle"&&((f=i.data)==null?void 0:f.status)!=="pending"?"Retrieve Auth Code":"Retrieving Auth Code..."})})]}),u?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mt-4 text-red-500",children:["There was an error: ",e.jsx("pre",{children:u})]}),e.jsxs("div",{className:"mt-4 text-red-500",children:["Please try again or"," ",e.jsx(w,{to:"/support",className:"underline",children:"contact support"})," ","if the problem persists."]})]}):null]})]})})}export{z as default,M as handle};
2
+ //# sourceMappingURL=login-CfyUfm-m.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login-C9JmYc0v.js","sources":["../../../app/utils/auth-events.ts","../../../app/routes/login-sse.tsx","../../../app/routes/_app+/login.tsx"],"sourcesContent":["export const EVENTS = {\n\tUSER_CODE_RECEIVED: 'USER_CODE_RECEIVED',\n\tAUTH_RESOLVED: 'AUTH_RESOLVED',\n\tAUTH_REJECTED: 'AUTH_REJECTED',\n} as const\nexport type EventTypes = keyof typeof EVENTS\n","import { type LoaderFunctionArgs } from '@remix-run/node'\nimport { eventStream } from 'remix-utils/sse/server'\nimport { z } from 'zod'\nimport { EVENTS } from '#app/utils/auth-events.ts'\nimport { authEmitter } from '#app/utils/auth.server.ts'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\n\nconst CodeReceivedEventSchema = z.object({\n\ttype: z.literal(EVENTS.USER_CODE_RECEIVED),\n\tcode: z.string(),\n\turl: z.string(),\n})\nconst AuthResolvedEventSchema = z.object({\n\ttype: z.literal(EVENTS.AUTH_RESOLVED),\n})\nconst AuthRejectedEventSchema = z.object({\n\ttype: z.literal(EVENTS.AUTH_REJECTED),\n\terror: z.string().optional().default('Unknown error'),\n})\nexport const EventSchema = z.union([\n\tCodeReceivedEventSchema,\n\tAuthResolvedEventSchema,\n\tAuthRejectedEventSchema,\n])\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tensureUndeployed()\n\treturn eventStream(request.signal, function setup(send) {\n\t\tfunction handleCodeReceived(data: any) {\n\t\t\tsend({\n\t\t\t\tdata: JSON.stringify(\n\t\t\t\t\tCodeReceivedEventSchema.parse({\n\t\t\t\t\t\ttype: EVENTS.USER_CODE_RECEIVED,\n\t\t\t\t\t\t...data,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t})\n\t\t}\n\t\tfunction handleAuthResolved() {\n\t\t\tsend({ data: JSON.stringify({ type: EVENTS.AUTH_RESOLVED }) })\n\t\t}\n\t\tfunction handleAuthRejected(data: any) {\n\t\t\tconst result = AuthRejectedEventSchema.safeParse({\n\t\t\t\ttype: EVENTS.AUTH_REJECTED,\n\t\t\t\t...data,\n\t\t\t})\n\t\t\tif (result.success) {\n\t\t\t\tsend({ data: JSON.stringify(result.data) })\n\t\t\t} else {\n\t\t\t\tconsole.error('Error parsing auth rejected event', result.error, data)\n\t\t\t}\n\t\t}\n\t\tauthEmitter.on(EVENTS.USER_CODE_RECEIVED, handleCodeReceived)\n\t\tauthEmitter.on(EVENTS.AUTH_RESOLVED, handleAuthResolved)\n\t\tauthEmitter.on(EVENTS.AUTH_REJECTED, handleAuthRejected)\n\t\treturn () => {\n\t\t\tauthEmitter.off(EVENTS.USER_CODE_RECEIVED, handleCodeReceived)\n\t\t\tauthEmitter.off(EVENTS.AUTH_RESOLVED, handleAuthResolved)\n\t\t\tauthEmitter.off(EVENTS.AUTH_REJECTED, handleAuthRejected)\n\t\t}\n\t})\n}\n","import { getAuthInfo } from '@epic-web/workshop-utils/db.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport { redirect } from '@remix-run/node'\nimport { Link, useFetcher, useNavigate, useRevalidator } from '@remix-run/react'\nimport { useEffect, useState } from 'react'\nimport { useEventSource } from 'remix-utils/sse/react'\nimport { Button, ButtonLink } from '#app/components/button.tsx'\nimport { Loading } from '#app/components/loading.tsx'\nimport { Logo } from '#app/components/product.tsx'\nimport { useWorkshopConfig } from '#app/components/workshop-config.js'\nimport { EVENTS } from '#app/utils/auth-events.ts'\nimport { registerDevice } from '#app/utils/auth.server.ts'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\nimport { EventSchema } from '../login-sse.tsx'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => null,\n}\n\nexport async function loader() {\n\tensureUndeployed()\n\tconst isAuthenticated = Boolean(await getAuthInfo())\n\tif (isAuthenticated) throw redirect('/account')\n\treturn {}\n}\n\nexport async function action() {\n\tensureUndeployed()\n\tvoid registerDevice()\n\treturn { status: 'pending' } as const\n}\n\nexport default function Login() {\n\tconst {\n\t\tproduct: { displayName },\n\t} = useWorkshopConfig()\n\tconst loginFetcher = useFetcher<typeof action>()\n\tconst [clickedVerificationLink, setClickedVerificationLink] = useState(false)\n\tconst [authError, setAuthError] = useState<null | string>(null)\n\tconst [userCodeInfo, setUserCodeInfo] = useState<null | {\n\t\tcode: string\n\t\turl: string\n\t}>(null)\n\tconst navigate = useNavigate()\n\tconst revalidator = useRevalidator()\n\tconst lastMessage = useEventSource(`/login-sse`)\n\tuseEffect(() => {\n\t\tif (!lastMessage) return\n\n\t\tconst parsed = JSON.parse(lastMessage)\n\t\tconst result = EventSchema.safeParse(parsed)\n\t\tif (!result.success) {\n\t\t\tconsole.error(result.error.flatten())\n\t\t\treturn\n\t\t}\n\t\tswitch (result.data.type) {\n\t\t\tcase EVENTS.USER_CODE_RECEIVED: {\n\t\t\t\tsetUserCodeInfo(result.data)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase EVENTS.AUTH_RESOLVED: {\n\t\t\t\trevalidator.revalidate()\n\t\t\t\tnavigate('/')\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase EVENTS.AUTH_REJECTED: {\n\t\t\t\tsetAuthError(result.data.error)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}, [lastMessage, navigate, revalidator])\n\n\treturn (\n\t\t<main className=\"flex h-full w-full flex-grow flex-col items-center justify-center p-10\">\n\t\t\t<div className=\"flex flex-col items-center\">\n\t\t\t\t<Logo className=\"h-16 w-16\" />\n\t\t\t\t<h1 className=\"pt-5 text-2xl font-semibold md:text-3xl\">\n\t\t\t\t\tLogin to {displayName}\n\t\t\t\t</h1>\n\t\t\t\t<div className=\"flex w-full flex-col items-center pt-5\">\n\t\t\t\t\t{userCodeInfo ? (\n\t\t\t\t\t\t<div className=\"flex w-full max-w-md flex-col items-center gap-3\">\n\t\t\t\t\t\t\t<div className=\"my-2 flex w-full flex-col items-center gap-2\">\n\t\t\t\t\t\t\t\t<p className=\"text-lg\">Your verification code is: </p>\n\t\t\t\t\t\t\t\t<div className=\"mb-3 w-full bg-gray-100 px-5 py-3 text-center text-lg font-bold dark:bg-black/40\">\n\t\t\t\t\t\t\t\t\t<code>{userCodeInfo.code}</code>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<p className=\"text-base\">\n\t\t\t\t\t\t\t\t\tYou'll use this to verify your device on {displayName}. Click\n\t\t\t\t\t\t\t\t\tverify code below to open the verification page.\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<ButtonLink\n\t\t\t\t\t\t\t\tvarient=\"primary\"\n\t\t\t\t\t\t\t\tto={userCodeInfo.url}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noreferrer\"\n\t\t\t\t\t\t\t\tonClick={() => setClickedVerificationLink(true)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tVerify Auth Code\n\t\t\t\t\t\t\t</ButtonLink>\n\t\t\t\t\t\t\t{clickedVerificationLink ? (\n\t\t\t\t\t\t\t\t<div className=\"justify-center pt-5 text-center opacity-60\">\n\t\t\t\t\t\t\t\t\t<Loading className=\"justify-center\">\n\t\t\t\t\t\t\t\t\t\tWaiting for confirmation\n\t\t\t\t\t\t\t\t\t</Loading>\n\t\t\t\t\t\t\t\t\t<p className=\"pt-2\">\n\t\t\t\t\t\t\t\t\t\tPlease open{' '}\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\thref={userCodeInfo.url}\n\t\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"underline\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\tyour auth page\n\t\t\t\t\t\t\t\t\t\t</a>{' '}\n\t\t\t\t\t\t\t\t\t\tin a new tab to continue.\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className=\"flex flex-col items-center gap-8\">\n\t\t\t\t\t\t\t<div className=\"flex max-w-lg flex-col gap-3 pt-3 text-base text-gray-700 dark:text-gray-300\">\n\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\tIf you have access to this workshop on {displayName}, you'll\n\t\t\t\t\t\t\t\t\tbe able to watch videos, track progress, run tests, view the\n\t\t\t\t\t\t\t\t\tdiffs, and more!\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\tFirst you need to authenticate your device by requesting an\n\t\t\t\t\t\t\t\t\taccess code and verifying on {displayName}.\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<loginFetcher.Form method=\"POST\">\n\t\t\t\t\t\t\t\t<Button varient=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t\t{loginFetcher.state === 'idle' &&\n\t\t\t\t\t\t\t\t\tloginFetcher.data?.status !== 'pending'\n\t\t\t\t\t\t\t\t\t\t? `Retrieve Auth Code`\n\t\t\t\t\t\t\t\t\t\t: `Retrieving Auth Code...`}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</loginFetcher.Form>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{authError ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"mt-4 text-red-500\">\n\t\t\t\t\t\t\t\tThere was an error: <pre>{authError}</pre>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"mt-4 text-red-500\">\n\t\t\t\t\t\t\t\tPlease try again or{' '}\n\t\t\t\t\t\t\t\t<Link to=\"/support\" className=\"underline\">\n\t\t\t\t\t\t\t\t\tcontact support\n\t\t\t\t\t\t\t\t</Link>{' '}\n\t\t\t\t\t\t\t\tif the problem persists.\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</main>\n\t)\n}\n"],"names":["EVENTS","CodeReceivedEventSchema","z","object","type","literal","USER_CODE_RECEIVED","code","string","url","AuthResolvedEventSchema","AUTH_RESOLVED","AuthRejectedEventSchema","AUTH_REJECTED","error","optional","default","EventSchema","union","handle","getSitemapEntries","Login","product","displayName","useWorkshopConfig","loginFetcher","useFetcher","clickedVerificationLink","setClickedVerificationLink","useState","authError","setAuthError","userCodeInfo","setUserCodeInfo","navigate","useNavigate","revalidator","useRevalidator","lastMessage","useEventSource","useEffect","parsed","JSON","parse","result","safeParse","success","console","flatten","data","revalidate","className","children","jsxs","jsx","Logo","ButtonLink","varient","to","target","rel","onClick","Loading","href","Form","method","Button","state","status","Fragment","Link"],"mappings":"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"}
1
+ {"version":3,"file":"login-CfyUfm-m.js","sources":["../../../app/utils/auth-events.ts","../../../app/routes/login-sse.tsx","../../../app/routes/_app+/login.tsx"],"sourcesContent":["export const EVENTS = {\n\tUSER_CODE_RECEIVED: 'USER_CODE_RECEIVED',\n\tAUTH_RESOLVED: 'AUTH_RESOLVED',\n\tAUTH_REJECTED: 'AUTH_REJECTED',\n} as const\nexport type EventTypes = keyof typeof EVENTS\n","import { type LoaderFunctionArgs } from '@remix-run/node'\nimport { eventStream } from 'remix-utils/sse/server'\nimport { z } from 'zod'\nimport { EVENTS } from '#app/utils/auth-events.ts'\nimport { authEmitter } from '#app/utils/auth.server.ts'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\n\nconst CodeReceivedEventSchema = z.object({\n\ttype: z.literal(EVENTS.USER_CODE_RECEIVED),\n\tcode: z.string(),\n\turl: z.string(),\n})\nconst AuthResolvedEventSchema = z.object({\n\ttype: z.literal(EVENTS.AUTH_RESOLVED),\n})\nconst AuthRejectedEventSchema = z.object({\n\ttype: z.literal(EVENTS.AUTH_REJECTED),\n\terror: z.string().optional().default('Unknown error'),\n})\nexport const EventSchema = z.union([\n\tCodeReceivedEventSchema,\n\tAuthResolvedEventSchema,\n\tAuthRejectedEventSchema,\n])\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tensureUndeployed()\n\treturn eventStream(request.signal, function setup(send) {\n\t\tfunction handleCodeReceived(data: any) {\n\t\t\tsend({\n\t\t\t\tdata: JSON.stringify(\n\t\t\t\t\tCodeReceivedEventSchema.parse({\n\t\t\t\t\t\ttype: EVENTS.USER_CODE_RECEIVED,\n\t\t\t\t\t\t...data,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t})\n\t\t}\n\t\tfunction handleAuthResolved() {\n\t\t\tsend({ data: JSON.stringify({ type: EVENTS.AUTH_RESOLVED }) })\n\t\t}\n\t\tfunction handleAuthRejected(data: any) {\n\t\t\tconst result = AuthRejectedEventSchema.safeParse({\n\t\t\t\ttype: EVENTS.AUTH_REJECTED,\n\t\t\t\t...data,\n\t\t\t})\n\t\t\tif (result.success) {\n\t\t\t\tsend({ data: JSON.stringify(result.data) })\n\t\t\t} else {\n\t\t\t\tconsole.error('Error parsing auth rejected event', result.error, data)\n\t\t\t}\n\t\t}\n\t\tauthEmitter.on(EVENTS.USER_CODE_RECEIVED, handleCodeReceived)\n\t\tauthEmitter.on(EVENTS.AUTH_RESOLVED, handleAuthResolved)\n\t\tauthEmitter.on(EVENTS.AUTH_REJECTED, handleAuthRejected)\n\t\treturn () => {\n\t\t\tauthEmitter.off(EVENTS.USER_CODE_RECEIVED, handleCodeReceived)\n\t\t\tauthEmitter.off(EVENTS.AUTH_RESOLVED, handleAuthResolved)\n\t\t\tauthEmitter.off(EVENTS.AUTH_REJECTED, handleAuthRejected)\n\t\t}\n\t})\n}\n","import { getAuthInfo } from '@epic-web/workshop-utils/db.server'\nimport { type SEOHandle } from '@nasa-gcn/remix-seo'\nimport { redirect } from '@remix-run/node'\nimport { Link, useFetcher, useNavigate, useRevalidator } from '@remix-run/react'\nimport { useEffect, useState } from 'react'\nimport { useEventSource } from 'remix-utils/sse/react'\nimport { Button, ButtonLink } from '#app/components/button.tsx'\nimport { Loading } from '#app/components/loading.tsx'\nimport { Logo } from '#app/components/product.tsx'\nimport { useWorkshopConfig } from '#app/components/workshop-config.js'\nimport { EVENTS } from '#app/utils/auth-events.ts'\nimport { registerDevice } from '#app/utils/auth.server.ts'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\nimport { EventSchema } from '../login-sse.tsx'\n\nexport const handle: SEOHandle = {\n\tgetSitemapEntries: () => null,\n}\n\nexport async function loader() {\n\tensureUndeployed()\n\tconst isAuthenticated = Boolean(await getAuthInfo())\n\tif (isAuthenticated) throw redirect('/account')\n\treturn {}\n}\n\nexport async function action() {\n\tensureUndeployed()\n\tvoid registerDevice()\n\treturn { status: 'pending' } as const\n}\n\nexport default function Login() {\n\tconst {\n\t\tproduct: { displayName },\n\t} = useWorkshopConfig()\n\tconst loginFetcher = useFetcher<typeof action>()\n\tconst [clickedVerificationLink, setClickedVerificationLink] = useState(false)\n\tconst [authError, setAuthError] = useState<null | string>(null)\n\tconst [userCodeInfo, setUserCodeInfo] = useState<null | {\n\t\tcode: string\n\t\turl: string\n\t}>(null)\n\tconst navigate = useNavigate()\n\tconst revalidator = useRevalidator()\n\tconst lastMessage = useEventSource(`/login-sse`)\n\tuseEffect(() => {\n\t\tif (!lastMessage) return\n\n\t\tconst parsed = JSON.parse(lastMessage)\n\t\tconst result = EventSchema.safeParse(parsed)\n\t\tif (!result.success) {\n\t\t\tconsole.error(result.error.flatten())\n\t\t\treturn\n\t\t}\n\t\tswitch (result.data.type) {\n\t\t\tcase EVENTS.USER_CODE_RECEIVED: {\n\t\t\t\tsetUserCodeInfo(result.data)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase EVENTS.AUTH_RESOLVED: {\n\t\t\t\trevalidator.revalidate()\n\t\t\t\tnavigate('/')\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase EVENTS.AUTH_REJECTED: {\n\t\t\t\tsetAuthError(result.data.error)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}, [lastMessage, navigate, revalidator])\n\n\treturn (\n\t\t<main className=\"flex h-full w-full flex-grow flex-col items-center justify-center p-10\">\n\t\t\t<div className=\"flex flex-col items-center\">\n\t\t\t\t<Logo className=\"h-16 w-16\" />\n\t\t\t\t<h1 className=\"pt-5 text-2xl font-semibold md:text-3xl\">\n\t\t\t\t\tLogin to {displayName}\n\t\t\t\t</h1>\n\t\t\t\t<div className=\"flex w-full flex-col items-center pt-5\">\n\t\t\t\t\t{userCodeInfo ? (\n\t\t\t\t\t\t<div className=\"flex w-full max-w-md flex-col items-center gap-3\">\n\t\t\t\t\t\t\t<div className=\"my-2 flex w-full flex-col items-center gap-2\">\n\t\t\t\t\t\t\t\t<p className=\"text-lg\">Your verification code is: </p>\n\t\t\t\t\t\t\t\t<div className=\"mb-3 w-full bg-gray-100 px-5 py-3 text-center text-lg font-bold dark:bg-black/40\">\n\t\t\t\t\t\t\t\t\t<code>{userCodeInfo.code}</code>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<p className=\"text-base\">\n\t\t\t\t\t\t\t\t\tYou'll use this to verify your device on {displayName}. Click\n\t\t\t\t\t\t\t\t\tverify code below to open the verification page.\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<ButtonLink\n\t\t\t\t\t\t\t\tvarient=\"primary\"\n\t\t\t\t\t\t\t\tto={userCodeInfo.url}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noreferrer\"\n\t\t\t\t\t\t\t\tonClick={() => setClickedVerificationLink(true)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tVerify Auth Code\n\t\t\t\t\t\t\t</ButtonLink>\n\t\t\t\t\t\t\t{clickedVerificationLink ? (\n\t\t\t\t\t\t\t\t<div className=\"justify-center pt-5 text-center opacity-60\">\n\t\t\t\t\t\t\t\t\t<Loading className=\"justify-center\">\n\t\t\t\t\t\t\t\t\t\tWaiting for confirmation\n\t\t\t\t\t\t\t\t\t</Loading>\n\t\t\t\t\t\t\t\t\t<p className=\"pt-2\">\n\t\t\t\t\t\t\t\t\t\tPlease open{' '}\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\thref={userCodeInfo.url}\n\t\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"underline\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\tyour auth page\n\t\t\t\t\t\t\t\t\t\t</a>{' '}\n\t\t\t\t\t\t\t\t\t\tin a new tab to continue.\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className=\"flex flex-col items-center gap-8\">\n\t\t\t\t\t\t\t<div className=\"flex max-w-lg flex-col gap-3 pt-3 text-base text-gray-700 dark:text-gray-300\">\n\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\tIf you have access to this workshop on {displayName}, you'll\n\t\t\t\t\t\t\t\t\tbe able to watch videos, track progress, run tests, view the\n\t\t\t\t\t\t\t\t\tdiffs, and more!\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\tFirst you need to authenticate your device by requesting an\n\t\t\t\t\t\t\t\t\taccess code and verifying on {displayName}.\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<loginFetcher.Form method=\"POST\">\n\t\t\t\t\t\t\t\t<Button varient=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t\t{loginFetcher.state === 'idle' &&\n\t\t\t\t\t\t\t\t\tloginFetcher.data?.status !== 'pending'\n\t\t\t\t\t\t\t\t\t\t? `Retrieve Auth Code`\n\t\t\t\t\t\t\t\t\t\t: `Retrieving Auth Code...`}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</loginFetcher.Form>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{authError ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"mt-4 text-red-500\">\n\t\t\t\t\t\t\t\tThere was an error: <pre>{authError}</pre>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"mt-4 text-red-500\">\n\t\t\t\t\t\t\t\tPlease try again or{' '}\n\t\t\t\t\t\t\t\t<Link to=\"/support\" className=\"underline\">\n\t\t\t\t\t\t\t\t\tcontact support\n\t\t\t\t\t\t\t\t</Link>{' '}\n\t\t\t\t\t\t\t\tif the problem persists.\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</main>\n\t)\n}\n"],"names":["EVENTS","CodeReceivedEventSchema","z","type","USER_CODE_RECEIVED","code","url","AuthResolvedEventSchema","AUTH_RESOLVED","AuthRejectedEventSchema","AUTH_REJECTED","error","optional","default","EventSchema","handle","getSitemapEntries","Login","product","displayName","useWorkshopConfig","loginFetcher","useFetcher","clickedVerificationLink","setClickedVerificationLink","useState","authError","setAuthError","userCodeInfo","setUserCodeInfo","navigate","useNavigate","revalidator","useRevalidator","lastMessage","useEventSource","useEffect","parsed","JSON","parse","result","safeParse","success","console","flatten","data","revalidate","className","children","jsxs","jsx","Logo","ButtonLink","varient","to","target","rel","onClick","Loading","href","Form","method","Button","state","status","Fragment","Link"],"mappings":"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"}
@@ -1 +1 @@
1
- window.__remixManifest={"entry":{"module":"/assets/entry.client-CQusg5Iz.js","imports":["/assets/index-CGzylDPY.js","/assets/components-DrvY4pal.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/root-4MvCzrFd.js","imports":["/assets/index-CGzylDPY.js","/assets/components-DrvY4pal.js","/assets/misc-CQmANiHr.js","/assets/pe-DXT2FOp1.js","/assets/error-boundary-CAu3AmhN.js","/assets/progress-bar-ZCHf2Y4W.js","/assets/index-CB8bjE90.js","/assets/tooltip-Cd0yJoQb.js","/assets/index-CMYl882D.js","/assets/presence-D5UF-NOM.js","/assets/seo-pBpFCWsy.js","/assets/online-BsTX44az.js"],"css":[]},"routes/$":{"id":"routes/$","parentId":"root","path":"*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_-CHaVBRQw.js","imports":["/assets/index-CGzylDPY.js","/assets/error-boundary-CAu3AmhN.js","/assets/misc-CQmANiHr.js","/assets/components-DrvY4pal.js"],"css":[]},"routes/_app+/_layout":{"id":"routes/_app+/_layout","parentId":"root","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-CkabS-6c.js","imports":["/assets/index-CGzylDPY.js","/assets/misc-CQmANiHr.js","/assets/pe-DXT2FOp1.js","/assets/product-BKhLQKd7.js","/assets/revalidation-ws-BoJZTvOQ.js","/assets/components-DrvY4pal.js","/assets/index-BncqUVfr.js","/assets/tooltip-Cd0yJoQb.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/online-BsTX44az.js","/assets/presence-D5UF-NOM.js","/assets/progress-DwE8EkAa.js","/assets/index-CMYl882D.js"],"css":[]},"routes/_app+/account":{"id":"routes/_app+/account","parentId":"routes/_app+/_layout","path":"account","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/account-CN4B8rm4.js","imports":["/assets/index-CGzylDPY.js","/assets/button-ChOzbirS.js","/assets/misc-CQmANiHr.js","/assets/tooltip-Cd0yJoQb.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/components-DrvY4pal.js"],"css":[]},"routes/_app+/app.$appName+/$":{"id":"routes/_app+/app.$appName+/$","parentId":"routes/_app+/_layout","path":"app/:appName/*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/api.$":{"id":"routes/_app+/app.$appName+/api.$","parentId":"routes/_app+/_layout","path":"app/:appName/api/*","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/api._-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/epic_ws[.js]":{"id":"routes/_app+/app.$appName+/epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/:appName/epic_ws.js","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/index":{"id":"routes/_app+/app.$appName+/index","parentId":"routes/_app+/_layout","path":"app/:appName/","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/test.$testName":{"id":"routes/_app+/app.$appName+/test.$testName","parentId":"routes/_app+/_layout","path":"app/:appName/test/:testName","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test._testName-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/test.epic_ws[.js]":{"id":"routes/_app+/app.$appName+/test.epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/:appName/test/epic_ws.js","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test.epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.epic_ws[.js]":{"id":"routes/_app+/app.epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/epic_ws.js","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/app.epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/discord":{"id":"routes/_app+/discord","parentId":"routes/_app+/_layout","path":"discord","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/discord-Cl4hiMqz.js","imports":["/assets/discord-gROK6Zn6.js","/assets/index-CGzylDPY.js","/assets/misc-CQmANiHr.js","/assets/components-DrvY4pal.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js"],"css":[]},"routes/_app+/exercise+/_layout":{"id":"routes/_app+/exercise+/_layout","parentId":"routes/_app+/_layout","path":"exercise","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-CwTidn3v.js","imports":["/assets/index-CGzylDPY.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber":{"id":"routes/_app+/exercise+/$exerciseNumber","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber-3uq8PYSd.js","imports":["/assets/index-CGzylDPY.js","/assets/index-egcHQOpF.js","/assets/epic-video-BQtjG_Y0.js","/assets/revalidation-ws-BoJZTvOQ.js","/assets/mdx-CnaWQCDw.js","/assets/progress-DwE8EkAa.js","/assets/misc-CQmANiHr.js","/assets/seo-pBpFCWsy.js","/assets/components-DrvY4pal.js","/assets/index-CMYl882D.js","/assets/tooltip-Cd0yJoQb.js","/assets/pe-DXT2FOp1.js","/assets/online-BsTX44az.js","/assets/loading-CPEkK5hO.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-ZCHf2Y4W.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/:stepNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber_._stepNumber-D5VDI7vZ.js","imports":["/assets/index-CGzylDPY.js","/assets/misc-CQmANiHr.js","/assets/components-DrvY4pal.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","path":":type","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_layout-Brb3LPqZ.js","imports":["/assets/index-CGzylDPY.js","/assets/index-egcHQOpF.js","/assets/error-boundary-CAu3AmhN.js","/assets/nav-chevrons-DCuva9-Q.js","/assets/revalidation-ws-BoJZTvOQ.js","/assets/mdx-CnaWQCDw.js","/assets/progress-DwE8EkAa.js","/assets/set-playground-IUJCGVu2.js","/assets/misc-CQmANiHr.js","/assets/seo-pBpFCWsy.js","/assets/epic-video-BQtjG_Y0.js","/assets/tooltip-Cd0yJoQb.js","/assets/index-CMYl882D.js","/assets/components-DrvY4pal.js","/assets/index-BncqUVfr.js","/assets/progress-bar-ZCHf2Y4W.js","/assets/pe-DXT2FOp1.js","/assets/index-CSGHuBiw.js","/assets/online-BsTX44az.js","/assets/loading-CPEkK5hO.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"app","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/app-lUkT_xku.js","imports":["/assets/index-CGzylDPY.js","/assets/preview-DaTpH6lj.js","/assets/components-DrvY4pal.js","/assets/misc-CQmANiHr.js","/assets/index-CMYl882D.js","/assets/tooltip-Cd0yJoQb.js","/assets/pe-DXT2FOp1.js","/assets/button-ChOzbirS.js","/assets/loading-CPEkK5hO.js","/assets/progress-bar-ZCHf2Y4W.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/index-mZJ8sz9i.js","imports":["/assets/index-CGzylDPY.js","/assets/index-CSGHuBiw.js","/assets/accordion-BjQ-5Z44.js","/assets/misc-CQmANiHr.js","/assets/diff-CTHVtVGQ.js","/assets/error-boundary-CAu3AmhN.js","/assets/loading-CPEkK5hO.js","/assets/discord-gROK6Zn6.js","/assets/online-BsTX44az.js","/assets/components-DrvY4pal.js","/assets/index-CB8bjE90.js","/assets/tooltip-Cd0yJoQb.js","/assets/set-playground-IUJCGVu2.js","/assets/tests-y-atkhWB.js","/assets/preview-DaTpH6lj.js","/assets/index-BncqUVfr.js","/assets/mdx-CnaWQCDw.js","/assets/epic-video-BQtjG_Y0.js","/assets/index-CMYl882D.js","/assets/pe-DXT2FOp1.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-ZCHf2Y4W.js","/assets/revalidation-ws-BoJZTvOQ.js","/assets/use-event-source-AZJtQsFX.js","/assets/button-ChOzbirS.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"test","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test-B8jDo0X4.js","imports":["/assets/index-CGzylDPY.js","/assets/tests-y-atkhWB.js","/assets/components-DrvY4pal.js","/assets/epic-video-BQtjG_Y0.js","/assets/index-CMYl882D.js","/assets/misc-CQmANiHr.js","/assets/tooltip-Cd0yJoQb.js","/assets/pe-DXT2FOp1.js","/assets/online-BsTX44az.js","/assets/loading-CPEkK5hO.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/accordion-BjQ-5Z44.js","/assets/index-CSGHuBiw.js","/assets/index-BncqUVfr.js","/assets/use-event-source-AZJtQsFX.js","/assets/set-playground-IUJCGVu2.js","/assets/progress-bar-ZCHf2Y4W.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.finished":{"id":"routes/_app+/exercise+/$exerciseNumber_.finished","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_.finished-3Iv9ikNq.js","imports":["/assets/index-CGzylDPY.js","/assets/index-egcHQOpF.js","/assets/epic-video-BQtjG_Y0.js","/assets/misc-CQmANiHr.js","/assets/loading-CPEkK5hO.js","/assets/nav-chevrons-DCuva9-Q.js","/assets/revalidation-ws-BoJZTvOQ.js","/assets/mdx-CnaWQCDw.js","/assets/progress-DwE8EkAa.js","/assets/index-CMYl882D.js","/assets/online-BsTX44az.js","/assets/seo-pBpFCWsy.js","/assets/components-DrvY4pal.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-ZCHf2Y4W.js","/assets/pe-DXT2FOp1.js","/assets/tooltip-Cd0yJoQb.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/finished":{"id":"routes/_app+/finished","parentId":"routes/_app+/_layout","path":"finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/finished-9PhQncNF.js","imports":["/assets/index-CGzylDPY.js","/assets/index-egcHQOpF.js","/assets/epic-video-BQtjG_Y0.js","/assets/misc-CQmANiHr.js","/assets/loading-CPEkK5hO.js","/assets/nav-chevrons-DCuva9-Q.js","/assets/revalidation-ws-BoJZTvOQ.js","/assets/mdx-CnaWQCDw.js","/assets/online-BsTX44az.js","/assets/seo-pBpFCWsy.js","/assets/progress-DwE8EkAa.js","/assets/index-CMYl882D.js","/assets/components-DrvY4pal.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-ZCHf2Y4W.js","/assets/pe-DXT2FOp1.js","/assets/tooltip-Cd0yJoQb.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/index":{"id":"routes/_app+/index","parentId":"routes/_app+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/index-qo6WmPUa.js","imports":["/assets/index-CGzylDPY.js","/assets/index-egcHQOpF.js","/assets/epic-video-BQtjG_Y0.js","/assets/error-boundary-CAu3AmhN.js","/assets/mdx-CnaWQCDw.js","/assets/misc-CQmANiHr.js","/assets/progress-DwE8EkAa.js","/assets/components-DrvY4pal.js","/assets/index-CMYl882D.js","/assets/tooltip-Cd0yJoQb.js","/assets/pe-DXT2FOp1.js","/assets/online-BsTX44az.js","/assets/loading-CPEkK5hO.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-ZCHf2Y4W.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/login":{"id":"routes/_app+/login","parentId":"routes/_app+/_layout","path":"login","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/login-C9JmYc0v.js","imports":["/assets/index-CGzylDPY.js","/assets/use-event-source-AZJtQsFX.js","/assets/button-ChOzbirS.js","/assets/loading-CPEkK5hO.js","/assets/product-BKhLQKd7.js","/assets/workshop-config-oL_FWDKq.js","/assets/index-CMYl882D.js","/assets/components-DrvY4pal.js","/assets/misc-CQmANiHr.js","/assets/tooltip-Cd0yJoQb.js","/assets/pe-DXT2FOp1.js"],"css":[]},"routes/_app+/preferences":{"id":"routes/_app+/preferences","parentId":"routes/_app+/_layout","path":"preferences","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/preferences-BYBJKp8k.js","imports":["/assets/index-CGzylDPY.js","/assets/button-ChOzbirS.js","/assets/misc-CQmANiHr.js","/assets/tooltip-Cd0yJoQb.js","/assets/components-DrvY4pal.js"],"css":[]},"routes/_app+/support":{"id":"routes/_app+/support","parentId":"routes/_app+/_layout","path":"support","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/support-CW3-Iilk.js","imports":["/assets/index-CGzylDPY.js","/assets/components-DrvY4pal.js"],"css":[]},"routes/admin+/_layout":{"id":"routes/admin+/_layout","parentId":"root","path":"admin","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-DV29dlKr.js","imports":["/assets/index-CGzylDPY.js","/assets/components-DrvY4pal.js"],"css":[]},"routes/admin+/apps":{"id":"routes/admin+/apps","parentId":"routes/admin+/_layout","path":"apps","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/apps-l0sNRNKZ.js","imports":[],"css":[]},"routes/admin+/cache":{"id":"routes/admin+/cache","parentId":"routes/admin+/_layout","path":"cache","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/cache-l0sNRNKZ.js","imports":[],"css":[]},"routes/admin+/index":{"id":"routes/admin+/index","parentId":"routes/admin+/_layout","index":true,"hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-CYZfnGWa.js","imports":["/assets/index-CGzylDPY.js","/assets/misc-CQmANiHr.js","/assets/tooltip-Cd0yJoQb.js","/assets/progress-DwE8EkAa.js","/assets/components-DrvY4pal.js","/assets/pe-DXT2FOp1.js"],"css":[]},"routes/admin+/notifications":{"id":"routes/admin+/notifications","parentId":"routes/admin+/_layout","path":"notifications","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/notifications-l0sNRNKZ.js","imports":[],"css":[]},"routes/admin+/update-repo":{"id":"routes/admin+/update-repo","parentId":"routes/admin+/_layout","path":"update-repo","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/update-repo-l0sNRNKZ.js","imports":[],"css":[]},"routes/admin+/version":{"id":"routes/admin+/version","parentId":"routes/admin+/_layout","path":"version","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/version-D61Qvt0X.js","imports":["/assets/index-CGzylDPY.js","/assets/workshop-config-oL_FWDKq.js","/assets/components-DrvY4pal.js"],"css":[]},"routes/apps":{"id":"routes/apps","parentId":"root","path":"apps","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/apps-DP2rzg_V.js","imports":[],"css":[]},"routes/diff":{"id":"routes/diff","parentId":"root","path":"diff","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/diff-CVrsnWqw.js","imports":["/assets/index-CGzylDPY.js","/assets/misc-CQmANiHr.js","/assets/diff-CTHVtVGQ.js","/assets/nav-chevrons-DCuva9-Q.js","/assets/components-DrvY4pal.js","/assets/accordion-BjQ-5Z44.js","/assets/index-CSGHuBiw.js","/assets/tooltip-Cd0yJoQb.js","/assets/index-BncqUVfr.js","/assets/mdx-CnaWQCDw.js","/assets/epic-video-BQtjG_Y0.js","/assets/index-CMYl882D.js","/assets/pe-DXT2FOp1.js","/assets/online-BsTX44az.js","/assets/loading-CPEkK5hO.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js","/assets/progress-bar-ZCHf2Y4W.js","/assets/revalidation-ws-BoJZTvOQ.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/exercises":{"id":"routes/exercises","parentId":"root","path":"exercises","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/exercises-l0sNRNKZ.js","imports":[],"css":[]},"routes/launch-editor":{"id":"routes/launch-editor","parentId":"root","path":"launch-editor","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/launch-editor-l0sNRNKZ.js","imports":[],"css":[]},"routes/login-sse":{"id":"routes/login-sse","parentId":"root","path":"login-sse","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/login-sse-l0sNRNKZ.js","imports":[],"css":[]},"routes/og":{"id":"routes/og","parentId":"root","path":"og","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/og-l0sNRNKZ.js","imports":[],"css":[]},"routes/onboarding":{"id":"routes/onboarding","parentId":"root","path":"onboarding","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/onboarding-DzfDHJg_.js","imports":["/assets/index-CGzylDPY.js","/assets/button-ChOzbirS.js","/assets/epic-video-BQtjG_Y0.js","/assets/components-DrvY4pal.js","/assets/misc-CQmANiHr.js","/assets/index-CMYl882D.js","/assets/tooltip-Cd0yJoQb.js","/assets/pe-DXT2FOp1.js","/assets/online-BsTX44az.js","/assets/loading-CPEkK5hO.js","/assets/user-C0j04V55.js","/assets/workshop-config-oL_FWDKq.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/processes":{"id":"routes/processes","parentId":"root","path":"processes","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/processes-l0sNRNKZ.js","imports":[],"css":[]},"routes/progress":{"id":"routes/progress","parentId":"root","path":"progress","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/progress-l0sNRNKZ.js","imports":[],"css":[]},"routes/robots[.]txt":{"id":"routes/robots[.]txt","parentId":"root","path":"robots.txt","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/robots_._txt-l0sNRNKZ.js","imports":[],"css":[]},"routes/set-playground":{"id":"routes/set-playground","parentId":"root","path":"set-playground","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/set-playground-l0sNRNKZ.js","imports":[],"css":[]},"routes/sitemap[.]xml":{"id":"routes/sitemap[.]xml","parentId":"root","path":"sitemap.xml","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/sitemap_._xml-l0sNRNKZ.js","imports":[],"css":[]},"routes/start":{"id":"routes/start","parentId":"root","path":"start","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/start-l0sNRNKZ.js","imports":[],"css":[]},"routes/test":{"id":"routes/test","parentId":"root","path":"test","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test-l0sNRNKZ.js","imports":[],"css":[]},"routes/theme/index":{"id":"routes/theme/index","parentId":"root","path":"theme","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-DP2rzg_V.js","imports":[],"css":[]},"routes/video-player/index":{"id":"routes/video-player/index","parentId":"root","path":"video-player","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-K6Dvbx-E.js","imports":[],"css":[]}},"url":"/assets/manifest-4acdd3e2.js","version":"4acdd3e2"};
1
+ window.__remixManifest={"entry":{"module":"/assets/entry.client-BLUlgPHE.js","imports":["/assets/index-Dsusf_Av.js","/assets/components-5arJTWsS.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/root-tJmOmO9T.js","imports":["/assets/index-Dsusf_Av.js","/assets/components-5arJTWsS.js","/assets/misc-2sBiisF5.js","/assets/pe-BShc2dvc.js","/assets/error-boundary-B07cWiEy.js","/assets/progress-bar-DgnkQxQw.js","/assets/index-DvQyydjU.js","/assets/tooltip-Bzd6O8vq.js","/assets/index-CEP3Xxa0.js","/assets/presence-BAL3jDku.js","/assets/seo-pBpFCWsy.js","/assets/online-IWqRB9zP.js"],"css":[]},"routes/$":{"id":"routes/$","parentId":"root","path":"*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_-BaHOmd8F.js","imports":["/assets/index-Dsusf_Av.js","/assets/error-boundary-B07cWiEy.js","/assets/misc-2sBiisF5.js","/assets/components-5arJTWsS.js"],"css":[]},"routes/_app+/_layout":{"id":"routes/_app+/_layout","parentId":"root","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-D1r_62oj.js","imports":["/assets/index-Dsusf_Av.js","/assets/misc-2sBiisF5.js","/assets/pe-BShc2dvc.js","/assets/product-Cyum2biy.js","/assets/revalidation-ws-ho-umDqd.js","/assets/tooltip-Bzd6O8vq.js","/assets/index-Do-KWT0a.js","/assets/user-DNSnhqGn.js","/assets/workshop-config-DchzGYJM.js","/assets/online-IWqRB9zP.js","/assets/presence-BAL3jDku.js","/assets/progress-BJ4ADF-s.js","/assets/index-CEP3Xxa0.js","/assets/components-5arJTWsS.js"],"css":[]},"routes/_app+/account":{"id":"routes/_app+/account","parentId":"routes/_app+/_layout","path":"account","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/account-CbFDiVNd.js","imports":["/assets/index-Dsusf_Av.js","/assets/button-Dt4EcDfR.js","/assets/misc-2sBiisF5.js","/assets/tooltip-Bzd6O8vq.js","/assets/user-DNSnhqGn.js","/assets/workshop-config-DchzGYJM.js","/assets/components-5arJTWsS.js"],"css":[]},"routes/_app+/app.$appName+/$":{"id":"routes/_app+/app.$appName+/$","parentId":"routes/_app+/_layout","path":"app/:appName/*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/api.$":{"id":"routes/_app+/app.$appName+/api.$","parentId":"routes/_app+/_layout","path":"app/:appName/api/*","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/api._-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/epic_ws[.js]":{"id":"routes/_app+/app.$appName+/epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/:appName/epic_ws.js","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/index":{"id":"routes/_app+/app.$appName+/index","parentId":"routes/_app+/_layout","path":"app/:appName/","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/test.$testName":{"id":"routes/_app+/app.$appName+/test.$testName","parentId":"routes/_app+/_layout","path":"app/:appName/test/:testName","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test._testName-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.$appName+/test.epic_ws[.js]":{"id":"routes/_app+/app.$appName+/test.epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/:appName/test/epic_ws.js","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test.epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/app.epic_ws[.js]":{"id":"routes/_app+/app.epic_ws[.js]","parentId":"routes/_app+/_layout","path":"app/epic_ws.js","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/app.epic_ws_.js_-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/discord":{"id":"routes/_app+/discord","parentId":"routes/_app+/_layout","path":"discord","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/discord-ut4t-aMQ.js","imports":["/assets/discord-BU7RzE6-.js","/assets/index-Dsusf_Av.js","/assets/misc-2sBiisF5.js","/assets/components-5arJTWsS.js","/assets/user-DNSnhqGn.js","/assets/workshop-config-DchzGYJM.js"],"css":[]},"routes/_app+/exercise+/_layout":{"id":"routes/_app+/exercise+/_layout","parentId":"routes/_app+/_layout","path":"exercise","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-D7_F6t3x.js","imports":["/assets/index-Dsusf_Av.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber":{"id":"routes/_app+/exercise+/$exerciseNumber","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber-DtILU6SM.js","imports":["/assets/index-Dsusf_Av.js","/assets/index-B8yUFowV.js","/assets/epic-video-DN9DRRHf.js","/assets/revalidation-ws-ho-umDqd.js","/assets/mdx-Dfsh6Vjk.js","/assets/progress-BJ4ADF-s.js","/assets/misc-2sBiisF5.js","/assets/seo-pBpFCWsy.js","/assets/components-5arJTWsS.js","/assets/index-CEP3Xxa0.js","/assets/tooltip-Bzd6O8vq.js","/assets/pe-BShc2dvc.js","/assets/online-IWqRB9zP.js","/assets/loading-BPTYJOXN.js","/assets/user-DNSnhqGn.js","/assets/workshop-config-DchzGYJM.js","/assets/progress-bar-DgnkQxQw.js"],"css":["/assets/epic-video-D2Xftn6t.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/:stepNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber_._stepNumber-DoOFEk-P.js","imports":["/assets/index-Dsusf_Av.js","/assets/misc-2sBiisF5.js","/assets/components-5arJTWsS.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","path":":type","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_layout-DzlTTMQ0.js","imports":["/assets/index-Dsusf_Av.js","/assets/index-B8yUFowV.js","/assets/error-boundary-B07cWiEy.js","/assets/nav-chevrons-CV-dpXNR.js","/assets/revalidation-ws-ho-umDqd.js","/assets/mdx-Dfsh6Vjk.js","/assets/progress-BJ4ADF-s.js","/assets/set-playground-DW2Ys-rV.js","/assets/misc-2sBiisF5.js","/assets/seo-pBpFCWsy.js","/assets/epic-video-DN9DRRHf.js","/assets/tooltip-Bzd6O8vq.js","/assets/index-CEP3Xxa0.js","/assets/components-5arJTWsS.js","/assets/index-Do-KWT0a.js","/assets/progress-bar-DgnkQxQw.js","/assets/pe-BShc2dvc.js","/assets/index-BmMpCvYx.js","/assets/online-IWqRB9zP.js","/assets/loading-BPTYJOXN.js","/assets/user-DNSnhqGn.js","/assets/workshop-config-DchzGYJM.js"],"css":["/assets/epic-video-D2Xftn6t.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"app","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/app-CQvK51s0.js","imports":["/assets/index-Dsusf_Av.js","/assets/preview-D4amucCL.js","/assets/components-5arJTWsS.js","/assets/misc-2sBiisF5.js","/assets/button-Dt4EcDfR.js","/assets/loading-BPTYJOXN.js","/assets/index-CEP3Xxa0.js","/assets/tooltip-Bzd6O8vq.js","/assets/pe-BShc2dvc.js","/assets/progress-bar-DgnkQxQw.js"],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/index-Dkt2MSig.js","imports":["/assets/index-Dsusf_Av.js","/assets/tooltip-Bzd6O8vq.js","/assets/index-BmMpCvYx.js","/assets/misc-2sBiisF5.js","/assets/diff-Bu4t2NGL.js","/assets/error-boundary-B07cWiEy.js","/assets/loading-BPTYJOXN.js","/assets/discord-BU7RzE6-.js","/assets/online-IWqRB9zP.js","/assets/components-5arJTWsS.js","/assets/index-DvQyydjU.js","/assets/set-playground-DW2Ys-rV.js","/assets/tests-6__AtHpI.js","/assets/preview-D4amucCL.js","/assets/index-Do-KWT0a.js","/assets/accordion-CpiLc1m2.js","/assets/mdx-Dfsh6Vjk.js","/assets/epic-video-DN9DRRHf.js","/assets/index-CEP3Xxa0.js","/assets/pe-BShc2dvc.js","/assets/user-DNSnhqGn.js","/assets/workshop-config-DchzGYJM.js","/assets/progress-bar-DgnkQxQw.js","/assets/revalidation-ws-ho-umDqd.js","/assets/use-event-source-Dar8h_B8.js","/assets/button-Dt4EcDfR.js"],"css":["/assets/epic-video-D2Xftn6t.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout","path":"test","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test-C14D-N72.js","imports":["/assets/index-Dsusf_Av.js","/assets/tests-6__AtHpI.js","/assets/components-5arJTWsS.js","/assets/epic-video-DN9DRRHf.js","/assets/index-CEP3Xxa0.js","/assets/misc-2sBiisF5.js","/assets/tooltip-Bzd6O8vq.js","/assets/pe-BShc2dvc.js","/assets/online-IWqRB9zP.js","/assets/loading-BPTYJOXN.js","/assets/user-DNSnhqGn.js","/assets/workshop-config-DchzGYJM.js","/assets/accordion-CpiLc1m2.js","/assets/index-BmMpCvYx.js","/assets/index-Do-KWT0a.js","/assets/use-event-source-Dar8h_B8.js","/assets/set-playground-DW2Ys-rV.js","/assets/progress-bar-DgnkQxQw.js"],"css":["/assets/epic-video-D2Xftn6t.css"]},"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index":{"id":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index","parentId":"routes/_app+/exercise+/$exerciseNumber_.$stepNumber","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/exercise+/$exerciseNumber_.finished":{"id":"routes/_app+/exercise+/$exerciseNumber_.finished","parentId":"routes/_app+/exercise+/_layout","path":":exerciseNumber/finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_.finished-CEK9anWX.js","imports":["/assets/index-Dsusf_Av.js","/assets/index-B8yUFowV.js","/assets/epic-video-DN9DRRHf.js","/assets/misc-2sBiisF5.js","/assets/loading-BPTYJOXN.js","/assets/nav-chevrons-CV-dpXNR.js","/assets/revalidation-ws-ho-umDqd.js","/assets/mdx-Dfsh6Vjk.js","/assets/progress-BJ4ADF-s.js","/assets/index-CEP3Xxa0.js","/assets/online-IWqRB9zP.js","/assets/seo-pBpFCWsy.js","/assets/components-5arJTWsS.js","/assets/user-DNSnhqGn.js","/assets/workshop-config-DchzGYJM.js","/assets/progress-bar-DgnkQxQw.js","/assets/pe-BShc2dvc.js","/assets/tooltip-Bzd6O8vq.js"],"css":["/assets/epic-video-D2Xftn6t.css"]},"routes/_app+/finished":{"id":"routes/_app+/finished","parentId":"routes/_app+/_layout","path":"finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/finished-B3G1RUDO.js","imports":["/assets/index-Dsusf_Av.js","/assets/index-B8yUFowV.js","/assets/epic-video-DN9DRRHf.js","/assets/misc-2sBiisF5.js","/assets/loading-BPTYJOXN.js","/assets/nav-chevrons-CV-dpXNR.js","/assets/revalidation-ws-ho-umDqd.js","/assets/mdx-Dfsh6Vjk.js","/assets/online-IWqRB9zP.js","/assets/seo-pBpFCWsy.js","/assets/progress-BJ4ADF-s.js","/assets/index-CEP3Xxa0.js","/assets/components-5arJTWsS.js","/assets/user-DNSnhqGn.js","/assets/workshop-config-DchzGYJM.js","/assets/progress-bar-DgnkQxQw.js","/assets/pe-BShc2dvc.js","/assets/tooltip-Bzd6O8vq.js"],"css":["/assets/epic-video-D2Xftn6t.css"]},"routes/_app+/index":{"id":"routes/_app+/index","parentId":"routes/_app+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/index-BfCSiT_X.js","imports":["/assets/index-Dsusf_Av.js","/assets/index-B8yUFowV.js","/assets/epic-video-DN9DRRHf.js","/assets/error-boundary-B07cWiEy.js","/assets/mdx-Dfsh6Vjk.js","/assets/misc-2sBiisF5.js","/assets/progress-BJ4ADF-s.js","/assets/components-5arJTWsS.js","/assets/index-CEP3Xxa0.js","/assets/tooltip-Bzd6O8vq.js","/assets/pe-BShc2dvc.js","/assets/online-IWqRB9zP.js","/assets/loading-BPTYJOXN.js","/assets/user-DNSnhqGn.js","/assets/workshop-config-DchzGYJM.js","/assets/progress-bar-DgnkQxQw.js"],"css":["/assets/epic-video-D2Xftn6t.css"]},"routes/_app+/login":{"id":"routes/_app+/login","parentId":"routes/_app+/_layout","path":"login","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/login-CfyUfm-m.js","imports":["/assets/index-Dsusf_Av.js","/assets/use-event-source-Dar8h_B8.js","/assets/button-Dt4EcDfR.js","/assets/loading-BPTYJOXN.js","/assets/product-Cyum2biy.js","/assets/workshop-config-DchzGYJM.js","/assets/index-CEP3Xxa0.js","/assets/components-5arJTWsS.js","/assets/misc-2sBiisF5.js","/assets/tooltip-Bzd6O8vq.js","/assets/pe-BShc2dvc.js"],"css":[]},"routes/_app+/preferences":{"id":"routes/_app+/preferences","parentId":"routes/_app+/_layout","path":"preferences","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/preferences-BkWQyRCq.js","imports":["/assets/index-Dsusf_Av.js","/assets/button-Dt4EcDfR.js","/assets/misc-2sBiisF5.js","/assets/tooltip-Bzd6O8vq.js","/assets/components-5arJTWsS.js"],"css":[]},"routes/_app+/support":{"id":"routes/_app+/support","parentId":"routes/_app+/_layout","path":"support","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/support-Bg0iSyle.js","imports":["/assets/index-Dsusf_Av.js","/assets/components-5arJTWsS.js"],"css":[]},"routes/admin+/_layout":{"id":"routes/admin+/_layout","parentId":"root","path":"admin","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-B_BIIcpM.js","imports":["/assets/index-Dsusf_Av.js","/assets/components-5arJTWsS.js"],"css":[]},"routes/admin+/apps":{"id":"routes/admin+/apps","parentId":"routes/admin+/_layout","path":"apps","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/apps-l0sNRNKZ.js","imports":[],"css":[]},"routes/admin+/cache":{"id":"routes/admin+/cache","parentId":"routes/admin+/_layout","path":"cache","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/cache-l0sNRNKZ.js","imports":[],"css":[]},"routes/admin+/index":{"id":"routes/admin+/index","parentId":"routes/admin+/_layout","index":true,"hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-Fw2eA3AF.js","imports":["/assets/index-Dsusf_Av.js","/assets/misc-2sBiisF5.js","/assets/tooltip-Bzd6O8vq.js","/assets/progress-BJ4ADF-s.js","/assets/components-5arJTWsS.js","/assets/pe-BShc2dvc.js"],"css":[]},"routes/admin+/notifications":{"id":"routes/admin+/notifications","parentId":"routes/admin+/_layout","path":"notifications","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/notifications-l0sNRNKZ.js","imports":[],"css":[]},"routes/admin+/update-repo":{"id":"routes/admin+/update-repo","parentId":"routes/admin+/_layout","path":"update-repo","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/update-repo-l0sNRNKZ.js","imports":[],"css":[]},"routes/admin+/version":{"id":"routes/admin+/version","parentId":"routes/admin+/_layout","path":"version","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/version-DriSvNMy.js","imports":["/assets/index-Dsusf_Av.js","/assets/workshop-config-DchzGYJM.js","/assets/components-5arJTWsS.js"],"css":[]},"routes/apps":{"id":"routes/apps","parentId":"root","path":"apps","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/apps-DP2rzg_V.js","imports":[],"css":[]},"routes/diff":{"id":"routes/diff","parentId":"root","path":"diff","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/diff-8N5KyD7o.js","imports":["/assets/index-Dsusf_Av.js","/assets/misc-2sBiisF5.js","/assets/diff-Bu4t2NGL.js","/assets/nav-chevrons-CV-dpXNR.js","/assets/components-5arJTWsS.js","/assets/accordion-CpiLc1m2.js","/assets/tooltip-Bzd6O8vq.js","/assets/index-BmMpCvYx.js","/assets/index-Do-KWT0a.js","/assets/mdx-Dfsh6Vjk.js","/assets/epic-video-DN9DRRHf.js","/assets/index-CEP3Xxa0.js","/assets/pe-BShc2dvc.js","/assets/online-IWqRB9zP.js","/assets/loading-BPTYJOXN.js","/assets/user-DNSnhqGn.js","/assets/workshop-config-DchzGYJM.js","/assets/progress-bar-DgnkQxQw.js","/assets/revalidation-ws-ho-umDqd.js"],"css":["/assets/epic-video-D2Xftn6t.css"]},"routes/exercises":{"id":"routes/exercises","parentId":"root","path":"exercises","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/exercises-l0sNRNKZ.js","imports":[],"css":[]},"routes/launch-editor":{"id":"routes/launch-editor","parentId":"root","path":"launch-editor","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/launch-editor-l0sNRNKZ.js","imports":[],"css":[]},"routes/login-sse":{"id":"routes/login-sse","parentId":"root","path":"login-sse","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/login-sse-l0sNRNKZ.js","imports":[],"css":[]},"routes/og":{"id":"routes/og","parentId":"root","path":"og","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/og-l0sNRNKZ.js","imports":[],"css":[]},"routes/onboarding":{"id":"routes/onboarding","parentId":"root","path":"onboarding","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/onboarding-5LC4kIVW.js","imports":["/assets/index-Dsusf_Av.js","/assets/button-Dt4EcDfR.js","/assets/epic-video-DN9DRRHf.js","/assets/components-5arJTWsS.js","/assets/misc-2sBiisF5.js","/assets/index-CEP3Xxa0.js","/assets/tooltip-Bzd6O8vq.js","/assets/pe-BShc2dvc.js","/assets/online-IWqRB9zP.js","/assets/loading-BPTYJOXN.js","/assets/user-DNSnhqGn.js","/assets/workshop-config-DchzGYJM.js"],"css":["/assets/epic-video-D2Xftn6t.css"]},"routes/processes":{"id":"routes/processes","parentId":"root","path":"processes","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/processes-l0sNRNKZ.js","imports":[],"css":[]},"routes/progress":{"id":"routes/progress","parentId":"root","path":"progress","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/progress-l0sNRNKZ.js","imports":[],"css":[]},"routes/robots[.]txt":{"id":"routes/robots[.]txt","parentId":"root","path":"robots.txt","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/robots_._txt-l0sNRNKZ.js","imports":[],"css":[]},"routes/set-playground":{"id":"routes/set-playground","parentId":"root","path":"set-playground","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/set-playground-l0sNRNKZ.js","imports":[],"css":[]},"routes/sitemap[.]xml":{"id":"routes/sitemap[.]xml","parentId":"root","path":"sitemap.xml","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/sitemap_._xml-l0sNRNKZ.js","imports":[],"css":[]},"routes/start":{"id":"routes/start","parentId":"root","path":"start","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/start-l0sNRNKZ.js","imports":[],"css":[]},"routes/test":{"id":"routes/test","parentId":"root","path":"test","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test-l0sNRNKZ.js","imports":[],"css":[]},"routes/theme/index":{"id":"routes/theme/index","parentId":"root","path":"theme","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-DP2rzg_V.js","imports":[],"css":[]},"routes/video-player/index":{"id":"routes/video-player/index","parentId":"root","path":"video-player","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-K6Dvbx-E.js","imports":[],"css":[]}},"url":"/assets/manifest-fe4b7228.js","version":"fe4b7228"};
@@ -0,0 +1,3 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mermaid.core-ZaxoMXOj.js","assets/index-Dsusf_Av.js"])))=>i.map(i=>d[i]);
2
+ var oe=Object.defineProperty;var kt=n=>{throw TypeError(n)};var ae=(n,e,i)=>e in n?oe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i;var x=(n,e,i)=>ae(n,typeof e!="symbol"?e+"":e,i),Tt=(n,e,i)=>e.has(n)||kt("Cannot "+i);var t=(n,e,i)=>(Tt(n,e,"read from private field"),i?i.call(n):e.get(n)),w=(n,e,i)=>e.has(n)?kt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,i),f=(n,e,i,s)=>(Tt(n,e,"write to private field"),s?s.call(n,i):e.set(n,i),i),u=(n,e,i)=>(Tt(n,e,"access private method"),i);var St=(n,e,i,s)=>({set _(a){f(n,e,a,i)},get _(){return t(n,e,s)}});import{j as d,r as Z}from"./index-Dsusf_Av.js";import{c as jt,I as he,a as le,A as ce,H as ct}from"./misc-2sBiisF5.js";import{b as ue,L as Yt,a as fe,r as de,u as pe}from"./components-5arJTWsS.js";import{D as me,V as ge}from"./epic-video-DN9DRRHf.js";import{s as be}from"./progress-bar-DgnkQxQw.js";import{u as we}from"./pe-BShc2dvc.js";import{a as _e}from"./index-CEP3Xxa0.js";function ye(){const n=ue("root");if(!n)throw new Error("useApps requires a data object from the root loader");return n.apps}function Kt(n){const e=fe();return Z.useEffect(()=>{e.state==="idle"&&e.data!=null&&(n==null||n("fetcher-done"))},[e,n]),e}function Ee({file:n,appFile:e,appName:i,syncTo:s,line:a,column:o,children:r,onUpdate:c}){var y;const h=Kt(c),m=we(),A=typeof e=="string"?[e]:e,g=n?"file":e?"appFile":"",R=s!=null&&s.file?"file":s!=null&&s.appFile?"appFile":"";return d.jsxs(h.Form,{action:"/launch-editor",method:"POST",className:"flex items-center",children:[m,be,d.jsx("input",{type:"hidden",name:"line",value:a}),d.jsx("input",{type:"hidden",name:"column",value:o}),d.jsx("input",{type:"hidden",name:"type",value:g}),d.jsx("input",{type:"hidden",name:"file",value:n}),d.jsx("input",{type:"hidden",name:"appName",value:i}),A==null?void 0:A.map(T=>d.jsx("input",{type:"hidden",name:"appFile",value:T},T)),s?d.jsxs(d.Fragment,{children:[d.jsx("input",{type:"hidden",name:"syncTo.type",value:R}),d.jsx("input",{type:"hidden",name:"syncTo.file",value:s.file}),d.jsx("input",{type:"hidden",name:"syncTo.appName",value:s.appName}),d.jsx("input",{type:"hidden",name:"syncTo.appFile",value:s.appFile})]}):null,d.jsx("button",{type:"submit",className:jt("launch_button",h.state==="idle"?null:"cursor-progress",((y=h.data)==null?void 0:y.status)==="error"?"cursor-not-allowed":null),children:r})]})}function Se({file:n,appFile:e,appName:i,line:s,children:a}){const o=ye(),r=_e();if(Array.isArray(e))return d.jsx("div",{children:"Cannot open more than one file"});if(n){const m=A=>A.replace(/\\/g,"/");return d.jsx("a",{className:"launch_button !no-underline",href:m(n).replace(m(ENV.EPICSHOP_CONTEXT_CWD),ENV.EPICSHOP_GITHUB_ROOT)+(s?`#L${s}`:""),rel:"noreferrer",target:"_blank",children:a})}const c=o.find(m=>m.name===i),h=[...(c==null?void 0:c.relativePath.split(r.separator))??[],e+(s?`#L${s}`:"")].join("/");return d.jsx("a",{className:"launch_button !no-underline",href:`${ENV.EPICSHOP_GITHUB_ROOT}/${h}`,rel:"noreferrer",target:"_blank",children:a})}function qe({appFile:n="README.mdx",appName:e,file:i,relativePath:s}){const a=Kt(),o=c=>{if(!c.altKey||ENV.EPICSHOP_DEPLOYED)return;c.preventDefault();const h=new FormData,m=i?"file":"appFile";h.append(m,i??n),h.append("type",m),e&&h.append("appName",e),a.submit(h,{method:"POST",action:"/launch-editor"})},r=ENV.EPICSHOP_GITHUB_ROOT.replace(/\/tree\/|\/blob\//,"/edit/");return d.jsxs(Yt,{className:"self-center font-mono text-sm",onClick:o,target:"_blank",to:`${r}/${s}/${n}`.replace(/\\/g,"/"),children:[d.jsx("span",{className:"block md:hidden",children:"Edit on GitHub"}),d.jsx("span",{className:"hidden md:block",children:"Edit this page on GitHub"})]})}const Zt=ENV.EPICSHOP_DEPLOYED?Se:Ee,ut=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Jt=new Set,zt=typeof process=="object"&&process?process:{},Qt=(n,e,i,s)=>{typeof zt.emitWarning=="function"?zt.emitWarning(n,e,i,s):console.error(`[${i}] ${e}: ${n}`)};let At=globalThis.AbortController,Vt=globalThis.AbortSignal;var Bt;if(typeof At>"u"){Vt=class{constructor(){x(this,"onabort");x(this,"_onabort",[]);x(this,"reason");x(this,"aborted",!1)}addEventListener(s,a){this._onabort.push(a)}},At=class{constructor(){x(this,"signal",new Vt);e()}abort(s){var a,o;if(!this.signal.aborted){this.signal.reason=s,this.signal.aborted=!0;for(const r of this.signal._onabort)r(s);(o=(a=this.signal).onabort)==null||o.call(a,s)}}};let n=((Bt=zt.env)==null?void 0:Bt.LRU_CACHE_IGNORE_AC_WARNING)!=="1";const e=()=>{n&&(n=!1,Qt("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e))}}const ve=n=>!Jt.has(n),Q=n=>n&&n===Math.floor(n)&&n>0&&isFinite(n),te=n=>Q(n)?n<=Math.pow(2,8)?Uint8Array:n<=Math.pow(2,16)?Uint16Array:n<=Math.pow(2,32)?Uint32Array:n<=Number.MAX_SAFE_INTEGER?vt:null:null;class vt extends Array{constructor(e){super(e),this.fill(0)}}var ft;const nt=class nt{constructor(e,i){x(this,"heap");x(this,"length");if(!t(nt,ft))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new i(e),this.length=0}static create(e){const i=te(e);if(!i)return[];f(nt,ft,!0);const s=new nt(e,i);return f(nt,ft,!1),s}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}};ft=new WeakMap,w(nt,ft,!1);let Rt=nt;var qt,Xt,k,I,V,rt,$,dt,pt,C,B,F,v,p,N,M,z,P,q,D,X,Y,G,K,st,W,mt,l,Nt,ot,J,_t,H,ee,at,gt,yt,tt,et,Wt,Ot,xt,S,It,wt,it,Mt;const Ut=class Ut{constructor(e){w(this,l);w(this,k);w(this,I);w(this,V);w(this,rt);w(this,$);w(this,dt);w(this,pt);x(this,"ttl");x(this,"ttlResolution");x(this,"ttlAutopurge");x(this,"updateAgeOnGet");x(this,"updateAgeOnHas");x(this,"allowStale");x(this,"noDisposeOnSet");x(this,"noUpdateTTL");x(this,"maxEntrySize");x(this,"sizeCalculation");x(this,"noDeleteOnFetchRejection");x(this,"noDeleteOnStaleGet");x(this,"allowStaleOnFetchAbort");x(this,"allowStaleOnFetchRejection");x(this,"ignoreFetchAbort");w(this,C);w(this,B);w(this,F);w(this,v);w(this,p);w(this,N);w(this,M);w(this,z);w(this,P);w(this,q);w(this,D);w(this,X);w(this,Y);w(this,G);w(this,K);w(this,st);w(this,W);w(this,mt);w(this,ot,()=>{});w(this,J,()=>{});w(this,_t,()=>{});w(this,H,()=>!1);w(this,at,e=>{});w(this,gt,(e,i,s)=>{});w(this,yt,(e,i,s,a)=>{if(s||a)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});x(this,qt,"LRUCache");const{max:i=0,ttl:s,ttlResolution:a=1,ttlAutopurge:o,updateAgeOnGet:r,updateAgeOnHas:c,allowStale:h,dispose:m,onInsert:A,disposeAfter:g,noDisposeOnSet:R,noUpdateTTL:y,maxSize:T=0,maxEntrySize:O=0,sizeCalculation:L,fetchMethod:b,memoMethod:j,noDeleteOnFetchRejection:_,noDeleteOnStaleGet:E,allowStaleOnFetchRejection:U,allowStaleOnFetchAbort:bt,ignoreFetchAbort:ht}=e;if(i!==0&&!Q(i))throw new TypeError("max option must be a nonnegative integer");const Et=i?te(i):Array;if(!Et)throw new Error("invalid max value: "+i);if(f(this,k,i),f(this,I,T),this.maxEntrySize=O||t(this,I),this.sizeCalculation=L,this.sizeCalculation){if(!t(this,I)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(j!==void 0&&typeof j!="function")throw new TypeError("memoMethod must be a function if defined");if(f(this,pt,j),b!==void 0&&typeof b!="function")throw new TypeError("fetchMethod must be a function if specified");if(f(this,dt,b),f(this,st,!!b),f(this,F,new Map),f(this,v,new Array(i).fill(void 0)),f(this,p,new Array(i).fill(void 0)),f(this,N,new Et(i)),f(this,M,new Et(i)),f(this,z,0),f(this,P,0),f(this,q,Rt.create(i)),f(this,C,0),f(this,B,0),typeof m=="function"&&f(this,V,m),typeof A=="function"&&f(this,rt,A),typeof g=="function"?(f(this,$,g),f(this,D,[])):(f(this,$,void 0),f(this,D,void 0)),f(this,K,!!t(this,V)),f(this,mt,!!t(this,rt)),f(this,W,!!t(this,$)),this.noDisposeOnSet=!!R,this.noUpdateTTL=!!y,this.noDeleteOnFetchRejection=!!_,this.allowStaleOnFetchRejection=!!U,this.allowStaleOnFetchAbort=!!bt,this.ignoreFetchAbort=!!ht,this.maxEntrySize!==0){if(t(this,I)!==0&&!Q(t(this,I)))throw new TypeError("maxSize must be a positive integer if specified");if(!Q(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");u(this,l,ee).call(this)}if(this.allowStale=!!h,this.noDeleteOnStaleGet=!!E,this.updateAgeOnGet=!!r,this.updateAgeOnHas=!!c,this.ttlResolution=Q(a)||a===0?a:1,this.ttlAutopurge=!!o,this.ttl=s||0,this.ttl){if(!Q(this.ttl))throw new TypeError("ttl must be a positive integer if specified");u(this,l,Nt).call(this)}if(t(this,k)===0&&this.ttl===0&&t(this,I)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!t(this,k)&&!t(this,I)){const lt="LRU_CACHE_UNBOUNDED";ve(lt)&&(Jt.add(lt),Qt("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",lt,Ut))}}static unsafeExposeInternals(e){return{starts:t(e,Y),ttls:t(e,G),sizes:t(e,X),keyMap:t(e,F),keyList:t(e,v),valList:t(e,p),next:t(e,N),prev:t(e,M),get head(){return t(e,z)},get tail(){return t(e,P)},free:t(e,q),isBackgroundFetch:i=>{var s;return u(s=e,l,S).call(s,i)},backgroundFetch:(i,s,a,o)=>{var r;return u(r=e,l,xt).call(r,i,s,a,o)},moveToTail:i=>{var s;return u(s=e,l,wt).call(s,i)},indexes:i=>{var s;return u(s=e,l,tt).call(s,i)},rindexes:i=>{var s;return u(s=e,l,et).call(s,i)},isStale:i=>{var s;return t(s=e,H).call(s,i)}}}get max(){return t(this,k)}get maxSize(){return t(this,I)}get calculatedSize(){return t(this,B)}get size(){return t(this,C)}get fetchMethod(){return t(this,dt)}get memoMethod(){return t(this,pt)}get dispose(){return t(this,V)}get onInsert(){return t(this,rt)}get disposeAfter(){return t(this,$)}getRemainingTTL(e){return t(this,F).has(e)?1/0:0}*entries(){for(const e of u(this,l,tt).call(this))t(this,p)[e]!==void 0&&t(this,v)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield[t(this,v)[e],t(this,p)[e]])}*rentries(){for(const e of u(this,l,et).call(this))t(this,p)[e]!==void 0&&t(this,v)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield[t(this,v)[e],t(this,p)[e]])}*keys(){for(const e of u(this,l,tt).call(this)){const i=t(this,v)[e];i!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield i)}}*rkeys(){for(const e of u(this,l,et).call(this)){const i=t(this,v)[e];i!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield i)}}*values(){for(const e of u(this,l,tt).call(this))t(this,p)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield t(this,p)[e])}*rvalues(){for(const e of u(this,l,et).call(this))t(this,p)[e]!==void 0&&!u(this,l,S).call(this,t(this,p)[e])&&(yield t(this,p)[e])}[(Xt=Symbol.iterator,qt=Symbol.toStringTag,Xt)](){return this.entries()}find(e,i={}){for(const s of u(this,l,tt).call(this)){const a=t(this,p)[s],o=u(this,l,S).call(this,a)?a.__staleWhileFetching:a;if(o!==void 0&&e(o,t(this,v)[s],this))return this.get(t(this,v)[s],i)}}forEach(e,i=this){for(const s of u(this,l,tt).call(this)){const a=t(this,p)[s],o=u(this,l,S).call(this,a)?a.__staleWhileFetching:a;o!==void 0&&e.call(i,o,t(this,v)[s],this)}}rforEach(e,i=this){for(const s of u(this,l,et).call(this)){const a=t(this,p)[s],o=u(this,l,S).call(this,a)?a.__staleWhileFetching:a;o!==void 0&&e.call(i,o,t(this,v)[s],this)}}purgeStale(){let e=!1;for(const i of u(this,l,et).call(this,{allowStale:!0}))t(this,H).call(this,i)&&(u(this,l,it).call(this,t(this,v)[i],"expire"),e=!0);return e}info(e){const i=t(this,F).get(e);if(i===void 0)return;const s=t(this,p)[i],a=u(this,l,S).call(this,s)?s.__staleWhileFetching:s;if(a===void 0)return;const o={value:a};if(t(this,G)&&t(this,Y)){const r=t(this,G)[i],c=t(this,Y)[i];if(r&&c){const h=r-(ut.now()-c);o.ttl=h,o.start=Date.now()}}return t(this,X)&&(o.size=t(this,X)[i]),o}dump(){const e=[];for(const i of u(this,l,tt).call(this,{allowStale:!0})){const s=t(this,v)[i],a=t(this,p)[i],o=u(this,l,S).call(this,a)?a.__staleWhileFetching:a;if(o===void 0||s===void 0)continue;const r={value:o};if(t(this,G)&&t(this,Y)){r.ttl=t(this,G)[i];const c=ut.now()-t(this,Y)[i];r.start=Math.floor(Date.now()-c)}t(this,X)&&(r.size=t(this,X)[i]),e.unshift([s,r])}return e}load(e){this.clear();for(const[i,s]of e){if(s.start){const a=Date.now()-s.start;s.start=ut.now()-a}this.set(i,s.value,s)}}set(e,i,s={}){var R,y,T,O,L,b,j;if(i===void 0)return this.delete(e),this;const{ttl:a=this.ttl,start:o,noDisposeOnSet:r=this.noDisposeOnSet,sizeCalculation:c=this.sizeCalculation,status:h}=s;let{noUpdateTTL:m=this.noUpdateTTL}=s;const A=t(this,yt).call(this,e,i,s.size||0,c);if(this.maxEntrySize&&A>this.maxEntrySize)return h&&(h.set="miss",h.maxEntrySizeExceeded=!0),u(this,l,it).call(this,e,"set"),this;let g=t(this,C)===0?void 0:t(this,F).get(e);if(g===void 0)g=t(this,C)===0?t(this,P):t(this,q).length!==0?t(this,q).pop():t(this,C)===t(this,k)?u(this,l,Ot).call(this,!1):t(this,C),t(this,v)[g]=e,t(this,p)[g]=i,t(this,F).set(e,g),t(this,N)[t(this,P)]=g,t(this,M)[g]=t(this,P),f(this,P,g),St(this,C)._++,t(this,gt).call(this,g,A,h),h&&(h.set="add"),m=!1,t(this,mt)&&((R=t(this,rt))==null||R.call(this,i,e,"add"));else{u(this,l,wt).call(this,g);const _=t(this,p)[g];if(i!==_){if(t(this,st)&&u(this,l,S).call(this,_)){_.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:E}=_;E!==void 0&&!r&&(t(this,K)&&((y=t(this,V))==null||y.call(this,E,e,"set")),t(this,W)&&((T=t(this,D))==null||T.push([E,e,"set"])))}else r||(t(this,K)&&((O=t(this,V))==null||O.call(this,_,e,"set")),t(this,W)&&((L=t(this,D))==null||L.push([_,e,"set"])));if(t(this,at).call(this,g),t(this,gt).call(this,g,A,h),t(this,p)[g]=i,h){h.set="replace";const E=_&&u(this,l,S).call(this,_)?_.__staleWhileFetching:_;E!==void 0&&(h.oldValue=E)}}else h&&(h.set="update");t(this,mt)&&((b=this.onInsert)==null||b.call(this,i,e,i===_?"update":"replace"))}if(a!==0&&!t(this,G)&&u(this,l,Nt).call(this),t(this,G)&&(m||t(this,_t).call(this,g,a,o),h&&t(this,J).call(this,h,g)),!r&&t(this,W)&&t(this,D)){const _=t(this,D);let E;for(;E=_==null?void 0:_.shift();)(j=t(this,$))==null||j.call(this,...E)}return this}pop(){var e;try{for(;t(this,C);){const i=t(this,p)[t(this,z)];if(u(this,l,Ot).call(this,!0),u(this,l,S).call(this,i)){if(i.__staleWhileFetching)return i.__staleWhileFetching}else if(i!==void 0)return i}}finally{if(t(this,W)&&t(this,D)){const i=t(this,D);let s;for(;s=i==null?void 0:i.shift();)(e=t(this,$))==null||e.call(this,...s)}}}has(e,i={}){const{updateAgeOnHas:s=this.updateAgeOnHas,status:a}=i,o=t(this,F).get(e);if(o!==void 0){const r=t(this,p)[o];if(u(this,l,S).call(this,r)&&r.__staleWhileFetching===void 0)return!1;if(t(this,H).call(this,o))a&&(a.has="stale",t(this,J).call(this,a,o));else return s&&t(this,ot).call(this,o),a&&(a.has="hit",t(this,J).call(this,a,o)),!0}else a&&(a.has="miss");return!1}peek(e,i={}){const{allowStale:s=this.allowStale}=i,a=t(this,F).get(e);if(a===void 0||!s&&t(this,H).call(this,a))return;const o=t(this,p)[a];return u(this,l,S).call(this,o)?o.__staleWhileFetching:o}async fetch(e,i={}){const{allowStale:s=this.allowStale,updateAgeOnGet:a=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,ttl:r=this.ttl,noDisposeOnSet:c=this.noDisposeOnSet,size:h=0,sizeCalculation:m=this.sizeCalculation,noUpdateTTL:A=this.noUpdateTTL,noDeleteOnFetchRejection:g=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:R=this.allowStaleOnFetchRejection,ignoreFetchAbort:y=this.ignoreFetchAbort,allowStaleOnFetchAbort:T=this.allowStaleOnFetchAbort,context:O,forceRefresh:L=!1,status:b,signal:j}=i;if(!t(this,st))return b&&(b.fetch="get"),this.get(e,{allowStale:s,updateAgeOnGet:a,noDeleteOnStaleGet:o,status:b});const _={allowStale:s,updateAgeOnGet:a,noDeleteOnStaleGet:o,ttl:r,noDisposeOnSet:c,size:h,sizeCalculation:m,noUpdateTTL:A,noDeleteOnFetchRejection:g,allowStaleOnFetchRejection:R,allowStaleOnFetchAbort:T,ignoreFetchAbort:y,status:b,signal:j};let E=t(this,F).get(e);if(E===void 0){b&&(b.fetch="miss");const U=u(this,l,xt).call(this,e,E,_,O);return U.__returned=U}else{const U=t(this,p)[E];if(u(this,l,S).call(this,U)){const Ct=s&&U.__staleWhileFetching!==void 0;return b&&(b.fetch="inflight",Ct&&(b.returnedStale=!0)),Ct?U.__staleWhileFetching:U.__returned=U}const bt=t(this,H).call(this,E);if(!L&&!bt)return b&&(b.fetch="hit"),u(this,l,wt).call(this,E),a&&t(this,ot).call(this,E),b&&t(this,J).call(this,b,E),U;const ht=u(this,l,xt).call(this,e,E,_,O),lt=ht.__staleWhileFetching!==void 0&&s;return b&&(b.fetch=bt?"stale":"refresh",lt&&bt&&(b.returnedStale=!0)),lt?ht.__staleWhileFetching:ht.__returned=ht}}async forceFetch(e,i={}){const s=await this.fetch(e,i);if(s===void 0)throw new Error("fetch() returned undefined");return s}memo(e,i={}){const s=t(this,pt);if(!s)throw new Error("no memoMethod provided to constructor");const{context:a,forceRefresh:o,...r}=i,c=this.get(e,r);if(!o&&c!==void 0)return c;const h=s(e,c,{options:r,context:a});return this.set(e,h,r),h}get(e,i={}){const{allowStale:s=this.allowStale,updateAgeOnGet:a=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,status:r}=i,c=t(this,F).get(e);if(c!==void 0){const h=t(this,p)[c],m=u(this,l,S).call(this,h);return r&&t(this,J).call(this,r,c),t(this,H).call(this,c)?(r&&(r.get="stale"),m?(r&&s&&h.__staleWhileFetching!==void 0&&(r.returnedStale=!0),s?h.__staleWhileFetching:void 0):(o||u(this,l,it).call(this,e,"expire"),r&&s&&(r.returnedStale=!0),s?h:void 0)):(r&&(r.get="hit"),m?h.__staleWhileFetching:(u(this,l,wt).call(this,c),a&&t(this,ot).call(this,c),h))}else r&&(r.get="miss")}delete(e){return u(this,l,it).call(this,e,"delete")}clear(){return u(this,l,Mt).call(this,"delete")}};k=new WeakMap,I=new WeakMap,V=new WeakMap,rt=new WeakMap,$=new WeakMap,dt=new WeakMap,pt=new WeakMap,C=new WeakMap,B=new WeakMap,F=new WeakMap,v=new WeakMap,p=new WeakMap,N=new WeakMap,M=new WeakMap,z=new WeakMap,P=new WeakMap,q=new WeakMap,D=new WeakMap,X=new WeakMap,Y=new WeakMap,G=new WeakMap,K=new WeakMap,st=new WeakMap,W=new WeakMap,mt=new WeakMap,l=new WeakSet,Nt=function(){const e=new vt(t(this,k)),i=new vt(t(this,k));f(this,G,e),f(this,Y,i),f(this,_t,(o,r,c=ut.now())=>{if(i[o]=r!==0?c:0,e[o]=r,r!==0&&this.ttlAutopurge){const h=setTimeout(()=>{t(this,H).call(this,o)&&u(this,l,it).call(this,t(this,v)[o],"expire")},r+1);h.unref&&h.unref()}}),f(this,ot,o=>{i[o]=e[o]!==0?ut.now():0}),f(this,J,(o,r)=>{if(e[r]){const c=e[r],h=i[r];if(!c||!h)return;o.ttl=c,o.start=h,o.now=s||a();const m=o.now-h;o.remainingTTL=c-m}});let s=0;const a=()=>{const o=ut.now();if(this.ttlResolution>0){s=o;const r=setTimeout(()=>s=0,this.ttlResolution);r.unref&&r.unref()}return o};this.getRemainingTTL=o=>{const r=t(this,F).get(o);if(r===void 0)return 0;const c=e[r],h=i[r];if(!c||!h)return 1/0;const m=(s||a())-h;return c-m},f(this,H,o=>{const r=i[o],c=e[o];return!!c&&!!r&&(s||a())-r>c})},ot=new WeakMap,J=new WeakMap,_t=new WeakMap,H=new WeakMap,ee=function(){const e=new vt(t(this,k));f(this,B,0),f(this,X,e),f(this,at,i=>{f(this,B,t(this,B)-e[i]),e[i]=0}),f(this,yt,(i,s,a,o)=>{if(u(this,l,S).call(this,s))return 0;if(!Q(a))if(o){if(typeof o!="function")throw new TypeError("sizeCalculation must be a function");if(a=o(s,i),!Q(a))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return a}),f(this,gt,(i,s,a)=>{if(e[i]=s,t(this,I)){const o=t(this,I)-e[i];for(;t(this,B)>o;)u(this,l,Ot).call(this,!0)}f(this,B,t(this,B)+e[i]),a&&(a.entrySize=s,a.totalCalculatedSize=t(this,B))})},at=new WeakMap,gt=new WeakMap,yt=new WeakMap,tt=function*({allowStale:e=this.allowStale}={}){if(t(this,C))for(let i=t(this,P);!(!u(this,l,Wt).call(this,i)||((e||!t(this,H).call(this,i))&&(yield i),i===t(this,z)));)i=t(this,M)[i]},et=function*({allowStale:e=this.allowStale}={}){if(t(this,C))for(let i=t(this,z);!(!u(this,l,Wt).call(this,i)||((e||!t(this,H).call(this,i))&&(yield i),i===t(this,P)));)i=t(this,N)[i]},Wt=function(e){return e!==void 0&&t(this,F).get(t(this,v)[e])===e},Ot=function(e){var o,r;const i=t(this,z),s=t(this,v)[i],a=t(this,p)[i];return t(this,st)&&u(this,l,S).call(this,a)?a.__abortController.abort(new Error("evicted")):(t(this,K)||t(this,W))&&(t(this,K)&&((o=t(this,V))==null||o.call(this,a,s,"evict")),t(this,W)&&((r=t(this,D))==null||r.push([a,s,"evict"]))),t(this,at).call(this,i),e&&(t(this,v)[i]=void 0,t(this,p)[i]=void 0,t(this,q).push(i)),t(this,C)===1?(f(this,z,f(this,P,0)),t(this,q).length=0):f(this,z,t(this,N)[i]),t(this,F).delete(s),St(this,C)._--,i},xt=function(e,i,s,a){const o=i===void 0?void 0:t(this,p)[i];if(u(this,l,S).call(this,o))return o;const r=new At,{signal:c}=s;c==null||c.addEventListener("abort",()=>r.abort(c.reason),{signal:r.signal});const h={signal:r.signal,options:s,context:a},m=(O,L=!1)=>{const{aborted:b}=r.signal,j=s.ignoreFetchAbort&&O!==void 0;if(s.status&&(b&&!L?(s.status.fetchAborted=!0,s.status.fetchError=r.signal.reason,j&&(s.status.fetchAbortIgnored=!0)):s.status.fetchResolved=!0),b&&!j&&!L)return g(r.signal.reason);const _=y;return t(this,p)[i]===y&&(O===void 0?_.__staleWhileFetching?t(this,p)[i]=_.__staleWhileFetching:u(this,l,it).call(this,e,"fetch"):(s.status&&(s.status.fetchUpdated=!0),this.set(e,O,h.options))),O},A=O=>(s.status&&(s.status.fetchRejected=!0,s.status.fetchError=O),g(O)),g=O=>{const{aborted:L}=r.signal,b=L&&s.allowStaleOnFetchAbort,j=b||s.allowStaleOnFetchRejection,_=j||s.noDeleteOnFetchRejection,E=y;if(t(this,p)[i]===y&&(!_||E.__staleWhileFetching===void 0?u(this,l,it).call(this,e,"fetch"):b||(t(this,p)[i]=E.__staleWhileFetching)),j)return s.status&&E.__staleWhileFetching!==void 0&&(s.status.returnedStale=!0),E.__staleWhileFetching;if(E.__returned===E)throw O},R=(O,L)=>{var j;const b=(j=t(this,dt))==null?void 0:j.call(this,e,o,h);b&&b instanceof Promise&&b.then(_=>O(_===void 0?void 0:_),L),r.signal.addEventListener("abort",()=>{(!s.ignoreFetchAbort||s.allowStaleOnFetchAbort)&&(O(void 0),s.allowStaleOnFetchAbort&&(O=_=>m(_,!0)))})};s.status&&(s.status.fetchDispatched=!0);const y=new Promise(R).then(m,A),T=Object.assign(y,{__abortController:r,__staleWhileFetching:o,__returned:void 0});return i===void 0?(this.set(e,T,{...h.options,status:void 0}),i=t(this,F).get(e)):t(this,p)[i]=T,T},S=function(e){if(!t(this,st))return!1;const i=e;return!!i&&i instanceof Promise&&i.hasOwnProperty("__staleWhileFetching")&&i.__abortController instanceof At},It=function(e,i){t(this,M)[i]=e,t(this,N)[e]=i},wt=function(e){e!==t(this,P)&&(e===t(this,z)?f(this,z,t(this,N)[e]):u(this,l,It).call(this,t(this,M)[e],t(this,N)[e]),u(this,l,It).call(this,t(this,P),e),f(this,P,e))},it=function(e,i){var a,o,r,c;let s=!1;if(t(this,C)!==0){const h=t(this,F).get(e);if(h!==void 0)if(s=!0,t(this,C)===1)u(this,l,Mt).call(this,i);else{t(this,at).call(this,h);const m=t(this,p)[h];if(u(this,l,S).call(this,m)?m.__abortController.abort(new Error("deleted")):(t(this,K)||t(this,W))&&(t(this,K)&&((a=t(this,V))==null||a.call(this,m,e,i)),t(this,W)&&((o=t(this,D))==null||o.push([m,e,i]))),t(this,F).delete(e),t(this,v)[h]=void 0,t(this,p)[h]=void 0,h===t(this,P))f(this,P,t(this,M)[h]);else if(h===t(this,z))f(this,z,t(this,N)[h]);else{const A=t(this,M)[h];t(this,N)[A]=t(this,N)[h];const g=t(this,N)[h];t(this,M)[g]=t(this,M)[h]}St(this,C)._--,t(this,q).push(h)}}if(t(this,W)&&((r=t(this,D))!=null&&r.length)){const h=t(this,D);let m;for(;m=h==null?void 0:h.shift();)(c=t(this,$))==null||c.call(this,...m)}return s},Mt=function(e){var i,s,a;for(const o of u(this,l,et).call(this,{allowStale:!0})){const r=t(this,p)[o];if(u(this,l,S).call(this,r))r.__abortController.abort(new Error("deleted"));else{const c=t(this,v)[o];t(this,K)&&((i=t(this,V))==null||i.call(this,r,c,e)),t(this,W)&&((s=t(this,D))==null||s.push([r,c,e]))}}if(t(this,F).clear(),t(this,p).fill(void 0),t(this,v).fill(void 0),t(this,G)&&t(this,Y)&&(t(this,G).fill(0),t(this,Y).fill(0)),t(this,X)&&t(this,X).fill(0),f(this,z,0),f(this,P,0),t(this,q).length=0,f(this,B,0),f(this,C,0),t(this,W)&&t(this,D)){const o=t(this,D);let r;for(;r=o==null?void 0:o.shift();)(a=t(this,$))==null||a.call(this,...r)}};let Lt=Ut;var ie={},Ft={};Object.defineProperty(Ft,"__esModule",{value:!0});Ft.getMDXComponent=je;Ft.getMDXExport=ne;var Oe=Ht(Z),xe=Ht(de),Ae=Ht(d);function se(n){if(typeof WeakMap!="function")return null;var e=new WeakMap,i=new WeakMap;return(se=function(s){return s?i:e})(n)}function Ht(n,e){if(n&&n.__esModule)return n;if(n===null||typeof n!="object"&&typeof n!="function")return{default:n};var i=se(e);if(i&&i.has(n))return i.get(n);var s={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in n)if(o!=="default"&&{}.hasOwnProperty.call(n,o)){var r=a?Object.getOwnPropertyDescriptor(n,o):null;r&&(r.get||r.set)?Object.defineProperty(s,o,r):s[o]=n[o]}return s.default=n,i&&i.set(n,s),s}function je(n,e){return ne(n,e).default}function ne(n,e){const s={...{React:Oe,ReactDOM:xe,_jsx_runtime:Ae},...e};return new Function(...Object.keys(s),n)(...Object.values(s))}(function(n){Object.defineProperty(n,"__esModule",{value:!0});var e=Ft;Object.keys(e).forEach(function(i){i==="default"||i==="__esModule"||i in n&&n[i]===e[i]||Object.defineProperty(n,i,{enumerable:!0,get:function(){return e[i]}})})})(ie);var Fe=ie;const Ce="modulepreload",Te=function(n){return"/"+n},$t={},Pe=function(e,i,s){let a=Promise.resolve();if(i&&i.length>0){document.getElementsByTagName("link");const r=document.querySelector("meta[property=csp-nonce]"),c=(r==null?void 0:r.nonce)||(r==null?void 0:r.getAttribute("nonce"));a=Promise.allSettled(i.map(h=>{if(h=Te(h),h in $t)return;$t[h]=!0;const m=h.endsWith(".css"),A=m?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${h}"]${A}`))return;const g=document.createElement("link");if(g.rel=m?"stylesheet":Ce,m||(g.as="script"),g.crossOrigin="",g.href=h,c&&g.setAttribute("nonce",c),document.head.appendChild(g),m)return new Promise((R,y)=>{g.addEventListener("load",R),g.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${h}`)))})}))}function o(r){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=r,window.dispatchEvent(c),!c.defaultPrevented)throw r}return a.then(r=>{for(const c of r||[])c.status==="rejected"&&o(c.reason);return e().catch(o)})};function De({code:n,onSvg:e}){const i=Z.useRef(null),s=Z.useRef(e);return Z.useEffect(()=>{s.current=e},[e]),Z.useEffect(()=>{if(!i.current)return;let a=!1;return Pe(()=>import("./mermaid.core-ZaxoMXOj.js").then(o=>o.by),__vite__mapDeps([0,1])).then(o=>{o.default.initialize({startOnLoad:!1}),o.default.render("mermaid-svg",n).then(({svg:r})=>{var c;!a&&i.current&&(i.current.innerHTML=r,(c=s.current)==null||c.call(s,r))}).catch(r=>{!a&&i.current&&(i.current.innerHTML=`<pre style='color:red'>${String(r)}</pre>`)})}),()=>{a=!0}},[n]),d.jsx("div",{ref:i})}const Pt=n=>n.replace(/\\/g,"/");function re(n,e,i){const[,s]=n.replace(/\\|\//g,e).split(`${i==="playground"?"example":"exercises"}${e}`);return s}const Gt="border-border bg-[var(--shiki-background)] hover:bg-foreground/20 active:bg-foreground/30 box-content block rounded border-2 px-2 py-0.5 font-mono text-xs font-semibold outline-none transition duration-300 ease-in-out";function ze({"data-buttons":n,"data-filename":e,"data-fullpath":i,"data-sep":s="/","data-start":a,"data-type":o}){var R;const r=pe();if(o==="other"||!n||!e||!i)return null;const c=Pt(((R=r[r.type])==null?void 0:R.fullPath)??""),h=!i.startsWith(c),m=ENV.EPICSHOP_DEPLOYED?["problem","solution"]:["problem","solution","playground"],A=n.split(","),g=m.filter(y=>A.includes(y));return d.jsx(d.Fragment,{children:g.map(y=>{var b;const T=r[y];if(y==="playground"){const j=r.playground&&r.playground.appName!==((b=r.problem)==null?void 0:b.name);if(!T||j||h)return d.jsxs("button",{className:jt(Gt,"cursor-not-allowed"),title:j?"Playground is not set to the right app":h?"This file is from different app":"You must 'Set to Playground' before opening a file",children:[d.jsx("span",{className:"uppercase",children:"Open"})," in ",y]},y)}if(!T||!T.fullPath)return null;const O=[Pt(T.fullPath),Pt(e)].join(s),L=re(O,s,y);return d.jsx(Zt,{file:O,line:Number(a??1),children:d.jsxs("span",{title:L,className:Gt,children:[d.jsx("span",{className:"uppercase",children:"Open"})," in ",y]})},y)})})}function Re(){const[n,e]=Z.useState(!1);return Z.useEffect(()=>{if(n){const i=setTimeout(()=>e(!1),1500);return()=>clearTimeout(i)}},[n]),d.jsx("button",{className:le(Gt,"w-12 uppercase"),onClick:i=>{var o,r,c;e(!0);const a=((c=(r=(o=i.currentTarget.parentElement)==null?void 0:o.parentElement)==null?void 0:r.querySelector("pre"))==null?void 0:c.textContent)||"";navigator.clipboard.writeText(a)},children:n?"copied":"copy"})}function Le({children:n,...e}){const{"data-buttons":i,"data-filename":s,"data-fullpath":a,"data-nocopy":o,"data-sep":r}=e,c=o===void 0;function h(){if(a&&r)return!s||s.includes("..")?{"data-filename":re(a,r)}:{"data-filename":s.replace(/\//g,r)}}return d.jsxs("div",{className:"group relative",children:[d.jsxs("div",{className:"absolute right-0 top-0 z-50 m-2 flex items-baseline justify-end gap-4 opacity-0 transition duration-300 ease-in-out focus-within:opacity-100 group-hover:opacity-100",children:[i?d.jsx(ze,{...e}):null,c?d.jsx(Re,{}):null]}),d.jsx("pre",{...e,className:jt("scrollbar-thin scrollbar-thumb-scrollbar",e.className??""),...h(),children:n})]})}const Ne={h1:n=>d.jsx(ct,{...n,as:"h1"}),h2:n=>d.jsx(ct,{...n,as:"h2"}),h3:n=>d.jsx(ct,{...n,as:"h3"}),h4:n=>d.jsx(ct,{...n,as:"h4"}),h5:n=>d.jsx(ct,{...n,as:"h5"}),h6:n=>d.jsx(ct,{...n,as:"h6"}),a:ce,p:n=>d.jsx("div",{...n}),pre:n=>d.jsx("pre",{...n,className:jt("scrollbar-thin scrollbar-thumb-scrollbar",n.className??"")}),LaunchEditor:Zt,VideoEmbed:ge,EpicVideo:me,Mermaid:De};function We(n){const e=Fe.getMDXComponent(n);function i({components:s,...a}){const o=Z.useMemo(()=>({...Ne,...s}),[s]);return d.jsx(e,{components:o,...a})}return i}const Dt=new Lt({max:1e3});function Ie(n){return Z.useMemo(()=>{if(Dt.has(n))return Dt.get(n);const e=We(n);return Dt.set(n,e),e},[n])}function Ke({code:n,components:e}){const i=Ie(n),s=Z.useMemo(()=>({Icon:he,pre:Le,Link:Yt,...e}),[e]);return d.jsx(i,{components:s})}export{qe as E,Zt as L,Ke as M,Pe as _,ye as u};
3
+ //# sourceMappingURL=mdx-Dfsh6Vjk.js.map