diff --git a/frontend-dist/Inter-Black.woff.a3efb88f6f.efe3f25b.woff b/frontend-dist/Inter-Black.woff.a3efb88f6f.efe3f25b.woff new file mode 100644 index 000000000..8fd1bd531 Binary files /dev/null and b/frontend-dist/Inter-Black.woff.a3efb88f6f.efe3f25b.woff differ diff --git a/frontend-dist/Inter-Black.woff2.a3efb88f6f.1f333c9f.woff2 b/frontend-dist/Inter-Black.woff2.a3efb88f6f.1f333c9f.woff2 new file mode 100644 index 000000000..c354e6390 Binary files /dev/null and b/frontend-dist/Inter-Black.woff2.a3efb88f6f.1f333c9f.woff2 differ diff --git a/frontend-dist/Inter-BlackItalic.woff.a3efb88f6f.f6e2e726.woff b/frontend-dist/Inter-BlackItalic.woff.a3efb88f6f.f6e2e726.woff new file mode 100644 index 000000000..be6a45bcf Binary files /dev/null and b/frontend-dist/Inter-BlackItalic.woff.a3efb88f6f.f6e2e726.woff differ diff --git a/frontend-dist/Inter-BlackItalic.woff2.a3efb88f6f.89710fff.woff2 b/frontend-dist/Inter-BlackItalic.woff2.a3efb88f6f.89710fff.woff2 new file mode 100644 index 000000000..8b2efe952 Binary files /dev/null and b/frontend-dist/Inter-BlackItalic.woff2.a3efb88f6f.89710fff.woff2 differ diff --git a/frontend-dist/Inter-Bold.woff.a3efb88f6f.d92ed350.woff b/frontend-dist/Inter-Bold.woff.a3efb88f6f.d92ed350.woff new file mode 100644 index 000000000..b5221b0e8 Binary files /dev/null and b/frontend-dist/Inter-Bold.woff.a3efb88f6f.d92ed350.woff differ diff --git a/frontend-dist/Inter-Bold.woff2.a3efb88f6f.e8bd971d.woff2 b/frontend-dist/Inter-Bold.woff2.a3efb88f6f.e8bd971d.woff2 new file mode 100644 index 000000000..619c3a741 Binary files /dev/null and b/frontend-dist/Inter-Bold.woff2.a3efb88f6f.e8bd971d.woff2 differ diff --git a/frontend-dist/Inter-BoldItalic.woff.a3efb88f6f.39f68e5f.woff b/frontend-dist/Inter-BoldItalic.woff.a3efb88f6f.39f68e5f.woff new file mode 100644 index 000000000..da912559e Binary files /dev/null and b/frontend-dist/Inter-BoldItalic.woff.a3efb88f6f.39f68e5f.woff differ diff --git a/frontend-dist/Inter-BoldItalic.woff2.a3efb88f6f.cd6e580e.woff2 b/frontend-dist/Inter-BoldItalic.woff2.a3efb88f6f.cd6e580e.woff2 new file mode 100644 index 000000000..4022cc8d9 Binary files /dev/null and b/frontend-dist/Inter-BoldItalic.woff2.a3efb88f6f.cd6e580e.woff2 differ diff --git a/frontend-dist/Inter-ExtraBold.woff.a3efb88f6f.cd51bf91.woff b/frontend-dist/Inter-ExtraBold.woff.a3efb88f6f.cd51bf91.woff new file mode 100644 index 000000000..7221d72ef Binary files /dev/null and b/frontend-dist/Inter-ExtraBold.woff.a3efb88f6f.cd51bf91.woff differ diff --git a/frontend-dist/Inter-ExtraBold.woff2.a3efb88f6f.ffc04ff0.woff2 b/frontend-dist/Inter-ExtraBold.woff2.a3efb88f6f.ffc04ff0.woff2 new file mode 100644 index 000000000..d3d23b43e Binary files /dev/null and b/frontend-dist/Inter-ExtraBold.woff2.a3efb88f6f.ffc04ff0.woff2 differ diff --git a/frontend-dist/Inter-ExtraBoldItalic.woff.a3efb88f6f.122106d3.woff b/frontend-dist/Inter-ExtraBoldItalic.woff.a3efb88f6f.122106d3.woff new file mode 100644 index 000000000..8520a3185 Binary files /dev/null and b/frontend-dist/Inter-ExtraBoldItalic.woff.a3efb88f6f.122106d3.woff differ diff --git a/frontend-dist/Inter-ExtraBoldItalic.woff2.a3efb88f6f.de4f3979.woff2 b/frontend-dist/Inter-ExtraBoldItalic.woff2.a3efb88f6f.de4f3979.woff2 new file mode 100644 index 000000000..863748b2e Binary files /dev/null and b/frontend-dist/Inter-ExtraBoldItalic.woff2.a3efb88f6f.de4f3979.woff2 differ diff --git a/frontend-dist/Inter-ExtraLight.woff.a3efb88f6f.018d6d24.woff b/frontend-dist/Inter-ExtraLight.woff.a3efb88f6f.018d6d24.woff new file mode 100644 index 000000000..559044109 Binary files /dev/null and b/frontend-dist/Inter-ExtraLight.woff.a3efb88f6f.018d6d24.woff differ diff --git a/frontend-dist/Inter-ExtraLight.woff2.a3efb88f6f.735b820a.woff2 b/frontend-dist/Inter-ExtraLight.woff2.a3efb88f6f.735b820a.woff2 new file mode 100644 index 000000000..7cb6e49fb Binary files /dev/null and b/frontend-dist/Inter-ExtraLight.woff2.a3efb88f6f.735b820a.woff2 differ diff --git a/frontend-dist/Inter-ExtraLightItalic.woff.a3efb88f6f.c051c5b4.woff b/frontend-dist/Inter-ExtraLightItalic.woff.a3efb88f6f.c051c5b4.woff new file mode 100644 index 000000000..0a9f00de8 Binary files /dev/null and b/frontend-dist/Inter-ExtraLightItalic.woff.a3efb88f6f.c051c5b4.woff differ diff --git a/frontend-dist/Inter-ExtraLightItalic.woff2.a3efb88f6f.75944d4e.woff2 b/frontend-dist/Inter-ExtraLightItalic.woff2.a3efb88f6f.75944d4e.woff2 new file mode 100644 index 000000000..e63644200 Binary files /dev/null and b/frontend-dist/Inter-ExtraLightItalic.woff2.a3efb88f6f.75944d4e.woff2 differ diff --git a/frontend-dist/Inter-Italic.woff.a3efb88f6f.d9effa31.woff b/frontend-dist/Inter-Italic.woff.a3efb88f6f.d9effa31.woff new file mode 100644 index 000000000..f2c424804 Binary files /dev/null and b/frontend-dist/Inter-Italic.woff.a3efb88f6f.d9effa31.woff differ diff --git a/frontend-dist/Inter-Italic.woff2.a3efb88f6f.85eee0c1.woff2 b/frontend-dist/Inter-Italic.woff2.a3efb88f6f.85eee0c1.woff2 new file mode 100644 index 000000000..b749909b0 Binary files /dev/null and b/frontend-dist/Inter-Italic.woff2.a3efb88f6f.85eee0c1.woff2 differ diff --git a/frontend-dist/Inter-Light.woff.a3efb88f6f.0cf765a1.woff b/frontend-dist/Inter-Light.woff.a3efb88f6f.0cf765a1.woff new file mode 100644 index 000000000..15672799e Binary files /dev/null and b/frontend-dist/Inter-Light.woff.a3efb88f6f.0cf765a1.woff differ diff --git a/frontend-dist/Inter-Light.woff2.a3efb88f6f.f86a8a97.woff2 b/frontend-dist/Inter-Light.woff2.a3efb88f6f.f86a8a97.woff2 new file mode 100644 index 000000000..ac2e1275e Binary files /dev/null and b/frontend-dist/Inter-Light.woff2.a3efb88f6f.f86a8a97.woff2 differ diff --git a/frontend-dist/Inter-LightItalic.woff.a3efb88f6f.6c91af65.woff b/frontend-dist/Inter-LightItalic.woff.a3efb88f6f.6c91af65.woff new file mode 100644 index 000000000..ebbb05b38 Binary files /dev/null and b/frontend-dist/Inter-LightItalic.woff.a3efb88f6f.6c91af65.woff differ diff --git a/frontend-dist/Inter-LightItalic.woff2.a3efb88f6f.cb22faff.woff2 b/frontend-dist/Inter-LightItalic.woff2.a3efb88f6f.cb22faff.woff2 new file mode 100644 index 000000000..d51474ca1 Binary files /dev/null and b/frontend-dist/Inter-LightItalic.woff2.a3efb88f6f.cb22faff.woff2 differ diff --git a/frontend-dist/Inter-Medium.woff.a3efb88f6f.cb391d89.woff b/frontend-dist/Inter-Medium.woff.a3efb88f6f.cb391d89.woff new file mode 100644 index 000000000..dac813a74 Binary files /dev/null and b/frontend-dist/Inter-Medium.woff.a3efb88f6f.cb391d89.woff differ diff --git a/frontend-dist/Inter-Medium.woff2.a3efb88f6f.4f0ea984.woff2 b/frontend-dist/Inter-Medium.woff2.a3efb88f6f.4f0ea984.woff2 new file mode 100644 index 000000000..ab9850258 Binary files /dev/null and b/frontend-dist/Inter-Medium.woff2.a3efb88f6f.4f0ea984.woff2 differ diff --git a/frontend-dist/Inter-MediumItalic.woff.a3efb88f6f.1f636c25.woff b/frontend-dist/Inter-MediumItalic.woff.a3efb88f6f.1f636c25.woff new file mode 100644 index 000000000..ae6e45fe3 Binary files /dev/null and b/frontend-dist/Inter-MediumItalic.woff.a3efb88f6f.1f636c25.woff differ diff --git a/frontend-dist/Inter-MediumItalic.woff2.a3efb88f6f.2b734b7a.woff2 b/frontend-dist/Inter-MediumItalic.woff2.a3efb88f6f.2b734b7a.woff2 new file mode 100644 index 000000000..ceb866e42 Binary files /dev/null and b/frontend-dist/Inter-MediumItalic.woff2.a3efb88f6f.2b734b7a.woff2 differ diff --git a/frontend-dist/Inter-Regular.woff.a3efb88f6f.d9325c13.woff b/frontend-dist/Inter-Regular.woff.a3efb88f6f.d9325c13.woff new file mode 100644 index 000000000..e3200e0b9 Binary files /dev/null and b/frontend-dist/Inter-Regular.woff.a3efb88f6f.d9325c13.woff differ diff --git a/frontend-dist/Inter-Regular.woff2.a3efb88f6f.c52a047f.woff2 b/frontend-dist/Inter-Regular.woff2.a3efb88f6f.c52a047f.woff2 new file mode 100644 index 000000000..28ae0b6ab Binary files /dev/null and b/frontend-dist/Inter-Regular.woff2.a3efb88f6f.c52a047f.woff2 differ diff --git a/frontend-dist/Inter-SemiBold.woff.a3efb88f6f.c6670c13.woff b/frontend-dist/Inter-SemiBold.woff.a3efb88f6f.c6670c13.woff new file mode 100644 index 000000000..295fbdfa9 Binary files /dev/null and b/frontend-dist/Inter-SemiBold.woff.a3efb88f6f.c6670c13.woff differ diff --git a/frontend-dist/Inter-SemiBold.woff2.a3efb88f6f.08366574.woff2 b/frontend-dist/Inter-SemiBold.woff2.a3efb88f6f.08366574.woff2 new file mode 100644 index 000000000..41ebbbb02 Binary files /dev/null and b/frontend-dist/Inter-SemiBold.woff2.a3efb88f6f.08366574.woff2 differ diff --git a/frontend-dist/Inter-SemiBoldItalic.woff.a3efb88f6f.13394743.woff b/frontend-dist/Inter-SemiBoldItalic.woff.a3efb88f6f.13394743.woff new file mode 100644 index 000000000..34d759f72 Binary files /dev/null and b/frontend-dist/Inter-SemiBoldItalic.woff.a3efb88f6f.13394743.woff differ diff --git a/frontend-dist/Inter-SemiBoldItalic.woff2.a3efb88f6f.5c7db07d.woff2 b/frontend-dist/Inter-SemiBoldItalic.woff2.a3efb88f6f.5c7db07d.woff2 new file mode 100644 index 000000000..4dd025adf Binary files /dev/null and b/frontend-dist/Inter-SemiBoldItalic.woff2.a3efb88f6f.5c7db07d.woff2 differ diff --git a/frontend-dist/Inter-Thin.woff.a3efb88f6f.832f7e9d.woff b/frontend-dist/Inter-Thin.woff.a3efb88f6f.832f7e9d.woff new file mode 100644 index 000000000..07ea92efb Binary files /dev/null and b/frontend-dist/Inter-Thin.woff.a3efb88f6f.832f7e9d.woff differ diff --git a/frontend-dist/Inter-Thin.woff2.a3efb88f6f.099a7dc1.woff2 b/frontend-dist/Inter-Thin.woff2.a3efb88f6f.099a7dc1.woff2 new file mode 100644 index 000000000..72707dcd3 Binary files /dev/null and b/frontend-dist/Inter-Thin.woff2.a3efb88f6f.099a7dc1.woff2 differ diff --git a/frontend-dist/Inter-ThinItalic.woff.a3efb88f6f.9a9e646f.woff b/frontend-dist/Inter-ThinItalic.woff.a3efb88f6f.9a9e646f.woff new file mode 100644 index 000000000..d35d6173c Binary files /dev/null and b/frontend-dist/Inter-ThinItalic.woff.a3efb88f6f.9a9e646f.woff differ diff --git a/frontend-dist/Inter-ThinItalic.woff2.a3efb88f6f.f5b32cfe.woff2 b/frontend-dist/Inter-ThinItalic.woff2.a3efb88f6f.f5b32cfe.woff2 new file mode 100644 index 000000000..884fe458c Binary files /dev/null and b/frontend-dist/Inter-ThinItalic.woff2.a3efb88f6f.f5b32cfe.woff2 differ diff --git a/frontend-dist/Inter-italic.var.woff2.a3efb88f6f.e62a3bb2.woff2 b/frontend-dist/Inter-italic.var.woff2.a3efb88f6f.e62a3bb2.woff2 new file mode 100644 index 000000000..b1d4bdc36 Binary files /dev/null and b/frontend-dist/Inter-italic.var.woff2.a3efb88f6f.e62a3bb2.woff2 differ diff --git a/frontend-dist/Inter-roman.var.woff2.a3efb88f6f.8120837c.woff2 b/frontend-dist/Inter-roman.var.woff2.a3efb88f6f.8120837c.woff2 new file mode 100644 index 000000000..f56c09796 Binary files /dev/null and b/frontend-dist/Inter-roman.var.woff2.a3efb88f6f.8120837c.woff2 differ diff --git a/frontend-dist/Inter.var.woff2.a3efb88f6f.ca82f9aa.woff2 b/frontend-dist/Inter.var.woff2.a3efb88f6f.ca82f9aa.woff2 new file mode 100644 index 000000000..0c4143192 Binary files /dev/null and b/frontend-dist/Inter.var.woff2.a3efb88f6f.ca82f9aa.woff2 differ diff --git a/frontend-dist/JuliaMono-Bold.24b57d33.woff2 b/frontend-dist/JuliaMono-Bold.24b57d33.woff2 new file mode 100644 index 000000000..212ccec35 Binary files /dev/null and b/frontend-dist/JuliaMono-Bold.24b57d33.woff2 differ diff --git a/frontend-dist/JuliaMono-BoldLatin.7ec5c608.woff2 b/frontend-dist/JuliaMono-BoldLatin.7ec5c608.woff2 new file mode 100644 index 000000000..1f8dde89e Binary files /dev/null and b/frontend-dist/JuliaMono-BoldLatin.7ec5c608.woff2 differ diff --git a/frontend-dist/JuliaMono-Regular.e0106c6f.woff2 b/frontend-dist/JuliaMono-Regular.e0106c6f.woff2 new file mode 100644 index 000000000..c2db12737 Binary files /dev/null and b/frontend-dist/JuliaMono-Regular.e0106c6f.woff2 differ diff --git a/frontend-dist/JuliaMono-RegularItalic.3159f647.woff2 b/frontend-dist/JuliaMono-RegularItalic.3159f647.woff2 new file mode 100644 index 000000000..987502fed Binary files /dev/null and b/frontend-dist/JuliaMono-RegularItalic.3159f647.woff2 differ diff --git a/frontend-dist/JuliaMono-RegularLatin.26c56b70.woff2 b/frontend-dist/JuliaMono-RegularLatin.26c56b70.woff2 new file mode 100644 index 000000000..f159a9285 Binary files /dev/null and b/frontend-dist/JuliaMono-RegularLatin.26c56b70.woff2 differ diff --git a/frontend-dist/Vollkorn-Black.0ebdfbf5.woff2 b/frontend-dist/Vollkorn-Black.0ebdfbf5.woff2 new file mode 100644 index 000000000..b51a37a40 Binary files /dev/null and b/frontend-dist/Vollkorn-Black.0ebdfbf5.woff2 differ diff --git a/frontend-dist/Vollkorn-BlackItalic.4095acfe.woff2 b/frontend-dist/Vollkorn-BlackItalic.4095acfe.woff2 new file mode 100644 index 000000000..bb2e060ce Binary files /dev/null and b/frontend-dist/Vollkorn-BlackItalic.4095acfe.woff2 differ diff --git a/frontend-dist/Vollkorn-Bold.6e1feb70.woff2 b/frontend-dist/Vollkorn-Bold.6e1feb70.woff2 new file mode 100644 index 000000000..cfb12e152 Binary files /dev/null and b/frontend-dist/Vollkorn-Bold.6e1feb70.woff2 differ diff --git a/frontend-dist/Vollkorn-BoldItalic.a48ab300.woff2 b/frontend-dist/Vollkorn-BoldItalic.a48ab300.woff2 new file mode 100644 index 000000000..23d7a6c84 Binary files /dev/null and b/frontend-dist/Vollkorn-BoldItalic.a48ab300.woff2 differ diff --git a/frontend-dist/Vollkorn-SemiBold.8072eb6c.woff2 b/frontend-dist/Vollkorn-SemiBold.8072eb6c.woff2 new file mode 100644 index 000000000..78b781055 Binary files /dev/null and b/frontend-dist/Vollkorn-SemiBold.8072eb6c.woff2 differ diff --git a/frontend-dist/Vollkorn-SemiBoldItalic.5c3cd265.woff2 b/frontend-dist/Vollkorn-SemiBoldItalic.5c3cd265.woff2 new file mode 100644 index 000000000..2162ab8ef Binary files /dev/null and b/frontend-dist/Vollkorn-SemiBoldItalic.5c3cd265.woff2 differ diff --git a/frontend-dist/add-outline.e3c93c35.svg b/frontend-dist/add-outline.e3c93c35.svg new file mode 100644 index 000000000..7c7fb1487 --- /dev/null +++ b/frontend-dist/add-outline.e3c93c35.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/alegreya-sans-cyrillic-400-italic.3566c50a.woff2 b/frontend-dist/alegreya-sans-cyrillic-400-italic.3566c50a.woff2 new file mode 100644 index 000000000..2ade9196b Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-400-italic.3566c50a.woff2 differ diff --git a/frontend-dist/alegreya-sans-cyrillic-400-italic.7b502436.woff b/frontend-dist/alegreya-sans-cyrillic-400-italic.7b502436.woff new file mode 100644 index 000000000..de6a851ed Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-400-italic.7b502436.woff differ diff --git a/frontend-dist/alegreya-sans-cyrillic-400-normal.7ad0b60c.woff2 b/frontend-dist/alegreya-sans-cyrillic-400-normal.7ad0b60c.woff2 new file mode 100644 index 000000000..8828ddb7b Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-400-normal.7ad0b60c.woff2 differ diff --git a/frontend-dist/alegreya-sans-cyrillic-400-normal.b3abccdf.woff b/frontend-dist/alegreya-sans-cyrillic-400-normal.b3abccdf.woff new file mode 100644 index 000000000..546400ff9 Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-400-normal.b3abccdf.woff differ diff --git a/frontend-dist/alegreya-sans-cyrillic-500-italic.2b0c87f4.woff2 b/frontend-dist/alegreya-sans-cyrillic-500-italic.2b0c87f4.woff2 new file mode 100644 index 000000000..816ac2281 Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-500-italic.2b0c87f4.woff2 differ diff --git a/frontend-dist/alegreya-sans-cyrillic-500-italic.4e7fb286.woff b/frontend-dist/alegreya-sans-cyrillic-500-italic.4e7fb286.woff new file mode 100644 index 000000000..370880e5e Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-500-italic.4e7fb286.woff differ diff --git a/frontend-dist/alegreya-sans-cyrillic-500-normal.6cecb852.woff b/frontend-dist/alegreya-sans-cyrillic-500-normal.6cecb852.woff new file mode 100644 index 000000000..74a86b84d Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-500-normal.6cecb852.woff differ diff --git a/frontend-dist/alegreya-sans-cyrillic-500-normal.74695d4e.woff2 b/frontend-dist/alegreya-sans-cyrillic-500-normal.74695d4e.woff2 new file mode 100644 index 000000000..b7e18bb25 Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-500-normal.74695d4e.woff2 differ diff --git a/frontend-dist/alegreya-sans-cyrillic-700-italic.adee9304.woff b/frontend-dist/alegreya-sans-cyrillic-700-italic.adee9304.woff new file mode 100644 index 000000000..5de669adc Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-700-italic.adee9304.woff differ diff --git a/frontend-dist/alegreya-sans-cyrillic-700-italic.d815e736.woff2 b/frontend-dist/alegreya-sans-cyrillic-700-italic.d815e736.woff2 new file mode 100644 index 000000000..0f2432ffb Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-700-italic.d815e736.woff2 differ diff --git a/frontend-dist/alegreya-sans-cyrillic-700-normal.04091397.woff b/frontend-dist/alegreya-sans-cyrillic-700-normal.04091397.woff new file mode 100644 index 000000000..0ef54eab6 Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-700-normal.04091397.woff differ diff --git a/frontend-dist/alegreya-sans-cyrillic-700-normal.59783bb9.woff2 b/frontend-dist/alegreya-sans-cyrillic-700-normal.59783bb9.woff2 new file mode 100644 index 000000000..6c55f17dc Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-700-normal.59783bb9.woff2 differ diff --git a/frontend-dist/alegreya-sans-cyrillic-ext-400-italic.2084dbe9.woff b/frontend-dist/alegreya-sans-cyrillic-ext-400-italic.2084dbe9.woff new file mode 100644 index 000000000..6a108c5b2 Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-ext-400-italic.2084dbe9.woff differ diff --git a/frontend-dist/alegreya-sans-cyrillic-ext-400-italic.bd939e0f.woff2 b/frontend-dist/alegreya-sans-cyrillic-ext-400-italic.bd939e0f.woff2 new file mode 100644 index 000000000..161ff0621 Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-ext-400-italic.bd939e0f.woff2 differ diff --git a/frontend-dist/alegreya-sans-cyrillic-ext-400-normal.55e5afa4.woff2 b/frontend-dist/alegreya-sans-cyrillic-ext-400-normal.55e5afa4.woff2 new file mode 100644 index 000000000..e92349775 Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-ext-400-normal.55e5afa4.woff2 differ diff --git a/frontend-dist/alegreya-sans-cyrillic-ext-400-normal.e5ff22a5.woff b/frontend-dist/alegreya-sans-cyrillic-ext-400-normal.e5ff22a5.woff new file mode 100644 index 000000000..b8fe91e40 Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-ext-400-normal.e5ff22a5.woff differ diff --git a/frontend-dist/alegreya-sans-cyrillic-ext-500-italic.228ebc5f.woff2 b/frontend-dist/alegreya-sans-cyrillic-ext-500-italic.228ebc5f.woff2 new file mode 100644 index 000000000..a57171ddd Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-ext-500-italic.228ebc5f.woff2 differ diff --git a/frontend-dist/alegreya-sans-cyrillic-ext-500-italic.e76d3c34.woff b/frontend-dist/alegreya-sans-cyrillic-ext-500-italic.e76d3c34.woff new file mode 100644 index 000000000..0805e0ace Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-ext-500-italic.e76d3c34.woff differ diff --git a/frontend-dist/alegreya-sans-cyrillic-ext-500-normal.7a8f66ad.woff b/frontend-dist/alegreya-sans-cyrillic-ext-500-normal.7a8f66ad.woff new file mode 100644 index 000000000..81b508738 Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-ext-500-normal.7a8f66ad.woff differ diff --git a/frontend-dist/alegreya-sans-cyrillic-ext-500-normal.e6a10a6f.woff2 b/frontend-dist/alegreya-sans-cyrillic-ext-500-normal.e6a10a6f.woff2 new file mode 100644 index 000000000..07f70f216 Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-ext-500-normal.e6a10a6f.woff2 differ diff --git a/frontend-dist/alegreya-sans-cyrillic-ext-700-italic.027a1147.woff b/frontend-dist/alegreya-sans-cyrillic-ext-700-italic.027a1147.woff new file mode 100644 index 000000000..f81cfa1c6 Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-ext-700-italic.027a1147.woff differ diff --git a/frontend-dist/alegreya-sans-cyrillic-ext-700-italic.081c5a3b.woff2 b/frontend-dist/alegreya-sans-cyrillic-ext-700-italic.081c5a3b.woff2 new file mode 100644 index 000000000..19db51284 Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-ext-700-italic.081c5a3b.woff2 differ diff --git a/frontend-dist/alegreya-sans-cyrillic-ext-700-normal.54d4ed38.woff b/frontend-dist/alegreya-sans-cyrillic-ext-700-normal.54d4ed38.woff new file mode 100644 index 000000000..1582e1147 Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-ext-700-normal.54d4ed38.woff differ diff --git a/frontend-dist/alegreya-sans-cyrillic-ext-700-normal.d29cb5c7.woff2 b/frontend-dist/alegreya-sans-cyrillic-ext-700-normal.d29cb5c7.woff2 new file mode 100644 index 000000000..cdc68386b Binary files /dev/null and b/frontend-dist/alegreya-sans-cyrillic-ext-700-normal.d29cb5c7.woff2 differ diff --git a/frontend-dist/alegreya-sans-greek-400-italic.698a3225.woff2 b/frontend-dist/alegreya-sans-greek-400-italic.698a3225.woff2 new file mode 100644 index 000000000..cfd23bdaf Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-400-italic.698a3225.woff2 differ diff --git a/frontend-dist/alegreya-sans-greek-400-italic.a0d1d107.woff b/frontend-dist/alegreya-sans-greek-400-italic.a0d1d107.woff new file mode 100644 index 000000000..ed828fe03 Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-400-italic.a0d1d107.woff differ diff --git a/frontend-dist/alegreya-sans-greek-400-normal.02c3b443.woff b/frontend-dist/alegreya-sans-greek-400-normal.02c3b443.woff new file mode 100644 index 000000000..ee05ba579 Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-400-normal.02c3b443.woff differ diff --git a/frontend-dist/alegreya-sans-greek-400-normal.5c283724.woff2 b/frontend-dist/alegreya-sans-greek-400-normal.5c283724.woff2 new file mode 100644 index 000000000..8c82c32f9 Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-400-normal.5c283724.woff2 differ diff --git a/frontend-dist/alegreya-sans-greek-500-italic.731402fe.woff2 b/frontend-dist/alegreya-sans-greek-500-italic.731402fe.woff2 new file mode 100644 index 000000000..d068a9429 Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-500-italic.731402fe.woff2 differ diff --git a/frontend-dist/alegreya-sans-greek-500-italic.e7f1407d.woff b/frontend-dist/alegreya-sans-greek-500-italic.e7f1407d.woff new file mode 100644 index 000000000..ba00cdc2d Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-500-italic.e7f1407d.woff differ diff --git a/frontend-dist/alegreya-sans-greek-500-normal.4fe45dc3.woff2 b/frontend-dist/alegreya-sans-greek-500-normal.4fe45dc3.woff2 new file mode 100644 index 000000000..f640d0e95 Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-500-normal.4fe45dc3.woff2 differ diff --git a/frontend-dist/alegreya-sans-greek-500-normal.6e74adef.woff b/frontend-dist/alegreya-sans-greek-500-normal.6e74adef.woff new file mode 100644 index 000000000..bd18e1dbd Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-500-normal.6e74adef.woff differ diff --git a/frontend-dist/alegreya-sans-greek-700-italic.054fd57c.woff b/frontend-dist/alegreya-sans-greek-700-italic.054fd57c.woff new file mode 100644 index 000000000..57ae8534a Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-700-italic.054fd57c.woff differ diff --git a/frontend-dist/alegreya-sans-greek-700-italic.7966e94d.woff2 b/frontend-dist/alegreya-sans-greek-700-italic.7966e94d.woff2 new file mode 100644 index 000000000..b7506623c Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-700-italic.7966e94d.woff2 differ diff --git a/frontend-dist/alegreya-sans-greek-700-normal.8306abb5.woff b/frontend-dist/alegreya-sans-greek-700-normal.8306abb5.woff new file mode 100644 index 000000000..c3379d11f Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-700-normal.8306abb5.woff differ diff --git a/frontend-dist/alegreya-sans-greek-700-normal.ad68df15.woff2 b/frontend-dist/alegreya-sans-greek-700-normal.ad68df15.woff2 new file mode 100644 index 000000000..289d51a17 Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-700-normal.ad68df15.woff2 differ diff --git a/frontend-dist/alegreya-sans-greek-ext-400-italic.61223683.woff b/frontend-dist/alegreya-sans-greek-ext-400-italic.61223683.woff new file mode 100644 index 000000000..0d79fa43a Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-ext-400-italic.61223683.woff differ diff --git a/frontend-dist/alegreya-sans-greek-ext-400-italic.ae95a328.woff2 b/frontend-dist/alegreya-sans-greek-ext-400-italic.ae95a328.woff2 new file mode 100644 index 000000000..03c7b8442 Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-ext-400-italic.ae95a328.woff2 differ diff --git a/frontend-dist/alegreya-sans-greek-ext-400-normal.532e031f.woff2 b/frontend-dist/alegreya-sans-greek-ext-400-normal.532e031f.woff2 new file mode 100644 index 000000000..8d5795ee5 Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-ext-400-normal.532e031f.woff2 differ diff --git a/frontend-dist/alegreya-sans-greek-ext-400-normal.649d7068.woff b/frontend-dist/alegreya-sans-greek-ext-400-normal.649d7068.woff new file mode 100644 index 000000000..ad6f5eaa8 Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-ext-400-normal.649d7068.woff differ diff --git a/frontend-dist/alegreya-sans-greek-ext-500-italic.d86fb2ec.woff b/frontend-dist/alegreya-sans-greek-ext-500-italic.d86fb2ec.woff new file mode 100644 index 000000000..0457c379c Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-ext-500-italic.d86fb2ec.woff differ diff --git a/frontend-dist/alegreya-sans-greek-ext-500-italic.e29cbb20.woff2 b/frontend-dist/alegreya-sans-greek-ext-500-italic.e29cbb20.woff2 new file mode 100644 index 000000000..0404ea83b Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-ext-500-italic.e29cbb20.woff2 differ diff --git a/frontend-dist/alegreya-sans-greek-ext-500-normal.7e2f002e.woff2 b/frontend-dist/alegreya-sans-greek-ext-500-normal.7e2f002e.woff2 new file mode 100644 index 000000000..0e33cf61b Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-ext-500-normal.7e2f002e.woff2 differ diff --git a/frontend-dist/alegreya-sans-greek-ext-500-normal.e5a8f936.woff b/frontend-dist/alegreya-sans-greek-ext-500-normal.e5a8f936.woff new file mode 100644 index 000000000..fb63a19d7 Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-ext-500-normal.e5a8f936.woff differ diff --git a/frontend-dist/alegreya-sans-greek-ext-700-italic.4e669d1d.woff2 b/frontend-dist/alegreya-sans-greek-ext-700-italic.4e669d1d.woff2 new file mode 100644 index 000000000..d38a9dfdc Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-ext-700-italic.4e669d1d.woff2 differ diff --git a/frontend-dist/alegreya-sans-greek-ext-700-italic.f9328bc7.woff b/frontend-dist/alegreya-sans-greek-ext-700-italic.f9328bc7.woff new file mode 100644 index 000000000..af859f8b1 Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-ext-700-italic.f9328bc7.woff differ diff --git a/frontend-dist/alegreya-sans-greek-ext-700-normal.951af0e4.woff b/frontend-dist/alegreya-sans-greek-ext-700-normal.951af0e4.woff new file mode 100644 index 000000000..eae4e029a Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-ext-700-normal.951af0e4.woff differ diff --git a/frontend-dist/alegreya-sans-greek-ext-700-normal.d6a165c3.woff2 b/frontend-dist/alegreya-sans-greek-ext-700-normal.d6a165c3.woff2 new file mode 100644 index 000000000..e514cd7f5 Binary files /dev/null and b/frontend-dist/alegreya-sans-greek-ext-700-normal.d6a165c3.woff2 differ diff --git a/frontend-dist/alegreya-sans-latin-400-italic.0d0d3a15.woff2 b/frontend-dist/alegreya-sans-latin-400-italic.0d0d3a15.woff2 new file mode 100644 index 000000000..57e161637 Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-400-italic.0d0d3a15.woff2 differ diff --git a/frontend-dist/alegreya-sans-latin-400-italic.41a16bae.woff b/frontend-dist/alegreya-sans-latin-400-italic.41a16bae.woff new file mode 100644 index 000000000..15b76343c Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-400-italic.41a16bae.woff differ diff --git a/frontend-dist/alegreya-sans-latin-400-normal.c3cfb12f.woff2 b/frontend-dist/alegreya-sans-latin-400-normal.c3cfb12f.woff2 new file mode 100644 index 000000000..c005bcecc Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-400-normal.c3cfb12f.woff2 differ diff --git a/frontend-dist/alegreya-sans-latin-400-normal.d6a3a798.woff b/frontend-dist/alegreya-sans-latin-400-normal.d6a3a798.woff new file mode 100644 index 000000000..fcb2af16b Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-400-normal.d6a3a798.woff differ diff --git a/frontend-dist/alegreya-sans-latin-500-italic.154b3d65.woff b/frontend-dist/alegreya-sans-latin-500-italic.154b3d65.woff new file mode 100644 index 000000000..c823ae556 Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-500-italic.154b3d65.woff differ diff --git a/frontend-dist/alegreya-sans-latin-500-italic.b258979c.woff2 b/frontend-dist/alegreya-sans-latin-500-italic.b258979c.woff2 new file mode 100644 index 000000000..466aa33d2 Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-500-italic.b258979c.woff2 differ diff --git a/frontend-dist/alegreya-sans-latin-500-normal.265ecb58.woff b/frontend-dist/alegreya-sans-latin-500-normal.265ecb58.woff new file mode 100644 index 000000000..73a60c8d5 Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-500-normal.265ecb58.woff differ diff --git a/frontend-dist/alegreya-sans-latin-500-normal.5c1a4322.woff2 b/frontend-dist/alegreya-sans-latin-500-normal.5c1a4322.woff2 new file mode 100644 index 000000000..e736abe6b Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-500-normal.5c1a4322.woff2 differ diff --git a/frontend-dist/alegreya-sans-latin-700-italic.828e096b.woff b/frontend-dist/alegreya-sans-latin-700-italic.828e096b.woff new file mode 100644 index 000000000..3c78ab7c5 Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-700-italic.828e096b.woff differ diff --git a/frontend-dist/alegreya-sans-latin-700-italic.9e7bf2ae.woff2 b/frontend-dist/alegreya-sans-latin-700-italic.9e7bf2ae.woff2 new file mode 100644 index 000000000..e5971a12c Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-700-italic.9e7bf2ae.woff2 differ diff --git a/frontend-dist/alegreya-sans-latin-700-normal.2aecb91e.woff2 b/frontend-dist/alegreya-sans-latin-700-normal.2aecb91e.woff2 new file mode 100644 index 000000000..1bec6886b Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-700-normal.2aecb91e.woff2 differ diff --git a/frontend-dist/alegreya-sans-latin-700-normal.4a09eb35.woff b/frontend-dist/alegreya-sans-latin-700-normal.4a09eb35.woff new file mode 100644 index 000000000..7589fc074 Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-700-normal.4a09eb35.woff differ diff --git a/frontend-dist/alegreya-sans-latin-ext-400-italic.34775b0f.woff2 b/frontend-dist/alegreya-sans-latin-ext-400-italic.34775b0f.woff2 new file mode 100644 index 000000000..262589f7c Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-ext-400-italic.34775b0f.woff2 differ diff --git a/frontend-dist/alegreya-sans-latin-ext-400-italic.8e9f5937.woff b/frontend-dist/alegreya-sans-latin-ext-400-italic.8e9f5937.woff new file mode 100644 index 000000000..d2afd1a56 Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-ext-400-italic.8e9f5937.woff differ diff --git a/frontend-dist/alegreya-sans-latin-ext-400-normal.065f6826.woff b/frontend-dist/alegreya-sans-latin-ext-400-normal.065f6826.woff new file mode 100644 index 000000000..e2eaf8422 Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-ext-400-normal.065f6826.woff differ diff --git a/frontend-dist/alegreya-sans-latin-ext-400-normal.b71a801c.woff2 b/frontend-dist/alegreya-sans-latin-ext-400-normal.b71a801c.woff2 new file mode 100644 index 000000000..0ffce608e Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-ext-400-normal.b71a801c.woff2 differ diff --git a/frontend-dist/alegreya-sans-latin-ext-500-italic.0e057840.woff b/frontend-dist/alegreya-sans-latin-ext-500-italic.0e057840.woff new file mode 100644 index 000000000..6de338021 Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-ext-500-italic.0e057840.woff differ diff --git a/frontend-dist/alegreya-sans-latin-ext-500-italic.bb5065e8.woff2 b/frontend-dist/alegreya-sans-latin-ext-500-italic.bb5065e8.woff2 new file mode 100644 index 000000000..73ddc49d5 Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-ext-500-italic.bb5065e8.woff2 differ diff --git a/frontend-dist/alegreya-sans-latin-ext-500-normal.c8c38132.woff b/frontend-dist/alegreya-sans-latin-ext-500-normal.c8c38132.woff new file mode 100644 index 000000000..ffaf3a5a1 Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-ext-500-normal.c8c38132.woff differ diff --git a/frontend-dist/alegreya-sans-latin-ext-500-normal.dc4a0b57.woff2 b/frontend-dist/alegreya-sans-latin-ext-500-normal.dc4a0b57.woff2 new file mode 100644 index 000000000..3e4f6f490 Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-ext-500-normal.dc4a0b57.woff2 differ diff --git a/frontend-dist/alegreya-sans-latin-ext-700-italic.b9a04ae4.woff2 b/frontend-dist/alegreya-sans-latin-ext-700-italic.b9a04ae4.woff2 new file mode 100644 index 000000000..5609ea2cf Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-ext-700-italic.b9a04ae4.woff2 differ diff --git a/frontend-dist/alegreya-sans-latin-ext-700-italic.f6294451.woff b/frontend-dist/alegreya-sans-latin-ext-700-italic.f6294451.woff new file mode 100644 index 000000000..205dba1c9 Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-ext-700-italic.f6294451.woff differ diff --git a/frontend-dist/alegreya-sans-latin-ext-700-normal.136a6e5c.woff b/frontend-dist/alegreya-sans-latin-ext-700-normal.136a6e5c.woff new file mode 100644 index 000000000..d31d4b41b Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-ext-700-normal.136a6e5c.woff differ diff --git a/frontend-dist/alegreya-sans-latin-ext-700-normal.cf32efba.woff2 b/frontend-dist/alegreya-sans-latin-ext-700-normal.cf32efba.woff2 new file mode 100644 index 000000000..feeb6d862 Binary files /dev/null and b/frontend-dist/alegreya-sans-latin-ext-700-normal.cf32efba.woff2 differ diff --git a/frontend-dist/alegreya-sans-vietnamese-400-italic.0b633f42.woff2 b/frontend-dist/alegreya-sans-vietnamese-400-italic.0b633f42.woff2 new file mode 100644 index 000000000..db439b66a Binary files /dev/null and b/frontend-dist/alegreya-sans-vietnamese-400-italic.0b633f42.woff2 differ diff --git a/frontend-dist/alegreya-sans-vietnamese-400-italic.abc8a91e.woff b/frontend-dist/alegreya-sans-vietnamese-400-italic.abc8a91e.woff new file mode 100644 index 000000000..c3dcb80c4 Binary files /dev/null and b/frontend-dist/alegreya-sans-vietnamese-400-italic.abc8a91e.woff differ diff --git a/frontend-dist/alegreya-sans-vietnamese-400-normal.32e0786f.woff b/frontend-dist/alegreya-sans-vietnamese-400-normal.32e0786f.woff new file mode 100644 index 000000000..ceb356352 Binary files /dev/null and b/frontend-dist/alegreya-sans-vietnamese-400-normal.32e0786f.woff differ diff --git a/frontend-dist/alegreya-sans-vietnamese-400-normal.a906a7f6.woff2 b/frontend-dist/alegreya-sans-vietnamese-400-normal.a906a7f6.woff2 new file mode 100644 index 000000000..1f5072a3e Binary files /dev/null and b/frontend-dist/alegreya-sans-vietnamese-400-normal.a906a7f6.woff2 differ diff --git a/frontend-dist/alegreya-sans-vietnamese-500-italic.0a710f4c.woff b/frontend-dist/alegreya-sans-vietnamese-500-italic.0a710f4c.woff new file mode 100644 index 000000000..63cf41ccf Binary files /dev/null and b/frontend-dist/alegreya-sans-vietnamese-500-italic.0a710f4c.woff differ diff --git a/frontend-dist/alegreya-sans-vietnamese-500-italic.d02b2baa.woff2 b/frontend-dist/alegreya-sans-vietnamese-500-italic.d02b2baa.woff2 new file mode 100644 index 000000000..c0f43eb54 Binary files /dev/null and b/frontend-dist/alegreya-sans-vietnamese-500-italic.d02b2baa.woff2 differ diff --git a/frontend-dist/alegreya-sans-vietnamese-500-normal.5ed8053c.woff b/frontend-dist/alegreya-sans-vietnamese-500-normal.5ed8053c.woff new file mode 100644 index 000000000..0121df69b Binary files /dev/null and b/frontend-dist/alegreya-sans-vietnamese-500-normal.5ed8053c.woff differ diff --git a/frontend-dist/alegreya-sans-vietnamese-500-normal.6639e3ea.woff2 b/frontend-dist/alegreya-sans-vietnamese-500-normal.6639e3ea.woff2 new file mode 100644 index 000000000..3a0e53ef8 Binary files /dev/null and b/frontend-dist/alegreya-sans-vietnamese-500-normal.6639e3ea.woff2 differ diff --git a/frontend-dist/alegreya-sans-vietnamese-700-italic.59db40f9.woff2 b/frontend-dist/alegreya-sans-vietnamese-700-italic.59db40f9.woff2 new file mode 100644 index 000000000..09f9cd99a Binary files /dev/null and b/frontend-dist/alegreya-sans-vietnamese-700-italic.59db40f9.woff2 differ diff --git a/frontend-dist/alegreya-sans-vietnamese-700-italic.c83635d5.woff b/frontend-dist/alegreya-sans-vietnamese-700-italic.c83635d5.woff new file mode 100644 index 000000000..6b97c0c41 Binary files /dev/null and b/frontend-dist/alegreya-sans-vietnamese-700-italic.c83635d5.woff differ diff --git a/frontend-dist/alegreya-sans-vietnamese-700-normal.066a5a17.woff b/frontend-dist/alegreya-sans-vietnamese-700-normal.066a5a17.woff new file mode 100644 index 000000000..c6dd4b864 Binary files /dev/null and b/frontend-dist/alegreya-sans-vietnamese-700-normal.066a5a17.woff differ diff --git a/frontend-dist/alegreya-sans-vietnamese-700-normal.1aa83a58.woff2 b/frontend-dist/alegreya-sans-vietnamese-700-normal.1aa83a58.woff2 new file mode 100644 index 000000000..1de6750ec Binary files /dev/null and b/frontend-dist/alegreya-sans-vietnamese-700-normal.1aa83a58.woff2 differ diff --git a/frontend-dist/arrow-back-outline.9ae1bed8.svg b/frontend-dist/arrow-back-outline.9ae1bed8.svg new file mode 100644 index 000000000..8fc34ff6e --- /dev/null +++ b/frontend-dist/arrow-back-outline.9ae1bed8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/arrow-forward-outline.f5f68f5c.svg b/frontend-dist/arrow-forward-outline.f5f68f5c.svg new file mode 100644 index 000000000..32a9f4f30 --- /dev/null +++ b/frontend-dist/arrow-forward-outline.f5f68f5c.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/arrow-redo-circle-outline.dfa899f4.svg b/frontend-dist/arrow-redo-circle-outline.dfa899f4.svg new file mode 100644 index 000000000..d0d9e1124 --- /dev/null +++ b/frontend-dist/arrow-redo-circle-outline.dfa899f4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/arrow-undo-outline.d8c99108.svg b/frontend-dist/arrow-undo-outline.d8c99108.svg new file mode 100644 index 000000000..a5d529e72 --- /dev/null +++ b/frontend-dist/arrow-undo-outline.d8c99108.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/arrow-up-circle-outline.3f146ffe.svg b/frontend-dist/arrow-up-circle-outline.3f146ffe.svg new file mode 100644 index 000000000..ba46f260f --- /dev/null +++ b/frontend-dist/arrow-up-circle-outline.3f146ffe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/ban-outline.c97da9b4.svg b/frontend-dist/ban-outline.c97da9b4.svg new file mode 100644 index 000000000..c52ff6227 --- /dev/null +++ b/frontend-dist/ban-outline.c97da9b4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/caret-down-outline.4253a2fe.svg b/frontend-dist/caret-down-outline.4253a2fe.svg new file mode 100644 index 000000000..c4c15b472 --- /dev/null +++ b/frontend-dist/caret-down-outline.4253a2fe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/caret-forward-circle-outline.d0bf2b34.svg b/frontend-dist/caret-forward-circle-outline.d0bf2b34.svg new file mode 100644 index 000000000..093c8e4ca --- /dev/null +++ b/frontend-dist/caret-forward-circle-outline.d0bf2b34.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/caret-forward-outline.348a84b6.svg b/frontend-dist/caret-forward-outline.348a84b6.svg new file mode 100644 index 000000000..888285c95 --- /dev/null +++ b/frontend-dist/caret-forward-outline.348a84b6.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/chatbox-ellipses-outline.4334a3a4.svg b/frontend-dist/chatbox-ellipses-outline.4334a3a4.svg new file mode 100644 index 000000000..4e04a5854 --- /dev/null +++ b/frontend-dist/chatbox-ellipses-outline.4334a3a4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/checkmark-outline.4fb8c646.svg b/frontend-dist/checkmark-outline.4fb8c646.svg new file mode 100644 index 000000000..f62dcf921 --- /dev/null +++ b/frontend-dist/checkmark-outline.4fb8c646.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/chevron-down-outline.1efaf1cc.svg b/frontend-dist/chevron-down-outline.1efaf1cc.svg new file mode 100644 index 000000000..e7a50cd11 --- /dev/null +++ b/frontend-dist/chevron-down-outline.1efaf1cc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/chevron-forward-circle-outline.babf2a99.svg b/frontend-dist/chevron-forward-circle-outline.babf2a99.svg new file mode 100644 index 000000000..9e63a3c04 --- /dev/null +++ b/frontend-dist/chevron-forward-circle-outline.babf2a99.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/close-circle-outline.4baeedb9.svg b/frontend-dist/close-circle-outline.4baeedb9.svg new file mode 100644 index 000000000..588e2d4c8 --- /dev/null +++ b/frontend-dist/close-circle-outline.4baeedb9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/close-circle.d0f6eac6.svg b/frontend-dist/close-circle.d0f6eac6.svg new file mode 100644 index 000000000..cce96081a --- /dev/null +++ b/frontend-dist/close-circle.d0f6eac6.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/close-outline.9c22a232.svg b/frontend-dist/close-outline.9c22a232.svg new file mode 100644 index 000000000..17d07818e --- /dev/null +++ b/frontend-dist/close-outline.9c22a232.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/cloud-download-outline.8c1ff9bb.svg b/frontend-dist/cloud-download-outline.8c1ff9bb.svg new file mode 100644 index 000000000..939a8c238 --- /dev/null +++ b/frontend-dist/cloud-download-outline.8c1ff9bb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/cloud-offline-outline.ac2eade9.svg b/frontend-dist/cloud-offline-outline.ac2eade9.svg new file mode 100644 index 000000000..426ff3b0d --- /dev/null +++ b/frontend-dist/cloud-offline-outline.ac2eade9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/copy-outline.0f561529.svg b/frontend-dist/copy-outline.0f561529.svg new file mode 100644 index 000000000..01e29db63 --- /dev/null +++ b/frontend-dist/copy-outline.0f561529.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/document-lock-outline.69d176a4.svg b/frontend-dist/document-lock-outline.69d176a4.svg new file mode 100644 index 000000000..b602b075c --- /dev/null +++ b/frontend-dist/document-lock-outline.69d176a4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/document-text-outline.8d1e2333.svg b/frontend-dist/document-text-outline.8d1e2333.svg new file mode 100644 index 000000000..dacd264f4 --- /dev/null +++ b/frontend-dist/document-text-outline.8d1e2333.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/download-outline.523a74d8.svg b/frontend-dist/download-outline.523a74d8.svg new file mode 100644 index 000000000..8f0e68054 --- /dev/null +++ b/frontend-dist/download-outline.523a74d8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/easel-outline.9b064e1f.svg b/frontend-dist/easel-outline.9b064e1f.svg new file mode 100644 index 000000000..cb8186f59 --- /dev/null +++ b/frontend-dist/easel-outline.9b064e1f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend-dist/editor.0f03e089.js b/frontend-dist/editor.0f03e089.js new file mode 100644 index 000000000..f03845d88 --- /dev/null +++ b/frontend-dist/editor.0f03e089.js @@ -0,0 +1,1484 @@ +let e,t,n,a;function r(e,t,n,a){Object.defineProperty(e,t,{get:n,set:a,enumerable:!0,configurable:!0})}var o,i=globalThis,l={},s={},c=i.parcelRequire94c2;null==c&&((c=function(e){if(e in l)return l[e].exports;if(e in s){var t=s[e];delete s[e];var n={id:e,exports:{}};return l[e]=n,t.call(n.exports,n,n.exports),n.exports}var a=Error("Cannot find module '"+e+"'");throw a.code="MODULE_NOT_FOUND",a}).register=function(e,t){s[e]=t},i.parcelRequire94c2=c);var u=c.register;u("7xJa8",function(e,t){function n(e){for(var t=arguments.length,n=Array(t>1?t-1:0),a=1;a3?t.i-4:t.i:Array.isArray(e)?1:m(e)?2:h(e)?3:0}function c(e,t){return 2===s(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function u(e,t){return 2===s(e)?e.get(t):e[t]}function d(e,t,n){var a=s(e);2===a?e.set(t,n):3===a?(e.delete(t),e.add(n)):e[t]=n}function p(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}function m(e){return K&&e instanceof Map}function h(e){return Z&&e instanceof Set}function g(e){return e.o||e.t}function f(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=et(e);delete t[Y];for(var n=ee(t),a=0;a1&&(e.set=e.add=e.clear=e.delete=b),Object.freeze(e),t&&l(e,function(e,t){return _(t,!0)},!0)),e}function b(){n(2)}function y(e){return null==e||"object"!=typeof e||Object.isFrozen(e)}function v(e){var t=en[e];return t||n(18,e),t}function w(e,t){en[e]||(en[e]=t)}function k(e,t){t&&(v("Patches"),e.u=[],e.s=[],e.v=t)}function E(e){$(e),e.p.forEach(S),e.p=null}function $(e){e===W&&(W=e.l)}function x(e){return W={p:[],l:W,h:e,m:!0,_:0}}function S(e){var t=e[Y];0===t.i||1===t.i?t.j():t.g=!0}function N(e,t){t._=t.p.length;var a=t.p[0],r=void 0!==e&&e!==a;return t.h.O||v("ES5").S(t,e,r),r?(a[Y].P&&(E(t),n(4)),o(e)&&(e=C(t,e),t.l||M(t,e)),t.u&&v("Patches").M(a[Y],e,t.u,t.s)):e=C(t,a,[]),E(t),t.u&&t.v(t.u,t.s),e!==Q?e:void 0}function C(e,t,n){if(y(t))return t;var a=t[Y];if(!a)return l(t,function(r,o){return A(e,a,t,r,o,n)},!0),t;if(a.A!==e)return t;if(!a.P)return M(e,a.t,!0),a.t;if(!a.I){a.I=!0,a.A._--;var r=4===a.i||5===a.i?a.o=f(a.k):a.o;l(3===a.i?new Set(r):r,function(t,o){return A(e,a,r,t,o,n)}),M(e,r,!1),n&&e.u&&v("Patches").R(a,n,e.u,e.s)}return a.o}function A(e,t,n,r,i,l){if(a(i)){var s=C(e,i,l&&t&&3!==t.i&&!c(t.D,r)?l.concat(r):void 0);if(d(n,r,s),!a(s))return;e.m=!1}if(o(i)&&!y(i)){if(!e.h.N&&e._<1)return;C(e,i),t&&t.A.l||M(e,i)}}function M(e,t,n){void 0===n&&(n=!1),e.h.N&&e.m&&_(t,n)}function O(e,t){var n=e[Y];return(n?g(n):e)[t]}function T(e,t){if(t in e)for(var n=Object.getPrototypeOf(e);n;){var a=Object.getOwnPropertyDescriptor(n,t);if(a)return a;n=Object.getPrototypeOf(n)}}function D(e){e.P||(e.P=!0,e.l&&D(e.l))}function R(e){e.o||(e.o=f(e.t))}function L(e,t,n){var a,r,o,i,l,s,c,u=m(t)?v("MapSet").T(t,n):h(t)?v("MapSet").F(t,n):e.O?(o=r={i:(a=Array.isArray(t))?1:0,A:n?n.A:W,P:!1,I:!1,D:{},l:n,t:t,k:null,o:null,j:null,C:!1},i=ea,a&&(o=[r],i=er),s=(l=Proxy.revocable(o,i)).revoke,c=l.proxy,r.k=c,r.j=s,c):v("ES5").J(t,n);return(n?n.A:W).p.push(u),u}function I(e){return a(e)||n(22,e),function e(t){if(!o(t))return t;var n,a=t[Y],r=s(t);if(a){if(!a.P&&(a.i<4||!v("ES5").K(a)))return a.t;a.I=!0,n=P(t,r),a.I=!1}else n=P(t,r);return l(n,function(t,r){a&&u(a.t,t)===r||d(n,t,e(r))}),3===r?new Set(n):n}(e)}function P(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return f(e)}function j(){function e(e,t){var n=o[e];return n?n.enumerable=t:o[e]=n={configurable:!0,enumerable:t,get:function(){var t=this[Y];return ea.get(t,e)},set:function(t){var n=this[Y];ea.set(n,e,t)}},n}function t(e){for(var t=e.length-1;t>=0;t--){var a=e[t][Y];if(!a.P)switch(a.i){case 5:r(a)&&D(a);break;case 4:n(a)&&D(a)}}}function n(e){for(var t=e.t,n=e.k,a=ee(n),r=a.length-1;r>=0;r--){var o=a[r];if(o!==Y){var i=t[o];if(void 0===i&&!c(t,o))return!0;var l=n[o],s=l&&l[Y];if(s?s.t!==i:!p(l,i))return!0}}var u=!!t[Y];return a.length!==ee(t).length+(u?0:1)}function r(e){var t=e.k;if(t.length!==e.t.length)return!0;var n=Object.getOwnPropertyDescriptor(t,t.length-1);return!(!n||n.get)}var o={};w("ES5",{J:function(t,n){var a=Array.isArray(t),r=function(t,n){if(t){for(var a=Array(n.length),r=0;ra),r(e.exports,"isDraftable",()=>o),r(e.exports,"immerable",()=>X),r(e.exports,"original",()=>i),r(e.exports,"freeze",()=>_),r(e.exports,"nothing",()=>Q),r(e.exports,"current",()=>I),r(e.exports,"enableES5",()=>j),r(e.exports,"enablePatches",()=>B),r(e.exports,"enableMapSet",()=>U),r(e.exports,"enableAllPlugins",()=>F),r(e.exports,"castDraft",()=>z),r(e.exports,"castImmutable",()=>q),r(e.exports,"Immer",()=>eo),r(e.exports,"produce",()=>el),r(e.exports,"produceWithPatches",()=>es),r(e.exports,"setAutoFreeze",()=>ec),r(e.exports,"setUseProxies",()=>eu),r(e.exports,"applyPatches",()=>ed),r(e.exports,"createDraft",()=>ep),r(e.exports,"finishDraft",()=>em),r(e.exports,"default",()=>eh);var H,W,G="undefined"!=typeof Symbol&&"symbol"==typeof Symbol("x"),K="undefined"!=typeof Map,Z="undefined"!=typeof Set,V="undefined"!=typeof Proxy&&void 0!==Proxy.revocable&&"undefined"!=typeof Reflect,Q=G?Symbol.for("immer-nothing"):((H={})["immer-nothing"]=!0,H),X=G?Symbol.for("immer-draftable"):"__$immer_draftable",Y=G?Symbol.for("immer-state"):"__$immer_state",J="undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator",ee="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,et=Object.getOwnPropertyDescriptors||function(e){var t={};return ee(e).forEach(function(n){t[n]=Object.getOwnPropertyDescriptor(e,n)}),t},en={},ea={get:function(e,t){if(t===Y)return e;var n,a,r=g(e);if(!c(r,t))return(a=T(r,t))?"value"in a?a.value:null===(n=a.get)||void 0===n?void 0:n.call(e.k):void 0;var i=r[t];return e.I||!o(i)?i:i===O(e.t,t)?(R(e),e.o[t]=L(e.A.h,i,e)):i},has:function(e,t){return t in g(e)},ownKeys:function(e){return Reflect.ownKeys(g(e))},set:function(e,t,n){var a=T(g(e),t);if(null==a?void 0:a.set)return a.set.call(e.k,n),!0;if(!e.P){var r=O(g(e),t),o=null==r?void 0:r[Y];if(o&&o.t===n)return e.o[t]=n,e.D[t]=!1,!0;if(p(n,r)&&(void 0!==n||c(e.t,t)))return!0;R(e),D(e)}return e.o[t]=n,e.D[t]=!0,!0},deleteProperty:function(e,t){return void 0!==O(e.t,t)||t in e.t?(e.D[t]=!1,R(e),D(e)):delete e.D[t],e.o&&delete e.o[t],!0},getOwnPropertyDescriptor:function(e,t){var n=g(e),a=Reflect.getOwnPropertyDescriptor(n,t);return a?{writable:!0,configurable:1!==e.i||"length"!==t,enumerable:a.enumerable,value:n[t]}:a},defineProperty:function(){n(11)},getPrototypeOf:function(e){return Object.getPrototypeOf(e.t)},setPrototypeOf:function(){n(12)}},er={};l(ea,function(e,t){er[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),er.deleteProperty=function(e,t){return ea.deleteProperty.call(this,e[0],t)},er.set=function(e,t,n){return ea.set.call(this,e[0],t,n,e[0])};var eo=function(){function e(e){this.O=V,this.N=!0,"boolean"==typeof(null==e?void 0:e.useProxies)&&this.setUseProxies(e.useProxies),"boolean"==typeof(null==e?void 0:e.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),this.produce=this.produce.bind(this),this.produceWithPatches=this.produceWithPatches.bind(this)}var t=e.prototype;return t.produce=function(e,t,a){if("function"==typeof e&&"function"!=typeof t){var r,i=t;t=e;var l=this;return function(e){var n=this;void 0===e&&(e=i);for(var a=arguments.length,r=Array(a>1?a-1:0),o=1;o1?n-1:0),o=1;o=0;n--){var n,r=t[n];if(0===r.path.length&&"replace"===r.op){e=r.value;break}}var o=v("Patches").$;return a(e)?o(e,t):this.produce(e,function(e){return o(e,t.slice(n+1))})},e}(),ei=new eo,el=ei.produce,es=ei.produceWithPatches.bind(ei),ec=ei.setAutoFreeze.bind(ei),eu=ei.setUseProxies.bind(ei),ed=ei.applyPatches.bind(ei),ep=ei.createDraft.bind(ei),em=ei.finishDraft.bind(ei),eh=el}),u("5nXoD",function(e,t){var n=c("g774k");e.exports=n("g8zEq").then(()=>c("8WRsO"))}),u("g774k",function(e,t){e.exports=function(e){return import(c("ko7kR").resolve(e))}}),u("cFvm7",function(e,t){var n=c("g774k");e.exports=Promise.all([n("g8zEq"),n("9IVCm")]).then(()=>c("4rxkr"))});var d=c("cNaMA");c("eS9BV");var d=c("cNaMA"),p=c("7xJa8"),m=p.default;(0,p.enablePatches)(),(0,p.setAutoFreeze)(!1);var p=c("7xJa8"),h=c("9Ta4i"),g=(c("4zMEb"),c("4zMEb"));let f=async e=>e(),_=null;const b=async()=>(null==_&&(_=f(async()=>{let[{initializeApp:e},t]=await Promise.all([c("5nXoD"),c("cFvm7")]),{getFirestore:n,addDoc:a,doc:r,collection:o}=t,i=e({apiKey:"AIzaSyC0DqEcaM8AZ6cvApXuNcNU2RgZZOj7F68",authDomain:"localhost",projectId:"pluto-feedback"}),l=n(i),s=o(l,"feedback"),u=async e=>{let t=await a(s,e);console.debug("Firestore doc created ",t.id,t)};return console.log("\uD83D\uDD25base loaded",{initializeApp:e,firestore_module:t,app:i,db:l,feedback_db:s,add_feedback:u}),u})),await _),y=async()=>{try{let e=document.querySelector("form#feedback");if(null==e)return;e.addEventListener("submit",t=>{let n=prompt("Would you like us to contact you?\n\nEmail: (leave blank to stay anonymous \uD83D\uDC40)");t.preventDefault(),f(async()=>{try{let a=String(new FormData(t.target).get("opinion"));if(a.length<4)return;let r=await b();await (0,g.timeout_promise)(r({feedback:a,timestamp:Date.now(),email:n||""}),5e3);let o="Submitted. Thank you for your feedback! \uD83D\uDC95";console.log(o),alert(o),e.querySelector("#opinion").value=""}catch(t){let e="Whoops, failed to send feedback \uD83D\uDE22\nWe would really like to hear from you! Please got to https://github.com/fonsp/Pluto.jl/issues to report this failure:\n\n";console.error(e),console.error(t),alert(e+t)}})}),e.addEventListener("focusin",()=>{b()})}catch(e){for(let t of(console.error("Something went wrong loading the feedback form:",e),document.querySelector("form#feedback").style.opacity=0,"Oh noooooooooooooooooo..."))document.querySelector("form#feedback input").value+=t,await new Promise(e=>setTimeout(e,200))}};function v(e){return e.replace(/\r\n/g,"\n").split(/# ╔═╡ \S+\n/).map(e=>e.trim()).filter(e=>""!==e)}const w="julia> ";function k(e){let t=e.replace(/\r\n/g,"\n").split(w),n=" ".repeat(prompt.length);return t.map(function(e){return(n+e).split("\n").filter(e=>e.startsWith(n)).map(e=>e.replace(n,"")).join("\n")}).map(e=>e.trim()).filter(e=>""!==e)}const E=e=>e.trim().startsWith(w)?k:e.match(/# ╔═╡ ........-....-....-....-............/g)?.length?v:null;var $=c("2ZZ1r"),d=c("cNaMA"),x=c("aN0pg"),d=c("cNaMA");let S=(0,d.createContext)(),N=(0,d.createContext)(null),C=(0,d.createContext)(null);class A extends Set{constructor(e){super(),this.callback=e}delete(e){let t=super.delete(e);return t&&0===this.size&&this.callback(),t}}var M=c("kjWx8");const O=()=>"visible"===document.visibilityState?Promise.resolve():new Promise(e=>{let t=()=>{O().then(e),document.removeEventListener("visibilitychange",t)};document.addEventListener("visibilitychange",t)}),T=({any_code_differs:e,last_update_time:t,last_hot_reload_time:n,connected:a})=>{let r=(0,d.useContext)(S),[o,i]=(0,d.useState)(""),[l,s]=(0,d.useState)(""),c=(0,d.useRef)(null),u=(0,d.useRef)(null);(0,d.useEffect)(()=>(clearTimeout(c?.current),e?i("ask_to_save"):Date.now()-t<1e3?(i("saved"),c.current=setTimeout(()=>{i("")},1e3)):i(""),()=>clearTimeout(c?.current)),[e]);let[p,m]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{a&&setTimeout(()=>m(!0),1e3)},[a]),(0,d.useEffect)(()=>{if(console.log("Hottt",n,p),p)return s("reloaded_from_file"),console.log("set state"),O().then(()=>{u.current=setTimeout(()=>{s(""),console.log("reset state")},8e3)}),()=>clearTimeout(u?.current)},[n]),(0,d.html)` + ${"ask_to_save"===o?(0,d.html)` +
+ +
+ `:"saved"===o||"saving"===o?(0,d.html)` +
+ Saved +
+ `:"reloaded_from_file"===l?(0,d.html)` +
+ File change detected, notebook updated +
+ `:null} +
`};var d=c("cNaMA"),h=c("9Ta4i"),d=(c("cNaMA"),c("cNaMA")),{entries:D,setPrototypeOf:R,isFrozen:L,getPrototypeOf:I,getOwnPropertyDescriptor:P}=Object,{freeze:j,seal:B,create:U}=Object,{apply:F,construct:z}="u">typeof Reflect&&Reflect;F||(F=function(e,t,n){return e.apply(t,n)}),j||(j=function(e){return e}),B||(B=function(e){return e}),z||(z=function(e,t){return new e(...t)});var q=ee(Array.prototype.forEach),H=ee(Array.prototype.pop),W=ee(Array.prototype.push),G=ee(String.prototype.toLowerCase),K=ee(String.prototype.toString),Z=ee(String.prototype.match),V=ee(String.prototype.replace),Q=ee(String.prototype.indexOf),X=ee(String.prototype.trim),Y=ee(RegExp.prototype.test),J=(o=TypeError,function(){for(var e=arguments.length,t=Array(e),n=0;n1?n-1:0),r=1;r/gm),e_=B(/\${[\w\W]*}/gm),eb=B(/^data-[\-\w.\u00B7-\uFFFF]/),ey=B(/^aria-[\-\w]+$/),ev=B(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ew=B(/^(?:\w+script|data):/i),ek=B(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),eE=B(/^html$/i),e$=Object.freeze({__proto__:null,MUSTACHE_EXPR:eg,ERB_EXPR:ef,TMPLIT_EXPR:e_,DATA_ATTR:eb,ARIA_ATTR:ey,IS_ALLOWED_URI:ev,IS_SCRIPT_OR_DATA:ew,ATTR_WHITESPACE:ek,DOCTYPE_NAME:eE}),ex=()=>typeof window>"u"?null:window,eS=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null,a="data-tt-policy-suffix";t&&t.hasAttribute(a)&&(n=t.getAttribute(a));let r="dompurify"+(n?"#"+n:"");try{return e.createPolicy(r,{createHTML:e=>e,createScriptURL:e=>e})}catch{return console.warn("TrustedTypes policy "+r+" could not be created."),null}},eN=function e(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ex(),n=t=>e(t);if(n.version="3.0.3",n.removed=[],!t||!t.document||9!==t.document.nodeType)return n.isSupported=!1,n;let a=t.document,r=a.currentScript,{document:o}=t,{DocumentFragment:i,HTMLTemplateElement:l,Node:s,Element:c,NodeFilter:u,NamedNodeMap:d=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:p,DOMParser:m,trustedTypes:h}=t,g=c.prototype,f=ea(g,"cloneNode"),_=ea(g,"nextSibling"),b=ea(g,"childNodes"),y=ea(g,"parentNode");if("function"==typeof l){let e=o.createElement("template");e.content&&e.content.ownerDocument&&(o=e.content.ownerDocument)}let v,w="",{implementation:k,createNodeIterator:E,createDocumentFragment:$,getElementsByTagName:x}=o,{importNode:S}=a,N={};n.isSupported="function"==typeof D&&"function"==typeof y&&k&&void 0!==k.createHTMLDocument;let{MUSTACHE_EXPR:C,ERB_EXPR:A,TMPLIT_EXPR:M,DATA_ATTR:O,ARIA_ATTR:T,IS_SCRIPT_OR_DATA:R,ATTR_WHITESPACE:L}=e$,{IS_ALLOWED_URI:I}=e$,P=null,B=et({},[...er,...eo,...ei,...es,...eu]),U=null,F=et({},[...ed,...ep,...em,...eh]),z=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ee=null,eg=null,ef=!0,e_=!0,eb=!1,ey=!0,ew=!1,ek=!1,eN=!1,eC=!1,eA=!1,eM=!1,eO=!1,eT=!0,eD=!1,eR=!0,eL=!1,eI={},eP=null,ej=et({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),eB=null,eU=et({},["audio","video","img","source","image","track"]),eF=null,ez=et({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),eq="http://www.w3.org/1998/Math/MathML",eH="http://www.w3.org/2000/svg",eW="http://www.w3.org/1999/xhtml",eG=eW,eK=!1,eZ=null,eV=et({},[eq,eH,eW],K),eQ,eX=["application/xhtml+xml","text/html"],eY,eJ=null,e0=o.createElement("form"),e1=function(e){return e instanceof RegExp||e instanceof Function},e2=function(e){if(!(eJ&&eJ===e)){if(e&&"object"==typeof e||(e={}),e=en(e),eY="application/xhtml+xml"===(eQ=eQ=-1===eX.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE)?K:G,P="ALLOWED_TAGS"in e?et({},e.ALLOWED_TAGS,eY):B,U="ALLOWED_ATTR"in e?et({},e.ALLOWED_ATTR,eY):F,eZ="ALLOWED_NAMESPACES"in e?et({},e.ALLOWED_NAMESPACES,K):eV,eF="ADD_URI_SAFE_ATTR"in e?et(en(ez),e.ADD_URI_SAFE_ATTR,eY):ez,eB="ADD_DATA_URI_TAGS"in e?et(en(eU),e.ADD_DATA_URI_TAGS,eY):eU,eP="FORBID_CONTENTS"in e?et({},e.FORBID_CONTENTS,eY):ej,ee="FORBID_TAGS"in e?et({},e.FORBID_TAGS,eY):{},eg="FORBID_ATTR"in e?et({},e.FORBID_ATTR,eY):{},eI="USE_PROFILES"in e&&e.USE_PROFILES,ef=!1!==e.ALLOW_ARIA_ATTR,e_=!1!==e.ALLOW_DATA_ATTR,eb=e.ALLOW_UNKNOWN_PROTOCOLS||!1,ey=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,ew=e.SAFE_FOR_TEMPLATES||!1,ek=e.WHOLE_DOCUMENT||!1,eA=e.RETURN_DOM||!1,eM=e.RETURN_DOM_FRAGMENT||!1,eO=e.RETURN_TRUSTED_TYPE||!1,eC=e.FORCE_BODY||!1,eT=!1!==e.SANITIZE_DOM,eD=e.SANITIZE_NAMED_PROPS||!1,eR=!1!==e.KEEP_CONTENT,eL=e.IN_PLACE||!1,I=e.ALLOWED_URI_REGEXP||ev,eG=e.NAMESPACE||eW,z=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&e1(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(z.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&e1(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(z.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(z.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ew&&(e_=!1),eM&&(eA=!0),eI&&(P=et({},[...eu]),U=[],!0===eI.html&&(et(P,er),et(U,ed)),!0===eI.svg&&(et(P,eo),et(U,ep),et(U,eh)),!0===eI.svgFilters&&(et(P,ei),et(U,ep),et(U,eh)),!0===eI.mathMl&&(et(P,es),et(U,em),et(U,eh))),e.ADD_TAGS&&(P===B&&(P=en(P)),et(P,e.ADD_TAGS,eY)),e.ADD_ATTR&&(U===F&&(U=en(U)),et(U,e.ADD_ATTR,eY)),e.ADD_URI_SAFE_ATTR&&et(eF,e.ADD_URI_SAFE_ATTR,eY),e.FORBID_CONTENTS&&(eP===ej&&(eP=en(eP)),et(eP,e.FORBID_CONTENTS,eY)),eR&&(P["#text"]=!0),ek&&et(P,["html","head","body"]),P.table&&(et(P,["tbody"]),delete ee.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw J('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw J('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');w=(v=e.TRUSTED_TYPES_POLICY).createHTML("")}else void 0===v&&(v=eS(h,r)),null!==v&&"string"==typeof w&&(w=v.createHTML(""));j&&j(e),eJ=e}},e3=et({},["mi","mo","mn","ms","mtext"]),e4=et({},["foreignobject","desc","title","annotation-xml"]),e9=et({},["title","style","font","a","script"]),e6=et({},eo);et(e6,ei),et(e6,el);let e8=et({},es);et(e8,ec);let e5=function(e){let t=y(e);t&&t.tagName||(t={namespaceURI:eG,tagName:"template"});let n=G(e.tagName),a=G(t.tagName);return!!eZ[e.namespaceURI]&&(e.namespaceURI===eH?t.namespaceURI===eW?"svg"===n:t.namespaceURI===eq?"svg"===n&&("annotation-xml"===a||e3[a]):!!e6[n]:e.namespaceURI===eq?t.namespaceURI===eW?"math"===n:t.namespaceURI===eH?"math"===n&&e4[a]:!!e8[n]:e.namespaceURI===eW?(t.namespaceURI!==eH||!!e4[a])&&(t.namespaceURI!==eq||!!e3[a])&&!e8[n]&&(e9[n]||!e6[n]):!!("application/xhtml+xml"===eQ&&eZ[e.namespaceURI]))},e7=function(e){W(n.removed,{element:e});try{e.parentNode.removeChild(e)}catch{e.remove()}},te=function(e,t){try{W(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch{W(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!U[e]){if(eA||eM)try{e7(t)}catch{}else try{t.setAttribute(e,"")}catch{}}},tt=function(e){let t,n;if(eC)e=""+e;else{let t=Z(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===eQ&&eG===eW&&(e=''+e+"");let a=v?v.createHTML(e):e;if(eG===eW)try{t=new m().parseFromString(a,eQ)}catch{}if(!t||!t.documentElement){t=k.createDocument(eG,"template",null);try{t.documentElement.innerHTML=eK?w:a}catch{}}let r=t.body||t.documentElement;return e&&n&&r.insertBefore(o.createTextNode(n),r.childNodes[0]||null),eG===eW?x.call(t,ek?"html":"body")[0]:ek?t.documentElement:r},tn=function(e){return E.call(e.ownerDocument||e,e,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT,null,!1)},ta=function(e){return"object"==typeof s?e instanceof s:e&&"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},tr=function(e,t,a){N[e]&&q(N[e],e=>{e.call(n,t,a,eJ)})},to=function(e){let t;if(tr("beforeSanitizeElements",e,null),e instanceof p&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof d)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes))return e7(e),!0;let a=eY(e.nodeName);if(tr("uponSanitizeElement",e,{tagName:a,allowedTags:P}),e.hasChildNodes()&&!ta(e.firstElementChild)&&(!ta(e.content)||!ta(e.content.firstElementChild))&&Y(/<[/\w]/g,e.innerHTML)&&Y(/<[/\w]/g,e.textContent))return e7(e),!0;if(!P[a]||ee[a]){if(!ee[a]&&tl(a)&&(z.tagNameCheck instanceof RegExp&&Y(z.tagNameCheck,a)||z.tagNameCheck instanceof Function&&z.tagNameCheck(a)))return!1;if(eR&&!eP[a]){let t=y(e)||e.parentNode,n=b(e)||e.childNodes;if(n&&t){let a=n.length;for(let r=a-1;r>=0;--r)t.insertBefore(f(n[r],!0),_(e))}}return e7(e),!0}return e instanceof c&&!e5(e)||("noscript"===a||"noembed"===a)&&Y(/<\/no(script|embed)/i,e.innerHTML)?(e7(e),!0):(ew&&3===e.nodeType&&(t=V(t=e.textContent,C," "),t=V(t,A," "),t=V(t,M," "),e.textContent!==t&&(W(n.removed,{element:e.cloneNode()}),e.textContent=t)),tr("afterSanitizeElements",e,null),!1)},ti=function(e,t,n){if(eT&&("id"===t||"name"===t)&&(n in o||n in e0))return!1;if(!(e_&&!eg[t]&&Y(O,t))&&!(ef&&Y(T,t))){if(!U[t]||eg[t]){if(!(tl(e)&&(z.tagNameCheck instanceof RegExp&&Y(z.tagNameCheck,e)||z.tagNameCheck instanceof Function&&z.tagNameCheck(e))&&(z.attributeNameCheck instanceof RegExp&&Y(z.attributeNameCheck,t)||z.attributeNameCheck instanceof Function&&z.attributeNameCheck(t))||"is"===t&&z.allowCustomizedBuiltInElements&&(z.tagNameCheck instanceof RegExp&&Y(z.tagNameCheck,n)||z.tagNameCheck instanceof Function&&z.tagNameCheck(n))))return!1}else if(!eF[t]&&!Y(I,V(n,L,""))&&!(("src"===t||"xlink:href"===t||"href"===t)&&"script"!==e&&0===Q(n,"data:")&&eB[e])&&!(eb&&!Y(R,V(n,L,"")))&&n)return!1}return!0},tl=function(e){return e.indexOf("-")>0},ts=function(e){let t,a,r,o;tr("beforeSanitizeAttributes",e,null);let{attributes:i}=e;if(!i)return;let l={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:U};for(o=i.length;o--;){let{name:s,namespaceURI:c}=t=i[o];if(a="value"===s?t.value:X(t.value),r=eY(s),l.attrName=r,l.attrValue=a,l.keepAttr=!0,l.forceKeepAttr=void 0,tr("uponSanitizeAttribute",e,l),a=l.attrValue,l.forceKeepAttr||(te(s,e),!l.keepAttr))continue;if(!ey&&Y(/\/>/i,a)){te(s,e);continue}ew&&(a=V(a,C," "),a=V(a,A," "),a=V(a,M," "));let u=eY(e.nodeName);if(ti(u,r,a)){if(eD&&("id"===r||"name"===r)&&(te(s,e),a="user-content-"+a),v&&"object"==typeof h&&"function"==typeof h.getAttributeType&&!c)switch(h.getAttributeType(u,r)){case"TrustedHTML":a=v.createHTML(a);break;case"TrustedScriptURL":a=v.createScriptURL(a)}try{c?e.setAttributeNS(c,s,a):e.setAttribute(s,a),H(n.removed)}catch{}}}tr("afterSanitizeAttributes",e,null)},tc=function e(t){let n,a=tn(t);for(tr("beforeSanitizeShadowDOM",t,null);n=a.nextNode();)tr("uponSanitizeShadowNode",n,null),to(n)||(n.content instanceof i&&e(n.content),ts(n));tr("afterSanitizeShadowDOM",t,null)};return n.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r,o,l,c;if((eK=!e)&&(e=""),"string"!=typeof e&&!ta(e)){if("function"==typeof e.toString){if("string"!=typeof(e=e.toString()))throw J("dirty is not a string, aborting")}else throw J("toString is not a function")}if(!n.isSupported)return e;if(eN||e2(t),n.removed=[],"string"==typeof e&&(eL=!1),eL){if(e.nodeName){let t=eY(e.nodeName);if(!P[t]||ee[t])throw J("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof s)1===(o=(r=tt("")).ownerDocument.importNode(e,!0)).nodeType&&"BODY"===o.nodeName||"HTML"===o.nodeName?r=o:r.appendChild(o);else{if(!eA&&!ew&&!ek&&-1===e.indexOf("<"))return v&&eO?v.createHTML(e):e;if(!(r=tt(e)))return eA?null:eO?w:""}r&&eC&&e7(r.firstChild);let u=tn(eL?e:r);for(;l=u.nextNode();)to(l)||(l.content instanceof i&&tc(l.content),ts(l));if(eL)return e;if(eA){if(eM)for(c=$.call(r.ownerDocument);r.firstChild;)c.appendChild(r.firstChild);else c=r;return(U.shadowroot||U.shadowrootmod)&&(c=S.call(a,c,!0)),c}let d=ek?r.outerHTML:r.innerHTML;return ek&&P["!doctype"]&&r.ownerDocument&&r.ownerDocument.doctype&&r.ownerDocument.doctype.name&&Y(eE,r.ownerDocument.doctype.name)&&(d=" +`+d),ew&&(d=V(d,C," "),d=V(d,A," "),d=V(d,M," ")),v&&eO?v.createHTML(d):d},n.setConfig=function(e){e2(e),eN=!0},n.clearConfig=function(){eJ=null,eN=!1},n.isValidAttribute=function(e,t,n){return eJ||e2({}),ti(eY(e),eY(t),n)},n.addHook=function(e,t){"function"==typeof t&&(N[e]=N[e]||[],W(N[e],t))},n.removeHook=function(e){if(N[e])return H(N[e])},n.removeHooks=function(e){N[e]&&(N[e]=[])},n.removeAllHooks=function(){N={}},n}(),x=c("aN0pg"),d=c("cNaMA"),eC=AnsiUp=window.AnsiUp,d=c("cNaMA");const eA=e=>e.replaceAll("◐",`\u{25D0}`),eM=({value:e})=>{let t=(0,d.useRef)(null),n=(0,d.useRef)(Date.now());return(0,d.useEffect)(()=>{if(!t.current)return;t.current.style.cssText=`--animation-delay: -${(Date.now()-n.current)%1e3}ms`,t.current.innerHTML=eA(new eC().ansi_to_html(e));let a=t.current.parentElement;a&&(a.scrollTop=1e5)},[t.current,e]),e?(0,d.html)`
`:null};var h=c("9Ta4i"),d=c("cNaMA"),x=c("aN0pg"),d=c("cNaMA"),eO=c("fUfdR"),x=c("aN0pg");let eT=({focus_on_open:e,desired_doc_query:t,on_update_doc_query:n,notebook:a,sanitize_html:r=!0})=>{let o=(0,d.useContext)(S),i=(0,d.useRef)(null),[l,s]=(0,d.useState)({shown_query:null,searched_query:null,body:'

Welcome to the Live docs! Keep this little window open while you work on the notebook, and you will get documentation of everything you type!

You can also type a query above.


Still stuck? Here are some tips.

',loading:!1}),c=e=>s(m(t=>e(t)));(0,d.useEffect)(()=>{!l.loading&&(null==t||/[^\s]/.test(t))&&l.searched_query!==t&&u(t)},[t,l.loading,l.searched_query]),(0,d.useLayoutEffect)(()=>{e&&i.current&&(i.current.focus({preventScroll:!0}),i.current.select())},[e]);let u=e=>{c(t=>{t.loading=!0,t.searched_query=e}),Promise.race([(0,eO.default).Promises.delay(2e3,!1),o.send("docs",{query:e.replace(/^\?/,"")},{notebook_id:a.notebook_id}).then(t=>"⌛"!==t.message.status&&("\uD83D\uDC4D"===t.message.status?(c(n=>{n.shown_query=e,n.body=t.message.doc}),!0):void 0))]).then(()=>{c(e=>{e.loading=!1})})},p=(0,d.useMemo)(()=>(0,d.html)`<${iT} body=${eR(l.body)} sanitize_html=${r} sanitize_html_message=${!1} />`,[l.body,r]),h=!1===l.loading&&""!==l.searched_query&&l.searched_query!==l.shown_query;return(0,d.html)` +
+ n(e.target.value)} + value=${t} + type="search" + > + +
+
null!=e&&eD(e,n)}> +

${l.shown_query}

+ ${p} +
+ `};const eD=(e,t)=>{for(let t of e.querySelectorAll("code:not([class])"))iD(t,"julia");for(let n of e.querySelectorAll("a")){let e=n.getAttribute("href");if(null!=e&&e.startsWith("@ref")){let a=e.length>4?e.substr(5):n.textContent;n.onclick=e=>{t(a),e.preventDefault()}}}},eR=e=>e.replace(/Main\.var"workspace\#\d+"\./g,"").replace(/Main\.workspace\#\d+\./g,"").replace(/ in Main\.var"workspace\#\d+"/g,"").replace(/ in Main\.workspace\#\d+/g,"").replace(/#==#[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\:\d+/g,"");var d=c("cNaMA"),x=c("aN0pg"),h=c("9Ta4i"),d=c("cNaMA");c("kjWx8");var eL=c("1gqBQ");const eI=({runtime:e,running:t,queued:n,code_differs:a,on_run:r,on_interrupt:o,set_cell_disabled:i,depends_on_disabled_cells:l,running_disabled:s,on_jump:c})=>{let u=ej(t);(0,d.useContext)(S);let p=t||n?"interrupt":s?"save":l&&!a?"jump":"run";return(0,d.html)` + + + ${eP(t?(null==u?null:1e6*u)??e:e)} + + `},eP=e=>{if(null==e)return"---";let t=e,n=["n","μ","m",""],a=0;for(;a=1e3;)a+=1,t/=1e3;return t.toFixed(e<100||t>=100?0:1)+" "+n[a]+"s"},ej=e=>{let[t,n]=(0,d.useState)(0),[a,r]=(0,d.useState)(0);return(0,d.useEffect)(()=>{let t;if(e){let e=+new Date;r(e),n(e),t=setInterval(()=>n(+new Date),50)}return()=>{t&&clearInterval(t)}},[e]),e?t-a:void 0},eB=(e,t=5)=>{let[n,a]=(0,d.useState)(e),r=(0,d.useMemo)(()=>(0,h.default).debounce(a,1e3*t),[a]);return(0,d.useEffect)(()=>(e?(a(!0),r.cancel()):r(!1),()=>{}),[e]),n};var x=c("aN0pg"),d=c("cNaMA");const eU=({onClick:e,total:t,done:n,busy:a,failed_indices:r})=>(t=Math.max(1,t),(0,d.html)` +
=8&&t<48,big:t>=48})} + data-total=${t} + onClick=${e} + > + ${[...Array(t)].map((e,t)=>(0,d.html)`
=n&&t
`)} +
+ `);var d=c("cNaMA"),x=c("aN0pg"),eL=c("1gqBQ");let eF=({status:e})=>{let t=Object.values(e.subtasks).every(e3),[n,a]=(0,d.useState)(!1);(0,d.useEffect)(()=>{if(n&&t){console.log("all done");let t=null,n=setTimeout(()=>{a(!1);let n=e6(e);(t=new Notification("Pluto: notebook ready",{tag:"notebook ready",body:`\u{2713} All ${n} steps completed`,lang:"en-US",dir:"ltr",icon:lQ})).onclick=e=>{parent.focus(),window.focus(),t?.close()}},3e3),r=()=>{"visible"===document.visibilityState&&t?.close()};return document.addEventListener("visibilitychange",r),document.body.addEventListener("click",r),()=>{t?.close(),clearTimeout(n),document.removeEventListener("visibilitychange",r),document.body.removeEventListener("click",r)}}},[t]);let r=tc(!t,2500)||n;return(0,d.html)` +
+ +
+ `};var h=c("9Ta4i"),d=c("cNaMA"),ez=c("hrGZZ"),d=c("cNaMA");const eq=({active:e})=>{let t=(0,d.useRef)(),n=e=>{t.current={x:e.clientX,y:e.clientY}};return(0,ez.useEventListener)(window,"pointermove",n,[]),(0,ez.useEventListener)(window,"dragover",n,[]),(0,d.useEffect)(()=>{if(e.up||e.down){let n=null,a=!0,r=o=>{if(a){null==n&&(n=o);let a=o-n;if(n=o,t.current){let n=t.current.y/window.innerHeight;e.up&&n<.3?window.scrollBy(0,-1200*(.3-n)/.3*a/1e3):e.down&&n>.7&&window.scrollBy(0,1200*(n-.7)/.3*a/1e3)}window.requestAnimationFrame(r)}};return window.requestAnimationFrame(r),()=>a=!1}},[e.up,e.down]),null},eH=e=>{document.getElementById(e)?.scrollIntoView({block:"center",behavior:"smooth"})},eW=(e,t=500)=>{let[n,a]=(0,d.useState)(null);return(0,d.useEffect)(()=>{let n=setTimeout(()=>{a(e)},t);return()=>clearTimeout(n)},[e]),n},eG=({notebook:e,backend_launch_phase:t,status:n})=>{let[a,r]=(0,d.useState)([]),[o,i]=(0,d.useState)([]);(0,d.useEffect)(()=>{let t=Object.values(e.cell_results).filter(e=>e.running||e.queued).map(e=>e.cell_id);i(t),0===t.length?r([]):r((0,h.default).union(t,a))},Object.values(e.cell_results).map(e=>e.running||e.queued));let l=0===a.length?0:1-Math.max(0,o.length-.3)/a.length,s=n.loading&&n.binder,c=s?t??0:l,u=(s||0!==a.length)&&1!==c,p=eW(u,500)??!1;p&&!(s||0!==a.length)&&(c=1);let m=s?"Loading binder...":`Running cells... (${a.length-o.length}/${a.length} done)`;return(0,d.html)`{s||eK(e)}} + aria-hidden="true" + title=${m} + >`},eK=e=>{let t=null==e?(document.querySelector("pluto-cell.running")??document.querySelector("pluto-cell.queued"))?.id:(Object.values(e.cell_results).find(e=>e.running)??Object.values(e.cell_results).find(e=>e.queued))?.cell_id;t&&eH(t)},eZ=({status:e,notebook:t,backend_launch_logs:n,my_clock_is_ahead_by:a})=>(0,d.html)` +
+ <${e0} + status_tree=${e} + path=${[]} + my_clock_is_ahead_by=${a} + nbpkg=${t.nbpkg} + backend_launch_logs=${n} + /> + <${eF} status=${e} /> +
+ `,eV=` +workspace + +create_process +init_process + + +pkg + +analysis +waiting_for_others +resolve +remove +add +instantiate +instantiate1 +instantiate2 +instantiate3 +precompile + +run + + +saving + +`.split("\n").map(e=>e.trim()).filter(e=>e.length>0),eQ=["saving"],eX={workspace:"Workspace setup",create_process:"Start Julia",init_process:"Initialize",pkg:"Package management",instantiate1:"instantiate",instantiate2:"instantiate",instantiate3:"instantiate",run:"Evaluating cells",evaluate:"Running code",registry_update:"Updating package registry",waiting_for_others:"Waiting for other notebooks to finish package operations",backend_launch:"Connecting to backend",backend_requesting:"Requesting a worker",backend_created:"Starting Pluto server",backend_responded:"Opening notebook file",backend_notebook_running:"Switching to live editing"},eY=e=>{let t=eX[e];return null!=t?t:e1(e)?`Step ${e}`:e},eJ=e=>1e9*e,e0=({status_tree:e,path:t,my_clock_is_ahead_by:n,nbpkg:a,backend_launch_logs:r})=>{if(null==e)return null;let o=t.reduce((e,t)=>e.subtasks[t],e);if(!o)return null;let[i,l]=(0,d.useState)(t.length<1),s=t.length>0&&e4(o),c=s&&e3(o),u=s&&!c,p=o.started_at??0,m=o.finished_at??0,h=Math.max((ej(u)??0)/1e3,Date.now()/1e3-p-("local"===o.timing?0:n));(0,d.useEffect)(()=>{if(u||!1===o.success){let e=setTimeout(()=>{l(!0)},Math.max(100,500-200*t.length));return()=>clearTimeout(e)}},[u||!1===o.success]),e7(([e])=>{if(!e&&c){let e=setTimeout(()=>{l(!1)},1800-200*t.length);return()=>clearTimeout(e)}},[c]);let g=i?Object.values(o.subtasks).every(e=>e1(e.name))&&Object.values(o.subtasks).length>0?(()=>{let e=Object.values(o.subtasks),t=e.reduce((e,t)=>e+(e3(t)?1:0),0),n=e.reduce((e,t)=>e+(e9(t)?1:0),0),a=e.length,r=e.reduce((e,t,n)=>!1===t.success?[...e,n]:e,[]),i="evaluate"===o.name?()=>eK():void 0;return(0,d.html)`<${eU} busy=${n} done=${t} total=${a} failed_indices=${r} onClick=${i} />`})():Object.entries(o.subtasks).sort((e,t)=>e2(e[1],t[1])).map(([o,i])=>eQ.includes(o)?null:(0,d.html)`<${e0} + key=${o} + status_tree=${e} + my_clock_is_ahead_by=${n} + path=${[...t,o]} + nbpkg=${a} + backend_launch_logs=${r} + />`):null,f=null;if(s){let e=e8(o),t=e6(o);e>1&&(f=(0,d.html)`${" "}(${t}/${e})`)}let _=Object.values(o.subtasks).length>0;return 0===t.length?g:(0,d.html)` +
{l(!i)}} + > + + ${eY(o.name)}${f} + ${c?eP(eJ(m-p)):u?eP(eJ(h)):null} +
+ ${g} + ${i&&"pkg"===o.name?(0,d.html)`<${eM} value=${a?.terminal_outputs?.nbpkg_sync} />`:i&&"backend_launch"===o.name?(0,d.html)`<${eM} value=${r} />`:void 0} +
`},e1=e=>/^\d+$/.test(e),e2=(e,t)=>{let n=eV.indexOf(e.name),a=eV.indexOf(t.name);if(-1===n&&-1===a)return null!=e.started_at||null!=t.started_at?(e.started_at??1/0)-(t.started_at??1/0):e1(e.name)&&e1(t.name)?parseInt(e.name)-parseInt(t.name):e.name.localeCompare(t.name);{let e=e=>-1===e?1/0:e;return e(n)-e(a)}},e3=e=>null!=e.finished_at,e4=e=>null!=e.started_at,e9=e=>e4(e)&&!e3(e),e6=e=>Object.values(e.subtasks).reduce((e,t)=>e+e6(t),e3(e)?1:0),e8=e=>Object.values(e.subtasks).reduce((e,t)=>e+e8(t),1),e5=(e,t,n,a={})=>({name:e,subtasks:a,timing:"local",started_at:(0,d.useMemo)(()=>t||n?Date.now()/1e3:null,[t||n]),finished_at:(0,d.useMemo)(()=>n?Date.now()/1e3:null,[n])}),e7=(e,t)=>{let n=(0,d.useRef)(t);(0,d.useEffect)(()=>{let a=e(n.current);return n.current=t,a},t)};var d=c("cNaMA");const te=({connected:e})=>{let t=(0,d.useContext)(S),[n,a]=(0,d.useState)(0);return(0,d.useEffect)(()=>{if(e){let e=async()=>{let e=()=>t.send("current_time").then(e=>e.message.time),n=()=>Date.now()/1e3;for(let t=0;t<16;t++)await e();let r=await n(),o=await e(),i=await e(),l=(r+await n())/2-(o+i)/2;isNaN(l)||a(l)};e();let n=setInterval(e,6e4);return()=>clearInterval(n)}},[e]),n};var g=c("4zMEb"),tt=c("41Mhf");const tn={wait_for_user:0,requesting:.4,created:.6,responded:.7,notebook_running:.9,ready:1},ta=e=>e.endsWith("/")?e:e+"/",tr=(e,{on_log:t})=>new Promise((n,a)=>{console.log("Starting binder connection to",e);try{let r=new EventSource(e);r.onerror=t=>{console.error("Binder error: Lost connection to "+e,t),r.close(),a(t)};let o=null,i="",l=e=>{console.log("Binder: ",e,` at ${new Date().toLocaleTimeString()}`),i=`${i}${e} +`,t(i)};r.onmessage=t=>{let i=JSON.parse(t.data);switch(i.phase&&i.phase!==o&&(o=i.phase.toLowerCase(),l(` + +\u{23F1}\u{FE0F} Binder subphase: ${o} +`)),i.message&&l(i.message.replace("] ",`] +`)),i.phase){case"failed":console.error("Binder error: Failed to build",e,i),r.close(),a(Error(i));break;case"ready":r.close(),n({binder_session_url:ta(i.url)+"pluto/",binder_session_token:i.token})}}}catch(e){console.error(e),a("Failed to open event source the mybinder.org. This probably means that the URL is invalid.")}}),to=e=>fetch(`https://stats.plutojl.org/count?p=/${e}&s=${screen.width},${screen.height},${devicePixelRatio}#skip_sw`,{cache:"no-cache"}).catch(()=>{}),ti=async({setStatePromise:e,connect:t,launch_params:n})=>{try{to("binder-start"),await e(m(e=>{e.backend_launch_phase=tn.requesting,e.disable_ui=!1,e.notebook.status_tree=null}));let{binder_session_url:a,binder_session_token:r}=await tr(n.binder_url.replace("mybinder.org/v2/","mybinder.org/build/"),{on_log:t=>e(m(e=>{e.backend_launch_logs=t}))}),o=e=>(0,tt.with_query_params)(e,{token:r});console.log("Binder URL:",o(a)),window.shutdown_binder=()=>{fetch(o(new URL("../api/shutdown",a)),{method:"POST"})},await e(m(e=>{e.backend_launch_phase=tn.created,e.binder_session_url=a,e.binder_session_token=r})),await fetch(o(a)),await e(m(e=>{e.backend_launch_phase=tn.responded}));let i=async()=>{let e=o((0,tt.with_query_params)(new URL("notebookupload",a),{name:new URLSearchParams(window.location.search).get("name"),execution_allowed:"true"}));return console.log("downloading locally and uploading ",e,n.notebookfile),fetch(e,{method:"POST",body:await (await fetch(new Request(n.notebookfile,{integrity:n.notebookfile_integrity}))).arrayBuffer()})},l=async(e,t)=>{let n=(0,tt.with_query_params)(new URL("open",a),{[e]:t,execution_allowed:"true"});return console.log(`open ${e}:`,n),fetch(o(n),{method:"POST"})},s=(e,t)=>()=>l(e,t),c=n.notebookfile.startsWith("data:")?[i]:[s("path",n.notebookfile),s("url",new URL(n.notebookfile,window.location.href).href),i],u=new Response;for(let e of c)if((u=await e()).ok)break;if(!u.ok){let e=await u.blob();window.location.href=URL.createObjectURL(e);return}let d=await u.text(),p=o((0,tt.with_query_params)(new URL("edit",a),{id:d}));console.info("notebook_id:",d),await e(m(e=>{e.notebook.notebook_id=d,e.backend_launch_phase=tn.notebook_running,e.refresh_target=p})),console.log("Connecting WebSocket");let h=t(o(new URL("channels",(0,g.ws_address_from_base)(a))));await (0,g.timeout_promise)(h,2e4).catch(e=>{console.error("Failed to establish connection within 20 seconds. Navigating to the edit URL directly.",e),window.parent.location.href=p})}catch(e){console.error("Failed to initialize binder!",e),alert("Something went wrong! \uD83D\uDE2E\n\nWe failed to initialize the binder connection. Please try again with a different browser, or come back later.")}};var ez=c("hrGZZ");const tl=e=>window.dispatchEvent(new CustomEvent("open_bottom_right_panel",{detail:e}));let ts=({desired_doc_query:e,on_update_doc_query:t,notebook:n,connected:a,backend_launch_phase:r,backend_launch_logs:o,sanitize_html:i=!0})=>{let l=(0,d.useRef)(),s=(0,d.useRef)(!1),[c,u]=(0,d.useState)(null),p=null==c;(0,ez.useEventListener)(window,"open_bottom_right_panel",e=>{console.log(e.detail),s.current=!1,u(e.detail),"none"===window.getComputedStyle(l.current).display&&alert("This browser window is too small to show docs.\n\nMake the window bigger, or try zooming out.")},[u]);let m=tu(n,r),[h,g]=(0,d.useMemo)(()=>null==m?[0,0]:[e8(m)-1,e6(m)-(e3(m)?1:0)],[m]),f=g{let e=await documentPictureInPicture.requestWindow();[...document.styleSheets].forEach(t=>{try{let n=document.createElement("style");n.textContent=[...t.cssRules].map(e=>e.cssText).join(""),e.document.head.appendChild(n)}catch(a){let n=document.createElement("link");n.rel="stylesheet",n.type=t.type,n.media=t.media,n.href=t.href,e.document.head.appendChild(n)}}),e.document.body.append(l.current.firstElementChild),e.addEventListener("pagehide",e=>{let t=e.target.querySelector("pluto-helpbox");l.current.append(t)})};return(0,d.html)` + + `};const tc=(e,t)=>{let[n,a]=(0,d.useState)(!1);return(0,d.useEffect)(()=>{if(e){let e=setTimeout(()=>{a(!0)},t);return()=>clearTimeout(e)}a(!1)},[e]),n},tu=(e,t)=>{let n=td(t);return null==t?e.status_tree:{name:"notebook",started_at:0,finished_at:null,subtasks:{...e.status_tree?.subtasks,backend_launch:n}}},td=e=>{let t=e??-1,n=Object.fromEntries(["requesting","created","responded","notebook_running"].map(e=>{let n=tn[e],a=`backend_${e}`;return[a,e5(a,t>=n,t>n)]}));return e5("backend_launch",null!=e&&e>tn.wait_for_user,e===tn.ready,n)},tp=e=>{if(e.includes("#@#==#"))return null;let t="#==#",n=e.indexOf(t);return -1!=n?e.substring(n+t.length,n+t.length+36):null},tm=(e,t)=>window.dispatchEvent(new CustomEvent("cell_focus",{detail:{cell_id:e,line:t}})),th=({frame:e})=>{let t=(0,d.useContext)(S);if(tp(e.file)||null==e.parent_module||t_(e))return null;let n=e.func;if(""===n)return null;let a=t.get_notebook(),r=["Main","Core","Base"].includes(e.source_package),o=a?.nbpkg?.installed_versions?.[e.source_package]!=null;return r||a?.nbpkg==null||o?(0,d.html)`  {a.preventDefault(),tl("docs"),t.set_doc_query(`${e.parent_module}.${n}`)}} + >docs`:null},tg=({frame:e,cell_id:t})=>{if(tb(e))return null;let n=tp(e.file),a=e.line;if(null!=n)return(0,d.html)`{tm(n,null==a?null:a-1),e.preventDefault()}} + > + ${n==t?"This cell":"Other cell"}${null==a?null:(0,d.html)`: line ${a}`} + `;{let t=e.source_package,n=["Main","Core","Base"].includes(t)?"julia":t,a=(0,d.html)`${e.file.replace(/#@#==#.*/,"")}:${e.line}`,r=null!=t?(0,d.html)`${n} → ${a}`:a,o=e?.url?.startsWith?.("https")?e.url:null;return(0,d.html)`${r}`}},tf=(0,d.html)` from `,t_=e=>"top-level scope"===e.call,tb=e=>"none"===e.file,ty=e=>{let t=e.indexOf(")(");if(-1!=t)return[e.substring(0,t+1),e.substring(t+1)];{let t=e.indexOf("(");return -1!=t?[e.substring(0,t),e.substring(t)]:[e,""]}},tv=({frame:e})=>{let[t,n]=(0,d.useState)(!1);(0,d.useEffect)(()=>{n(!1)},[e]);let a=(e.call_short.match(/…/g)??"").length<=1&&e.call.lengthanonymous function`:i,s=(0,d.html)`${l}<${tE} code=${o[1]} />`,c=(0,d.useMemo)(()=>Math.random().toString(36).substring(7),[e]);return(0,d.html)`${s} ${r?null:(0,d.html)`{e.preventDefault(),n(!0)}} + >...show types...`}`},tw=({frame:e,num_context_lines:t=2})=>{let n=(0,d.useContext)(S),a=tp(e.file);if(a){let r=n.get_notebook()?.cell_inputs[a]?.code;if(r){let n=r.split("\n");return(0,d.html)`{tm(a,e.line-1),t.preventDefault()}} + href=${`#${a}`} + class="frame-line-preview" + >
+
+${n.map((n,a)=>e.line-1-t<=a&&a<=e.line-1+t?(0,d.html)`<${tk} code=${n} i=${a} frameLine=${a===e.line-1} />`:null)}
+
`}}},tk=({code:e,frameLine:t,i:n})=>{let a=(0,d.useRef)(null);return(0,d.useLayoutEffect)(()=>{a.current&&(a.current.innerText=e,delete a.current.dataset.highlighted,iD(a.current,"julia"))},[a.current,e]),(0,d.html)``},tE=({code:e})=>{let t=(0,d.useRef)(null);return(0,d.useLayoutEffect)(()=>{if(t.current){let n=e.replaceAll(/([^():{},; ]*)::/g,"$1::");t.current.innerHTML=n}},[t.current,e]),(0,d.html)``},t$=e=>e.flatMap((t,n)=>n===e.length-1?[t]:n===e.length-2?[t," and "]:[t,", "]),tx=({cell_id:e,diagnostics:t})=>((0,d.useEffect)(()=>(window.dispatchEvent(new CustomEvent("cell_diagnostics",{detail:{cell_id:e,diagnostics:t}})),()=>window.dispatchEvent(new CustomEvent("cell_diagnostics",{detail:{cell_id:e,diagnostics:[]}}))),[t]),(0,d.html)` + +

Syntax error

+
+
Syntax errors
+
    + ${t.map(({message:t,from:n,to:a,line:r})=>(0,d.html)`
  1. window.dispatchEvent(new CustomEvent("cell_highlight_range",{detail:{cell_id:e,from:n,to:a}}))} + onmouseleave=${()=>window.dispatchEvent(new CustomEvent("cell_highlight_range",{detail:{cell_id:e,from:null,to:null}}))} + > +
    + ${t} +
    ${tf}<${tg} frame=${{file:"#==#"+e,line:r}} cell_id=${e} />
    +
    +
  2. `)} +
+
+
+ `),tS=(e,t,n,a)=>{if(null!=a)return!0;let[r,o]=ty(e.call);return!(["_collect","collect_similar","iterate","error","macro expansion"].includes(r)||r.includes("throw"))&&!e.inlined&&null!=o&&!((r.match(/#/g)??"").length>=2)},tN=({value:e})=>{let t=(0,d.useRef)(null),n=(0,d.useRef)(!1);(0,d.useLayoutEffect)(()=>{t.current&&(t.current.innerHTML=new eC().ansi_to_html(e),n.current=!0)},[t.current,e]);let a=e.replace(/\u001b\[[0-9;]*m/g,"");return""===e?(0,d.html)`


`:(0,d.html)`

${n.current?null:a}

`},tC=({msg:e,stacktrace:t,cell_id:n})=>{let a=(0,d.useContext)(S),r={pattern:/.?/,display:e=>(0,h.default).dropRightWhile(e.split("\n"),e=>""===e).map(e=>(0,d.html)`<${tN} value=${e} />`)},o=[{pattern:/syntax: extra token after end of expression/,display:e=>{let t=(0,d.html)`{e.preventDefault(),a.wrap_remote_cell(n,"begin")}} + >Wrap all code in a begin ... end block.`;if(!e.includes("\n\nBoundaries: "))return(0,d.html)`

Multiple expressions in one cell.

+

${t}

`;{let r=JSON.parse(e.split("\n\nBoundaries: ")[1]).map(e=>e-1),o=(0,d.html)`

+ {e.preventDefault(),a.split_remote_cell(n,r,!0)}} + >Split this cell into ${r.length} cells, or +

`;return(0,d.html)`

Multiple expressions in one cell.

+

How would you like to fix it?

+
    +
  • ${o}
  • +
  • ${t}
  • +
`}},show_stacktrace:()=>!1},{pattern:/LoadError: cannot assign a value to variable workspace#\d+\..+ from module workspace#\d+/,display:()=>(0,d.html)`

Tried to reevaluate an include call, this is not supported. You might need to restart this notebook from the main menu.

+

+ For a workaround, use the alternative version of include described here: + GH issue 115 +

+

In the future, include will be deprecated, and this will be the default.

`},{pattern:/MethodError: no method matching .*\nClosest candidates are:/,display:e=>e.split("\n").map(e=>(0,d.html)`

${e}

`)},{pattern:/Cyclic references among (.*)\./,display:e=>e.split("\n").map(e=>{let t=e.match(/Cyclic references among (.*)\./);if(!t)return(0,d.html)`

${e}

`;{let e=t[1].split(/, | and /).map(e=>(0,d.html)`${e}`);return(0,d.html)`

Cyclic references among${" "}${t$(e)}.

`}})},{pattern:/Multiple definitions for (.*)/,display:e=>e.split("\n").map(e=>{let t=e.match(/Multiple definitions for (.*)/);if(!t)return(0,d.html)`

${e}

`;{let e=t[1].replace(/\.$/,"").split(/, | and /).map(e=>(0,d.html)`{let a=document.querySelector(`pluto-cell:not([id='${n}']) span[id='${encodeURI(e)}']`);t.preventDefault(),a?.scrollIntoView()}}>${e}`);return(0,d.html)`

Multiple definitions for${" "}${t$(e)}.

`}})},{pattern:/^syntax: (.*)$/,display:r.display,show_stacktrace:()=>!1},{pattern:/^\s*$/,display:()=>r.display("Error")},{pattern:/^UndefVarError: (.*) not defined/,display:e=>{let t=a.get_notebook(),r=tT(t,n),o=e.match(/UndefVarError: (.*) not defined/),i=(o?.[1]??"").replaceAll("`",""),l=Object.values(t?.cell_dependencies??{}).some(e=>Object.keys(e.downstream_cells_map).includes(i));if(0===Object.keys(r).length||!l)return(0,d.html)`

${e}

`;let s=Object.keys(r).map(e=>(0,d.html)`{t.preventDefault();let n=document.querySelector(`pluto-cell[id='${r[e]}']`);n?.scrollIntoView()}}>${e}`);return(0,d.html)`

Another cell defining ${t$(s)} contains errors.

`},show_stacktrace:()=>0===Object.keys(tT(a.get_notebook(),n)).length},{pattern:/^ArgumentError: Package (.*) not found in current path/,display:e=>{let t=e.match(/^ArgumentError: Package (.*) not found in current path/),n=(t?.[1]??"").replaceAll("`",""),r=a.get_notebook()?.nbpkg?.terminal_outputs?.[n];return(0,d.html)`

The package ${n}.jl could not load because it failed to initialize.

+

That's not nice! Things you could try:

+
    +
  • Restart the notebook.
  • +
  • Try a different Julia version.
  • +
  • Contact the developers of ${n}.jl about this error.
  • +
+

You might find useful information in the package installation log:

+ <${eM} value=${r} />`},show_stacktrace:()=>!1},r].find(({pattern:t})=>t.test(e))??r,[i,l]=(0,d.useState)(!1);(0,d.useEffect)(()=>{l(!1)},[e,t,n]);let s=t.findIndex(e=>null!=tp(e.file)),c=!i&&-1!=s&&s!(tb(e)&&t_(e))),p=tA(u);return(0,d.html)` +
+ Error message${null==p?null:` from ${p}`} + +
+ +
${o.display(e)}
+ ${0!=t.length&&(o.show_stacktrace?.()??!0)?(0,d.html)`
+
+ Stack trace +

Here is what happened, the most recent locations are first:

+
+ +
    + ${u.map((e,t)=>{let a=tp(e.file),r=null!=a,o=n===a,i=tS(e,t,u,a);return(0,d.html)`
  1. +
    + <${tv} frame=${e} /> +
    + ${tf}<${tg} frame=${e} cell_id=${n} /> + <${th} frame=${e} /> +
    +
    + ${r?(0,d.html)`<${tw} frame=${e} num_context_lines=${o?1:2} />`:null} +
  2. `})} + ${c?(0,d.html)`
  3. + {l(!0),e.preventDefault()}} + >Show more... +
  4. `:null} +
+
`:null} + <${tO} stacktrace=${t} /> +
`},tA=e=>{for(let[t,n]of e.entries()){let a=tp(n.file);if(a)return;if(tS(n,t,e,a)&&n.source_package)return n.source_package}},tM=["Don't panic!","Keep calm, you got this!","You got this!","Silly computer!","Silly computer!","beep boop CRASH \uD83E\uDD16","computer bad, you GREAT!","Probably not your fault!","Try asking on Julia Discourse!","uhmmmmmm??!","Maybe time for a break? ☕️","Everything is going to be okay!","Computers are hard!","C'est la vie !","¯\\_(ツ)_/¯","Oh no! \uD83D\uDE40","this suckz \uD83D\uDCA3","Be patient :)"],tO=({stacktrace:e})=>{let t=(0,d.useMemo)(()=>.1>Math.random()?tM[Math.floor(Math.random()*tM.length)]:null,[e]);return null==t?null:(0,d.html)`
${t}
`},tT=(e,t,n=[])=>{let a={};return null!=e&&e?.cell_results?.[t]?.errored&&Object.keys(e.cell_dependencies[t]?.upstream_cells_map).forEach(r=>{n.includes(r)||(n.push(r),(e.cell_dependencies[t]?.upstream_cells_map[r]).forEach(o=>{let i=tT(e,o,n)??{};a={...a,...i},0===Object.keys(i).length&&e.cell_results[o].errored&&o!==t&&(a[r]=o)}))}),a};var d=c("cNaMA"),ez=c("hrGZZ");const tD=({mime:e,body:t,cell_id:n,persist_js_state:a,sanitize_html:r=!0})=>{switch(e){case"image/png":case"image/jpg":case"image/jpeg":case"image/gif":case"image/bmp":case"image/svg+xml":return(0,d.html)`<${ik} mime=${e} body=${t} />`;case"text/plain":return(0,d.html)`
${t}
`;case"application/vnd.pluto.tree+object":return(0,d.html)`<${tj} cell_id=${n} body=${t} persist_js_state=${a} sanitize_html=${r} />`;default:return iE({mime:e,body:t,cell_id:n,persist_js_state:a,sanitize_html:r,last_run_timestamp:null})}},tR=({on_click_more:e})=>{let[t,n]=(0,d.useState)(!1),a=(0,d.useRef)(null);return tL(a),(0,d.html)`{t||!1===e()||n(!0)}} + >more`},tL=e=>{(0,ez.useEventListener)(e,"keydown",t=>{" "===t.key&&t.preventDefault(),"Enter"===t.key&&(t.preventDefault(),e.current.click())},[]),(0,ez.useEventListener)(e,"keyup",t=>{" "===t.key&&(t.preventDefault(),e.current.click())},[])},tI=({prefix:e,prefix_short:t})=>{let n=(0,d.useRef)(null);return tL(n),(0,d.html)`${e}${t}`},tP=({pluto_actions:e,cell_id:t,node_ref:n,objectid:a,dim:r})=>{(e??n.current.closest("pluto-cell")._internal_pluto_actions).reshow_cell(t??n.current.closest("pluto-cell").id,a,r)},tj=({mime:e,body:t,cell_id:n,persist_js_state:a,sanitize_html:r=!0})=>{let o=(0,d.useContext)(S),i=(0,d.useRef)(null),l=e=>(0,d.html)`<${tD} cell_id=${n} mime=${e[1]} body=${e[0]} persist_js_state=${a} sanitize_html=${r} />`,s=(0,d.html)`<${tR} on_click_more=${()=>{if(null==i.current||null!=i.current.closest("pluto-tree.collapsed"))return!1;tP({pluto_actions:o,cell_id:n,node_ref:i,objectid:t.objectid,dim:1})}} />`,c=null;switch(t.type){case"Pair":let u=t.key_value;return(0,d.html)`${l(u[0])}${l(u[1])}`;case"circular":return(0,d.html)`circular reference`;case"Array":case"Set":case"Tuple":c=(0,d.html)`<${tI} prefix=${t.prefix} prefix_short=${t.prefix_short} />${t.elements.map(e=>"more"===e?s:(0,d.html)`${"Set"===t.type?"":(0,d.html)`${e[0]}`}${l(e[1])}`)}`;break;case"Dict":c=(0,d.html)`<${tI} prefix=${t.prefix} prefix_short=${t.prefix_short} />${t.elements.map(e=>"more"===e?s:(0,d.html)`${l(e[0])}${l(e[1])}`)}`;break;case"NamedTuple":c=(0,d.html)`<${tI} prefix=${t.prefix} prefix_short=${t.prefix_short} />${t.elements.map(e=>"more"===e?s:(0,d.html)`${e[0]}${l(e[1])}`)}`;break;case"struct":c=(0,d.html)`<${tI} prefix=${t.prefix} prefix_short=${t.prefix_short} />${t.elements.map(e=>(0,d.html)`${e[0]}${l(e[1])}`)}`}return(0,d.html)``},tB=({colspan:e=999})=>(0,d.html)` + + +
(This table has no columns)
+ + +`,tU=({colspan:e=999})=>(0,d.html)` + +
+
+ (This table has no rows) +
+ +`,tF=({mime:e,body:t,cell_id:n,persist_js_state:a,sanitize_html:r})=>{let o=(0,d.useContext)(S),i=(0,d.useRef)(null),l=e=>(0,d.html)`<${tD} cell_id=${n} mime=${e[1]} body=${e[0]} persist_js_state=${a} sanitize_html=${r} />`,s=e=>(0,d.html)`<${tR} + on_click_more=${()=>{tP({pluto_actions:o,cell_id:n,node_ref:i,objectid:t.objectid,dim:e})}} + />`,c=3+(t?.schema?.names?.length??1),u=(t?.schema?.names?.length??0)===0?(0,d.html)`<${tB} colspan=${c} />`:(0,d.html)` + + ${["",...t.schema.names].map(e=>(0,d.html)`${"more"===e?s(2):e}`)} + + + ${["",...t.schema.types].map(e=>(0,d.html)`${"more"===e?null:e}`)} + + `,p=(0,d.html)` + ${(t.rows?.length??0)!==0?t.rows.map(e=>(0,d.html)` + ${"more"===e?(0,d.html)`${s(1)}`:(0,d.html)`${e[0]} + ${e[1].map(e=>(0,d.html)`
${"more"===e?null:l(e)}
`)}`} + `):(0,d.html)`<${tU} colspan=${c} />`} + `;return(0,d.html)` + ${u}${p} +
`};let tz=({cell_id:e,style:t,classname:n,children:a,persist_js_state:r=!1,sanitize_html:o=!0})=>(0,d.html)`
${a.map(t=>(0,d.html)`<${tD} cell_id=${e} mime=${t[1]} body=${t[0]} persist_js_state=${r} sanitize_html=${o} />`)}
`;var eL=c("1gqBQ"),h=c("9Ta4i"),d=c("cNaMA"),eO=c("fUfdR");function tq(e){if(e instanceof HTMLInputElement)switch(e.type){case"range":case"number":return e.valueAsNumber;case"date":return e.valueAsDate;case"checkbox":return e.checked;case"file":return e.multiple?e.files:e.files?.[0];default:return e.value}else if(e instanceof HTMLSelectElement&&e.multiple)return Array.from(e.selectedOptions,e=>e.value);else return e.value}function tH(e){switch(e.type){case"button":case"submit":case"checkbox":return"click";case"file":return"change";default:return"input"}}const tW=(e,t)=>{if(!(e instanceof HTMLInputElement)||"file"!==e.type){if(null==t){e.value=t;return}if(e instanceof HTMLInputElement)switch(e.type){case"range":case"number":e.valueAsNumber!==t&&(e.valueAsNumber=t);return;case"date":(null==e.valueAsDate||Number(e.valueAsDate)!==Number(t))&&(e.valueAsDate=t);return;case"checkbox":e.checked!==t&&(e.checked=t);return;case"file":return}else if(e instanceof HTMLSelectElement&&e.multiple){for(let n of Array.from(e.options))n.selected=t.includes(n.value);return}e.value!==t&&(e.value=t)}},tG=(e,t)=>{e.forEach(e=>{let n=e.getAttribute("def");if(null!=n&&null!=e.firstElementChild&&null!=t[n]){let a=t[n].value;try{tW(e.firstElementChild,a)}catch(t){console.error("Error while setting input value",e.firstElementChild,"to value",a,": ",t)}}})},tK=(e,t)=>{e.forEach(e=>{let n=e=>{e.target.closest(".bonds_disabled:where(.offer_binder, .offer_local)")&&(0,eL.open_pluto_popup)({type:"info",source_element:e.target,body:(0,d.html)`${"You are viewing a static document. "} + {window.open_edit_or_run_popup(),e.preventDefault(),window.dispatchEvent(new CustomEvent("close pluto popup"))}} + >Run this notebook + ${" to enable interactivity."}`})};e.addEventListener("click",n),t.then(()=>{e.removeEventListener("click",n)})})},tZ=(e,t,n,a)=>{let r=!1;a.then(()=>{r=!0}),e.forEach(async e=>{let a=e.getAttribute("def"),o=e.firstElementChild;if(null!=a&&null!=o){let e=tq(o),i=Object.keys(n).includes(a)&&(0,h.default).isEqual(n[a]?.value,e)?null:t(a,e).catch(console.error),l=!1;for(let e of(0,eO.default).Generators.observe(function(e){var t=tH(o),n=tq(o);function a(){e(tq(o))}return o.addEventListener(t,a),void 0!==n&&e(n),function(){o.removeEventListener(t,a)}})){if(r)break;if(!1===l){l=!0;continue}let n=await tV(await e);await i,await t(a,n).catch(console.error)}}})},tV=async e=>e instanceof FileList?Promise.all(Array.from(e).map(e=>tV(e))):e instanceof File?await new Promise(t=>{let n=new FileReader;n.onload=()=>t({name:e.name,type:e.type,data:new Uint8Array(n.result)}),n.onerror=()=>t({name:e.name,type:e.type,data:null}),n.readAsArrayBuffer(e)}):e;var x=c("aN0pg"),eO=c("fUfdR"),tQ=c("h2NGW"),tX=c("hiQgq"),d=c("cNaMA"),h=c("9Ta4i"),tY=c("2P6PH"),tX=(c("hiQgq"),c("hiQgq"));c("9Ta4i");var tX=c("hiQgq"),h=c("9Ta4i"),tJ=Object.create,t0=Object.defineProperty,t1=Object.getOwnPropertyDescriptor,t2=Object.getOwnPropertyNames,t3=Object.getPrototypeOf,t4=Object.prototype.hasOwnProperty,t9=(e,t,n,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of t2(t))t4.call(e,r)||r===n||t0(e,r,{get:()=>t[r],enumerable:!(a=t1(t,r))||a.enumerable});return e},t6=(e,t,n)=>(n=null!=e?tJ(t3(e)):{},t9(!t&&e&&e.__esModule?n:t0(n,"default",{value:e,enumerable:!0}),e)),t8=(e=(e,t)=>{var n=Symbol("baseMap"),a=class{constructor(e){this.value=e}};function r(e){if(!Array.isArray(e))throw TypeError("The keys parameter must be an array")}function o({[n]:e},t,a){for(let n of t){if(!e.has(n)){if(!a)return;e.set(n,new WeakMap)}e=e.get(n)}return e}t.exports=class extends WeakMap{constructor(){super(),this[n]=new WeakMap;let[e]=arguments;if(null!=e){if("function"!=typeof e[Symbol.iterator])throw TypeError(typeof e+" is not iterable (cannot read property Symbol(Symbol.iterator))");for(let[t,n]of e)this.set(t,n)}}set(e,t){return r(e),o(this,e,!0).set(a,t),this}get(e){r(e);let t=o(this,e);return t?t.get(a):void 0}has(e){r(e);let t=o(this,e);return!!t&&t.has(a)}delete(e){r(e);let t=o(this,e);return!!t&&t.delete(a)}get[Symbol.toStringTag](){return"ManyKeysWeakMap"}}},()=>(t||e((t={exports:{}}).exports,t),t.exports)),t5={};((e,t)=>{for(var n in t)t0(e,n,{get:t[n],enumerable:!0})})(t5,{default:()=>nn});var t7=t6(t8());t9(t5,n=t6(t8()),"default"),a&&t9(a,n,"default");var{default:ne,...nt}=t7,nn=void 0!==ne?ne:nt;let na=e=>(0,tX.julia_andrey)().language.parser.parse(e).topNode.firstChild,nr=(e,t=e=>e,n=new Map)=>(...a)=>{let r=t(...a),o=n.get(r);if(null!=o)return o;{let t=e(...a);if(void 0==t)throw Error("Memoized function returned undefined");return n.set(r,t),t}},no=(e,t=(...e)=>e)=>nr(e,t,new nn),ni=e=>nr(e,e=>e,new WeakMap),nl=function*(e){if(e.firstChild())try{do yield e;while(e.nextSibling())}finally{e.parent()}},ns=function*(e){if(e.firstChild){let t=e.firstChild;do yield t;while(t=t.nextSibling)}},nc=(e,t,n,a=!1)=>{if(a){console.group("Current haystack:",e?e.node.name:null),console.groupCollapsed("Details");try{console.log("template:",t),console.log("haystack_cursor:",e?e.node.toString():null),"node"in t?(console.log("template.node:",t.node),console.log("template.node.toString():",t.node.toString())):"pattern"in t&&console.log("template.pattern:",t.pattern)}finally{console.groupEnd()}}try{if("pattern"in t){let r=t.pattern;if("function"!=typeof r)throw Error(`Unknown pattern "${r}"`);let o={};a&&(o={...n},console.groupCollapsed(`Matching against pattern: ${t.pattern.name}()`));let i=null;try{i=r(e,n,a)}finally{a&&console.groupEnd()}if(a){if(i){if(console.log(`\u{2705} because the pattern was happy! All hail the pattern!`),!(0,h.default).isEqual(n,o)){let e=(0,h.default).omit(n,Object.keys(o));console.log(" WE EVEN GOT NEW MATCHES SAY WHAAAAAAT:",e)}}else console.log(`\u{274C} because... well, you should ask the pattern that!`)}return i}if("node"in t){let{node:r,children:o}=t;if(a&&console.log(`Matching against node: ${t.node.name}`),!e){if("end"===r.name)return a&&console.log(`\u{2705} No node left to match, but it was the end anyway`),!0;return a&&console.log(`\u{274C} because no cursor left to match against`),!1}if(e.type.isError)return a&&console.log(`\u{2705} because \u{26A0}`),!0;if(e.name!==r.name)return a&&console.log(`\u{274C} because name mismatch "${e.name}" !== "${r.name}"`),!1;if(e.firstChild())try{let r=!1;for(let t of o){if(r){if(a&&console.log("Haystack is empty, but there are more children in template... lets see"),!nc(null,t,n,a))return a&&console.log(`\u{274C} template child did not accept null for an answer`,t,e.toString()),!1;a&&console.log(`\u{1F44C}\u{1F3FD} This template child was fine with null`);continue}for(;("Comment"===e.name||"BlockComment"===e.name)&&e.nextSibling(););if(!nc(e,t,n,a))return a&&console.log(`\u{274C} because a child mismatch`,t,e.toString()),!1;r=!e.nextSibling()}if(a&&!r){let n=[];do n.push(e.node);while(e.nextSibling())for(let t of n)e.prevSibling();console.warn("We did match all the children of the template, but there are more in the haystack... Might want to actually not match this?",n,t)}return a&&console.log(`\u{2705} because all children match`),!0}finally{e.parent()}else{if(0===t.children.length)return a&&console.log(`\u{2705} Template also has no children, yayyy`),!0;for(let e of(a&&console.log("Haystack node is empty, but template has children... lets see"),t.children))if(!nc(null,e,n,a))return a&&console.log(`\u{274C} because child template wasn't okay with having no children`,e),!1;return a&&console.log(`\u{2705} All template children we're fine with having no children to check on`),!0}}else throw console.log("template:",t),Error("waaaah")}finally{a&&console.groupEnd()}};class nu{constructor(e,t){let n=[],a=[];for(let[r,o]of(n.push(e[0]),(0,h.default).zip(e.slice(1),t)))if(o instanceof nu){for(let[e,t]of(n[n.length-1]+=o.template[0],(0,h.default).zip(o.template.slice(1),o.substitutions)))a.push(t),n.push(e);n[n.length-1]+=r}else a.push(o),n.push(r);this.template=n,this.substitutions=a}}let nd=(e,t)=>{for(let n of t)if(e.from===n.from&&e.to===n.to){n.used=!0;let t=n.generator.next({name:e.name,from:e.from,to:e.to,node:e});if(t.done)return t.value;throw Error("Template generator not done providing ast node")}return{name:e.name,from:e.from,to:e.to,children:Array.from(ns(e)).map(e=>nd(e,t)),node:e}},np=function*(e){if(e instanceof nu){let t="",n=[];for(let[a,r]of(0,h.default).zip(e.template,e.substitutions))if(t+=a,r){let e=np(r),a=nx(e.next());n.push({from:t.length,to:t.length+a.length,generator:e}),t+=a}let a=yield t,r=n.map(e=>({from:e.from+a.from,to:e.to+a.from,generator:e.generator,used:!1})),o=nd(a.node,r),i=r.filter(e=>!e.used).map(e=>({text:t.slice(e.from,e.to),from:e.from,to:e.to}));if(i.length>0)throw Error(`Some substitutions not applied, this means it couldn't be matched to a AST position: ${JSON.stringify(i)}`);return o}if("function"==typeof e)return yield*e();throw console.log("julia_code_object:",e),Error("Unknown substition type")},nm=no((e,...t)=>new nu(e,t)),nh=new WeakMap,ng=(e,...t)=>{let n=nh.get(e);if(null!=n){let{input:e,result:t}=n;return t}{let n=new nu(e,t);return nh.set(e,{input:t,result:n}),n}},nf=ni(e=>{let t=np(e),n=nx(t.next()),a=na(n),r=nS(t.next({from:0,to:n.length,name:a.name,node:a}));return{template_description:r,match(e,t=!1){if("node"in r&&r.node.name!==e.name)return;if(e.type.isError)return null;"cursor"in e&&(e=e.cursor());let n={};t&&console.groupCollapsed(`Starting a match at ${e.name}`);try{return nc(e,r,n,t)?n:null}finally{t&&console.groupEnd()}}}}),n_=ni(e=>{let t=np(e),n=nx(t.next());return t.return(),n});ni(e=>na(n_(e))),ni(e=>(0,tX.Text).of([n_(e)]));let nb=e=>{let t={},n=nr(n=>ni(a=>a===t?e(n,void 0):e(n,a)));return(e,a=t)=>n(e)(a)};function*ny(){return yield"expression",{pattern:function(e,t,n=!1){return e?!e.type.is("keyword")||(n&&console.log("❌ Keywords are not allowed!"),!1):(n&&console.log("❌ I want anything!! YOU GIVE ME NULL???"),!1)}}}const nv={any:ny,many:nb((e,t=ny)=>function*(){let n=np(t),a=yield nx(n.next()),r=null,o=null;return a.node.firstChild&&a.node.from===a.node.firstChild.from&&a.node.to===a.node.firstChild.to?(r=a.node,o=nS(n.next({...a,node:a.node.firstChild}))):o=nS(n.next(a)),{narrowed_node:r,sub_template:o,pattern:function(t,n,a=!1){if(!t)return a&&console.log("✅ Nothing to see here... I'm fine with that - many"),!0;if(r){if(t.name!==r.name)return a&&console.log("❌ Tried to go in, but she wasn't my type - many"),t.prevSibling(),!0;t.firstChild()}try{let r=[];for(;;){if(t.type.isError)return t.prevSibling(),a&&console.log("✋ I don't do errors - many"),!0;let e={};if(!nc(t,o,e,a)){t.prevSibling();break}if(r.push({node:t.node,match:e}),!t.nextSibling())break}return null!=e&&(n[e]=r),!0}finally{r&&t.parent()}}}}),maybe:ni(e=>function*(){let t=yield*np(e);return{sub_template:t,pattern:function(e,n,a=!1){return!e||!!e.type.isError||(!1===nc(e,t,n,a)&&e.prevSibling(),!0)}}}),anything_that_fits:ni(e=>function*(){return yield*np(e),{pattern:function(e,t,n=!1){return!0}}}),something_with_the_same_type_as:ni(e=>function*(){let t=np(e),n=nx(t.next()),a=yield n;return t.return(),{pattern:function(e,t,n=!1){return null!=e&&a.name===e.name}}}),as:nb((e,t=ny)=>function*(){let n=yield*np(t);return{sub_template:n,pattern:function(t,a,r=!1){let o=nc(t,n,a,r);return!0===o&&(a[e]=t?.node),null!=t&&o}}}),Identifier:function*(){return yield"identifier",{pattern:function(e,t,n=!1){return null!=e&&"Identifier"===nE(e)}}},Number:function*(){return yield"69",{pattern:function(e,t,n=!1){return null!=e&&"Number"===nE(e)}}},String:function*(){return yield'"A113"',{pattern:function(e,t,n=!1){return null!=e&&("StringWithoutInterpolation"===nE(e)||"TripleStringWithoutInterpolation"===nE(e))}}}};let nw=no((e,t)=>{let n=np(e),a=na(nx(n.next())),r=null;if(r=t.match(a)){let{content:e}=r,t=[];for(;e.firstChild&&e.firstChild.from==e.from&&e.firstChild.to==e.to;)t.push(e.type),e=e.firstChild;if(null==e)throw console.log("match:",r),Error("No content match?");let o=nS(n.next({name:e.name,node:e,from:a.from,to:a.to}));return{possible_parents:t,template_description:o,match(e,n=!1){if(e.type.isError)return n&&console.log(`\u{274C} Short circuiting because haystack(${e.name}) is an error`),!1;"cursor"in e&&(e=e.cursor());let a=0;for(let r of t)if(e.type===r){let t=e.from,o=e.to;if(e.firstChild()){if(e.from===t&&e.to===o)n&&console.log(`\u{2705} Matched parent, going one level deeper (${r})`),a++;else{e.parent(),n&&console.log(`\u{274C} Was matching possible parent (${r}), but it wasn't filling?! That's weird.... ${e.toString()}`);for(let t=0;te.firstChild&&e.firstChild.from===e.from&&e.firstChild.to===e.to?nk(e.firstChild):e,nE=e=>{let t=e.from,n=e.to;if(e.firstChild())try{if(e.from===t&&e.to===n)return nE(e)}finally{e.parent()}return e.name},n$=e=>t=>{let n=nf(e(nv.as("content",t)));return nw(e(t),n)},nx=e=>{if(!e.done)return e.value;throw Error("Expected `yield`-d value, but got `return`")},nS=e=>{if(e.done)return e.value;throw Error("Expected `yield`-d value, but got `return`")},nN=(e,t)=>{if(e===t)return e;let n=[...e.usages,...t.usages],a=new Map(e.definitions);for(let[e,n]of t.definitions)a.set(e,n);return{usages:n,definitions:a,locals:[...e.locals,...t.locals]}},nC=function*(e){for(let t of nl(e))if("InterpolationExpression"===t.name)yield e;else if("QuoteExpression"===t.name||"QuoteStatement"===t.name)for(let e of nC(t))yield*nC(e);else yield*nC(t)},nA=function*(e){if("QuoteExpression"!==e.name&&"QuoteStatement"!==e.name)throw Error("Expected QuotedExpression or QuoteStatement");yield*nC(e)},nM=e=>{let t=n$(e);return function(e,n=!1){return null==e?(e,...n)=>t(ng(e,...n)):function(a,...r){return t(ng(a,...r)).match(e,n)}}},nO=nM(e=>nm`[i for i in i ${e}]`),nT=nM(e=>nm`${e} = nothing`),nD=nM(e=>nm`function f(${e}) end`),nR=nM(e=>nm`f(${e})`),nL=nM(e=>nm`f(; ${e})`),nI=(e,t,n,a=!1)=>{let r=null;if(r=nR(e)`; ${nv.many("named_args")}`){let{named_args:e=[]}=r;for(let{node:r}of e)n=nI(r,t,n,a);return n}if(r=nD(e)`${nv.Identifier}`)return nH(n,t,e);if(r=nD(e)`${nv.as("subject")}...`)return nP(r.subject,t,n,null,a);if(r=nD(e)`${nv.as("name")} = ${nv.as("value")}`){let{name:e,value:o}=r;return n=nP(e,t,n,o.to,a),n=nW(o.cursor(),t,n,a)}{if(!((r=nD(e)`${nv.as("name")}::${nv.as("type")}`)??(r=nD(e)`${nv.as("name")}:`)??(r=nD(e)`::${nv.as("type")}`)))return n=nP(e,t,n),a&&console.warn("UNKNOWN FUNCTION DEFINITION ARGUMENT:",e.toString()),n;let{name:o,type:i}=r;return o&&(n=nP(o,t,n,i.to,a)),i&&(n=nW(i.cursor(),t,n,a)),n}},nP=(e,t,n,a=null,r=!1)=>{let o=null;r&&console.group("Explorering pattern:",e.toString());try{if(o=nT(e)`${nv.Identifier}`)return r&&console.log("It's an identifier, adding it to the scope"),nH(n,t,e,a);if(o=nT(e)`${nv.as("object")}::${nv.as("type")}`){let{object:e,type:a}=o;return n=nW(a.cursor(),t,n,r),n=nH(n,t,e)}if(o=nT(e)`${nv.as("subject")}...`)return nP(o.subject,t,n,a,r);if(o=nD(e)`${nv.as("name")} = ${nv.as("value")}`){let{name:e,value:a}=o;return n=nP(e,t,n,a.from,r),n=nW(a.cursor(),t,n,r)}else if(o=nT(e)`(; ${nv.many("named_tuples")})`){let{named_tuples:e}=o;for(let o of e)n=nP(o.node.cursor(),t,n,a,r);return n}else if((o=nT(e)`${nv.as("first")}, ${nv.many("rest")}`)??(o=nT(e)`(${nv.as("first")}, ${nv.many("rest")})`)){for(let{node:e}of[{node:o.first},...o.rest??[]])n=nP(e.cursor(),t,n,a,r);return n}else if(o=nB(e)`${nv.as("prefix")}${nv.as("string",nv.String)}`){let{prefix:a,string:i}=o,l=t.sliceString(a.from,a.to);if("var"===l){let a=t.sliceString(i.from+1,i.to-1);0!==a.length&&n.definitions.set(a,{from:e.from,to:e.to,valid_from:e.to})}else n=nW("cursor"in e?e.cursor():e,t,n,r);return n}else if(o=nT(e)`${nv.as("object")}[${nv.as("property")}]`){let{object:e,property:a}=o;return n=nW(e.cursor(),t,n,r),a&&(n=nW(a.cursor(),t,n,r)),n}else{if(!(o=nT(e)`${nv.as("object")}.${nv.as("property")}`))return r&&console.warn("UNKNOWN PATTERN:",e.toString(),t.sliceString(e.from,e.to)),n;let{object:a,property:i}=o;return n=nW(a.cursor(),t,n,r)}}finally{r&&console.groupEnd()}},nj=function(e,t,n,a=!1){let r=null;if("Definition"===e.name&&e.firstChild())try{return nj(e,t,n)}finally{e.parent()}else if("Identifier"===e.name)return{inner:nH(n,t,e),outer:nH(nF(),t,e)};else if(r=nB(e)`${nv.as("subject")}{ ${nv.many("parameters")} }`){let{subject:e,parameters:a}=r,o=nF();if(e){let a=nj(e.cursor(),t,n);o=a.outer,n=a.inner}for(let{node:e}of a){let{inner:a}=nj(e.cursor(),t,n);n=a}return{inner:n,outer:o}}else{if(!(r=nB(e)`${nv.as("subject")} <: ${nv.maybe(nv.as("type"))}`))return a&&console.warn(`Unknown thing in definition: "${t.sliceString(e.from,e.to)}", "${e.toString()}"`),{inner:n,outer:nF()};let{subject:o,type:i}=r,l=nF();return o&&({outer:l,inner:n}=nj(o.cursor(),t,n)),i&&(n=nW(i.cursor(),t,n)),{inner:n,outer:l}}},nB=function(e,t=!1){return null==e?(e,...t)=>nf(ng(e,...t)):function(n,...a){return nf(ng(n,...a)).match(e,t)}},nU=(e,t,n,a=!1)=>{let r=null,o=nM(e=>nm`${e} x y z`);if(r=o(e)`${nv.as("macro",ng`@${nv.any}`)}`){let{macro:e}=r,a=t.sliceString(e.from,e.to);return n.usages.push({usage:e,definition:n.definitions.get(a)??null,name:a}),n}if(r=o(e)`${nv.as("object")}.@${nv.as("macro")}`){let{object:e}=r,a=t.sliceString(e.from,e.to);return n.usages.push({usage:e,definition:n.definitions.get(a)??null,name:a}),n}if(!(r=o(e)`@${nv.as("object")}.${nv.as("macro")}`))return a&&console.warn("Mwep mweeeep",e.toString()),n;{let{object:e}=r,a=t.sliceString(e.from,e.to);return n.usages.push({usage:e,definition:n.definitions.get(a)??null,name:a}),n}},nF=()=>({usages:[],definitions:new Map,locals:[]}),nz=e=>({usages:[],definitions:new Map(e.definitions),locals:[]}),nq=(e,t,n)=>({usages:[...t.usages,...e.usages],definitions:t.definitions,locals:[]}),nH=(e,t,n,a=null)=>(a=null===a?n.to:a,e.definitions.set(t.sliceString(n.from,n.to),{from:n.from,to:n.to,valid_from:a}),e),nW=(e,t,n={usages:[],definitions:new Map,locals:[]},a=!1)=>{if("cursor"in e&&(e=e.cursor()),a){console.group(`Explorer: ${e.name}`),console.groupCollapsed("Details");try{console.log(`Full tree: ${e.toString()}`),console.log("Full text:",t.sliceString(e.from,e.to)),console.log("scopestate:",n)}finally{console.groupEnd()}e.node}try{let r=null;if(e.type.is("keyword")||"SourceFile"===e.name||"BooleanLiteral"===e.name||"Character"===e.name||"String"===e.name||"Number"===e.name||"Comment"===e.name||"BinaryExpression"===e.name||"Operator"===e.name||"MacroArgumentList"===e.name||"ReturnStatement"===e.name||"BareTupleExpression"===e.name||"ParenthesizedExpression"===e.name||"Type"===e.name||"InterpolationExpression"===e.name||"SpreadExpression"===e.name||"CompoundExpression"===e.name||"ParameterizedIdentifier"===e.name||"TypeArgumentList"===e.name||"TernaryExpression"===e.name||"Coefficient"===e.name||"TripleString"===e.name||"RangeExpression"===e.name||"SubscriptExpression"===e.name||"UnaryExpression"===e.name||"ConstStatement"===e.name||"GlobalStatement"===e.name||"ContinueStatement"===e.name||"MatrixExpression"===e.name||"MatrixRow"===e.name||"ArrayExpression"===e.name){for(let r of nl(e))n=nW(r,t,n,a);return n}if("Identifier"===e.name||"MacroIdentifier"===e.name){let a=t.sliceString(e.from,e.to);return n.usages.push({name:a,usage:{from:e.from,to:e.to},definition:n.definitions.get(a)??null}),n}if(r=nB(e)`:${nv.any}`)return n;if(r=nB(e)`${nv.Number}`)return n;if(r=nB(e)`${nv.String}`)return n;else if(r=nB(e)`${nv.as("object")}.${nv.as("property")}`){let{object:e,property:o}=r;return e&&(n=nW(e.cursor(),t,n,a)),n}else if(r=nB(e)`${nv.as("assignee")} = ${nv.maybe(nv.as("value"))}`){let{assignee:e,value:o}=r;return o&&(n=nW(o.cursor(),t,n,a)),e&&(n=nP(e.cursor(),t,n,o?.to??null,a)),n}else if(r=nB(e)` + ${nv.as("macro",nv.anything_that_fits(ng`@macro`))}(${nv.many("args")}) ${nv.maybe(ng`do ${nv.maybe(nv.many("do_args"))} + ${nv.many("do_expressions")} + end`)}} + `){let{macro:o,args:i=[],do_args:l,do_expressions:s}=r;for(let{node:e}of(o&&nU(o.cursor(),t,n,a),i))if(r=nR(e)`${nv.as("name")} = ${nv.as("value")}`){let{name:e,value:o}=r;o&&(n=nW(o.cursor(),t,n,a))}else n=nW(e.cursor(),t,n,a);if(l&&s){let r=nz(n),o=l.firstChild;if(o?.name==="Identifier")r=nH(r,t,o);else if(o?.name==="ArgumentList")for(let e of ns(o))r=nI(e,t,r);else if(o?.name==="BareTupleExpression")for(let e of ns(o))r=nI(e,t,r);else a&&console.warn("Unrecognized do args",o.toString());for(let{node:e}of s)r=nW(e.cursor(),t,r,a);return nq(r,n,e.to)}return n}else if(r=nB(e)`${nv.as("macro",nv.anything_that_fits(ng`@macro`))} ${nv.many("args")}`){let{macro:e,args:o=[]}=r;for(let{node:r}of(e&&nU(e.cursor(),t,n,a),o))n=nW(r.cursor(),t,n,a);return n}else if((r=nB(e)` + struct ${nv.as("defined_as")} + ${nv.many("expressions")} + end + `)??(r=nB(e)` + mutable struct ${nv.as("defined_as")} + ${nv.many("expressions")} + end + `)){let{defined_as:o,expressions:i=[]}=r;o=nk(o);let l=nz(n),s=nF();for(let{node:n}of(o&&({inner:l,outer:s}=nj(o.cursor(),t,l)),i))if("Identifier"===e.name);else if(r=nB(n)`${nv.as("subject")}::${nv.as("type")}`){let{subject:e,type:n}=r;l=nW(n.cursor(),t,l,a)}else if(r=nB(n)`${nv.as("assignee")} = ${nv.as("value")}`){let{assignee:e,value:n}=r;if(r=nB(e)`${nv.as("subject")}::${nv.as("type")}`){let{subject:e,type:n}=r;l=nW(n.cursor(),t,l,a)}l=nW(n.cursor(),t,l,a)}return n=nq(l,n,e.to),n=nN(n,s)}else if(r=nB(e)`abstract type ${nv.as("name")} end`){let{name:e}=r;if(e){let{outer:a}=nj(e.cursor(),t,n);n=nN(n,a)}return n}else if((r=nB(e)`quote ${nv.many("body")} end`)??(r=nB(e)`:(${nv.many("body")})`)){for(let r of nA(e))n=nW(r,t,n,a);return n}else if(r=nB(e)` + module ${nv.as("name")} + ${nv.many("expressions")} + end + `){let{name:e,expressions:a=[]}=r;e&&(n=nH(n,t,e));let o=nF();for(let{node:e}of a)o=nW(e.cursor(),t,o);for(let{node:e}of(n=nN(n,{usages:Array.from(o.usages).filter(e=>null!=e.definition),definitions:new Map,locals:[]}),a))n=nW(e.cursor(),t,n);return n}else if(r=nB(e)`${nv.as("prefix")}${nv.as("string",nv.String)}`){let{prefix:a,string:o}=r,i=t.sliceString(a.from,a.to);if("var"===i){let a=t.sliceString(o.from+1,o.to-1);0!==a.length&&n.usages.push({name:a,usage:{from:e.from,to:e.to},definition:n.definitions.get(a)??null})}else{let e=`@${i}_str`;n.usages.push({name:e,usage:{from:a.from,to:a.to},definition:n.definitions.get(e)??null})}return n}else if(r=nB(e)`${nv.Number}${nv.as("unit")}`)return nW(r.unit.cursor(),t,n,a);else if((r=nB(e)`import ${nv.any}: ${nv.many("specifiers")}`)??(r=nB(e)`using ${nv.any}: ${nv.many("specifiers")}`)){let{specifiers:e=[]}=r,o=nM(e=>nm`import X: ${e}`);for(let{node:i}of e)if(r=o(i)`${nv.as("name")} as ${nv.as("alias")}`){let{alias:e}=r;n=nH(n,t,e)}else if(r=o(i)`${nv.as("name",nv.Identifier)}`){let{name:e}=r;n=nH(n,t,e)}else(r=o(i)`@${nv.any}`)?n=nH(n,t,i):a&&console.warn("Hmmmm, I don't know what to do with this selected import specifier:",i.toString());return n}else if(r=nB(e)`import ${nv.many("specifiers")}`){let{specifiers:e=[]}=r,o=nM(e=>nm`import ${e}`);for(let{node:i}of e)if(r=o(i)`${nv.any} as ${nv.as("alias")}`){let{alias:e}=r;n=nH(n,t,e)}else if(r=o(i)`${nv.as("package")}.${nv.as("name",nv.Identifier)}`)n=nH(n,t,r.name);else if(r=o(i)`.${nv.as("scoped")}`){let e=null;for(;e=o(r.scoped)`.${nv.as("scoped")}`;)r=e;n=nH(n,t,r.scoped)}else(r=o(i)`${nv.as("name",nv.Identifier)}`)?n=nH(n,t,r.name):a&&console.warn("Hmmm, I don't know what to do with this import specifier:",i);return n}else if(r=nB(e)`using ${nv.many()}`)return n;else if(r=nB(e)` + for ${nv.many("bindings",nv.something_with_the_same_type_as(ng`x in y`))}; + ${nv.many("expressions")} + end + `){let o=n$(e=>nm`for ${e}; x end`),i=e=>(...t)=>o(ng(...t)).match(e),{bindings:l,expressions:s}=r,c=nz(n);for(let{node:e}of l){let n=null;if((n=i(e)`${nv.as("name")} in ${nv.as("range")}`)??(n=i(e)`${nv.as("name")} ∈ ${nv.as("range")}`)??(n=i(e)`${nv.as("name")} = ${nv.as("range")}`)){let{name:e,range:r}=n;r&&(c=nW(r.cursor(),t,c,a)),e&&(c=nP(e,t,c,r?.to??null,a))}else a&&console.warn("Unrecognized for loop binding",e.toString())}for(let{node:e}of s)c=nW(e.cursor(),t,c,a);return nq(c,n,e.to)}else if((r=nB(e)` + ${nv.as("callee")}(${nv.many("args")}) ${nv.maybe(ng`do ${nv.maybe(nv.many("do_args"))} + ${nv.many("do_expressions")} + end`)} + `)??(r=nB(e)` + ${nv.as("callee")}.(${nv.many("args")}) + `)){let{callee:o,args:i=[],do_args:l=[],do_expressions:s=[]}=r;for(let{node:r}of(n=nW(o.cursor(),t,n,a),i)){let o=null;if(o=nR(r)`; ${nv.many("named_args")}`){let{named_args:e=[]}=o;for(let{node:r}of e){let e=null;if(e=nL(r)`${nv.as("name")} = ${nv.as("value")}`){let{name:r,value:o}=e;n=nW(o.cursor(),t,n,a)}else n=nW(r.cursor(),t,n,a)}}else if(o=nR(r)`${nv.as("name")} = ${nv.as("value")}`){let{name:e,value:r}=o;r&&(n=nW(r.cursor(),t,n,a))}else if(o=nR(r)`${nv.as("result")} ${nv.many("clauses",nv.anything_that_fits(ng`for x = y`))}`){let{result:r,clauses:i}=o,l=nz(n);for(let{node:e}of i){let n=null;if((n=nO(e)`for ${nv.as("variable")} = ${nv.maybe(nv.as("value"))}`)??(n=nO(e)`for ${nv.as("variable")} in ${nv.maybe(nv.as("value"))}`)??(n=nO(e)`for ${nv.as("variable")} ∈ ${nv.maybe(nv.as("value"))}`)??(n=nO(e)`for ${nv.as("variable")}`)){let{variable:e,value:r}=n;r&&(l=nW(r.cursor(),t,l,a)),e&&(l=nP(e,t,l))}else if(n=nO(e)`if ${nv.maybe(nv.as("if"))}`){let{if:e}=n;e&&(l=nW(e.cursor(),t,l,a))}else a&&console.log("Hmmm, can't parse for binding",e)}return l=nW(r.cursor(),t,l,a),nq(l,n,e.to)}else n=nW(r.cursor(),t,n,a)}let c=nz(n);for(let{node:e}of l)c=nI(e,t,c);for(let{node:e}of s)c=nW(e.cursor(),t,c,a);return nq(c,n,e.to)}else if(r=nB(e)`(${nv.many("tuple_elements")},)`){let{tuple_elements:o=[]}=r,i=nM(e=>nm`(${e},)`),l=o.map(({node:t})=>i(e)`${nv.Identifier} = ${nv.any}`!=null);if(l.every(e=>!0===e)||l.every(e=>!1===e))for(let{node:r}of o){let o=null;if(o=i(e)`${nv.as("name")} = ${nv.as("value")}`){let{name:e,value:r}=o;r&&(n=nW(r.cursor(),t,n,a))}else n=nW(r.cursor(),t,n,a)}else for(let{node:r}of o){let o=null;if(o=i(e)`${nv.as("name")} = ${nv.as("value")}`){let{name:e,value:r}=o;r&&(n=nW(r.cursor(),t,n,a)),e&&(n=nH(n,t,e,r?.to??null))}else n=nW(r.cursor(),t,n,a)}return n}else if((r=nB(e)`(${nv.many("args")}) -> ${nv.many("body")}`)??(r=nB(e)`${nv.as("arg")} -> ${nv.many("body")}`)??(r=nB(e)`${nv.as("name")}(${nv.many("args")})::${nv.as("return_type")} = ${nv.many("body")}`)??(r=nB(e)`${nv.as("name")}(${nv.many("args")}) = ${nv.many("body")}`)??(r=nB(e)`${nv.as("name")}(${nv.many("args")}) = ${nv.many("body",nv.anything_that_fits(ng`x, y`))}`)??(r=nB(e)` + function ${nv.as("name")}(${nv.many("args")})::${nv.as("return_type")} where ${nv.as("type_param")} + ${nv.many("body")} + end + `)??(r=nB(e)` + function ${nv.as("name")}(${nv.many("args")}) where ${nv.as("type_param")} + ${nv.many("body")} + end + `)??(r=nB(e)` + function ${nv.as("name")}(${nv.many("args")})::${nv.as("return_type")} + ${nv.many("body")} + end + `)??(r=nB(e)` + function ${nv.as("name")}(${nv.many("args")}) + ${nv.many("body")} + end + `)??(r=nB(e)` + function ${nv.as("name",nv.Identifier)} end + `)??(r=nB(e)`macro ${nv.as("macro_name")} end`)??(r=nB(e)` + macro ${nv.as("macro_name")}(${nv.many("args")}) + ${nv.many("body")} + end + `)){let{name:o,macro_name:i,arg:l,args:s=[],return_type:c,type_param:u,body:d=[]}=r;l&&s.push({node:l}),o?n=nH(n,t,o):i&&n.definitions.set(`@${t.sliceString(i.from,i.to)}`,{from:i.from,to:i.to,valid_from:i.to});let p=nz(n);if(u){let e=nM(e=>nm`function X() where ${e} end`),n=nM(e=>nm`function X() where {${e}} end`),r=[{node:u}],o=e(u)`{${nv.many("type_params")}}`;for(let{node:e}of(o&&(r=o.type_params),r)){let r=null;if(r=n(e)`${nv.as("defined",nv.Identifier)} <: ${nv.as("parent_type")}`){let{defined:e,parent_type:n}=r;p=nW(n,t,p,a),p=nH(p,t,e)}else if(r=n(e)`${nv.as("defined",nv.Identifier)}`){let{defined:e}=r;p=nH(p,t,e)}else a&&console.warn("Can't handle type param:",e)}}for(let{node:e}of(c&&(p=nW(nk(c).cursor(),t,p,a)),s))p=nI(e.cursor(),t,p,a);for(let{node:e}of d)p=nW(e.cursor(),t,p,a);return nq(p,n,e.to)}else if(r=nB(e)` + let ${nv.many("assignments",ng`${nv.as("assignee")} = ${nv.as("value")}`)} + ${nv.many("body",nv.any)} + end + `){let{assignments:o=[],body:i=[]}=r,l=nz(n);for(let{match:{assignee:e,value:r}}of o)e&&(l=nP(e,t,l,r?.to??null,a)),r&&(n=nW(r.cursor(),t,n,a));for(let{node:e}of i)l=nW(e.cursor(),t,l,a);return nq(l,n,e.to)}else if((r=nB(e)`[ + ${nv.as("result")} + ${nv.many("clauses",nv.anything_that_fits(ng`for x = y`))} + ]`)??(r=nB(e)`(${nv.as("result")} ${nv.many("clauses",nv.anything_that_fits(ng`for x = y`))})`)){let{result:o,clauses:i}=r,l=nz(n);for(let{node:e}of i){let n=null;if((n=nO(e)`for ${nv.as("variable")} = ${nv.maybe(nv.as("value"))}`)??(n=nO(e)`for ${nv.as("variable")} in ${nv.maybe(nv.as("value"))}`)??(n=nO(e)`for ${nv.as("variable")} ∈ ${nv.maybe(nv.as("value"))}`)??(n=nO(e)`for ${nv.as("variable")}`)){let{variable:e,value:r}=n;r&&(l=nW(r.cursor(),t,l,a)),e&&(l=nP(e,t,l))}else if(n=nO(e)`if ${nv.maybe(nv.as("if"))}`){let{if:e}=n;e&&(l=nW(e.cursor(),t,l,a))}else a&&console.warn("Hmmm, can't parse for binding",e)}return l=nW(o.cursor(),t,l,a),nq(l,n,e.to)}else{for(let r of(a&&(console.groupCollapsed("Cycling through all children of",e.name),console.log("text:",t.sliceString(e.from,e.to)),console.groupEnd()),nl(e)))n=nW(r,t,n,a);return n}}finally{a&&console.groupEnd()}},nG=(0,tX.StateField).define({create(e){try{let t=(0,tX.syntaxTree)(e).cursor();return nW(t,e.doc,void 0)}catch(e){return console.error("Something went wrong while parsing variables...",e),{usages:[],definitions:new Map,locals:[]}}},update(e,t){try{if((0,tX.syntaxTree)(t.state)==(0,tX.syntaxTree)(t.startState))return e;{let e=(0,tX.syntaxTree)(t.state).cursor();return nW(e,t.state.doc)}}catch(e){return console.error("Something went wrong while parsing variables...",e),{usages:[],definitions:new Map,locals:[]}}}}),nK=e=>"SubscriptExpression"===e.name||"FieldExpression"===e.name?(e.firstChild(),nK(e)):"Identifier"===e.name?(e.firstChild(),e.node):null,nZ=["Identifier","FieldExpression","SubscriptExpression","MacroFieldExpression","MacroIdentifier","Operator","Definition","ParameterizedIdentifier"],nV=["import","export","try","catch","finally","quote","do","struct","mutable","module","baremodule","if","let"],nQ=e=>{if(nV.includes(e.name))return!0;if(!nZ.includes(e.name))return!1;if(!e.firstChild())return!0;do{if("Number"===e.name||"TypeArgumentList"===e.name||"FieldName"===e.name||"MacroName"===e.name||"MacroFieldName"===e.name)continue;if(!nQ(e))return!1}while(e.nextSibling())return e.parent(),!0},nX=(e,t=!1)=>{let n=e.selection.main,a=e.field(nG);if(n.from!==n.to)return e.doc.sliceString(n.from,n.to).trim();{let r=e.doc.lineAt(n.from).text;if("?"===r[0])return r.slice(1);let o=(0,tX.syntaxTree)(e).cursor();t&&console.log("Full tree:",o.toString()),o.moveTo(n.to,-1);let i=0;do{t&&console.group(`Iteration #${i}`);try{if(t&&console.log("cursor",o.toString()),i>100){console.group("Infinite loop while checking docs"),console.log("Selection:",n,e.doc.sliceString(n.from,n.to).trim()),console.log("Current node:",o.name,e.doc.sliceString(o.from,o.to).trim()),console.groupEnd();break}i+=1;let r=o.node.cursor(),l=[];for(;r.parent();)l.push(r.name);let s=o.node.parent;if(null==s)break;t&&console.log("parents:",l);let c=l.indexOf("StructDefinition");if(-1!==c){if(l.includes("AssignmentExpression")&&l.indexOf("AssignmentExpression")=o.to)return e.doc.sliceString(t.from,t.to)}else{if("struct"!==o.name&&"mutable"!==o.name)return;if(o.parent(),o.firstChild(),"struct"===o.name)return"struct";if("mutable"===o.name&&(o.nextSibling(),"struct"===o.name))return"mutable struct";return}}if("AbstractDefinition"===o.name)return"abstract type";if("CallExpression"===o.name)return o.firstChild(),nQ(o)?e.doc.sliceString(o.from,o.to):void 0;if(("Operator"===o.name||"⚠"===o.name||"Identifier"===o.name)&&"QuoteExpression"===s.name&&"FieldExpression"===s.parent.name)return e.sliceDoc(s.parent.from,s.parent.to);if("ParameterizedIdentifier"===o.name)return o.firstChild(),nQ(o)?e.doc.sliceString(o.from,o.to):void 0;if("Identifier"===o.name&&"Prefix"===s.name)continue;if("PrefixedString"===o.name){o.firstChild();let t=e.doc.sliceString(o.from,o.to);return`${t}"`}if("Identifier"===o.name&&"TypedExpression"===s.name)return o.parent(),o.lastChild(),nQ(o)?e.doc.sliceString(o.from,o.to):void 0;if("TypedExpression"===o.name)return o.lastChild(),nQ(o)?e.doc.sliceString(o.from,o.to):void 0;if("SpreadExpression"===o.name)return"...";if(s.to===o.to&&nZ.includes(o.name)&&nZ.includes(s.name)||"Identifier"===o.name&&"NamedField"===s.name&&s.lastChild.from!=o.from&&s.lastChild.to!=o.to)continue;if("AssignmentExpression"===o.name){let t=o.node.firstChild.to,n=o.node.lastChild.from;return e.doc.sliceString(t,n).trim()}if("ArgumentList"===o.name||"Identifier"===o.name&&"ArgumentList"===s.name&&("FunctionAssignmentExpression"===s.parent.parent.name||"FunctionDefinition"===s.parent.name)||"Identifier"===o.name&&"Symbol"===s.name)continue;if("FunctionDefinition"===o.name)return o.firstChild(),o.nextSibling(),nQ(o)?e.doc.sliceString(o.from,o.to):void 0;if("FunctionAssignmentExpression"===o.name)return o.firstChild(),nQ(o)?e.doc.sliceString(o.from,o.to):void 0;if("Identifier"===o.name&&"MacroIdentifier"===s.name)continue;if("MacroExpression"===o.name)return o.firstChild(),e.doc.sliceString(o.from,o.to);if("BinaryExpression"===o.name){let t=o.node.firstChild.to,n=o.node.lastChild.from;return e.doc.sliceString(t,n).trim()}if("TernaryExpression"===o.name)return"??:";if(nZ.includes(o.name)||nV.includes(o.name)){if(!nQ(o))return;let t=nK(o.node.cursor);if(null==t)return e.doc.sliceString(o.from,o.to);let n=a.usages.find(e=>e.usage.from===t.from&&e.usage.to===t.to);if(n?.definition==null)return e.doc.sliceString(o.from,o.to)}if("FunctionDefinition"===s.name||"AssignmentExpression"===s.name)return}finally{t&&console.groupEnd()}}while(o.parent())}};var tX=c("hiQgq"),M=c("kjWx8"),h=c("9Ta4i");let nY=(e,{scopestate:t,global_definitions:n})=>(0,tX.Decoration).set(nJ(t.usages.map(({definition:e,usage:t,name:a})=>null!=e?(0,tX.Decoration).mark({tagName:"a",attributes:{title:`${M.ctrl_or_cmd_name}-Click to jump to the definition of ${a}.`,"data-cell-variable":a,"data-cell-variable-from":`${e.from}`,"data-cell-variable-to":`${e.to}`,href:"#"}}).range(t.from,t.to):n[a]?(0,tX.Decoration).mark({tagName:"a",attributes:{title:`${M.ctrl_or_cmd_name}-Click to jump to the definition of ${a}.`,"data-pluto-variable":a,href:`#${a}`}}).range(t.from,t.to):null)),!0);const nJ=e=>e.filter(e=>null!=e),n0=(0,tX.Facet).define({combine:e=>e[0],compare:h.default.isEqual}),n1=(0,tX.ViewPlugin).fromClass(class{constructor(e){let t=e.state.facet(n0);this.decorations=nY(e.state,{scopestate:e.state.field(nG),global_definitions:t})}update(e){let t=e.state.facet(n0);(e.docChanged||e.viewportChanged||t!==e.startState.facet(n0))&&(this.decorations=nY(e.state,{scopestate:e.state.field(nG),global_definitions:t}))}},{decorations:e=>e.decorations,eventHandlers:{click:(e,t)=>{if(e.target instanceof Element){let n=e.target.closest("[data-pluto-variable]");if(n){let a=n.getAttribute("data-pluto-variable");if(null==a||!((0,M.has_ctrl_or_cmd_pressed)(e)||t.state.readOnly))return!1;e.preventDefault();let r=`[id='${encodeURI(a)}']`;document.querySelector(r)?.scrollIntoView({behavior:"smooth",block:"center"});let o=t.state.facet(n0);if(o[a])return window.dispatchEvent(new CustomEvent("cell_focus",{detail:{cell_id:o[a],line:0,definition_of:a}})),!0}let a=e.target.closest("[data-cell-variable]");if(a){let n=a.getAttribute("data-cell-variable"),r=Number(a.getAttribute("data-cell-variable-from")),o=Number(a.getAttribute("data-cell-variable-to"));return!!(null!=n&&null!=r&&null!=o&&((0,M.has_ctrl_or_cmd_pressed)(e)||t.state.readOnly))&&(e.preventDefault(),t.dispatch({scrollIntoView:!0,selection:{anchor:r,head:o}}),t.focus(),!0)}}}}});var tX=c("hiQgq");c("9Ta4i");var tX=c("hiQgq");const n2=tX.htmlLanguage.parser,n3=(0,tX.markdownLanguage).parser.configure((0,tX.parseCode)({htmlParser:n2})),n4=tX.PostgreSQL.language.parser,n9=(0,tX.sql)({dialect:tX.PostgreSQL}),n6=tX.pythonLanguage.parser,n8=["md","mermaid","cm","markdown","mdx","mdl","markdownliteral"].flatMap(e=>[e,`@${e}`]),n5=(e,t)=>e.flatMap(({from:e,to:n})=>{let a=t.read(e,n),r=[],o=e;for(let{index:t}of a.matchAll(/\\\$/g)){let n=e+t;o!==n&&r.push({from:o,to:n}),o=n+1}return o!==n&&r.push({from:o,to:n}),r}),n7=new Set(["TripleString","String","CommandString","TripleStringWithoutInterpolation","StringWithoutInterpolation","CommandStringWithoutInterpolation"]),ae=(0,tX.parseMixed)((e,t)=>{if(!n7.has(e.type.name))return null;let n="TripleString"===e.name||"TripleStringWithoutInterpolation"===e.name?3:1,a=e.from+n,r=Math.min(e.to-n,t.length);if(a>=r)return null;let o=e.node?.prevSibling||e.node?.parent?.prevSibling;if(null==o||"MacroIdentifier"!==o.name&&"Prefix"!==o.name)return null;let i="MacroIdentifier"===o.name,l=t.read(o.from,o.to),s=null;if("@htl"===l||"html"===l)s=n2;else if(n8.includes(l))s=n3;else if("@javascript"===l||"@js"===l||"js"===l||"javascript"===l)s=tX.javascriptLanguage.parser;else if("py"===l||"pyr"===l||"python"===l||"@python"===l)s=n6;else{if("sql"!==l)return null;s=n4}let c=[];if(null!=e.node.firstChild){let t=a,n=e.node.firstChild.cursor();do t!==n.from&&c.push({from:t,to:n.from}),t=n.to;while(n.nextSibling())t{let t=(0,tX.julia_andrey)(e);return t.language.parser=t.language.parser.configure({wrap:ae}),t};var tX=c("hiQgq"),h=c("9Ta4i"),tX=c("hiQgq"),x=c("aN0pg");let{autocompletion:an,completionKeymap:aa,completionStatus:ar,acceptCompletion:ao,selectedCompletion:ai}=tX.autocomplete;const al=an()[1],as=[{key:"Tab",run:e=>{if(ao(e))return!0;if(e.state.readOnly)return!1;let t=e.state.selection.main;if(!t.empty)return!1;let n=e.state.sliceDoc(t.from-1,t.from),a=e.state.sliceDoc(e.state.doc.lineAt(t.from).from,t.from);return!" \n=".includes(n)&&(")"!==n||!!a.includes("?"))&&(0,tX.autocomplete).startCompletion(e)}},{key:"?",run:e=>null!=(0,tX.autocomplete).completionStatus(e.state)&&(tl("docs"),!0)}];let ac=e=>{let t=null;return(0,tX.EditorView).updateListener.of(n=>{if(null==ai(n.state))return;let a=n.state.field(al,!1),r=a?.open;if(null==r)return;let o=r.options[r.selected],i=o.completion.apply??o.completion.label;if("string"!=typeof i)return;let l=n.view.state.field(al).active.find(e=>e.source==o.source);if(l?.hasResult?.()!==!0)return;let s=l.from,c=Math.min(l.to,n.state.doc.length),u=nX(n.state.update({changes:{from:s,to:c,insert:i}}).state);null!=u&&t!=u&&(t=u,e(u))})};const au=e=>e.matchBefore(/\\[\d\w_\^:]*/),ad=e=>e.matchBefore(/\.\:[^\s"'`()\[\]\{\}\.\,=]*/);let ap=e=>/^[@\p{L}\p{Sc}\d_][\p{L}\p{Nl}\p{Sc}\d_!]*"?$/u.test(e)?null:":"===e?`:(${e})`:`:${e}`;const am={name:"Suggestions",header:()=>document.createElement("div"),rank:0},ah={name:"Operators",rank:1},ag=(e,t)=>3*t+(/^\p{Ll}/u.test(e)?2:/^\p{Lu}/u.test(e)?1:0),af=e=>["."],a_=/^(.*\s)?(baremodule|begin|break|catch|const|continue|do|else|elseif|end|export|false|finally|for|function|global|if|import|let|local|macro|module|quote|return|struct|true|try|using|while)$/,ab=e=>/[\p{L}\p{Nl}\p{Sc}\d_!]*$/u.test(e)&&!a_.test(e),ay=e=>async t=>{if(au(t)||!t.explicit&&aw(t)||!t.explicit&&null!=t.tokenBefore(["Number","Comment","String","TripleString","Symbol"]))return null;let n=t.state.sliceDoc(0,t.pos),a=ad(t);a&&(n=n.slice(0,a.from+1)+n.slice(a.from+2));let r=t.state.facet(n0),o=e=>null!=e&&Object.keys(r).includes(e),i=await e({text:n});if(!i)return null;let{start:l,stop:s,results:c}=i;a&&(s+=1);let u=n.slice(0,l).endsWith("."),d=null!=t.matchBefore(/\~[^\s\"]*/);return{from:l,to:s,validFor:ab,commitCharacters:af(t),filter:!d,options:[...c.filter(([e,n,a,r,i])=>(t.explicit||"path"!=i)&&!(r&&o(e))).map(([e,t,a,r,o,i],l)=>{let s="method"===o?n:u?ap(e)??e:e;return t="Function"===t&&e.startsWith("@")?"Macro":t,{label:e,apply:s,type:(0,x.cl)({c_notexported:!a,[`c_${t}`]:!0,[`completion_${o}`]:!0,c_from_notebook:r})??void 0,section:am,boost:"keyword_argument"===o?7:u?ag(s,a):void 0,commitCharacters:"keyword_argument"===o||"Macro"===t?[]:void 0}}),...c.filter(([e])=>u&&null!=ap(e)).map(([e,t,n],a)=>{let r=ap(e)??"";return{label:r,apply:r,type:(n?"":"c_notexported ")+(null==t?"":"c_"+t),section:ah,is_not_exported:!n}})]}},av=async e=>{if(au(e)||!e.explicit&&aw(e)||!e.explicit&&null!=e.tokenBefore(["Number","Comment","String","TripleString","Symbol"]))return null;let t=await (0,tX.autocomplete).completeAnyWord(e);if(null===t)return null;let n=e.tokenBefore(["Identifier","Number"]);return null==n||n.type?.name==="Number"?null:{from:t.from,commitCharacters:af(e),options:t.options.map(({label:e},t)=>({label:e,apply:e,type:void 0,section:am}))}},aw=e=>{let t=e.matchBefore(a_),n=e.matchBefore(/(catch|local|module|abstract type|struct|macro|const|for|function|let|do) ([@\p{L}\p{Nl}\p{Sc}\d_!,\(\)]|, )*$/u),a=e.matchBefore(/do [\(\), \p{L}\p{Nl}\p{Sc}\d_!]*$/u),r=(0,tX.syntaxTree)(e.state).resolve(e.pos,-1),o=r?.parent?.name==="BareTupleExpression"?r?.parent:r,i=r?.name==="Identifier"&&o?.parent?.name==="AssignmentExpression"&&o?.nextSibling!=null;return t||n||a||i},ak=(e,t)=>async n=>{if(au(n)||!n.explicit&&aw(n)||!n.explicit&&null!=n.tokenBefore(["Number","Comment","String","TripleString","Symbol"])||n.matchBefore(/\.[\p{L}\p{Nl}\p{Sc}\d_!]*$/u))return null;let a=n.state.facet(n0),r=e(),o=(0,h.default).union(Object.entries(a).filter(([e,t])=>null==r[t]).map(([e])=>e),...Object.values((0,h.default).omit(r,t))),i=await (0,tX.autocomplete).completeFromList(o.map(e=>({label:e,apply:e,type:"c_from_notebook completion_module c_Any",section:am})))(n);return null==i?null:{...i,validFor:ab,commitCharacters:af(n)}},aE=["\\sqrt","\\pi","\\approx"],a$=["\uD83D\uDC36","\uD83D\uDC31","\uD83D\uDC2D","\uD83D\uDC30","\uD83D\uDC3C","\uD83D\uDC28","\uD83D\uDC38","\uD83D\uDC14","\uD83D\uDC27"],ax=(e,t,n,a)=>{let r=e.state.sliceDoc(n,a),o=t.detail??t.label;!t.label.startsWith("\\:")&&r!==t.label&&function(e,t){let n=(0,tX.syntaxTree)(e).resolve(t);return null!=n&&("TripleString"===n.name||"String"===n.name)}(e.state,a)&&(o=t.label),e.dispatch({...(0,tX.autocomplete).insertCompletionText(e.state,o,n,a),annotations:(0,tX.autocomplete).pickedCompletion.of(t)})},aS=e=>{let t=null,n=async()=>{if(null==t){let n=await e().catch(e=>(console.warn("Failed to fetch special symbols",e),null));if(null!=n){let{latex:e,emoji:a}=n;t=[a,e].flatMap(e=>Object.entries(e).map(([e,t])=>({label:e,apply:ax,detail:t??void 0,type:"c_special_symbol",boost:"\\in"===e?3:aE.includes(e)?2:a$.includes(t)?1:0})))}}return t};return async e=>{if(!au(e)||!e.explicit&&aw(e)||!e.explicit&&null!=e.tokenBefore(["Number","Comment"]))return null;let t=await n();return await (0,tX.autocomplete).completeFromList(t??[])(e)}};let aN=({request_autocomplete:e,request_special_symbols:t,on_update_doc_query:n,request_unsubmitted_global_definitions:a,cell_id:r})=>{let o=null,i=null,l=async t=>{if((0,h.default).isEqual(t,o)){let e=await i;if(null!=e)return e}return o=t,i=e(t),await i};return[an({activateOnTyping:rB,override:[ak(a,r),aS(t),ay(l),av],defaultKeymap:!1,maxRenderedOptions:512,optionClass:e=>e.type??""}),ac(n),(0,tX.keymap).of(as),(0,tX.keymap).of(aa)]};var h=c("9Ta4i"),tX=c("hiQgq"),eL=c("1gqBQ"),h=c("9Ta4i"),d=(c("cNaMA"),c("cNaMA")),x=c("aN0pg"),d=c("cNaMA"),h=c("9Ta4i");const aC={current:null},aA=()=>{if(null!=aC.current)return aC.current;{let e=fetch("https://julia-loading-times-test.netlify.app/pkg_load_times.csv").then(e=>e.text()).then(e=>{let t=e.split("\n");return t[0].split(","),new Map(t.slice(1).map(e=>{let[t,...n]=e.split(",");return[t,{install:Number(n[0]),precompile:Number(n[1]),load:Number(n[2])}]}))}),t=fetch("https://julia-loading-times-test.netlify.app/top_packages_sorted_with_deps.txt").then(e=>e.text()).then(e=>new Map(e.split("\n").map(e=>{let[t,...n]=e.split(",");return[t,n]})));return aC.current=Promise.all([e,t]).then(([e,t])=>({times:e,packages:t})),aC.current}},aM=()=>{let[e,t]=(0,d.useState)(null);return(0,d.useEffect)(()=>{aA().then(t)},[]),e},aO=(e,t,n=[])=>{let a=e.packages.get(t);if(null==a)return[];{let t=(0,h.default).union(n,a);return[...a,...(0,h.default).difference(a,n).flatMap(n=>aO(e,n,t))]}},aT=(e,t)=>{let n=t.flatMap(t=>aO(e,t)),a=(0,h.default).uniq([...t,...n]).map(t=>e.times.get(t)).filter(e=>null!=e),r=e=>e.reduce((e,t)=>e+(null==t||isNaN(t)?0:t),0);return{install:r(a.map((0,h.default).property("install")))*aD.install,precompile:r(a.map((0,h.default).property("precompile")))*aD.precompile,load:r(a.map((0,h.default).property("load")))*aD.load}},aD={install:2,load:1,precompile:.3};var h=c("9Ta4i"),d=c("cNaMA");c("kjWx8");var aR=window.CustomEvent;function aL(e,t){var n="on"+t.type.toLowerCase();return"function"==typeof e[n]&&e[n](t),e.dispatchEvent(t)}function aI(e){for(;e;){if("dialog"===e.localName)return e;e=e.parentElement?e.parentElement:e.parentNode?e.parentNode.host:null}return null}function aP(e){for(;e&&e.shadowRoot&&e.shadowRoot.activeElement;)e=e.shadowRoot.activeElement;e&&e.blur&&e!==document.body&&e.blur()}function aj(e){return!(!e||!e.hasAttribute("method"))&&"dialog"===e.getAttribute("method").toLowerCase()}function aB(e){return e.isConnected||document.body.contains(e)}function aU(e){if(e.submitter)return e.submitter;var t=e.target;if(!(t instanceof HTMLFormElement))return null;var n=aq.formSubmitter;if(!n){var a=e.target;n=("getRootNode"in a&&a.getRootNode()||document).activeElement}return n&&n.form===t?n:null}function aF(e){if(!e.defaultPrevented){var t=e.target,n=aq.imagemapUseValue,a=aU(e);null===n&&a&&(n=a.value);var r=aI(t);r&&"dialog"===(a&&a.getAttribute("formmethod")||t.getAttribute("method"))&&(e.preventDefault(),null!=n?r.close(n):r.close())}}function az(e){if(this.dialog_=e,this.replacedStyleTop_=!1,this.openAsModal_=!1,e.hasAttribute("role")||e.setAttribute("role","dialog"),e.show=this.show.bind(this),e.showModal=this.showModal.bind(this),e.close=this.close.bind(this),e.addEventListener("submit",aF,!1),"returnValue"in e||(e.returnValue=""),"MutationObserver"in window)new MutationObserver(this.maybeHideModal.bind(this)).observe(e,{attributes:!0,attributeFilter:["open"]});else{var t,n=!1,a=(function(){n?this.downgradeModal():this.maybeHideModal(),n=!1}).bind(this),r=function(r){if(r.target===e){var o="DOMNodeRemoved";n|=r.type.substr(0,o.length)===o,window.clearTimeout(t),t=window.setTimeout(a,0)}};["DOMAttrModified","DOMNodeRemoved","DOMNodeRemovedFromDocument"].forEach(function(t){e.addEventListener(t,r)})}Object.defineProperty(e,"open",{set:this.setOpen.bind(this),get:e.hasAttribute.bind(e,"open")}),this.backdrop_=document.createElement("div"),this.backdrop_.className="backdrop",this.backdrop_.addEventListener("mouseup",this.backdropMouseEvent_.bind(this)),this.backdrop_.addEventListener("mousedown",this.backdropMouseEvent_.bind(this)),this.backdrop_.addEventListener("click",this.backdropMouseEvent_.bind(this))}aR&&"object"!=typeof aR||((aR=function(e,t){t=t||{};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,!!t.bubbles,!!t.cancelable,t.detail||null),n}).prototype=window.Event.prototype),az.prototype={get dialog(){return this.dialog_},maybeHideModal:function(){this.dialog_.hasAttribute("open")&&aB(this.dialog_)||this.downgradeModal()},downgradeModal:function(){this.openAsModal_&&(this.openAsModal_=!1,this.dialog_.style.zIndex="",this.replacedStyleTop_&&(this.dialog_.style.top="",this.replacedStyleTop_=!1),this.backdrop_.parentNode&&this.backdrop_.parentNode.removeChild(this.backdrop_),aq.dm.removeDialog(this))},setOpen:function(e){e?this.dialog_.hasAttribute("open")||this.dialog_.setAttribute("open",""):(this.dialog_.removeAttribute("open"),this.maybeHideModal())},backdropMouseEvent_:function(e){if(this.dialog_.hasAttribute("tabindex"))this.dialog_.focus();else{var t=document.createElement("div");this.dialog_.insertBefore(t,this.dialog_.firstChild),t.tabIndex=-1,t.focus(),this.dialog_.removeChild(t)}var n=document.createEvent("MouseEvents");n.initMouseEvent(e.type,e.bubbles,e.cancelable,window,e.detail,e.screenX,e.screenY,e.clientX,e.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget),this.dialog_.dispatchEvent(n),e.stopPropagation()},focus_:function(){var e=this.dialog_.querySelector("[autofocus]:not([disabled])");!e&&this.dialog_.tabIndex>=0&&(e=this.dialog_),e||(e=function e(t){var n=["button","input","keygen","select","textarea"].map(function(e){return e+":not([disabled])"});n.push('[tabindex]:not([disabled]):not([tabindex=""])');var a=t.querySelector(n.join(", "));if(!a&&"attachShadow"in Element.prototype)for(var r=t.querySelectorAll("*"),o=0;o, the polyfill may not work correctly",e),"dialog"!==e.localName)throw Error("Failed to register dialog: The element is not a dialog.");new az(e)},registerDialog:function(e){e.showModal||aq.forceRegisterDialog(e)},DialogManager:function(){this.pendingDialogStack=[];var e=this.checkDOM_.bind(this);this.overlay=document.createElement("div"),this.overlay.className="_dialog_overlay",this.overlay.addEventListener("click",(function(t){this.forwardTab_=void 0,t.stopPropagation(),e([])}).bind(this)),this.handleKey_=this.handleKey_.bind(this),this.handleFocus_=this.handleFocus_.bind(this),this.zIndexLow_=1e5,this.zIndexHigh_=100150,this.forwardTab_=void 0,"MutationObserver"in window&&(this.mo_=new MutationObserver(function(t){var n=[];t.forEach(function(e){for(var t,a=0;t=e.removedNodes[a];++a)t instanceof Element&&("dialog"===t.localName&&n.push(t),n=n.concat(t.querySelectorAll("dialog")))}),n.length&&e(n)}))}};if(aq.DialogManager.prototype.blockDocument=function(){document.documentElement.addEventListener("focus",this.handleFocus_,!0),document.addEventListener("keydown",this.handleKey_),this.mo_&&this.mo_.observe(document,{childList:!0,subtree:!0})},aq.DialogManager.prototype.unblockDocument=function(){document.documentElement.removeEventListener("focus",this.handleFocus_,!0),document.removeEventListener("keydown",this.handleKey_),this.mo_&&this.mo_.disconnect()},aq.DialogManager.prototype.updateStacking=function(){for(var e,t=this.zIndexHigh_,n=0;e=this.pendingDialogStack[n];++n)e.updateZIndex(--t,--t),0===n&&(this.overlay.style.zIndex=--t);var a=this.pendingDialogStack[0];a?(a.dialog.parentNode||document.body).appendChild(this.overlay):this.overlay.parentNode&&this.overlay.parentNode.removeChild(this.overlay)},aq.DialogManager.prototype.containedByTopDialog_=function(e){for(;e=aI(e);){for(var t,n=0;t=this.pendingDialogStack[n];++n)if(t.dialog===e)return 0===n;e=e.parentElement}return!1},aq.DialogManager.prototype.handleFocus_=function(e){var t=e.composedPath?e.composedPath()[0]:e.target;if(!this.containedByTopDialog_(t)&&document.activeElement!==document.documentElement&&(e.preventDefault(),e.stopPropagation(),aP(t),void 0!==this.forwardTab_)){var n=this.pendingDialogStack[0];return n.dialog.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_PRECEDING&&(this.forwardTab_?n.focus_():t!==document.documentElement&&document.documentElement.focus()),!1}},aq.DialogManager.prototype.handleKey_=function(e){if(this.forwardTab_=void 0,27===e.keyCode){e.preventDefault(),e.stopPropagation();var t=new aR("cancel",{bubbles:!1,cancelable:!0}),n=this.pendingDialogStack[0];n&&aL(n.dialog,t)&&n.dialog.close()}else 9===e.keyCode&&(this.forwardTab_=!e.shiftKey)},aq.DialogManager.prototype.checkDOM_=function(e){this.pendingDialogStack.slice().forEach(function(t){-1!==e.indexOf(t.dialog)?t.downgradeModal():t.maybeHideModal()})},aq.DialogManager.prototype.pushDialog=function(e){var t=(this.zIndexHigh_-this.zIndexLow_)/2-1;return!(this.pendingDialogStack.length>=t)&&(1===this.pendingDialogStack.unshift(e)&&this.blockDocument(),this.updateStacking(),!0)},aq.DialogManager.prototype.removeDialog=function(e){var t=this.pendingDialogStack.indexOf(e);-1!==t&&(this.pendingDialogStack.splice(t,1),0===this.pendingDialogStack.length&&this.unblockDocument(),this.updateStacking())},aq.dm=new aq.DialogManager,aq.formSubmitter=null,aq.imagemapUseValue=null,void 0===window.HTMLDialogElement){var aH=document.createElement("form");if(aH.setAttribute("method","dialog"),"dialog"!==aH.method){var aW=Object.getOwnPropertyDescriptor(HTMLFormElement.prototype,"method");if(aW){var aG=aW.get;aW.get=function(){return aj(this)?"dialog":aG.call(this)};var aK=aW.set;aW.set=function(e){return"string"==typeof e&&"dialog"===e.toLowerCase()?this.setAttribute("method",e):aK.call(this,e)},Object.defineProperty(HTMLFormElement.prototype,"method",aW)}}document.addEventListener("click",function(e){if(aq.formSubmitter=null,aq.imagemapUseValue=null,!e.defaultPrevented){var t=e.target;if("composedPath"in e&&(t=e.composedPath().shift()||t),t&&aj(t.form)){if(!("submit"===t.type&&["button","input"].indexOf(t.localName)>-1)){if("input"!==t.localName||"image"!==t.type)return;aq.imagemapUseValue=e.offsetX+","+e.offsetY}aI(t)&&(aq.formSubmitter=t)}}},!1),document.addEventListener("submit",function(e){var t=e.target;if(!aI(t)){var n=aU(e);"dialog"===(n&&n.getAttribute("formmethod")||t.getAttribute("method"))&&e.preventDefault()}});var aZ=HTMLFormElement.prototype.submit;HTMLFormElement.prototype.submit=function(){if(!aj(this))return aZ.call(this);var e=aI(this);e&&e.close()}}var d=c("cNaMA");const aV=()=>{let e=(0,d.useRef)(null);return(0,d.useLayoutEffect)(()=>{null!=e.current&&"function"!=typeof HTMLDialogElement&&aq.registerDialog(e.current)},[e.current]),(0,d.useMemo)(()=>[e,()=>{e.current?.open||e.current?.showModal()},()=>{e.current?.open===!0&&e.current?.close?.()},()=>e.current?.open===!0?e.current?.close?.():e.current?.showModal?.()],[e])},aQ=({show:e,start_local:t})=>(window.open_edit_or_run_popup=()=>{t()},(0,d.html)`
+ +
`),aX=({offer_binder:e,start_binder:t,notebookfile:n,notebook:a})=>{let[r,o,i,l]=aV(),[s,c]=(0,d.useState)(!1),u=(0,d.useRef)("");u.current=n??"",window.open_edit_or_run_popup=o,(0,d.useEffect)(()=>(window.start_binder=e?t:null,()=>{window.start_binder=null}),[t,e]);let p=u.current.startsWith("data:"),m=aJ(a);return(0,d.html)`
+ + + + ${e?(0,d.html)` +

+ ${"To be able to edit code and run cells, you need to run the notebook yourself. "} + Where would you like to run the notebook? +

+ ${null==m?null:(0,d.html)`
${"This notebook takes about "}${m}${" to run."}
`} +

In the cloud (experimental)

+
+ +
+

+ Binder is a free, open source service that runs scientific notebooks in the cloud! + It will take a while, usually 2-7 minutes to get a session. +

+

On your computer

+

(Recommended if you want to store your changes.)

+ `:null} +
    +
  1. +
    + ${p?(0,d.html)` +
    Download the notebook:
    +
    {"A"===e.target.tagName||e.target.closest("div").firstElementChild.click()}} + class="download_div" + > + notebook.jl + +
    + `:(0,d.html)` +
    Copy the notebook URL:
    +
    + e.target.select()} value=${u.current} readonly /> + {await navigator.clipboard.writeText(u.current),c(!0),setTimeout(()=>c(!1),3e3)}} + /> +
    + `} +
    +
  2. +
  3. +
    Run Pluto
    +

    + ${"(Also see: "} + How to install Julia and Pluto) +

    + +
  4. +
  5. + ${p?(0,d.html)` +
    Open the notebook file
    +

    Type the saved filename in the open box.

    + + `:(0,d.html)` +
    Paste URL in the Open box
    +
  6. +
+
+
`},aY=e=>((e.nbpkg?.install_time_ns??NaN)+(0,h.default).sum(Object.values(e.cell_results).map(e=>e.runtime??0)))/1e9,aJ=e=>{let t=aY(e);return isNaN(t)?null:a0((0,h.default).round(15+1.5*t,-1))},a0=e=>{let t=Math.ceil(e),n=Math.round(e/60);return e<60?`${t} second${t>1?"s":""}`:`${n} minute${n>1?"s":""}`};var ez=c("hrGZZ");const a1=e=>document.head.querySelector(`link[rel='pluto-external-source'][id='${e}']`),a2=a1("arrow_up_circle_icon")?.href,a3=a1("document_text_icon")?.href,a4=a1("help_circle_icon")?.href;a1("open_icon")?.href;const a9=({notebook:e,disable_input:t})=>{let[n,a]=(0,d.useState)(null),r=(0,d.useRef)(null);r.current=n;let o=(0,d.useRef)(null),i=(0,d.useRef)(""),l=(0,d.useCallback)(e=>{let t=e.detail.source_element;if(o.current=t,null==t)i.current="top: 20%; left: 50%; transform: translate(-50%, -50%); position: fixed;";else{let e=t.getBoundingClientRect(),n=document.body.getBoundingClientRect();i.current=`top: ${.5*(e.top+e.bottom)-n.top}px; left: min(max(0px,100vw - 251px - 30px), ${e.right-n.left}px);`}a(e.detail)},[a]),s=(0,d.useCallback)(()=>{a(null)},[a]);(0,ez.useEventListener)(window,"open pluto popup",l,[l]),(0,ez.useEventListener)(window,"close pluto popup",s,[s]),(0,ez.useEventListener)(window,"pointerdown",e=>{null!=r.current&&null!=e.target&&null==e.target.closest("pluto-popup")&&(null!=o.current&&o.current.contains(e.target)||s())},[s]),(0,ez.useEventListener)(window,"keydown",e=>{"Escape"===e.key&&s()},[s]);let c=(0,d.useRef)(null);(0,d.useLayoutEffect)(()=>{null!=n&&(!0===n.should_focus?requestAnimationFrame(()=>{c.current=document.activeElement;let e=u.current?.querySelector("a")??u.current;e?.focus?.()}):c.current=null)},[null!=n]);let u=(0,d.useRef)(null);(0,ez.useEventListener)(u.current,"focusout",e=>{null!=r.current&&!0===r.current.should_focus&&!(u.current?.matches(":focus-within")||u.current?.contains(e.relatedTarget))&&(null!=o.current&&(o.current.contains(e.relatedTarget)||o.current.matches(":focus-within"))||(s(),e.preventDefault(),c.current?.focus?.()))},[s]);let p=n?.type;return(0,d.html)` + ${"nbpkg"===p?(0,d.html)`<${a6} + notebook=${e} + disable_input=${t} + recent_event=${n} + clear_recent_event=${()=>a(null)} + />`:"info"===p||"warn"===p?(0,d.html)`
${n?.body}
`:null} +
+
+ +
`},a6=({notebook:e,recent_event:t,clear_recent_event:n,disable_input:a})=>{let r=(0,d.useContext)(S),[o,i]=(0,d.useState)(null);(0,d.useEffect)(()=>{let n=!0;return null==t?i(null):t?.type==="nbpkg"&&(r.get_avaible_versions({package_name:t.package_name,notebook_id:e.notebook_id})??Promise.resolve([])).then(({versions:a,url:r})=>{n&&i(re({nbpkg:e.nbpkg,package_name:t.package_name,is_disable_pkg:t.is_disable_pkg,available_versions:a,package_url:r}))}),()=>{n=!1}},[t,...a5(e.nbpkg)]);let l=t.is_disable_pkg||(e.nbpkg?.enabled??!0);(0,d.useEffect)(()=>{l||n()},[l]);let[s,c]=(0,d.useState)(!1),u=e.nbpkg?.restart_required_msg==null&&!(e.nbpkg?.instantiated??!0),p=null!=t&&((e.nbpkg?.busy_packages??[]).includes(t.package_name)||u),m=eB(p,2);(0,d.useEffect)(()=>{c(m)},[m]);let h=e.nbpkg?.terminal_outputs==null?"Loading...":e.nbpkg?.terminal_outputs[t?.package_name]??"",g=o?.offer_update??!1,f=aM(),_=null==f||t?.package_name==null?null:aT(f,[t?.package_name]),b=null==_?0:_.install+_.load+_.precompile,y=null==_?0:_.load;return(0,d.html)` + ${o?.hint??"Loading..."} + ${(o?.status==="will_be_installed"||o?.status==="busy")&&b>10?(0,d.html)`
+ Installation can take ${a0(b)}${". "}
${"Afterwards, it loads in "} + ${a0(y)}. +
`:null} + + <${eM} value=${h??"Loading..."} /> +
`},a8=e=>null==e?[null]:Object.entries(e).flat(),a5=e=>null==e?[null]:Object.entries(e).flatMap(([e,t])=>"terminal_outputs"===e?[]:[t]),a7=(e,t)=>!!("stdlib"!==e&&(0,h.default).isArray(t))&&(0,h.default).last(t)!==e,re=({nbpkg:e,package_name:t,available_versions:n,is_disable_pkg:a,package_url:r})=>{let o="error",i="error",l=(0,d.html)`error`,s=!1;r=r??`https://juliahub.com/ui/Packages/General/${t}`;let c=e?.installed_versions[t]??null,u=e?.waiting_for_permission??!1,p=!u&&((e?.busy_packages??[]).includes(t)||!(e?.instantiated??!0)),m=(0,d.html)`${t} `;return a?(o="disable_pkg",i=`${t} disables Pluto's built-in package manager.`,l=(0,d.html)`${t} disables Pluto's built-in package manager.`):null!=c||(0,h.default).isEqual(n,["stdlib"])?null==c||"stdlib"===c?(o="installed",i=`${t} is part of Julia's pre-installed 'standard library'.`,l=(0,d.html)`${m} is part of Julia's pre-installed standard library.`):u?(o="will_be_installed",i=`${t} (v${(0,h.default).last(n)}) will be installed when you run this notebook.`,l=(0,d.html)`
${m} v${(0,h.default).last(n)}
+ will be installed when you run this notebook.`):p?(o="busy",i=`${t} (v${c}) is installing...`,l=(0,d.html)`
${m} v${c}
+ is installing...`):(o="installed",i=`${t} (v${c}) is installed in the notebook.`,l=(0,d.html)`
+ ${m} + v${c} +
+ is installed in the notebook.`,s=a7(c,n)):null!=n&&(0,h.default).isArray(n)&&(0===n.length?(o="not_found",i=`The package "${t}" could not be found in the registry. Did you make a typo?`,l=(0,d.html)`The package "${t}" could not be found in the registry. +
Did you make a typo?
`):(o="will_be_installed",i=`${t} (v${(0,h.default).last(n)}) will be installed in the notebook when you run this cell.`,l=(0,d.html)`
${m} v${(0,h.default).last(n)}
+ will be installed in the notebook when you run this cell.`)),{status:o,hint:l,hint_raw:i,available_versions:n??null,chosen_version:c,busy:p,offer_update:s,package_url:r}},rt=({package_name:e,pluto_actions:t,notebook_id:n,nbpkg:a})=>{let[r,o]=(0,d.useState)(null),[i,l]=(0,d.useState)(null);(0,d.useEffect)(()=>{(t.get_avaible_versions({package_name:e,notebook_id:n})??Promise.resolve([])).then(o)},[e]);let{status:s,hint_raw:c}=re({nbpkg:a,package_name:e,is_disable_pkg:!1,available_versions:r?.versions,package_url:r?.package_url});return(0,d.html)` + + + + `},rn=({package_name:e})=>{let{hint_raw:t}=re({nbpkg:null,package_name:e,is_disable_pkg:!0});return(0,d.html)` + + + + `};var d=(c("cNaMA"),c("cNaMA")),tX=c("hiQgq");class ra extends tX.WidgetType{constructor(e){super(),this.element=e}eq(e){return!1}toDOM(){let e=document.createElement("span");return(0,d.render)(this.element,e),e}updateDOM(e){return(0,d.render)(this.element,e),!0}}const rr=["Pkg.activate","Pkg.API.activate","Pkg.develop","Pkg.API.develop","Pkg.add","Pkg.API.add","quickactivate","@quickactivate"],ro=(0,tX.Facet).define({combine:e=>e[0],compare:h.default.isEqual}),ri=({pluto_actions:e,notebook_id_ref:t})=>(0,tX.ViewPlugin).fromClass(class{update_decos(n){let a=function(e,{pluto_actions:t,notebook_id:n,nbpkg:a}){let r=new Set,o=e.visibleRanges.flatMap(({from:o,to:i})=>(function({doc:e,tree:t,from:n,to:a}){let r=0,o=[];return!function({tree:e,enter:t,leave:n,from:a=0,to:r=e.length}){let o=e.cursor();for(;;){let e=!1;if(o.from<=r&&o.to>=a&&(o.type.isAnonymous||!1!==t(o))){if(o.firstChild())continue;o.type.isAnonymous||(e=!0)}for(;e&&n&&n(o),e=o.type.isAnonymous,!o.nextSibling();){if(!o.parent())return;e=!0}}}({tree:t,from:n,to:a,enter:t=>{if(("QuoteExpression"===t.name||"QuoteStatement"===t.name)&&r++,"InterpolationExpression"===t.name&&r--,0!==r)return;if("CallExpression"===t.name||"MacroExpression"===t.name){let n=t.node.firstChild,a=e.sliceString(n.from,n.to);rr.includes(a)&&o.push({type:"package_disabler",name:a,from:t.to,to:t.to});return}let n=n$(e=>nm`import A, ${e}`),a=e=>{let t=null;return(t=n(ng`${nv.as("package")}.${nv.any}`).match(e))?a(t.package):(t=n(ng`.${nv.maybe(nv.any)}`).match(e))?null:(t=n(ng`${nv.Identifier}`).match(e))?e:void console.warn("Unknown nested import specifier: "+e.toString())},i=null;if((i=nf(ng`import ${nv.as("specifier")}: ${nv.many()}`).match(t))??(i=nf(ng`import ${nv.as("specifier")}, ${nv.many("specifiers")}`).match(t))??(i=nf(ng`using ${nv.as("specifier")}: ${nv.many()}`).match(t))??(i=nf(ng`using ${nv.as("specifier")}, ${nv.many("specifiers")}`).match(t))){let{specifier:r,specifiers:l=[]}=i;for(let{node:t}of(r&&(l=[{node:r},...l]),l)){t=nk(t);let r=null;if(r=n(ng`${nv.as("package")} as ${nv.maybe(nv.any)}`).match(t)){let t=a(r.package);t&&o.push({type:"package",name:e.sliceString(t.from,t.to),from:t.to,to:t.to})}else if(r=n(ng`${nv.as("package")}.${nv.any}`).match(t)){let t=a(r.package);t&&o.push({type:"package",name:e.sliceString(t.from,t.to),from:t.to,to:t.to})}else if(r=n(ng`.${nv.as("scoped")}`).match(t));else if(r=n(ng`${nv.as("package")}`).match(t)){let t=a(r.package);t&&o.push({type:"package",name:e.sliceString(t.from,t.to),from:t.to,to:t.to})}else console.warn("Unknown import specifier: "+t.toString())}if(i=null,i=nf(ng`using ${nv.as("specifier")}, ${nv.many("specifiers")}`).match(t)){let{specifier:t}=i;t&&("\n"===e.sliceString(t.to,t.to+1)||""===e.sliceString(t.to,t.to+1))&&o.push({type:"implicit_using",name:e.sliceString(t.from,t.to),from:t.to,to:t.to})}return!1}if("ImportStatement"===t.name)throw Error("What")},leave:e=>{("QuoteExpression"===e.name||"QuoteStatement"===e.name)&&r--,"InterpolationExpression"===e.name&&r++}}),o})({doc:e.state.doc,tree:(0,tX.syntaxTree)(e.state),from:o,to:i}).map(e=>{if("package"===e.type){let{name:o}=e;if("Base"!==o&&"Core"!==o&&!r.has(o))return r.add(o),(0,tX.Decoration).widget({widget:new ra((0,d.html)` + <${rt} + key=${o} + package_name=${o} + pluto_actions=${t} + notebook_id=${n} + nbpkg=${a} + /> + `),side:1}).range(e.to)}else if("package_disabler"===e.type)return(0,tX.Decoration).widget({widget:new ra((0,d.html)` <${rn} package_name=${e.name} /> `),side:1}).range(e.to);else if("implicit_using"===e.type&&"HypertextLiteral"===e.name)return(0,tX.Decoration).widget({widget:new ra((0,d.html)` +
+ : @htl, @htl_str +
+
`),side:1}).range(e.to)})).filter(e=>null!=e);return(0,tX.Decoration).set(o,!0)}(n,{pluto_actions:e,notebook_id:t.current,nbpkg:n.state.facet(ro)});this.decorations=a}constructor(e){this.update_decos(e)}update(e){if(e.docChanged||e.viewportChanged||e.state.facet(ro)!==e.startState.facet(ro)){this.update_decos(e.view);return}}},{decorations:e=>e.decorations});var h=c("9Ta4i"),tX=c("hiQgq"),d=c("cNaMA");const rl=e=>/^\t*/.exec(e)?.[0]??"",rs=e=>{let t=[];for(let n of(0,h.default).range(0,e.doc.lines)){let a=e.doc.line(n+1),r=rl(a.text).length;if(0===r)continue;let o=Math.min(r,12),i=o*e.tabSize,l=(0,tX.Decoration).line({attributes:{style:`--indented: ${i}ch;`,class:"awesome-wrapping-plugin-the-line"}});if(t.push(l.range(a.from,a.from)),o>0&&t.push((0,tX.Decoration).mark({class:"awesome-wrapping-plugin-the-tabs"}).range(a.from,a.from+o)),r>o)for(let e of(0,h.default).range(o,r))t.push((0,tX.Decoration).replace({widget:new ra((0,d.html)``),block:!1}).range(a.from+e,a.from+e+1))}return(0,tX.Decoration).set(t)},rc=(0,tX.StateField).define({create:e=>rs(e),update:(e,t)=>t.docChanged?rs(t.state):e,provide:e=>(0,tX.EditorView).decorations.from(e)});var tX=c("hiQgq");let ru=({focus_on_neighbor:e})=>(0,tX.keymap).of([{key:"PageUp",run:()=>(e({cell_delta:-1,line:0,character:0}),!0)},{key:"PageDown",run:()=>(e({cell_delta:1,line:0,character:0}),!0)},{key:"ArrowLeft",run:t=>{let n=t.state.selection.main;return!!(n.empty&&t.moveByChar(n,!1).eq(n))&&(e({cell_delta:-1,line:1/0,character:1/0}),!0)}},{key:"ArrowUp",run:t=>{let n=t.state.selection.main;return!!(n.empty&&t.moveVertically(n,!1).eq(n))&&(e({cell_delta:-1,line:1/0,character:1/0}),!0)}},{key:"ArrowRight",run:t=>{let n=t.state.selection.main;return!!(n.empty&&t.moveByChar(n,!0).eq(n))&&(e({cell_delta:1,line:0,character:0}),!0)}},{key:"ArrowDown",run:t=>{let n=t.state.selection.main;return!!(n.empty&&t.moveVertically(n,!0).eq(n))&&(e({cell_delta:1,line:0,character:0}),!0)}}]),rd=(0,tX.EditorView).domEventHandlers({keydown:(e,t)=>{let n=t.state.selection.main;if(!n.empty||!e.repeat)return!1;if("Backspace"===e.key&&0===t.state.doc.length||"Delete"===e.key&&0===t.state.doc.length)return!0;let a="active"===(0,tX.autocomplete).completionStatus(t.state);return"ArrowUp"!==e.key||a?"ArrowDown"!==e.key||a?"ArrowLeft"===e.key&&e.repeat?!!t.moveByChar(n,!1).eq(n):"ArrowRight"===e.key?!!t.moveByChar(n,!0).eq(n):void 0:!!t.moveVertically(t.state.selection.main,!0).eq(n):!!t.moveVertically(t.state.selection.main,!1).eq(n)}}),rp=({focus_on_neighbor:e})=>ru({focus_on_neighbor:e});var tX=c("hiQgq");let rm=({pluto_actions:e,cell_id:t})=>(0,tX.EditorView).domEventHandlers({paste:(n,a)=>{if(!a.hasFocus)return console.log("CodeMirror, why are you registring this paste? You aren't focused!"),!0;n.stopPropagation();let r=n.clipboardData.getData("text/plain"),o=E(r);return null!=o&&(0===a.state.selection.main.from&&a.state.selection.main.to===a.state.doc.length?(e.add_deserialized_cells(r,t,o),e.confirm_delete_multiple("This Should Never Be Visible",[t]),!0):(a.state.selection.main.to===a.state.doc.length||0===a.state.selection.main.from)&&(e.add_deserialized_cells(r,t,o),!0))}});var tX=c("hiQgq");function rh(e){let t=e.parent.firstChild,n=e.parent.lastChild;if("end"!==n.name)return null;let a=e.parent.getChild("CatchClause")?.firstChild,r=e.parent.getChild("TryElseClause")?.firstChild,o=e.parent.getChild("FinallyClause")?.firstChild;return[{from:t.from,to:t.to},a&&{from:a.from,to:a.to},r&&{from:r.from,to:r.to},o&&{from:o.from,to:o.to},{from:n.from,to:n.to}].filter(e=>null!=e)}const rg=(0,tX.EditorView).baseTheme({".cm-matchingBracket":{backgroundColor:"#328c8252"},".cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),rf="()[]{}",r_=(0,tX.Facet).define({combine:e=>(0,tX.combineConfig)(e,{afterCursor:!0,brackets:rf,maxScanDistance:1e4})}),rb=(0,tX.Decoration).mark({class:"cm-matchingBracket"});(0,tX.Decoration).mark({class:"cm-nonmatchingBracket"});const ry=[(0,tX.StateField).define({create:()=>tX.Decoration.none,update(e,t){if(!t.docChanged&&!t.selection)return e;let n=[],a=t.state.facet(r_);for(let e of t.state.selection.ranges){if(!e.empty)continue;let r=rv(t.state,e.head,-1,a)||e.head>0&&rv(t.state,e.head-1,1,a)||a.afterCursor&&(rv(t.state,e.head,1,a)||e.head(0,tX.EditorView).decorations.from(e)}),rg];function rv(e,t,n,a={}){let r=a.maxScanDistance||1e4,o=a.brackets||rf,i=(0,tX.syntaxTree)(e),l=i.resolveInner(t,n);return function(e){if("end"===e.name&&(e="IfStatement"===e.parent.name?e.parent?.firstChild?.firstChild:e.parent.firstChild),null==e)return[];if("mutable"===e.name||"struct"===e.name){"struct"===e.name&&(e=e.parent.firstChild);let t=e.parent.getChild("struct"),n=e.parent.lastChild;return"end"===n.name&&t?[{from:e.from,to:t.to},{from:n.from,to:n.to}]:null}if("struct"===e.name||"quote"===e.name||"begin"===e.name||"do"===e.name||"for"===e.name||"let"===e.name||"macro"===e.name||"function"===e.name||"while"===e.name){let t=e.parent.lastChild;return"end"!==t.name?null:[{from:e.from,to:e.to},{from:t.from,to:t.to}]}if("type"===e.name&&(e=e.parent.firstChild),"abstract"===e.name||"primitive"===e.name){let t=e.parent.lastChild,n="end"===t.name,a=e.parent.getChild("type");return n&&a?[{from:e.from,to:a.to},{from:t.from,to:t.to}]:null}if("if"===e.name||"else"===e.name||"elseif"===e.name){"if"===e.name&&(e=e.parent);let t=!1;"else"===e.name&&(e=e.parent,t=!0),"elseif"===e.name&&(e=e.parent.parent);let n=e.parent.firstChild,a=e.parent.lastChild;if("end"!==a.name)return null;if(t&&"try"===n.name)return rh(e);let r=[];for(let t of(r.push({from:n.from,to:n.to}),e.parent.getChildren("ElseifClause"))){let e=t.firstChild;r.push({from:e.from,to:e.to})}for(let t of e.parent.getChildren("ElseClause")){let e=t.firstChild;r.push({from:e.from,to:e.to})}return r.push({from:a.from,to:a.to}),r}if("try"===e.name||"catch"===e.name||"finally"===e.name||"else"===e.name)return("catch"===e.name&&(e=e.parent),"finally"===e.name&&(e=e.parent),"else"===e.name&&(e=e.parent),"end"!==e.parent.lastChild.name)?null:rh(e);if("module"===e.name||"baremodule"===e.name){let t=e.parent.lastChild;return"end"!==t.name?null:[{from:e.from,to:e.to},{from:t.from,to:t.to}]}return null}(l)||function(e,t,n,a,r,o,i){let l=n<0?e.sliceDoc(t-1,t):e.sliceDoc(t,t+1),s=i.indexOf(l);if(s<0||s%2==0!=n>0)return null;let c={from:n<0?t-1:t,to:n>0?t+1:t},u=e.doc.iterRange(t,n>0?e.doc.length:0),d=0;for(let e=0;!u.next().done&&e<=o;){let o=u.value;n<0&&(e+=o.length);let l=t+e*n;for(let e=n>0?0:o.length-1,t=n>0?o.length:-1;e!=t;e+=n){let t=i.indexOf(o[e]);if(!(t<0)&&a.resolve(l+e,1).type==r){if(t%2==0==n>0)d++;else if(1==d){if(t>>1==s>>1)return[c,{from:l+e,to:l+e+1}];return null}else d--}}n>0&&(e+=o.length)}return u.done?[c]:null}(e,t,n,i,l.type,r,o)}var x=c("aN0pg"),tX=c("hiQgq");const rw=(0,tX.Decoration).line({attributes:{class:"cm-highlighted-line"}}),rk=(0,tX.Decoration).mark({attributes:{class:"cm-highlighted-range"}}),rE=(0,tX.Facet).define({combine:e=>e[0],compare:(e,t)=>e===t}),r$=(0,tX.Facet).define({combine:e=>e[0],compare:(e,t)=>e===t}),rx=()=>(0,tX.ViewPlugin).fromClass(class{updateDecos(e){this.decorations=function(e){let t=e.state.facet(rE);if(null==t||void 0==t||t<0||t>e.state.doc.lines)return(0,tX.Decoration).set([]);let n=e.state.doc.line(t);return(0,tX.Decoration).set([rw.range(n.from,n.from)])}(e)}constructor(e){this.decorations=(0,tX.Decoration).set([]),this.updateDecos(e)}update(e){(e.docChanged||e.state.facet(rE)!==e.startState.facet(rE))&&this.updateDecos(e.view)}},{decorations:e=>e.decorations}),rS=()=>(0,tX.ViewPlugin).fromClass(class{updateDecos(e){this.decorations=function(e){let t=e.state.facet(r$);if(null==t)return(0,tX.Decoration).set([]);let{from:n,to:a}=t;return n<0||n==a?(0,tX.Decoration).set([]):(0,tX.Decoration).set([rk.range(n,a)])}(e)}constructor(e){this.decorations=(0,tX.Decoration).set([]),this.updateDecos(e)}update(e){(e.docChanged||e.state.facet(r$)!==e.startState.facet(r$))&&this.updateDecos(e.view)}},{decorations:e=>e.decorations});var tX=c("hiQgq");function rN(e,t){return({state:n,dispatch:a})=>{if(n.readOnly)return!1;let r=e(t,n.selection.ranges,n);return!!r&&(a(n.update(r)),!0)}}const rC=rN(rD,0);rN(rD,1),rN(rD,2);const rA=rN(rT,0);rN(rT,1),rN(rT,2);const rM=[{key:"Mod-/",run:e=>{let t=rO(e.state);return t.line?rC(e):!!t.block&&rA(e)}},{key:"Alt-A",run:rA}];function rO(e,t=e.selection.main.head){let n=e.languageDataAt("commentTokens",t);return n.length?n[0]:{}}function rT(e,t,n){let a=t.map(e=>rO(n,e.from).block);if(!a.every(e=>e))return null;let r=t.map((e,t)=>(function(e,{open:t,close:n},a,r){let o,i,l=e.sliceDoc(a-50,a),s=e.sliceDoc(r,r+50),c=/\s*$/.exec(l)[0].length,u=/^\s*/.exec(s)[0].length,d=l.length-c;if(l.slice(d-t.length,d)==t&&s.slice(u,u+n.length)==n)return{open:{pos:a-c,margin:c&&1},close:{pos:r+u,margin:u&&1}};r-a<=100?o=i=e.sliceDoc(a,r):(o=e.sliceDoc(a,a+50),i=e.sliceDoc(r-50,r));let p=/^\s*/.exec(o)[0].length,m=/\s*$/.exec(i)[0].length,h=i.length-m-n.length;return o.slice(p,p+t.length)==t&&i.slice(h,h+n.length)==n?{open:{pos:a+p+t.length,margin:/\s/.test(o.charAt(p+t.length))?1:0},close:{pos:r-m-n.length,margin:/\s/.test(i.charAt(h-1))?1:0}}:null})(n,a[t],e.from,e.to));if(2==e||r.every(e=>e)){if(1!=e&&r.some(e=>e)){let e=[];for(let t=0,n;t{let{open:n,close:o}=a[e++];if(r[e])return{range:t};let i=n.length+1;return{changes:[{from:t.from,insert:n+" "},{from:t.to,insert:" "+o}],range:(0,tX.EditorSelection).range(t.anchor+i,t.head+i)}})}return null}function rD(e,t,n){let a=[],r=-1;for(let{from:e,to:o}of t){let t=rO(n,e).line,i=t===rO(n,o).line?t:null,l=a.length,s=1e9;for(let t=e;t<=o;){let l=n.doc.lineAt(t);if(l.from>r&&(e==o||o>l.from)){r=l.from;let e=i??rO(n,t).line;if(!e)continue;let o=/^\s*/.exec(l.text)[0].length,c=o==l.length,u=l.text.slice(o,o+e.length)==e?o:-1;oe.comment<0&&(!e.empty||e.single))){let e=[];for(let{line:t,token:n,indent:r,empty:o,single:i}of a)(i||!o)&&e.push({from:t.from+r,insert:n+" "});let t=n.changes(e);return{changes:t,selection:n.selection.map(t,1)}}if(1!=e&&a.some(e=>e.comment>=0)){let e=[];for(let{line:t,comment:n,token:r}of a)if(n>=0){let a=t.from+n,o=a+r.length;" "==t.text[o-t.from]&&o++,e.push({from:a,to:o})}return{changes:e}}return null}var tX=c("hiQgq");let rR=(e,t)=>e.slice(t,t+1)[0],rL={key:"Mod-d",run:({state:e,dispatch:t})=>{if(e.selection.main.empty){let n=(0,tX.syntaxTree)(e).cursorAt(e.selection.main.from,-1),a=(0,tX.syntaxTree)(e).cursorAt(e.selection.main.from,1);for(let e of["Identifier","FieldName"]){let r=n.name===e?n:a.name===e?a:null;if(r)return t({selection:{anchor:r.from,head:r.to}}),!0}let r=e.doc.lineAt(e.selection.main.from),o=e.selection.main.from-r.from,i=r.text.slice(0,o),l=r.text.slice(o),s=i.match(/(\w+)$/)?.[0]??"",c=l.match(/^(\w+)/)?.[0]??"";t({selection:{anchor:e.selection.main.from-s.length,head:e.selection.main.from+c.length}})}else(0,tX.selectNextOccurrence)({state:e,dispatch:t});return!1},shift:({state:e,dispatch:t})=>{if(1===e.selection.ranges.length)return!1;let n=e.selection.ranges.at(e.selection.mainIndex-1),a=e.selection.ranges.filter(e=>e!==n),r=a.indexOf(e.selection.main),o=rR(a,e.selection.mainIndex-1);return t({selection:(0,tX.EditorSelection).create(a,r),effects:null==o?[]:(0,tX.EditorView).scrollIntoView(o.from)}),!0},preventDefault:!0};var g=c("4zMEb"),rI=c("aTIpG"),ez=c("hrGZZ");c("kjWx8");const rP="true"===window.localStorage.getItem("ENABLE_CM_MIXED_PARSER"),rj="true"===window.localStorage.getItem("ENABLE_CM_SPELLCHECK"),rB=(window.localStorage.getItem("ENABLE_CM_AUTOCOMPLETE_ON_TYPE")??(/Mac/.test(navigator.platform)?"true":"false"))==="true";rP&&console.log(`YOU ENABLED THE CODEMIRROR MIXED LANGUAGE PARSER +Thanks! Awesome! +Please let us know if you find any bugs... +If enough people do this, we can make it the default parser. +`),window.PLUTO_TOGGLE_CM_MIXED_PARSER=(e=!rP)=>{window.localStorage.setItem("ENABLE_CM_MIXED_PARSER",String(e)),window.location.reload()},window.PLUTO_TOGGLE_CM_SPELLCHECK=(e=!rj)=>{window.localStorage.setItem("ENABLE_CM_SPELLCHECK",String(e)),window.location.reload()},window.PLUTO_TOGGLE_CM_AUTOCOMPLETE_ON_TYPE=(e=!rB)=>{window.localStorage.setItem("ENABLE_CM_AUTOCOMPLETE_ON_TYPE",String(e)),window.location.reload()};const rU=[{tag:tX.tags.comment,color:"var(--cm-color-comment)",fontStyle:"italic",filter:"none"},{tag:tX.tags.keyword,color:"var(--cm-color-keyword)"},{tag:tX.tags.variableName,color:"var(--cm-color-var)",fontWeight:700},{tag:tX.tags.typeName,color:"var(--cm-color-type)",fontStyle:"italic"},{tag:tX.tags.typeOperator,color:"var(--cm-color-type)",fontStyle:"italic"},{tag:tX.tags.tagName,color:"var(--cm-color-tag)"},{tag:tX.tags.propertyName,color:"var(--cm-color-property)"},{tag:tX.tags.macroName,color:"var(--cm-color-macro)",fontWeight:700},{tag:tX.tags.string,color:"var(--cm-color-string)"},{tag:tX.tags.number,color:"var(--cm-color-number)"},{tag:tX.tags.bool,color:"var(--cm-color-builtin)",fontWeight:700},{tag:tX.tags.atom,color:"var(--cm-color-atom)"},{tag:tX.tags.unit,color:"var(--cm-color-tag)"},{tag:tX.tags.bracket,color:"var(--cm-color-bracket)"},{tag:(0,tX.tags).special(tX.tags.brace),color:"var(--cm-color-macro)",fontWeight:700}],rF=(0,tX.HighlightStyle).define(rU,{all:{color:"var(--cm-color-editor-text)"},scope:(0,tX.julia_andrey)().language}),rz=(0,tX.HighlightStyle).define(rU,{all:{color:"var(--cm-color-editor-text)",filter:"contrast(0.5)"},scope:tX.javascriptLanguage}),rq=(0,tX.HighlightStyle).define(rU,{all:{color:"var(--cm-color-editor-text)",filter:"contrast(0.5)"},scope:tX.pythonLanguage}),rH=(0,tX.HighlightStyle).define([{tag:tX.tags.comment,color:"var(--cm-color-comment)",fontStyle:"italic"},{tag:tX.tags.variableName,color:"var(--cm-color-css-accent)",fontWeight:700},{tag:tX.tags.propertyName,color:"var(--cm-color-css-accent)",fontWeight:700},{tag:tX.tags.tagName,color:"var(--cm-color-css)",fontWeight:700},{tag:tX.tags.definitionOperator,color:"var(--cm-color-css)"},{tag:tX.tags.keyword,color:"var(--cm-color-css)"},{tag:tX.tags.modifier,color:"var(--cm-color-css-accent)"},{tag:tX.tags.literal,color:"var(--cm-color-css)"},{tag:tX.tags.punctuation,opacity:.5}],{scope:tX.cssLanguage,all:{color:"var(--cm-color-css)"}}),rW=(0,tX.HighlightStyle).define([{tag:tX.tags.comment,color:"var(--cm-color-comment)",fontStyle:"italic"},{tag:tX.tags.content,color:"var(--cm-color-html)",fontWeight:400},{tag:tX.tags.tagName,color:"var(--cm-color-html-accent)",fontWeight:600},{tag:tX.tags.documentMeta,color:"var(--cm-color-html-accent)"},{tag:tX.tags.attributeName,color:"var(--cm-color-html-accent)",fontWeight:600},{tag:tX.tags.attributeValue,color:"var(--cm-color-html-accent)"},{tag:tX.tags.angleBracket,color:"var(--cm-color-html-accent)",fontWeight:600,opacity:.7}],{all:{color:"var(--cm-color-html)"},scope:tX.htmlLanguage}),rG=(0,tX.HighlightStyle).define([{tag:tX.tags.comment,color:"var(--cm-color-comment)",fontStyle:"italic"},{tag:tX.tags.content,color:"var(--cm-color-md)"},{tag:tX.tags.heading,color:"var(--cm-color-md)",fontWeight:700},{tag:tX.tags.quote,color:"var(--cm-color-md)"},{tag:tX.tags.emphasis,fontStyle:"italic"},{tag:tX.tags.strong,fontWeight:"bolder"},{tag:tX.tags.link,textDecoration:"underline"},{tag:tX.tags.url,color:"var(--cm-color-md)",textDecoration:"none"},{tag:tX.tags.monospace,color:"var(--cm-color-md-accent)"},{tag:tX.tags.processingInstruction,color:"var(--cm-color-md-accent) !important",opacity:"0.5"}],{all:{color:"var(--cm-color-md)"},scope:tX.markdownLanguage}),rK=e=>e.state.doc.toString(),rZ=(e,t)=>e.dispatch({changes:{from:0,to:e.state.doc.length,insert:t}}),rV=(e,t,n,a)=>e.dispatch({changes:{from:n,to:a,insert:t}});let rQ=(e,t)=>{let n=(0,d.useRef)(new tX.Compartment),a=(0,d.useRef)(n.current.of(t));return(0,d.useLayoutEffect)(()=>{e.current?.dispatch?.({effects:n.current.reconfigure(t)})},[t]),a.current},rX=(e,{line:t,ch:n})=>{let a=e.line((0,h.default).clamp(t+1,1,e.lines)),r=(0,h.default).clamp(n,0,a.length);return a.from+r};const rY=({local_code:e,remote_code:t,disable_input:n,focus_after_creation:a,cm_forced_focus:r,set_cm_forced_focus:o,show_input:i,skip_static_fake:l=!1,on_submit:s,on_delete:c,on_add_after:u,on_change:p,on_update_doc_query:m,on_focus_neighbor:f,on_line_heights:_,nbpkg:b,cell_id:y,notebook_id:v,any_logs:w,show_logs:k,set_show_logs:E,set_cell_disabled:$,cm_highlighted_line:x,cm_highlighted_range:N,metadata:C,global_definition_locations:A,cm_diagnostics:M})=>{let O=(0,d.useContext)(S),{disabled:T,skip_as_script:D}=C,[R,L]=(0,d.useState)(null);if(R)throw L(null),R;let I=(0,d.useRef)(v);I.current=v;let P=(0,d.useRef)(null),j=(0,d.useRef)(null),B=(0,d.useRef)(null),U=rQ(P,ro.of(b)),F=rQ(P,n0.of(A)),z=rQ(P,rE.of(x)),q=rQ(P,r$.of(N)),H=rQ(P,(0,tX.EditorState).readOnly.of(n)),W=rQ(P,(0,d.useMemo)(()=>(0,tX.EditorView).updateListener.of(e=>{e.docChanged&&p(e.state.doc.toString())}),[p])),[G,K]=(0,d.useState)(!l),Z=(0,d.useRef)(!1);Z.current||=navigator.userAgent.includes("Firefox")||a||null!=r||l;let V=!Z.current&&G;return(0,d.useLayoutEffect)(()=>{let e;if(!V)return;let t=j.current;if(null==t)return;let n=()=>{K(!1),e.disconnect(),window.removeEventListener("beforeprint",n)};return(e=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&n()})).observe(t),window.addEventListener("beforeprint",n),()=>{e.disconnect(),window.removeEventListener("beforeprint",n)}},[]),(0,d.useLayoutEffect)(()=>{if(V||null==j.current)return;let t=async e=>await e(),n=e=>((0,tX.autocomplete).closeCompletion(e),t(async()=>{await u(),e.state.doc.toString()!==B.current&&s()}),!0),r=(0,tX.autocomplete).completionKeymap.find(e=>"Enter"===e.key),i=()=>{let e=P.current,t=rK(e),n=t.trim(),a=t.length-t.trimStart().length;if(console.table({value:t,trimmed:n,offset:a}),n.startsWith('md"')&&n.endsWith('"')){let t,r;if(n.startsWith('md"""')&&n.endsWith('"""')?(t=5,r=n.length-3):(t=3,r=n.length-1),t>=r||""==n.substring(t,r).trim())rZ(e,"");else{for(;/\s/.test(n[t]);)++t;for(;/\s/.test(n[r-1]);)--r;rV(e,"",r+a,e.state.doc.length),rV(e,"",0,t+a)}}else{let t=`md""" +`,n=` +"""`,a=e.state.selection.main;e.dispatch({changes:[{from:0,to:0,insert:t},{from:e.state.doc.length,to:e.state.doc.length,insert:n}],selection:0===a.from?{anchor:a.from+t.length,head:a.to+t.length}:void 0})}return!0},l=e=>!e.state.facet(tX.EditorState.readOnly)&&0===e.state.doc.length&&(f(y,1),c(),!0),d=e=>!e.state.facet(tX.EditorState.readOnly)&&0===e.state.doc.length&&(f(y,-1,1/0,1/0),c(),!0),p=(e,t)=>{if(e.state.facet(tX.EditorState.readOnly))return!1;let n=e.state.selection.main;return 0===n.anchor&&n.head===e.state.doc.length||1===e.state.doc.lines?(O.move_remote_cells([y],O.get_notebook().cell_order.indexOf(y)+(-1===t?-1:2)),requestIdleCallback(()=>{e.dispatch({selection:{anchor:0,head:e.state.doc.length},scrollIntoView:!0}),e.focus()}),!0):1===t?(0,tX.moveLineDown)(e):(0,tX.moveLineUp)(e)},b=(e,t)=>(o(!0),O.fold_remote_cells([y],t),!0),v=[{key:"Shift-Enter",run:e=>((0,tX.autocomplete).closeCompletion(e),s(),!0)},{key:"Ctrl-Enter",mac:"Cmd-Enter",run:n},{key:"Ctrl-Enter",run:n},{key:"Tab",run:e=>!e.state.readOnly&&(!!r?.run?.(e)||(e.state.selection.ranges.some(e=>!e.empty)?(0,tX.indentMore)(e):(e.dispatch(e.state.changeByRange(e=>({range:(0,tX.EditorSelection).cursor(e.from+1),changes:{from:e.from,to:e.to,insert:" "}}))),!0))),shift:tX.indentLess},{key:"Ctrl-m",mac:"Cmd-m",run:i},{key:"Ctrl-m",run:i},{key:"Ctrl-M",run:i},{key:"Delete",run:l},{key:"Ctrl-Delete",run:l},{key:"Backspace",run:d},{key:"Ctrl-Backspace",run:d},{key:"Alt-ArrowUp",run:e=>p(e,-1)},{key:"Alt-ArrowDown",run:e=>p(e,1)},{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:e=>b(e,!0)},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:e=>b(e,!1)},rL],w=(0,tX.EditorView).updateListener.of(e=>{if(e.view.hasFocus&&(e.docChanged||e.selectionSet)){let t=e.state;{let e=nX(t,!1);null!=e&&m(e)}}}),k=(0,tX.EditorView).updateListener.of(e=>{if(e.docChanged){let t=[...e.startState.field(nG).definitions.keys()],n=[...e.state.field(nG).definitions.keys()];(0,h.default).isEqual(t,n)||O.set_unsubmitted_global_definitions(y,n)}}),E=window.matchMedia("(prefers-color-scheme: dark)").matches,$=P.current=new tX.EditorView({state:(0,tX.EditorState).create({doc:e,extensions:[(0,tX.EditorView).theme({},{dark:E}),U,z,q,F,H,rx(),rS(),rd,ri({pluto_actions:O,notebook_id_ref:I}),nG,(0,tX.syntaxHighlighting)(rF),(0,tX.syntaxHighlighting)(rW),(0,tX.syntaxHighlighting)(rG),(0,tX.syntaxHighlighting)(rz),(0,tX.syntaxHighlighting)(rq),(0,tX.syntaxHighlighting)(rH),(0,tX.lineNumbers)(),(0,tX.highlightSpecialChars)(),(0,tX.history)(),(0,tX.drawSelection)(),(0,tX.EditorState).allowMultipleSelections.of(!0),(0,tX.EditorView).clickAddsSelectionRange.of(e=>e.altKey&&!e.shiftKey),(0,tX.indentOnInput)(),(0,tX.EditorState).languageData.of((e,t,n)=>[{closeBrackets:{brackets:["(","[","{"]}}]),(0,tX.closeBrackets)(),(0,tX.rectangularSelection)({eventFilter:e=>e.altKey&&e.shiftKey&&0==e.button}),(0,tX.highlightSelectionMatches)({minSelectionLength:2,wholeWords:!0}),function(e={}){return[r_.of(e),ry]}(),w,k,rI.tab_help_plugin,(0,tX.EditorView).domEventHandlers({blur:(e,t)=>{document.activeElement!==t.contentDOM&&(setTimeout(()=>{t.dispatch({selection:{anchor:t.state.selection.main.head},scrollIntoView:!1}),t.contentDOM.blur()},0),o(null))}}),rm({pluto_actions:O,cell_id:y}),(0,tX.EditorView).updateListener.of(e=>{e.docChanged&&e.state.doc.length>0&&"?"===e.state.sliceDoc(0,1)&&tl("docs")}),(0,tX.EditorState).tabSize.of(4),(0,tX.indentUnit).of(" "),...rP?[at(),(0,tX.markdown)({defaultCodeLanguage:at()}),(0,tX.html)(),(0,tX.javascript)(),(0,tX.python)(),n9]:[(0,tX.julia_andrey)()],n1,aN({request_autocomplete:async({text:e})=>{let t=await (0,g.timeout_promise)(O.send("complete",{query:e},{notebook_id:I.current}),5e3).catch(console.warn);if(!t)return null;let{message:n}=t;return{start:(0,tY.utf8index_to_ut16index)(e,n.start),stop:(0,tY.utf8index_to_ut16index)(e,n.stop),results:n.results}},request_special_symbols:()=>O.send("complete_symbols").then(({message:e})=>e),on_update_doc_query:m,request_unsubmitted_global_definitions:()=>O.get_unsubmitted_global_definitions(),cell_id:y}),(0,tX.keymap).of(v),(0,tX.keymap).of(rM),rp({focus_on_neighbor:({cell_delta:e,line:t,character:n})=>f(y,e,t,n)}),(0,tX.keymap).of([...tX.closeBracketsKeymap,...tX.defaultKeymap,...tX.historyKeymap,...tX.foldKeymap]),(0,tX.placeholder)("Enter cell code..."),(0,tX.EditorView).contentAttributes.of({spellcheck:String(rj)}),tX.EditorView.lineWrapping,rc,(0,tX.EditorView).updateListener.of(e=>{e.docChanged&&e.view.dispatch((0,tX.setDiagnostics)(e.state,[]))}),W,(0,tX.EditorView).exceptionSink.of(e=>{L(e),console.error("EditorView exception!",e)})]}),parent:j.current});$.dom.CodeMirror={getValue:()=>rK($),setValue:e=>rZ($,e)},a&&setTimeout(()=>{let e=P.current;null!=e&&(e.dom.scrollIntoView({behavior:"smooth",block:"nearest"}),e.dispatch({selection:{anchor:e.state.doc.length,head:e.state.doc.length},effects:[(0,rI.LastFocusWasForcedEffect).of(!0)]}),e.focus())});let x=j.current.querySelector("div.cm-content");if(x){let e=new ResizeObserver(()=>{let e=x.children,t=(0,h.default).map(e,e=>e.offsetTop);_([...t.slice(1).map((e,n)=>e-t[n]),15])});return e.observe(x),()=>{e.unobserve(x)}}},[V]),(0,d.useEffect)(()=>{if(null==P.current)return;let e=P.current;e.dispatch((0,tX.setDiagnostics)(e.state,M))},[M]),(0,d.useEffect)(()=>{if(null==P.current)return;let e=rK(P.current)??"";(null!=B.current||""!==t||""===e)&&(B.current=t,e!==t&&rZ(P.current,t))},[t]),(0,d.useEffect)(()=>{let e=P.current;if(null!=e){if(null==r)e.dispatch({selection:{anchor:e.state.selection.main.head,head:e.state.selection.main.head}});else if(!0===r);else{let t={anchor:rX(e.state.doc,r[0]),head:rX(e.state.doc,r[1])};if(r[2]?.definition_of){let n=e.state.field(nG),a=n?.definitions.get(r[2]?.definition_of);a&&(t={anchor:a.from,head:a.to})}e.dom.scrollIntoView({behavior:"smooth",block:"nearest"}),e.focus(),e.dispatch({scrollIntoView:!0,selection:t,effects:[(0,tX.EditorView).scrollIntoView((0,tX.EditorSelection).range(t.anchor,t.head),{yMargin:80}),(0,rI.LastFocusWasForcedEffect).of(!0)]})}}},[r]),(0,d.html)` + + ${V&&i?(0,d.html)`<${r2} value=${t} />`:null} + <${r0} + on_delete=${c} + cell_id=${y} + run_cell=${s} + skip_as_script=${D} + running_disabled=${T} + any_logs=${w} + show_logs=${k} + set_show_logs=${E} + set_cell_disabled=${$} + /> + ${rJ} + + `},rJ=(0,d.html)`
👀 Reading hidden code
`,r0=({on_delete:e,cell_id:t,run_cell:n,skip_as_script:a,running_disabled:r,any_logs:o,show_logs:i,set_show_logs:l,set_cell_disabled:s})=>{let c,u;let p=(0,d.useRef)(null),m=(0,d.useContext)(S),[h,g]=(0,d.useState)(!1),f=(0,d.useRef)(null),_=(0,d.useRef)(null),b=(0,d.useRef)(null),y=e=>{e&&(b.current=document.activeElement),g(e)};(0,d.useLayoutEffect)(()=>{if(h)_.current?.querySelector("button")?.focus();else{let e=b.current;e instanceof HTMLElement&&e.focus()}},[h]);let v=async e=>{let n=!a;e.preventDefault(),await m.update_notebook(e=>{e.cell_inputs[t].metadata.skip_as_script=n})},w=async e=>{await s(!r)};return(0,ez.useEventListener)(window,"keydown",e=>{"Escape"===e.key&&y(!1)},[]),(0,d.html)` + +
{(_.current?.matches(":focus-within")||_.current?.contains(e.relatedTarget))&&e.relatedTarget!==_.current||y(!1)}} + > + ${h?(0,d.html)`
    {p.current&&clearTimeout(p.current)}}> + <${r1} tag="delete" contents="Delete cell" title="Delete cell" onClick=${e} setOpen=${y} /> + + <${r1} + title=${r?"Enable and run the cell":"Disable this cell, and all cells that depend on it"} + tag=${r?"enable_cell":"disable_cell"} + contents=${r?(0,d.html)`Enable cell`:(0,d.html)`Disable cell`} + onClick=${w} + setOpen=${y} + /> + ${o?(0,d.html)`<${r1} + title=${i?"Show cell logs":"Hide cell logs"} + tag=${i?"hide_logs":"show_logs"} + contents=${i?"Hide logs":"Show logs"} + onClick=${()=>l(!i)} + setOpen=${y} + />`:null} + ${(c=m.get_notebook(),(u=c?.cell_results?.[t])&&!u.errored&&!u.queued&&"text/plain"===u.output.mime&&u.output.body)?(0,d.html)`<${r1} + tag="copy_output" + contents="Copy output" + title="Copy the output of this cell to the clipboard." + onClick=${()=>{let e=m.get_notebook(),n=e?.cell_results?.[t]?.output.body??"";n&&navigator.clipboard.writeText(n).catch(e=>{alert("Error copying cell output")})}} + setOpen=${y} + />`:null} + + <${r1} + title=${a?"This cell is currently stored in the notebook file as a Julia comment. Click here to disable.":"Store this code in the notebook file as a Julia comment. This way, it will not run when the notebook runs as a script outside of Pluto."} + tag=${a?"run_as_script":"skip_as_script"} + contents=${a?(0,d.html)`Enable in file`:(0,d.html)`Disable in file`} + onClick=${v} + setOpen=${y} + /> +
`:(0,d.html)``} +
+ `},r1=({contents:e,title:t,onClick:n,setOpen:a,tag:r})=>(0,d.html)`
  • + +
  • `,r2=({value:e})=>{let t=e.split("\n").map((e,t)=>{let n=rl(e),a=0==n.length?e:(0,d.html)`${n}${e.substring(n.length)}`;return(0,d.html)`
    + ${0===e.length?(0,d.html)`
    `:a} +
    `});return(0,d.html)` +
    +
    + +
    + ${t} +
    +
    +
    + `};class r3{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function r4(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function r9(e,...t){let n=Object.create(null);for(let t in e)n[t]=e[t];return t.forEach(e=>{for(let t in e)n[t]=e[t]}),n}const r6=e=>!!e.scope;class r8{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=r4(e)}openNode(e){if(!r6(e))return;let t=((e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){let n=e.split(".");return[`${t}${n.shift()}`,...n.map((e,t)=>`${e}${"_".repeat(t+1)}`)].join(" ")}return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){r6(e)&&(this.buffer+="")}value(){return this.buffer}span(e){this.buffer+=``}}const r5=(e={})=>{let t={children:[]};return Object.assign(t,e),t};class r7{constructor(){this.rootNode=r5(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){let t=r5({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(e=>"string"==typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{r7._collapse(e)}))}}class oe extends r7{constructor(e){super(),this.options=e}addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){let n=e.root;t&&(n.scope="language:"+t),this.add(n)}toHTML(){return new r8(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function ot(e){return e?"string"==typeof e?e:e.source:null}function on(e){return oo("(?=",e,")")}function oa(e){return oo("(?:",e,")*")}function or(e){return oo("(?:",e,")?")}function oo(...e){return e.map(e=>ot(e)).join("")}function oi(...e){return"("+((e=>{let t=e[e.length-1];return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}})(e).capture?"":"?:")+e.map(e=>ot(e)).join("|")+")"}function ol(e){return RegExp(e.toString()+"|").exec("").length-1}const os=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function oc(e,{joinWith:t}){let n=0;return e.map(e=>{let t=n+=1,a=ot(e),r="";for(;a.length>0;){let e=os.exec(a);if(!e){r+=a;break}r+=a.substring(0,e.index),a=a.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+t):(r+=e[0],"("===e[0]&&n++)}return r}).map(e=>`(${e})`).join(t)}const ou="[a-zA-Z]\\w*",od="[a-zA-Z_]\\w*",op="\\b\\d+(\\.\\d+)?",om="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",oh="\\b(0b[01]+)",og={begin:"\\\\[\\s\\S]",relevance:0},of=(e,t,n={})=>{let a=r9({scope:"comment",begin:e,end:t,contains:[]},n);a.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let r=oi("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return a.contains.push({begin:oo(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),a},o_=of("//","$"),ob=of("/\\*","\\*/"),oy=of("#","$");var ov=Object.freeze({__proto__:null,APOS_STRING_MODE:{scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[og]},BACKSLASH_ESCAPE:og,BINARY_NUMBER_MODE:{scope:"number",begin:oh,relevance:0},BINARY_NUMBER_RE:oh,COMMENT:of,C_BLOCK_COMMENT_MODE:ob,C_LINE_COMMENT_MODE:o_,C_NUMBER_MODE:{scope:"number",begin:om,relevance:0},C_NUMBER_RE:om,END_SAME_AS_BEGIN:e=>Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}}),HASH_COMMENT_MODE:oy,IDENT_RE:ou,MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:{begin:"\\.\\s*"+od,relevance:0},NUMBER_MODE:{scope:"number",begin:op,relevance:0},NUMBER_RE:op,PHRASAL_WORDS_MODE:{begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},QUOTE_STRING_MODE:{scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[og]},REGEXP_MODE:{scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[og,{begin:/\[/,end:/\]/,relevance:0,contains:[og]}]},RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=oo(t,/.*\b/,e.binary,/\b.*/)),r9({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},TITLE_MODE:{scope:"title",begin:ou,relevance:0},UNDERSCORE_IDENT_RE:od,UNDERSCORE_TITLE_MODE:{scope:"title",begin:od,relevance:0}});function ow(e,t){"."===e.input[e.index-1]&&t.ignoreMatch()}function ok(e,t){void 0!==e.className&&(e.scope=e.className,delete e.className)}function oE(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=ow,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function o$(e,t){Array.isArray(e.illegal)&&(e.illegal=oi(...e.illegal))}function ox(e,t){if(e.match){if(e.begin||e.end)throw Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function oS(e,t){void 0===e.relevance&&(e.relevance=1)}const oN=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw Error("beforeMatch cannot be used with starts");let n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=oo(n.beforeMatch,on(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},oC=["of","and","for","in","not","or","if","then","parent","list","value"],oA={},oM=e=>{console.error(e)},oO=(e,...t)=>{console.log("WARN: "+e,...t)},oT=(e,t)=>{oA[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),oA[`${e}/${t}`]=!0)},oD=Error();function oR(e,t,{key:n}){let a=0,r=e[n],o={},i={};for(let e=1;e<=t.length;e++)i[e+a]=r[e],o[e+a]=!0,a+=ol(t[e-1]);e[n]=i,e[n]._emit=o,e[n]._multi=!0}function oL(e){e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,delete e.scope),"string"==typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope}),(e=>{if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw oM("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),oD;if("object"!=typeof e.beginScope||null===e.beginScope)throw oM("beginScope must be object"),oD;oR(e,e.begin,{key:"beginScope"}),e.begin=oc(e.begin,{joinWith:""})}})(e),(e=>{if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw oM("skip, excludeEnd, returnEnd not compatible with endScope: {}"),oD;if("object"!=typeof e.endScope||null===e.endScope)throw oM("endScope must be object"),oD;oR(e,e.end,{key:"endScope"}),e.end=oc(e.end,{joinWith:""})}})(e)}class oI extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const oP=Symbol("nomatch"),oj=e=>{let t=Object.create(null),n=Object.create(null),a=[],r=!0,o="Could not find the language '{}', did you forget to load/include a language module?",i={disableAutodetect:!0,name:"Plain text",contains:[]},l={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:oe};function s(e){return l.noHighlightRe.test(e)}function c(e,t,n){let a="",r="";"object"==typeof t?(a=e,n=t.ignoreIllegals,r=t.language):(oT("10.7.0","highlight(lang, code, ...args) has been deprecated."),oT("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),r=e,a=t),void 0===n&&(n=!0);let o={code:a,language:r};b("before:highlight",o);let i=o.result?o.result:u(o.language,o.code,n);return i.code=o.code,b("after:highlight",i),i}function u(e,n,a,i){let s=Object.create(null);function c(){if(!k.keywords)return void $.addText(x);let e=0;k.keywordPatternRe.lastIndex=0;let t=k.keywordPatternRe.exec(x),n="";for(;t;){n+=x.substring(e,t.index);let a=y.case_insensitive?t[0].toLowerCase():t[0],r=k.keywords[a];if(r){let[e,o]=r;if($.addText(n),n="",s[a]=(s[a]||0)+1,s[a]<=7&&(S+=o),e.startsWith("_"))n+=t[0];else{let n=y.classNameAliases[e]||e;m(t[0],n)}}else n+=t[0];e=k.keywordPatternRe.lastIndex,t=k.keywordPatternRe.exec(x)}n+=x.substring(e),$.addText(n)}function p(){null!=k.subLanguage?(()=>{if(""===x)return;let e=null;if("string"==typeof k.subLanguage){if(!t[k.subLanguage])return void $.addText(x);e=u(k.subLanguage,x,!0,E[k.subLanguage]),E[k.subLanguage]=e._top}else e=d(x,k.subLanguage.length?k.subLanguage:null);k.relevance>0&&(S+=e.relevance),$.__addSublanguage(e._emitter,e.language)})():c(),x=""}function m(e,t){""!==e&&($.startScope(t),$.addText(e),$.endScope())}function h(e,t){let n=1,a=t.length-1;for(;n<=a;){if(!e._emit[n]){n++;continue}let a=y.classNameAliases[e[n]]||e[n],r=t[n];a?m(r,a):(x=r,c(),x=""),n++}}function f(e,t){return e.scope&&"string"==typeof e.scope&&$.openNode(y.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(m(x,y.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),x=""):e.beginScope._multi&&(h(e.beginScope,t),x="")),k=Object.create(e,{parent:{value:k}})}let _={};function b(t,o){let i=o&&o[0];if(x+=t,null==i)return p(),0;if("begin"===_.type&&"end"===o.type&&_.index===o.index&&""===i){if(x+=n.slice(o.index,o.index+1),!r){let t=Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=_.rule,t}return 1}if(_=o,"begin"===o.type)return(e=>{let t=e[0],n=e.rule,a=new r3(n);for(let r of[n.__beforeBegin,n["on:begin"]])if(r&&(r(e,a),a.isMatchIgnored))return 0===k.matcher.regexIndex?(x+=t[0],1):(A=!0,0);return n.skip?x+=t:(n.excludeBegin&&(x+=t),p(),n.returnBegin||n.excludeBegin||(x=t)),f(n,e),n.returnBegin?0:t.length})(o);if("illegal"===o.type&&!a){let e=Error('Illegal lexeme "'+i+'" for mode "'+(k.scope||"")+'"');throw e.mode=k,e}if("end"===o.type){let e=function(e){let t=e[0],a=n.substring(e.index),r=function e(t,n,a){let r=((e,t)=>{let n=e&&e.exec(t);return n&&0===n.index})(t.endRe,a);if(r){if(t["on:end"]){let e=new r3(t);t["on:end"](n,e),e.isMatchIgnored&&(r=!1)}if(r){for(;t.endsParent&&t.parent;)t=t.parent;return t}}if(t.endsWithParent)return e(t.parent,n,a)}(k,e,a);if(!r)return oP;let o=k;k.endScope&&k.endScope._wrap?(p(),m(t,k.endScope._wrap)):k.endScope&&k.endScope._multi?(p(),h(k.endScope,e)):o.skip?x+=t:(o.returnEnd||o.excludeEnd||(x+=t),p(),o.excludeEnd&&(x=t));do k.scope&&$.closeNode(),k.skip||k.subLanguage||(S+=k.relevance),k=k.parent;while(k!==r.parent)return r.starts&&f(r.starts,e),o.returnEnd?0:t.length}(o);if(e!==oP)return e}if("illegal"===o.type&&""===i)return 1;if(C>1e5&&C>3*o.index)throw Error("potential infinite loop, way more iterations than matches");return x+=i,i.length}let y=g(e);if(!y)throw oM(o.replace("{}",e)),Error('Unknown language: "'+e+'"');let v=function(e){function t(t,n){return RegExp(ot(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=ol(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);let e=this.regexes.map(e=>e[1]);this.matcherRe=t(oc(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;let t=this.matcherRe.exec(e);if(!t)return null;let n=t.findIndex((e,t)=>t>0&&void 0!==e),a=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,a)}}class a{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];let t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){let t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition()){if(n&&n.index===this.lastIndex);else{let t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=r9(e.classNameAliases||{}),function n(r,o){if(r.isCompiled)return r;[ok,ox,oL,oN].forEach(e=>e(r,o)),e.compilerExtensions.forEach(e=>e(r,o)),r.__beforeBegin=null,[oE,o$,oS].forEach(e=>e(r,o)),r.isCompiled=!0;let i=null;return"object"==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),i=r.keywords.$pattern,delete r.keywords.$pattern),i=i||/\w+/,r.keywords&&(r.keywords=function e(t,n,a="keyword"){let r=Object.create(null);return"string"==typeof t?o(a,t.split(" ")):Array.isArray(t)?o(a,t):Object.keys(t).forEach(a=>{Object.assign(r,e(t[a],n,a))}),r;function o(e,t){n&&(t=t.map(e=>e.toLowerCase())),t.forEach(t=>{var n,a;let o=t.split("|");r[o[0]]=[e,(n=o[0],(a=o[1])?Number(a):oC.includes(n.toLowerCase())?0:1)]})}}(r.keywords,e.case_insensitive)),r.keywordPatternRe=t(i,!0),o&&(r.begin||(r.begin=/\B|\b/),r.beginRe=t(r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(r.endRe=t(r.end)),r.terminatorEnd=ot(r.end)||"",r.endsWithParent&&o.terminatorEnd&&(r.terminatorEnd+=(r.end?"|":"")+o.terminatorEnd)),r.illegal&&(r.illegalRe=t(r.illegal)),r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map(e=>{let t;return(t="self"===e?r:e).variants&&!t.cachedVariants&&(t.cachedVariants=t.variants.map(e=>r9(t,{variants:null},e))),t.cachedVariants?t.cachedVariants:!function e(t){return!!t&&(t.endsWithParent||e(t.starts))}(t)?Object.isFrozen(t)?r9(t):t:r9(t,{starts:t.starts?r9(t.starts):null})})),r.contains.forEach(e=>{n(e,r)}),r.starts&&n(r.starts,o),r.matcher=(e=>{let t=new a;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:"begin"})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(r),r}(e)}(y),w="",k=i||v,E={},$=new l.__emitter(l);(()=>{let e=[];for(let t=k;t!==y;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach(e=>$.openNode(e))})();let x="",S=0,N=0,C=0,A=!1;try{if(y.__emitTokens)y.__emitTokens(n,$);else{for(k.matcher.considerAll();;){C++,A?A=!1:k.matcher.considerAll(),k.matcher.lastIndex=N;let e=k.matcher.exec(n);if(!e)break;let t=b(n.substring(N,e.index),e);N=e.index+t}b(n.substring(N))}return $.finalize(),w=$.toHTML(),{language:e,value:w,relevance:S,illegal:!1,_emitter:$,_top:k}}catch(t){if(t.message&&t.message.includes("Illegal"))return{language:e,value:r4(n),illegal:!0,relevance:0,_illegalBy:{message:t.message,index:N,context:n.slice(N-100,N+100),mode:t.mode,resultSoFar:w},_emitter:$};if(r)return{language:e,value:r4(n),illegal:!1,relevance:0,errorRaised:t,_emitter:$,_top:k};throw t}}function d(e,n){n=n||l.languages||Object.keys(t);let a=(e=>{let t={value:r4(e),illegal:!1,relevance:0,_top:i,_emitter:new l.__emitter(l)};return t._emitter.addText(e),t})(e),r=n.filter(g).filter(_).map(t=>u(t,e,!1));r.unshift(a);let[o,s]=r.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(g(e.language).supersetOf===t.language)return 1;if(g(t.language).supersetOf===e.language)return -1}return 0});return o.secondBest=s,o}function p(e){let t=(e=>{let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";let n=l.languageDetectRe.exec(t);if(n){let t=g(n[1]);return t||(oO(o.replace("{}",n[1])),oO("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return t.split(/\s+/).find(e=>s(e)||g(e))})(e);if(s(t))return;if(b("before:highlightElement",{el:e,language:t}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e);if(e.children.length>0&&(l.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(e)),l.throwUnescapedHTML))throw new oI("One of your code blocks includes unescaped HTML.",e.innerHTML);let a=e.textContent,r=t?c(a,{language:t,ignoreIllegals:!0}):d(a);e.innerHTML=r.value,e.dataset.highlighted="yes",((e,t,a)=>{let r=t&&n[t]||a;e.classList.add("hljs"),e.classList.add("language-"+r)})(e,t,r.language),e.result={language:r.language,re:r.relevance,relevance:r.relevance},r.secondBest&&(e.secondBest={language:r.secondBest.language,relevance:r.secondBest.relevance}),b("after:highlightElement",{el:e,result:r,text:a})}let m=!1;function h(){"loading"!==document.readyState?document.querySelectorAll(l.cssSelector).forEach(p):m=!0}function g(e){return t[e=(e||"").toLowerCase()]||t[n[e]]}function f(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach(e=>{n[e.toLowerCase()]=t})}function _(e){let t=g(e);return t&&!t.disableAutodetect}function b(e,t){a.forEach(n=>{n[e]&&n[e](t)})}for(let o in"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",()=>{m&&h()},!1),Object.assign(e,{highlight:c,highlightAuto:d,highlightAll:h,highlightElement:p,highlightBlock:e=>(oT("10.7.0","highlightBlock will be removed entirely in v12.0"),oT("10.7.0","Please use highlightElement now."),p(e)),configure:e=>{l=r9(l,e)},initHighlighting:()=>{h(),oT("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},initHighlightingOnLoad:()=>{h(),oT("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")},registerLanguage:(n,a)=>{let o=null;try{o=a(e)}catch(e){if(oM("Language definition for '{}' could not be registered.".replace("{}",n)),!r)throw e;oM(e),o=i}o.name||(o.name=n),t[n]=o,o.rawDefinition=a.bind(null,e),o.aliases&&f(o.aliases,{languageName:n})},unregisterLanguage:e=>{for(let a of(delete t[e],Object.keys(n)))n[a]===e&&delete n[a]},listLanguages:()=>Object.keys(t),getLanguage:g,registerAliases:f,autoDetection:_,inherit:r9,addPlugin:e=>{var t;(t=e)["before:highlightBlock"]&&!t["before:highlightElement"]&&(t["before:highlightElement"]=e=>{t["before:highlightBlock"](Object.assign({block:e.el},e))}),t["after:highlightBlock"]&&!t["after:highlightElement"]&&(t["after:highlightElement"]=e=>{t["after:highlightBlock"](Object.assign({block:e.el},e))}),a.push(e)},removePlugin:e=>{let t=a.indexOf(e);-1!==t&&a.splice(t,1)}}),e.debugMode=()=>{r=!1},e.safeMode=()=>{r=!0},e.versionString="11.9.0",e.regex={concat:oo,lookahead:on,either:oi,optional:or,anyNumberOfTimes:oa},ov)"object"==typeof ov[o]&&/*! + Highlight.js v11.9.0 (git: f47103d4f1) + (c) 2006-2023 undefined and other contributors + License: BSD-3-Clause + */function e(t){return t instanceof Map?t.clear=t.delete=t.set=()=>{throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{throw Error("set is read-only")}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach(n=>{let a=t[n],r=typeof a;"object"!==r&&"function"!==r||Object.isFrozen(a)||e(a)}),t}(ov[o]);return Object.assign(e,ov),e},oB=oj({});oB.newInstance=()=>oj({});const oU=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),oF=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],oz=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],oq=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],oH=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],oW=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse(),oG=oq.concat(oH);var oK="[0-9](_*[0-9])*",oZ=`\\.(${oK})`,oV="[0-9a-fA-F](_*[0-9a-fA-F])*",oQ={className:"number",variants:[{begin:`(\\b(${oK})((${oZ})|\\.)?|(${oZ}))[eE][+-]?(${oK})[fFdD]?\\b`},{begin:`\\b(${oK})((${oZ})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${oZ})[fFdD]?\\b`},{begin:`\\b(${oK})[fFdD]\\b`},{begin:`\\b0[xX]((${oV})\\.?|(${oV})?\\.(${oV}))[pP][+-]?(${oK})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${oV})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};const oX="[A-Za-z$_][0-9A-Za-z$_]*",oY=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],oJ=["true","false","null","undefined","NaN","Infinity"],o0=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],o1=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],o2=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],o3=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],o4=[].concat(o2,o0,o1);function o9(e){var t;let n=e.regex,a=/<[A-Za-z0-9\\._:-]+/,r=/\/[A-Za-z0-9\\._:-]+>|\/>/,o={$pattern:oX,keyword:oY,literal:oJ,built_in:o4,"variable.language":o3},i="[0-9](_?[0-9])*",l=`\\.(${i})`,s="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",c={className:"number",variants:[{begin:`(\\b(${s})((${l})|\\.)?|(${l}))[eE][+-]?(${i})\\b`},{begin:`\\b(${s})\\b((${l})\\b|\\.)?|(${l})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},u={className:"subst",begin:"\\$\\{",end:"\\}",keywords:o,contains:[]},d={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"xml"}},p={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"css"}},m={begin:"gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"graphql"}},h={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,u]},g={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:oX+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},f=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,d,p,m,h,{match:/\$\d+/},c];u.contains=f.concat({begin:/\{/,end:/\}/,keywords:o,contains:["self"].concat(f)});let _=[].concat(g,u.contains),b=_.concat([{begin:/\(/,end:/\)/,keywords:o,contains:["self"].concat(_)}]),y={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,contains:b},v={variants:[{match:[/class/,/\s+/,oX,/\s+/,/extends/,/\s+/,n.concat(oX,"(",n.concat(/\./,oX),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,oX],scope:{1:"keyword",3:"title.class"}}]},w={relevance:0,match:n.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...o0,...o1]}},k={match:n.concat(/\b/,(t=[...o2,"super","import"],n.concat("(?!",t.join("|"),")")),oX,n.lookahead(/\(/)),className:"title.function",relevance:0},E={begin:n.concat(/\./,n.lookahead(n.concat(oX,/(?![0-9A-Za-z$_(])/))),end:oX,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},$="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",x={match:[/const|var|let/,/\s+/,oX,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead($)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[y]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:o,exports:{PARAMS_CONTAINS:b,CLASS_REFERENCE:w},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,d,p,m,h,g,{match:/\$\d+/},c,w,{className:"attr",begin:oX+n.lookahead(":"),relevance:0},x,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[g,e.REGEXP_MODE,{className:"function",begin:$,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,contains:b}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:"<>",end:""},{match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:a,"on:begin":(e,t)=>{let n;let a=e[0].length+e.index,r=e.input[a];if("<"===r||","===r)return void t.ignoreMatch();">"===r&&(((e,{after:t})=>{let n="oo(/\b/,e,/\w$/.test(e)?/\b/:/\B/),o8=["Protocol","Type"].map(o6),o5=["init","self"].map(o6),o7=["Any","Self"],ie=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],it=["false","nil","true"],ia=["assignment","associativity","higherThan","left","lowerThan","none","right"],ir=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],io=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],ii=oi(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),il=oi(ii,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),is=oo(ii,il,"*"),ic=oi(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),iu=oi(ic,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),id=oo(ic,iu,"*"),ip=oo(/[A-Z]/,iu,"*"),im=["attached","autoclosure",oo(/convention\(/,oi("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",oo(/objc\(/,id,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],ih=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];var ig=Object.freeze({__proto__:null,grmr_bash:e=>{let t=e.regex,n={};Object.assign(n,{className:"variable",variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},{begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]}]});let a={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},r={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},o={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,a]};a.contains.push(o);let i={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,n]},l=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10}),s={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:["if","then","else","elif","fi","for","while","until","in","do","done","case","esac","function","select"],literal:["true","false"],built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"]},contains:[l,e.SHEBANG(),s,i,e.HASH_COMMENT_MODE,r,{match:/(\/[a-z._-]+)+/},o,{match:/\\"/},{className:"string",begin:/'/,end:/'/},{match:/\\'/},n]}},grmr_c:e=>{let t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),a="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",o="("+a+"|"+t.optional(r)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",i={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},l={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},s={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(l,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},u={className:"title",begin:t.optional(r)+e.IDENT_RE,relevance:0},d=t.optional(r)+e.IDENT_RE+"\\s*\\(",p={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},m=[c,i,n,e.C_BLOCK_COMMENT_MODE,s,l],h={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:p,contains:m.concat([{begin:/\(/,end:/\)/,keywords:p,contains:m.concat(["self"]),relevance:0}]),relevance:0},g={begin:"("+o+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:p,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:p,relevance:0},{begin:d,returnBegin:!0,contains:[e.inherit(u,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:p,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,l,s,i,{begin:/\(/,end:/\)/,keywords:p,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,l,s,i]}]},i,n,e.C_BLOCK_COMMENT_MODE,c]};return{name:"C",aliases:["h"],keywords:p,disableAutodetect:!0,illegal:"=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:c,strings:l,keywords:p}}},grmr_cpp:e=>{let t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),a="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",o="(?!struct)("+a+"|"+t.optional(r)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",i={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},l={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},s={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(l,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},u={className:"title",begin:t.optional(r)+e.IDENT_RE,relevance:0},d=t.optional(r)+e.IDENT_RE+"\\s*\\(",p={type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"]},m={className:"function.dispatch",relevance:0,keywords:{_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"]},begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))},h=[m,c,i,n,e.C_BLOCK_COMMENT_MODE,s,l],g={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:p,contains:h.concat([{begin:/\(/,end:/\)/,keywords:p,contains:h.concat(["self"]),relevance:0}]),relevance:0},f={className:"function",begin:"("+o+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:p,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:p,relevance:0},{begin:d,returnBegin:!0,contains:[u],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[l,s]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:p,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,l,s,i,{begin:/\(/,end:/\)/,keywords:p,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,l,s,i]}]},i,n,e.C_BLOCK_COMMENT_MODE,c]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:p,illegal:"",keywords:p,contains:["self",i]},{begin:e.IDENT_RE+"::",keywords:p},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}},grmr_csharp:e=>{let t={keyword:["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]),built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],literal:["default","false","null","true"]},n=e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),a={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},r={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},o=e.inherit(r,{illegal:/\n/}),i={className:"subst",begin:/\{/,end:/\}/,keywords:t},l=e.inherit(i,{illegal:/\n/}),s={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},e.BACKSLASH_ESCAPE,l]},c={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},i]},u=e.inherit(c,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]});i.contains=[c,s,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE],l.contains=[u,s,o,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];let d={variants:[c,s,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},p={begin:"<",end:">",contains:[{beginKeywords:"in out"},n]},m=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",h={begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:""},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},d,a,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},n,p,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[n,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[n,p,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+m+"\\s+)+"+e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:t,contains:[{beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial",relevance:0},{begin:e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[e.TITLE_MODE,p],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[d,a,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},h]}},grmr_css:e=>{let t=e.regex,n=oU(e),a=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+oq.join("|")+")"},{begin:":(:)?("+oH.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+oW.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...a,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...a,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:oz.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...a,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+oF.join("|")+")\\b"}]}},grmr_diff:e=>{let t=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:t.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:t.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}},grmr_go:e=>{let t={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:t,illegal:"{let t=e.regex;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:t.concat(/[_A-Za-z][_0-9A-Za-z]*/,t.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}},grmr_ini:e=>{let t=e.regex,n={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},a=e.COMMENT();a.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];let r={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},o={className:"literal",begin:/\bon|off|true|false|yes|no\b/},i={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},l=t.either(/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/);return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[a,{className:"section",begin:/\[+/,end:/\]+/},{begin:t.concat(l,"(\\s*\\.\\s*",l,")*",t.lookahead(/\s*=\s*[^#\s]/)),className:"attr",starts:{end:/$/,contains:[a,{begin:/\[/,end:/\]/,contains:[a,o,r,i,n,"self"],relevance:0},o,r,i,n]}}]}},grmr_java:e=>{let t=e.regex,n="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",a=n+function e(t,n,a){return -1===a?"":t.replace(n,r=>e(t,n,a-1))}("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),r={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},o={className:"meta",begin:"@"+n,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},i={className:"params",begin:/\(/,end:/\)/,keywords:r,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:r,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[t.concat(/(?!else)/,n),/\s+/,n,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,n],className:{1:"keyword",3:"title.class"},contains:[i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+a+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:r,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:r,relevance:0,contains:[o,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,oQ,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},oQ,o]}},grmr_javascript:o9,grmr_json:e=>{let t=["true","false","null"],n={scope:"literal",beginKeywords:t.join(" ")};return{name:"JSON",keywords:{literal:t},contains:[{className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{match:/[{}[\],:]/,className:"punctuation",relevance:0},e.QUOTE_STRING_MODE,n,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}},grmr_kotlin:e=>{let t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},n={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},a={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},r={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},o={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[r,a]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,r,a]}]};a.contains.push(o);let i={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},l={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(o,{className:"string"}),"self"]}]},s=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),c={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]};return c.variants[1].contains=[c],c.variants[1].contains=[c],{name:"Kotlin",aliases:["kt","kts"],keywords:t,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,s,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},n,i,l,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:t,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin://,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[c,e.C_LINE_COMMENT_MODE,s],relevance:0},e.C_LINE_COMMENT_MODE,s,i,l,o,e.C_NUMBER_MODE]},s]},{begin:[/class|interface|trait/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},i,l]},o,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},oQ]}},grmr_less:e=>{let t=oU(e),n="[\\w-]+",a="("+n+"|@\\{"+n+"\\})",r=[],o=[],i=e=>({className:"string",begin:"~?"+e+".*?"+e}),l=(e,t,n)=>({className:e,begin:t,relevance:n}),s={$pattern:/[a-z-]+/,keyword:"and or not only",attribute:oz.join(" ")};o.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i("'"),i('"'),t.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},t.HEXCOLOR,{begin:"\\(",end:"\\)",contains:o,keywords:s,relevance:0},l("variable","@@?"+n,10),l("variable","@\\{"+n+"\\}"),l("built_in","~?`[^`]*?`"),{className:"attribute",begin:n+"\\s*:",end:":",returnBegin:!0,excludeEnd:!0},t.IMPORTANT,{beginKeywords:"and not"},t.FUNCTION_DISPATCH);let c=o.concat({begin:/\{/,end:/\}/,contains:r}),u={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(o)},d={begin:a+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+oW.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:o}}]},p={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:a,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,u,l("keyword","all\\b"),l("variable","@\\{"+n+"\\}"),{begin:"\\b("+oF.join("|")+")\\b",className:"selector-tag"},t.CSS_NUMBER_MODE,l("selector-tag",a,0),l("selector-id","#"+a),l("selector-class","\\."+a,0),l("selector-tag","&",0),t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+oq.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+oH.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:c},{begin:"!important"},t.FUNCTION_DISPATCH]},m={begin:n+":(:)?"+`(${oG.join("|")})`,returnBegin:!0,contains:[p]};return r.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:s,returnEnd:!0,contains:o,relevance:0}},{className:"variable",variants:[{begin:"@"+n+"\\s*:",relevance:15},{begin:"@"+n}],starts:{end:"[;}]",returnEnd:!0,contains:c}},m,d,p,u,t.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:r}},grmr_lua:e=>{let t="\\[=*\\[",n="\\]=*\\]",a={begin:t,end:n,contains:["self"]},r=[e.COMMENT("--(?!"+t+")","$"),e.COMMENT("--"+t,n,{contains:[a],relevance:10})];return{name:"Lua",keywords:{$pattern:e.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:r.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:r}].concat(r)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:t,end:n,contains:[a],relevance:5}])}},grmr_makefile:e=>{let t={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%{let t={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},n={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},a={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},r={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},o=e.inherit(a,{contains:[]}),i=e.inherit(r,{contains:[]});a.contains.push(i),r.contains.push(o);let l=[t,n];return[a,r,o,i].forEach(e=>{e.contains=e.contains.concat(l)}),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:l=l.concat(a,r)},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:l}]}]},t,{className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},a,r,{className:"quote",begin:"^>\\s+",contains:l,end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},n,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}},grmr_objectivec:e=>{let t=/[a-zA-Z@][a-zA-Z0-9_]*/,n={$pattern:t,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:{"variable.language":["this","super"],$pattern:t,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},illegal:"/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+n.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:n,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}},grmr_perl:e=>{let t=e.regex,n=/[dualxmsipngr]{0,12}/,a={$pattern:/[\w.]+/,keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0"},r={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:a},o={begin:/->\{/,end:/\}/},i={variants:[{begin:/\$\d/},{begin:t.concat(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@][^\s\w{]/,relevance:0}]},l=[e.BACKSLASH_ESCAPE,r,i],s=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],c=(e,a,r="\\1")=>{let o="\\1"===r?r:t.concat(r,a);return t.concat(t.concat("(?:",e,")"),a,/(?:\\.|[^\\\/])*?/,o,/(?:\\.|[^\\\/])*?/,r,n)},u=(e,a,r)=>t.concat(t.concat("(?:",e,")"),a,/(?:\\.|[^\\\/])*?/,r,n),d=[i,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),o,{className:"string",contains:l,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:c("s|tr|y",t.either(...s,{capture:!0}))},{begin:c("s|tr|y","\\(","\\)")},{begin:c("s|tr|y","\\[","\\]")},{begin:c("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:u("(?:m|qr)?",/\//,/\//)},{begin:u("m|qr",t.either(...s,{capture:!0}),/\1/)},{begin:u("m|qr",/\(/,/\)/)},{begin:u("m|qr",/\[/,/\]/)},{begin:u("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return r.contains=d,o.contains=d,{name:"Perl",aliases:["pl","pm"],keywords:a,contains:d}},grmr_php:e=>{let t=e.regex,n=/(?![A-Za-z0-9])(?![$])/,a=t.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,n),r=t.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,n),o={scope:"variable",match:"\\$+"+a},i={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},l=e.inherit(e.APOS_STRING_MODE,{illegal:null}),s="[ \n]",c={scope:"string",variants:[e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(i)}),l,{begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(i),"on:begin":(e,t)=>{t.data._beginMatch=e[1]||e[2]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}},e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/})]},u={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},d=["false","null","true"],p=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],m=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],h={keyword:p,literal:(e=>{let t=[];return e.forEach(e=>{t.push(e),e.toLowerCase()===e?t.push(e.toUpperCase()):t.push(e.toLowerCase())}),t})(d),built_in:m},g=e=>e.map(e=>e.replace(/\|\d+$/,"")),f={variants:[{match:[/new/,t.concat(s,"+"),t.concat("(?!",g(m).join("\\b|"),"\\b)"),r],scope:{1:"keyword",4:"title.class"}}]},_=t.concat(a,"\\b(?!\\()"),b={variants:[{match:[t.concat(/::/,t.lookahead(/(?!class\b)/)),_],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[r,t.concat(/::/,t.lookahead(/(?!class\b)/)),_],scope:{1:"title.class",3:"variable.constant"}},{match:[r,t.concat("::",t.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[r,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},y={scope:"attr",match:t.concat(a,t.lookahead(":"),t.lookahead(/(?!::)/))},v={relevance:0,begin:/\(/,end:/\)/,keywords:h,contains:[y,o,b,e.C_BLOCK_COMMENT_MODE,c,u,f]},w={relevance:0,match:[/\b/,t.concat("(?!fn\\b|function\\b|",g(p).join("\\b|"),"|",g(m).join("\\b|"),"\\b)"),a,t.concat(s,"*"),t.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[v]};v.contains.push(w);let k=[y,b,e.C_BLOCK_COMMENT_MODE,c,u,f];return{case_insensitive:!1,keywords:h,contains:[{begin:t.concat(/#\[\s*/,r),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:d,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:d,keyword:["new","array"]},contains:["self",...k]},...k,{scope:"meta",match:r}]},e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},{scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},{scope:"variable.language",match:/\$this\b/},o,w,b,{match:[/const/,/\s/,a],scope:{1:"keyword",3:"variable.constant"}},f,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:h,contains:["self",o,b,e.C_BLOCK_COMMENT_MODE,c,u]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},c,u]}},grmr_php_template:e=>({name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}),grmr_plaintext:e=>({name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}),grmr_python:e=>{let t=e.regex,n=/[\p{XID_Start}_]\p{XID_Continue}*/u,a=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],r={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:a,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},o={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:r,illegal:/#/},l={begin:/\{\{/,relevance:0},s={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,o],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,o],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,o,l,i]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,o,l,i]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,l,i]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,l,i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},c="[0-9](_?[0-9])*",u=`(\\b(${c}))?\\.(${c})|\\b(${c})\\.`,d="\\b|"+a.join("|"),p={className:"number",relevance:0,variants:[{begin:`(\\b(${c})|(${u}))[eE][+-]?(${c})[jJ]?(?=${d})`},{begin:`(${u})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${d})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${d})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${d})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})`},{begin:`\\b(${c})[jJ](?=${d})`}]},m={className:"comment",begin:t.lookahead(/# type:/),end:/$/,keywords:r,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},h={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:r,contains:["self",o,p,s,e.HASH_COMMENT_MODE]}]};return i.contains=[s,p,o],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:r,illegal:/(<\/|\?)|=>/,contains:[o,p,{begin:/\bself\b/},{beginKeywords:"if",relevance:0},s,m,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[h]},{variants:[{match:[/\bclass/,/\s+/,n,/\s*/,/\(\s*/,n,/\s*\)/]},{match:[/\bclass/,/\s+/,n]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[p,h,s]}]}},grmr_python_repl:e=>({aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}),grmr_r:e=>{let t=e.regex,n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,a=t.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),r=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,o=t.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:n,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[e.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:t.lookahead(t.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:n},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),e.HASH_COMMENT_MODE,{scope:"string",contains:[e.BACKSLASH_ESCAPE],variants:[e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[r,a]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,a]},{scope:{1:"punctuation",2:"number"},match:[o,a]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,a]}]},{scope:{3:"operator"},match:[n,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:r},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:o},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}},grmr_ruby:e=>{let t=e.regex,n="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",a=t.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),r=t.concat(a,/(::\w+)*/),o={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield","include","extend","prepend","public","private","protected","raise","throw"],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},i={className:"doctag",begin:"@[A-Za-z]+"},l={begin:"#<",end:">"},s=[e.COMMENT("#","$",{contains:[i]}),e.COMMENT("^=begin","^=end",{contains:[i],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],c={className:"subst",begin:/#\{/,end:/\}/,keywords:o},u={className:"string",contains:[e.BACKSLASH_ESCAPE,c],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:t.concat(/<<[-~]?'?/,t.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,c]})]}]},d="[0-9](_?[0-9])*",p={className:"number",relevance:0,variants:[{begin:`\\b([1-9](_?[0-9])*|0)(\\.(${d}))?([eE][+-]?(${d})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},m={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:o}]},h=[u,{variants:[{match:[/class\s+/,r,/\s+<\s+/,r]},{match:[/\b(class|module)\s+/,r]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:o},{match:[/(include|extend)\s+/,r],scope:{2:"title.class"},keywords:o},{relevance:0,match:[r,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:a,scope:"title.class"},{match:[/def/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[m]},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[u,{begin:n}],relevance:0},p,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:o},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,c],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(l,s),relevance:0}].concat(l,s);c.contains=h,m.contains=h;let g=[{begin:/^\s*=>/,starts:{end:"$",contains:h}},{className:"meta.prompt",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])",starts:{end:"$",keywords:o,contains:h}}];return s.unshift(l),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:o,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(g).concat(s).concat(h)}},grmr_rust:e=>{let t=e.regex,n={className:"title.function.invoke",relevance:0,begin:t.concat(/\b/,/(?!let|for|while|if|else|match\b)/,e.IDENT_RE,t.lookahead(/\s*\(/))},a="([ui](8|16|32|64|128|size)|f(32|64))?",r=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],o=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:o,keyword:["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","unsafe","unsized","use","virtual","where","while","yield"],literal:["true","false","Some","None","Ok","Err"],built_in:r},illegal:""},n]}},grmr_scss:e=>{let t=oU(e),n="@[a-z-]+",a={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+oF.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+oq.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+oH.join("|")+")"},a,{begin:/\(/,end:/\)/,contains:[t.CSS_NUMBER_MODE]},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+oW.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[t.BLOCK_COMMENT,a,t.HEXCOLOR,t.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,t.IMPORTANT,t.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:n,keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:oz.join(" ")},contains:[{begin:n,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},a,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,t.HEXCOLOR,t.CSS_NUMBER_MODE]},t.FUNCTION_DISPATCH]}},grmr_shell:e=>({name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}),grmr_sql:e=>{let t=e.regex,n=e.COMMENT("--","$"),a=["true","false","unknown"],r=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],o=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],i=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter(e=>!o.includes(e)),s={begin:t.concat(/\b/,t.either(...o),/\s*\(/),relevance:0,keywords:{built_in:o}};return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:((e,{exceptions:t,when:n}={})=>(t=t||[],e.map(e=>e.match(/\|\d+$/)||t.includes(e)?e:n(e)?e+"|0":e)))(l,{when:e=>e.length<3}),literal:a,type:r,built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"]},contains:[{begin:t.either(...i),relevance:0,keywords:{$pattern:/[\w\.]+/,keyword:l.concat(i),literal:a,type:r}},{className:"type",begin:t.either("double precision","large object","with timezone","without timezone")},s,{className:"variable",begin:/@[a-z0-9][a-z0-9_]*/},{className:"string",variants:[{begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,{className:"operator",begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}},grmr_swift:e=>{let t={match:/\s+/,relevance:0},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),a=[e.C_LINE_COMMENT_MODE,n],r={match:[/\./,oi(...o8,...o5)],className:{2:"keyword"}},o={match:oo(/\./,oi(...ie)),relevance:0},i=ie.filter(e=>"string"==typeof e).concat(["_|0"]),l={variants:[{className:"keyword",match:oi(...ie.filter(e=>"string"!=typeof e).concat(o7).map(o6),...o5)}]},s={$pattern:oi(/\b\w+/,/#\w+/),keyword:i.concat(ir),literal:it},c=[r,o,l],u=[{match:oo(/\./,oi(...io)),relevance:0},{className:"built_in",match:oo(/\b/,oi(...io),/(?=\()/)}],d={match:/->/,relevance:0},p=[d,{className:"operator",relevance:0,variants:[{match:is},{match:`\\.(\\.|${il})+`}]}],m="([0-9]_*)+",h="([0-9a-fA-F]_*)+",g={className:"number",relevance:0,variants:[{match:`\\b(${m})(\\.(${m}))?([eE][+-]?(${m}))?\\b`},{match:`\\b0x(${h})(\\.(${h}))?([pP][+-]?(${m}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},f=(e="")=>({className:"subst",variants:[{match:oo(/\\/,e,/[0\\tnr"']/)},{match:oo(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),_=(e="")=>({className:"subst",match:oo(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),b=(e="")=>({className:"subst",label:"interpol",begin:oo(/\\/,e,/\(/),end:/\)/}),y=(e="")=>({begin:oo(e,/"""/),end:oo(/"""/,e),contains:[f(e),_(e),b(e)]}),v=(e="")=>({begin:oo(e,/"/),end:oo(/"/,e),contains:[f(e),b(e)]}),w={className:"string",variants:[y(),y("#"),y("##"),y("###"),v(),v("#"),v("##"),v("###")]},k=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}],E=e=>{let t=oo(e,/\//),n=oo(/\//,e);return{begin:t,end:n,contains:[...k,{scope:"comment",begin:`#(?!.*${n})`,end:/$/}]}},$={scope:"regexp",variants:[E("###"),E("##"),E("#"),{begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:k}]},x={match:oo(/`/,id,/`/)},S=[x,{className:"variable",match:/\$\d+/},{className:"variable",match:`\\$${iu}+`}],N=[{match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:ih,contains:[...p,g,w]}]}},{scope:"keyword",match:oo(/@/,oi(...im))},{scope:"meta",match:oo(/@/,id)}],C={match:on(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:oo(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,iu,"+")},{className:"type",match:ip,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:oo(/\s+&\s+/,on(ip)),relevance:0}]},A={begin://,keywords:s,contains:[...a,...c,...N,d,C]};C.contains.push(A);let M={begin:/\(/,end:/\)/,relevance:0,keywords:s,contains:["self",{match:oo(id,/\s*:/),keywords:"_|0",relevance:0},...a,$,...c,...u,...p,g,w,...S,...N,C]},O={begin://,keywords:"repeat each",contains:[...a,C]},T={begin:/\(/,end:/\)/,keywords:s,contains:[{begin:oi(on(oo(id,/\s*:/)),on(oo(id,/\s+/,id,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:id}]},...a,...c,...p,g,w,...N,C,M],endsParent:!0,illegal:/["']/},D={match:[/(func|macro)/,/\s+/,oi(x.match,id,is)],className:{1:"keyword",3:"title.function"},contains:[O,T,t],illegal:[/\[/,/%/]},R={begin:[/precedencegroup/,/\s+/,ip],className:{1:"keyword",3:"title"},contains:[C],keywords:[...ia,...it],end:/}/};for(let e of w.variants){let t=e.contains.find(e=>"interpol"===e.label);t.keywords=s;let n=[...c,...u,...p,g,w,...S];t.contains=[...n,{begin:/\(/,end:/\)/,contains:["self",...n]}]}return{name:"Swift",keywords:s,contains:[...a,D,{match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[O,T,t],illegal:/\[|%/},{beginKeywords:"struct protocol class extension enum actor",end:"\\{",excludeEnd:!0,keywords:s,contains:[e.inherit(e.TITLE_MODE,{className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),...c]},{match:[/operator/,/\s+/,is],className:{1:"keyword",3:"title"}},R,{beginKeywords:"import",end:/$/,contains:[...a],relevance:0},$,...c,...u,...p,g,w,...S,...N,C,M]}},grmr_typescript:e=>{let t=o9(e),n=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],a={beginKeywords:"namespace",end:/\{/,excludeEnd:!0,contains:[t.exports.CLASS_REFERENCE]},r={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:n},contains:[t.exports.CLASS_REFERENCE]},o={$pattern:oX,keyword:oY.concat(["type","namespace","interface","public","private","protected","implements","declare","abstract","readonly","enum","override"]),literal:oJ,built_in:o4.concat(n),"variable.language":o3},i={className:"meta",begin:"@"+oX},l=(e,t,n)=>{let a=e.contains.findIndex(e=>e.label===t);if(-1===a)throw Error("can not find mode to replace");e.contains.splice(a,1,n)};return Object.assign(t.keywords,o),t.exports.PARAMS_CONTAINS.push(i),t.contains=t.contains.concat([i,a,r]),l(t,"shebang",e.SHEBANG()),l(t,"use_strict",{className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/}),t.contains.find(e=>"func.def"===e.label).relevance=0,Object.assign(t,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),t},grmr_vbnet:e=>{let t=e.regex,n=/\d{1,2}\/\d{1,2}\/\d{4}/,a=/\d{4}-\d{1,2}-\d{1,2}/,r=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,o=/\d{1,2}(:\d{1,2}){1,2}/,i={className:"literal",variants:[{begin:t.concat(/# */,t.either(a,n),/ *#/)},{begin:t.concat(/# */,o,/ *#/)},{begin:t.concat(/# */,r,/ *#/)},{begin:t.concat(/# */,t.either(a,n),/ +/,t.either(r,o),/ *#/)}]},l=e.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),s=e.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[{className:"string",begin:/"(""|[^/n])"C\b/},{className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},i,{className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{className:"label",begin:/^\w+:/},l,s,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[s]}]}},grmr_wasm:e=>{e.regex;let t=e.COMMENT(/\(;/,/;\)/);return t.contains.push("self"),{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"]},contains:[e.COMMENT(/;;/,/$/),t,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},{className:"variable",begin:/\$[\w_]+/},{match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},{begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},e.QUOTE_STRING_MODE,{match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},{className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/},{className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/}]}},grmr_xml:e=>{let t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),a={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},o=e.inherit(r,{begin:/\(/,end:/\)/}),i=e.inherit(e.APOS_STRING_MODE,{className:"string"}),l=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),s={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[r,l,i,o,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[r,o,l,i]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},a,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[l]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[s],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[s],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:t.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:s}]},{className:"tag",begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}},grmr_yaml:e=>{let t="true false yes no null",n="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},r=e.inherit(a,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),o={end:",",endsWithParent:!0,excludeEnd:!0,keywords:t,relevance:0},i=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ ]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ ]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ ]|$)"}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+n},{className:"type",begin:"!<"+n+">"},{className:"type",begin:"!"+n},{className:"type",begin:"!!"+n},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:t,keywords:{literal:t}},{className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},{begin:/\{/,end:/\}/,contains:[o],illegal:"\\n",relevance:0},{begin:"\\[",end:"\\]",contains:[o],illegal:"\\n",relevance:0},a],l=[...i];return l.pop(),l.push(r),o.contains=l,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:i}}});for(const e of Object.keys(ig)){let t=e.replace("grmr_","").replace("_","-");oB.registerLanguage(t,ig[e])}oB.registerLanguage("julia",e=>{let t="[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*",n={$pattern:t,keyword:["baremodule","begin","break","catch","ccall","const","continue","do","else","elseif","end","export","false","finally","for","function","global","if","import","in","isa","let","local","macro","module","quote","return","true","try","using","where","while"],literal:["ARGS","C_NULL","DEPOT_PATH","ENDIAN_BOM","ENV","Inf","Inf16","Inf32","Inf64","InsertionSort","LOAD_PATH","MergeSort","NaN","NaN16","NaN32","NaN64","PROGRAM_FILE","QuickSort","RoundDown","RoundFromZero","RoundNearest","RoundNearestTiesAway","RoundNearestTiesUp","RoundToZero","RoundUp","VERSION|0","devnull","false","im","missing","nothing","pi","stderr","stdin","stdout","true","undef","π","ℯ"],built_in:["AbstractArray","AbstractChannel","AbstractChar","AbstractDict","AbstractDisplay","AbstractFloat","AbstractIrrational","AbstractMatrix","AbstractRange","AbstractSet","AbstractString","AbstractUnitRange","AbstractVecOrMat","AbstractVector","Any","ArgumentError","Array","AssertionError","BigFloat","BigInt","BitArray","BitMatrix","BitSet","BitVector","Bool","BoundsError","CapturedException","CartesianIndex","CartesianIndices","Cchar","Cdouble","Cfloat","Channel","Char","Cint","Cintmax_t","Clong","Clonglong","Cmd","Colon","Complex","ComplexF16","ComplexF32","ComplexF64","CompositeException","Condition","Cptrdiff_t","Cshort","Csize_t","Cssize_t","Cstring","Cuchar","Cuint","Cuintmax_t","Culong","Culonglong","Cushort","Cvoid","Cwchar_t","Cwstring","DataType","DenseArray","DenseMatrix","DenseVecOrMat","DenseVector","Dict","DimensionMismatch","Dims","DivideError","DomainError","EOFError","Enum","ErrorException","Exception","ExponentialBackOff","Expr","Float16","Float32","Float64","Function","GlobalRef","HTML","IO","IOBuffer","IOContext","IOStream","IdDict","IndexCartesian","IndexLinear","IndexStyle","InexactError","InitError","Int","Int128","Int16","Int32","Int64","Int8","Integer","InterruptException","InvalidStateException","Irrational","KeyError","LinRange","LineNumberNode","LinearIndices","LoadError","MIME","Matrix","Method","MethodError","Missing","MissingException","Module","NTuple","NamedTuple","Nothing","Number","OrdinalRange","OutOfMemoryError","OverflowError","Pair","PartialQuickSort","PermutedDimsArray","Pipe","ProcessFailedException","Ptr","QuoteNode","Rational","RawFD","ReadOnlyMemoryError","Real","ReentrantLock","Ref","Regex","RegexMatch","RoundingMode","SegmentationFault","Set","Signed","Some","StackOverflowError","StepRange","StepRangeLen","StridedArray","StridedMatrix","StridedVecOrMat","StridedVector","String","StringIndexError","SubArray","SubString","SubstitutionString","Symbol","SystemError","Task","TaskFailedException","Text","TextDisplay","Timer","Tuple","Type","TypeError","TypeVar","UInt","UInt128","UInt16","UInt32","UInt64","UInt8","UndefInitializer","UndefKeywordError","UndefRefError","UndefVarError","Union","UnionAll","UnitRange","Unsigned","Val","Vararg","VecElement","VecOrMat","Vector","VersionNumber","WeakKeyDict","WeakRef"]},a={keywords:n,illegal:/<\//},r={className:"subst",begin:/\$\(/,end:/\)/,keywords:n},o={className:"variable",begin:"\\$"+t},i={className:"string",contains:[e.BACKSLASH_ESCAPE,r,o],variants:[{begin:/\w*"""/,end:/"""\w*/,relevance:10},{begin:/\w*"/,end:/"\w*/}]},l={className:"string",contains:[e.BACKSLASH_ESCAPE,r,o],begin:"`",end:"`"};return a.name="Julia",a.contains=[{className:"number",begin:/(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/,relevance:0},{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},i,l,{className:"meta",begin:"@"+t},{className:"comment",variants:[{begin:"#=",end:"=#",relevance:10},{begin:"#",end:"$"}]},e.HASH_COMMENT_MODE,{className:"keyword",begin:"\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b"},{begin:/<:/}],r.contains=a.contains,a}),oB.registerLanguage("julia-repl",e=>({name:"Julia REPL",contains:[{className:"meta.prompt",begin:/^julia>/,relevance:10,starts:{end:/^(?![ ]{6})/,subLanguage:"julia"}}],aliases:["jldoctest"]})),window.hljs=oB;var eL=c("1gqBQ");c("9Ta4i");var d=c("cNaMA");const i_=({process_waiting_for_permission:e,risky_file_source:t,restart:n,warn_about_untrusted_code:a})=>(0,d.html)` +
    + ${e?(0,d.html)`
    +
    + Safe preview + + +
    +
    `:null} + `,ib=()=>(0,d.html)`
    + ${"Code not executed in "}Safe preview +
    `,iy=`
    +Scripts and styles not rendered in Safe preview +
    `,iv=e=>e&&e.startsWith("const ")?(0,d.html)`const ${e.slice(6)}`:e;class iw extends d.Component{constructor(){super(),this.state={output_changed_once:!1},this.old_height=0,this.resize_observer=new ResizeObserver(e=>{let t=this.base.offsetHeight;if(document.body.querySelector("pluto-cell:focus-within")){let e=document.body.querySelectorAll("pluto-cell:focus-within ~ pluto-cell > pluto-output");document.activeElement?.tagName==="SUMMARY"||0!==e.length&&Array.from(e).includes(this.base)||window.scrollBy(0,t-this.old_height)}this.old_height=t})}shouldComponentUpdate({last_run_timestamp:e,sanitize_html:t}){return e!==this.props.last_run_timestamp||t!==this.props.sanitize_html}componentDidUpdate(e){this.props.last_run_timestamp!==e.last_run_timestamp&&this.setState({output_changed_once:!0})}componentDidMount(){this.resize_observer.observe(this.base)}componentWillUnmount(){this.resize_observer.unobserve(this.base)}render(){let e=this.props.errored||!this.props.body||"application/vnd.pluto.tree+object"!==this.props.mime&&"application/vnd.pluto.table+object"!==this.props.mime&&"text/plain"!==this.props.mime,t=!this.props.errored&&e;return(0,d.html)` + + + <${iE} ...${this.props} /> + + `}}let ik=({body:e,mime:t})=>{let n=(0,d.useRef)();return(0,d.useLayoutEffect)(()=>{let a=URL.createObjectURL(new Blob([e],{type:t}));return n.current.onload=n.current.onerror=()=>{n.current&&(n.current.style.display=null)},""===n.current.src&&(n.current.style.display="none"),n.current.type=t,n.current.src=a,()=>URL.revokeObjectURL(a)},[e,t]),(0,d.html)``};const iE=({mime:e,body:t,cell_id:n,persist_js_state:a=!1,last_run_timestamp:r,sanitize_html:o=!0})=>{switch(o="false"!==o&&!1!==o,a="true"===a||!0===a,e){case"image/png":case"image/jpg":case"image/jpeg":case"image/gif":case"image/bmp":case"image/svg+xml":return(0,d.html)`
    <${ik} mime=${e} body=${t} />
    `;case"text/html":if(t.startsWith("`;return(0,d.html)`<${iT} + cell_id=${n} + body=${t} + persist_js_state=${a} + last_run_timestamp=${r} + sanitize_html=${o} + />`;case"application/vnd.pluto.tree+object":return(0,d.html)`
    + <${tj} cell_id=${n} body=${t} persist_js_state=${a} sanitize_html=${o} /> +
    `;case"application/vnd.pluto.table+object":return(0,d.html)`<${tF} cell_id=${n} body=${t} persist_js_state=${a} sanitize_html=${o} />`;case"application/vnd.pluto.parseerror+object":return(0,d.html)`
    <${tx} cell_id=${n} ...${t} />
    `;case"application/vnd.pluto.stacktrace+object":return(0,d.html)`
    <${tC} cell_id=${n} ...${t} />
    `;case"application/vnd.pluto.divelement+object":return tz({cell_id:n,...t,persist_js_state:a,sanitize_html:o});case"text/plain":if(t)return(0,d.html)`
    +
    ${t}
    +
    `;return(0,d.html)`
    `;case null:case void 0:case"":return(0,d.html)``;default:return(0,d.html)`
    🛑
    `}};(0,tQ.default)(iE,"pluto-display",["mime","body","cell_id","persist_js_state","last_run_timestamp","sanitize_html"]);let i$=({body:e})=>{let t=(0,d.useRef)();return(0,d.useLayoutEffect)(()=>{let n=URL.createObjectURL(new Blob([e],{type:"text/html"}));return t.current.src=n,iM(async()=>{await new Promise(e=>t.current.addEventListener("load",()=>e(null)));let e=t.current.contentWindow.document,n=document.querySelector("#iframe-resizer-content-window-script"),a=e.createElement("script");a.src=n.src,a.crossOrigin="anonymous",e.head.appendChild(a),new Promise(e=>a.addEventListener("load",()=>e(null))),window.iFrameResize({checkOrigin:!1},t.current)}),()=>URL.revokeObjectURL(n)},[e]),(0,d.html)``},ix=async({environment:e,code:t})=>{let n=`"use strict"; return (async () => {${t}})()`,{this:a,...r}=e,o=Object.keys(r),i=Object.values(r);return await Function(...o,n).bind(a)(...i)},iS=0,iN=async(e,t)=>{let n=document.createElement("script");for(let t of e.attributes)n.attributes.setNamedItem(t.cloneNode(!0));let a=`____FUNCTION_TO_RUN_INSIDE_SCRIPT_${iS}`;n.textContent=`{ + window.${a}.result = window.${a}.function_to_run(window.${a}.currentScript) + }`,window[a]={function_to_run:t,currentScript:n,result:null};let r=e.parentNode;if(null==r)throw"Failed to execute script it has no parent in DOM.";r.replaceChild(n,e);let o=await window[a].result;return window[a]={function_to_run:t,result:null},{node:n,result:o}};const iC=e=>e instanceof Element&&e.nodeType===Node.ELEMENT_NODE,iA=async({root_node:e,script_nodes:t,previous_results_map:n,invalidation:a,pluto_actions:r})=>{let o=new Map;for(let e of t)if(null!=e.src&&""!==e.src);else{let t=e.id,a=t?n.get(t):null;iC(a)&&e.parentElement?.insertBefore(a,e)}for(let i of t){if(iS+=1,null!=i.src&&""!==i.src){let e=Array.from(document.head.querySelectorAll("script")).find(e=>e.src===i.src);void 0==e&&((e=document.createElement("script")).referrerPolicy=i.referrerPolicy,e.crossOrigin=i.crossOrigin,e.integrity=i.integrity,e.noModule=i.noModule,e.nonce=i.nonce,e.type=i.type,e.src=i.src,e.pluto_is_loading_me=!0);let t=e;null!=t.pluto_is_loading_me&&(await new Promise(e=>{t.addEventListener("load",e),t.addEventListener("error",e),document.head.appendChild(t)}),t.pluto_is_loading_me=void 0)}else try{let t=i.innerText,l=i.id,s=l?n.get(l):null;if("module"===i.type&&console.warn("We don't (yet) fully support + ${s}`);console.log(i.current);let d=document.createElement("a");d.setAttribute("href","data:text/html;charset=utf-8,"+encodeURIComponent(u)),d.setAttribute("download",`${c.current} recording.html`),d.style.display="none",document.body.appendChild(d),d.click(),document.body.removeChild(d)}l.current=0,i.current=null,a({is_recording:!1,recording_waiting_to_start:!1})};return(0,d.html)` +
    + ${n?(0,d.html)`
    +
    + +
    +
    + +
    +
    `:t?(0,d.html)`
    +
    + +
    +
    `:null} + `};let lN=({cell_id:e,relative_distance:t})=>{let n=document.getElementById(e);if(n)return n.offsetTop+t*n.offsetHeight-window.innerHeight/2};const lC=({launch_params:e,initializing:t,apply_notebook_patches:n,reset_notebook_state:a})=>{let{recording_url:r,recording_url_integrity:o,recording_audio_url:i}=e,l=(0,d.useMemo)(()=>Promise.resolve().then(async()=>r?(0,ll.unpack)(new Uint8Array(await (await fetch(new Request(r,{integrity:o??void 0})).then(lx)).arrayBuffer())):null),[r]),s=(0,d.useRef)(null);(0,d.useEffect)(()=>{l.then(console.log)},[l]);let c=(0,d.useRef)(null),u=(0,d.useRef)(!1),p=(0,d.useRef)(0),[m,g]=(0,d.useState)(null),[f,_]=(0,d.useState)(!0),b=(0,d.useRef)(f);b.current=f;let y=(0,d.useRef)(!1),v=(0,d.useRef)(0),w=(0,d.useRef)(0),k=(e,t=!0)=>{v.current=Date.now(),w.current=Date.now(),window.scrollTo({top:e,behavior:t?"smooth":"auto"})},E=({cell_id:e,relative_distance:t},n=!0)=>{let a=lN({cell_id:e,relative_distance:t});null!=a&&(g(a),b.current&&k(a,n))},$=(0,d.useRef)(()=>{});$.current=async()=>{u.current=!0;let e=await l;s.current=s.current??e.steps.map(([e,t])=>[e,void 0]);let t=c.current;if(null==t)return;let a=t.currentTime,r=a>=p.current,o=r?h.default.identity:h.default.reverse,i=Math.min(p.current,a),d=Math.max(p.current,a),m=e.scrolls.filter(([e,t])=>i0){let e=h.default.last(o(m))?.[1];e&&E(e)}let g=(r?e.steps:s.current).map((e,t)=>[e,t]).filter(([[e,t],n])=>i$.current())};let x=(0,d.useCallback)(e=>{u.current||$.current()},[u,$]),S=["seeked","suspend","play","pause","ended","waiting"];(0,d.useLayoutEffect)(()=>{let e=c.current;if(e)return S.forEach(t=>{e.addEventListener(t,x)}),()=>{S.forEach(t=>{e.removeEventListener(t,x)})}},[c.current,x]),(0,d.useEffect)(()=>{t||null==r||l.then(e=>{let t=(0,h.default).first(e?.scrolls);if(t){let e=new ResizeObserver(()=>{console.log("Scrolling back to first recorded scroll position..."),E(t[1],!1)}),n=history.scrollRestoration;history.scrollRestoration="manual",e.observe(document.body),setTimeout(()=>{history.scrollRestoration=n,e.disconnect()},3e3),E(t[1],!1)}document.fonts.ready.then(()=>{console.info("Fonts loaded"),E(t[1],!1)})})},[t]),(0,d.useEffect)(()=>{},[t]),(0,d.useEffect)(()=>{if(!t&&null!=r){let e=e=>{let t=Date.now(),n=(t-v.current)/1e3,a=(t-w.current)/1e3,r=n<1&&(a===n||a<.2);r&&(w.current=t),!r&&b.current&&(console.warn("Manual scroll detected, no longer following playback scroll",{dt:n,smooth_dt:a,e:e}),null!=c.current&&(y.current=!c.current.paused,c.current.pause()),_(!1))};return document.fonts.ready.then(()=>{window.addEventListener("scroll",e,{passive:!0})}),()=>{window.removeEventListener("scroll",e,{passive:!0})}}},[t,r]);let N=(0,d.html)`
    `;return(0,d.html)` + ${r?(0,d.html)`${f?null:(0,d.html)`
    +
    + +
    +
    `} + ${N} <${l$} audio_element_ref=${c} src=${i} loaded_recording=${l} />`:null} + `};var ez=c("hrGZZ");c("cNaMA");let lA=()=>((0,ez.useEventListener)(document,"click",e=>{if(e.defaultPrevented)return;let t=e.target.closest("a");t&&!t.hasAttribute("target")&&new URL(t.href).origin!==window.location.origin&&(t.target="_blank")},[]),null);var d=c("cNaMA"),M=c("kjWx8"),h=c("9Ta4i");class lM extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.tags=[]}addTag(e){if(e.length>0){if("true"==this.getAttribute("lowercase")&&(e=e.toLowerCase()),"true"==this.getAttribute("uppercase")&&(e=e.toUpperCase()),"true"==this.getAttribute("duplicates")||-1===this.tags.indexOf(e))this.tags.push(e),this.shadowRoot.querySelector("#tag-input").value="",this.dispatchEvent(new CustomEvent("input")),this.render();else{var t=this.shadowRoot.querySelector('[data-index="'+this.tags.indexOf(e)+'"]');t.className=t.className+" duplicate",setTimeout(function(){t.className=t.className.replace("duplicate","")},500)}}}get value(){return this.tags}set value(e){this.tags=Array.isArray(e)?e:[],this.render()}render(){this.clear(),this.tags.forEach((e,t)=>{let n=document.createElement("div");n.className="tag";let a=document.createElement("div");a.className="remove",a.innerHTML="✕",a.addEventListener("click",()=>{this.deleteTag(t)}),n.dataset.index=t,n.innerHTML=e,n.appendChild(a),this.shadowRoot.querySelector(".rebel-tag-input").appendChild(n)})}clear(){var e=this.shadowRoot.querySelectorAll(".tag");if(e.length>0)for(var t=0;t{a!==e&&t.push(n)}),this.value=t}connectedCallback(){this.shadowRoot.innerHTML=` + +
    + + +
    + `;let e=!1;this.shadowRoot.querySelector("#tag-input").addEventListener("input",e=>{e.stopPropagation()}),this.shadowRoot.querySelector("#tag-input").addEventListener("keydown",t=>{let n=this.shadowRoot.querySelector("#tag-input").value;13===t.keyCode?this.addTag(n):188===t.keyCode?(t.preventDefault(),this.addTag(n)):8===t.keyCode&&0===n.length&&(e?(this.deleteTag(this.tags.length-1),this.dispatchEvent(new CustomEvent("input")),e=!1):e=!0)}),this.shadowRoot.querySelector("#tag-input").addEventListener("blur",()=>{let e=this.shadowRoot.querySelector("#tag-input").value;this.addTag(e)})}}customElements.define("rbl-tag-input",lM);var lO=c("1Mxs0"),ez=c("hrGZZ");const lT=({filename:e,remote_frontmatter:t,set_remote_frontmatter:n})=>{let[a,r]=(0,d.useState)(t??{});(0,d.useEffect)(()=>{r(t??{})},[t]);let o=e=>t=>r(m(n=>{(0,h.default).set(n,e,t)})),[i,l,s,c]=aV(),u=(0,d.useRef)(n);u.current=n;let p=(0,d.useCallback)(()=>{u.current(lD(a)??{}).then(()=>alert("Frontmatter synchronized ✔\n\nThese parameters will be used in future exports.")),s()},[lD,a,s]);(0,ez.useEventListener)(window,"open pluto frontmatter",l),(0,ez.useEventListener)(window,"keydown",e=>{null!=i.current&&i.current.contains(e.target)&&"Enter"===e.key&&(0,M.has_ctrl_or_cmd_pressed)(e)&&p()},[p]);let g={title:null,description:null,date:null,tags:[],author:[{}],...a},f=([e,t])=>!((0,h.default).isArray(t)&&"tags"!==lI(e)||(0,h.default).isPlainObject(t)),_=(e,t)=>(0,d.html)` + ${Object.entries(e).filter(f).map(([e,n])=>{let a=`${t}${e}`,i=`fm-${a}`;return(0,d.html)` + + <${lP} type=${lI(e)} id=${i} value=${n} on_value=${o(a)} /> + + `})} + + `;return(0,d.html)` +

    Frontmatter

    +

    + If you are publishing this notebook on the web, you can set the parameters below to provide HTML metadata. This is useful for search engines and + social media. +

    + +
    + ${_(g,"")} + ${(0,h.default).isArray(g.author)?g.author.map((e,t)=>{let n={name:null,url:null,...e};return(0,d.html)` +
    + Author ${t+1} + + ${_(n,`author[${t}].`)} +
    + `}):null} + ${(0,h.default).isArray(g.author)?(0,d.html)``:null} +
    + +
    +
    `},lD=e=>{let t=(0,h.default).isPlainObject(e)?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,lD(t)]).filter(([e,t])=>null!=t)):(0,h.default).isArray(e)?e.map(lD).filter(e=>null!=e):e;return!(0,h.default).isNumber(t)&&(0,h.default).isEmpty(t)?null:t};let lR=lD({a:1,b:"",c:null,d:[],e:[1,"",null,2],f:{},g:[{}],h:[{z:"asdf"}]});console.assert((0,h.default).isEqual(lR,{a:1,e:[1,2],h:[{z:"asdf"}]}),lR);const lL=["tags","date","license","url","color"],lI=e=>{for(let t of lL)if(e===t||e.endsWith(`_${t}`))return t;return"text"},lP=({value:e,on_value:t,type:n,id:a})=>{let r=(0,d.useRef)(null);return(0,d.useLayoutEffect)(()=>{r.current&&(r.current.value=e)},[r.current,e]),(0,d.useLayoutEffect)(()=>{if(!r.current)return;let e=e=>{r.current&&t(r.current.value)};return r.current.addEventListener("input",e),()=>{r.current?.removeEventListener("input",e)}},[r.current]),"tags"===n?(0,d.html)``:"license"===n?lB({ref:r,id:a}):(0,d.html)``},lj=["AGPL-3.0","GPL-3.0","LGPL-3.0","MPL-2.0","Apache-2.0","MIT","BSL-1.0","Unlicense","CC-BY-4.0","CC-BY-SA-4.0","CC-BY-NC-4.0","CC-BY-NC-SA-4.0","CC-BY-ND-4.0","CC-BY-NC-ND-4.0","CC0-1.0"],lB=({ref:e,id:t})=>(0,d.html)` + + ${lj.map(e=>(0,d.html)``)} + `;var d=c("cNaMA"),g=c("4zMEb"),tt=c("41Mhf");const lU=async({setStatePromise:e,connect:t,launch_params:n})=>{try{let a;if(null==n.pluto_server_url||null==n.notebookfile)throw Error("Invalid launch parameters for starting locally.");await e(m(e=>{e.backend_launch_phase=tn.responded,e.disable_ui=!1,e.notebook.status_tree=null}));let r=e=>String(e),o=new URL(n.pluto_server_url,window.location.href),i=await (await fetch(new Request(n.notebookfile,{integrity:n.notebookfile_integrity??void 0}))).arrayBuffer();if(!(a=await fetch(r((0,tt.with_query_params)(new URL("notebookupload",o),{name:new URLSearchParams(window.location.search).get("name"),clear_frontmatter:"yesplease",execution_allowed:"yepperz"})),{method:"POST",body:i})).ok){let e=await a.blob();window.location.href=URL.createObjectURL(e);return}let l=await a.text(),s=(0,tt.with_query_params)(new URL("edit",o),{id:l});console.info("notebook_id:",l),window.history.replaceState({},"",s),await e(m(e=>{e.notebook.notebook_id=l,e.backend_launch_phase=tn.notebook_running})),console.log("Connecting WebSocket");let c=t();await (0,g.timeout_promise)(c,2e4).catch(e=>{console.error("Failed to establish connection within 20 seconds. Navigating to the edit URL directly.",e),window.parent.location.href=r(s)})}catch(e){console.error("Failed to initialize binder!",e),alert("Something went wrong! \uD83D\uDE2E\n\nWe failed to open this notebook. Please try again with a different browser, or come back later.")}},lF=({editor:e,launch_params:t,status:n})=>{try{let n=(0,d.useMemo)(()=>window?.pluto_injected_environment?.environment?.({client:e.client,editor:e,imports:{immer:m,preact:d}})?.custom_run_or_edit,[e.client,e]);if(window?.pluto_injected_environment?.provides_backend)return(0,d.html)`<${n} editor=${e} backend_phases=${tn} launch_params=${t} />`}catch(e){}return null==n?null:n.offer_local?(0,d.html)`<${aQ} + start_local=${()=>lU({setStatePromise:e.setStatePromise,connect:e.connect,launch_params:t})} + />`:n.offer_binder?(0,d.html)`<${aX} + offer_binder=${n.offer_binder} + start_binder=${()=>ti({setStatePromise:e.setStatePromise,connect:e.connect,launch_params:t})} + notebookfile=${null==t.notebookfile?null:new URL(t.notebookfile,window.location.href).href} + notebook=${e.state.notebook} + />`:null};var lz=c("cpCG6"),lq=c("dYd4C"),eL=c("1gqBQ");const lH={disabled:!1,show_logs:!0,skip_as_script:!1},lW=()=>"10000000-1000-4000-8000-100000000000".replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)),lG=({children:e})=>(0,d.html)`
    ${e}
    `,lK=(e,t)=>({disconnected:!(e.connected||e.initializing||e.static_preview),loading:null!=e.backend_launch_phase&&tn.wait_for_usernull!=e.cell_inputs_local[t]&&e.notebook.cell_inputs[t].code!==e.cell_inputs_local[t].code),recording_waiting_to_start:e.recording_waiting_to_start,is_recording:e.is_recording,isolated_cell_view:null!=t.isolated_cell_ids&&t.isolated_cell_ids.length>0,sanitize_html:e.notebook.process_status===lq.ProcessStatus.waiting_for_permission}),lZ=e=>{for(let[t,n]of Object.entries(e))if(n)return t},lV=a1("pluto-logo-big")?.href,lQ=a1("pluto-logo-small")?.href;class lX extends d.Component{constructor(e){super(e);let{launch_params:t,initial_notebook_state:n}=this.props;this.state={notebook:n,cell_inputs_local:{},unsumbitted_global_definitions:{},desired_doc_query:null,recently_deleted:[],recently_auto_disabled_cells:{},last_update_time:0,disable_ui:t.disable_ui,static_preview:null!=t.statefile,backend_launch_phase:null!=t.notebookfile&&(null!=t.binder_url||null!=t.pluto_server_url)?tn.wait_for_user:null,backend_launch_logs:null,binder_session_url:null,binder_session_token:null,refresh_target:null,connected:!1,initializing:!0,moving_file:!1,scroller:{up:!1,down:!1},export_menu_open:!1,last_created_cell:null,selected_cells:[],extended_components:{CustomHeader:null},is_recording:!1,recording_waiting_to_start:!1,slider_server:{connecting:!1,interactive:!1}},this.setStatePromise=e=>new Promise(t=>this.setState(e,t)),this.real_actions={get_notebook:()=>this?.state?.notebook||{},send:(e,...t)=>this.client.send(e,...t),get_published_object:e=>this.state.notebook.published_objects[e],update_notebook:(...e)=>this.update_notebook(...e),set_doc_query:e=>this.setState({desired_doc_query:e}),set_local_cell:(e,t)=>this.setStatePromise(m(n=>{n.cell_inputs_local[e]={code:t},n.selected_cells=[]})),set_unsubmitted_global_definitions:(e,t)=>this.setStatePromise(m(n=>{n.unsumbitted_global_definitions[e]=t})),get_unsubmitted_global_definitions:()=>(0,h.default).pick(this.state.unsumbitted_global_definitions,this.state.notebook.cell_order),focus_on_neighbor:(e,t,n=-1===t?1/0:-1,a=0)=>{let r=this.state.notebook.cell_order.indexOf(e)+t;r>=0&&r{let a;let r=n(e).map(e=>({cell_id:lW(),code:e,code_folded:!1,metadata:{...lH}}));"number"==typeof t?a=t:-1!==(a=this.state.notebook.cell_order.indexOf(t))&&(a+=1),-1===a&&(a=this.state.notebook.cell_order.length),this.setState(m(e=>{for(let t of(e.selected_cells=[],r))e.cell_inputs_local[t.cell_id]=t;e.last_created_cell=r[0]?.cell_id})),await _(e=>{for(let t of r)e.cell_inputs[t.cell_id]={...t,code:"",metadata:{...lH}};e.cell_order=[...e.cell_order.slice(0,a),...r.map(e=>e.cell_id),...e.cell_order.slice(a,1/0)]})},wrap_remote_cell:async(e,t="begin",n="end")=>{let a=this.state.notebook.cell_inputs[e],r=`${t} + ${a.code.replace(/\n/g,"\n ")} +${n}`;await this.setStatePromise(m(t=>{t.cell_inputs_local[e]={code:r}})),await this.actions.set_and_run_multiple([e])},split_remote_cell:async(e,t,n=!1)=>{let a=this.state.notebook.cell_inputs[e].code,r=[0,...t],o=t.map((e,t)=>(0,tY.slice_utf8)(a,r[t],e).trim()).filter(e=>""!==e).map(e=>({cell_id:lW(),code:e,code_folded:!1,metadata:{...lH}}));this.setState(m(e=>{for(let t of o)e.cell_inputs_local[t.cell_id]=t})),await _(t=>{for(let n of(delete t.cell_inputs[e],o))t.cell_inputs[n.cell_id]=n;t.cell_order=t.cell_order.flatMap(t=>e===t?o.map(e=>e.cell_id):[t])}),n&&await this.actions.set_and_run_multiple(o.map(e=>e.cell_id))},interrupt_remote:e=>{this.client.send("interrupt_all",{},{notebook_id:this.state.notebook.notebook_id},!1)},move_remote_cells:(e,t)=>_(n=>{t=Math.max(0,t);let a=n.cell_order.slice(0,t).filter(t=>!e.includes(t)),r=n.cell_order.slice(t,1/0).filter(t=>!e.includes(t));n.cell_order=[...a,...e,...r]}),add_remote_cell_at:async(e,t="")=>{let n=lW();return this.setState({last_created_cell:n}),await _(a=>{a.cell_inputs[n]={cell_id:n,code:t,code_folded:!1,metadata:{...lH}},a.cell_order=[...a.cell_order.slice(0,e),n,...a.cell_order.slice(e,1/0)]}),await this.client.send("run_multiple_cells",{cells:[n]},{notebook_id:this.state.notebook.notebook_id}),n},add_remote_cell:async(e,t,n)=>{let a=this.state.notebook.cell_order.indexOf(e);return await this.actions.add_remote_cell_at(a+("before"==t?0:1),n)},confirm_delete_multiple:async(e,t)=>{(t.length<=1||confirm(`${e} ${t.length} cells?`))&&(t.some(e=>this.state.notebook.cell_results[e].running||this.state.notebook.cell_results[e].queued)?confirm("This cell is still running - would you like to interrupt the notebook?")&&this.actions.interrupt_remote(t[0]):(this.setState(m(e=>{for(let n of(e.recently_deleted=t.map(e=>({index:this.state.notebook.cell_order.indexOf(e),cell:this.state.notebook.cell_inputs[e]})),e.selected_cells=[],t))delete e.unsumbitted_global_definitions[n]})),await _(e=>{for(let n of t)delete e.cell_inputs[n];e.cell_order=e.cell_order.filter(e=>!t.includes(e))}),await this.client.send("run_multiple_cells",{cells:[]},{notebook_id:this.state.notebook.notebook_id})))},fold_remote_cells:async(e,t)=>{await _(n=>{for(let a of e)n.cell_inputs[a].code_folded=t??!n.cell_inputs[a].code_folded})},set_and_run_all_changed_remote_cells:()=>{let e=this.state.notebook.cell_order.filter(e=>null!=this.state.cell_inputs_local[e]&&this.state.notebook.cell_inputs[e].code!==this.state.cell_inputs_local[e]?.code);return this.actions.set_and_run_multiple(e),e.length>0},set_and_run_multiple:async e=>{if(e.length>0){window.dispatchEvent(new CustomEvent("set_waiting_to_run_smart",{detail:{cell_ids:e}})),await _(t=>{for(let n of e)this.state.cell_inputs_local[n]&&(t.cell_inputs[n].code=this.state.cell_inputs_local[n].code)}),await this.setStatePromise(m(t=>{for(let n of e)delete t.unsumbitted_global_definitions[n],null!=t.notebook.cell_results[n]&&(t.notebook.cell_results[n].queued=this.is_process_ready())}));let{disabled_cells:t}=(await this.client.send("run_multiple_cells",{cells:e},{notebook_id:this.state.notebook.notebook_id})).message;Object.entries(t).length>0&&await this.setStatePromise({recently_auto_disabled_cells:t})}},set_bond:async(e,t)=>{await _(n=>{n.bonds[e]={value:t}})},reshow_cell:(e,t,n)=>{this.client.send("reshow_cell",{objectid:t,dim:n,cell_id:e},{notebook_id:this.state.notebook.notebook_id},!1)},request_js_link_response:(e,t,n)=>this.client.send("request_js_link_response",{cell_id:e,link_id:t,input:n},{notebook_id:this.state.notebook.notebook_id}).then(e=>e.message),get_selected_cells:(e,t)=>t?this.state.selected_cells:[e],get_avaible_versions:async({package_name:e,notebook_id:t})=>{let{message:n}=await this.client.send("nbpkg_available_versions",{package_name:e},{notebook_id:t});return n}},this.actions={...this.real_actions};let a=(e,n=null,a=!1)=>new Promise(r=>{if(0!==e.length){let o=e=>e.startsWith("status_tree"),i,l=[];this.setState(m(r=>{let s;try{a&&([s,i,l]=(0,p.produceWithPatches)(n??r.notebook,t=>{(0,p.applyPatches)(t,e)})),s=(0,p.applyPatches)(n??r.notebook,e)}catch(l){let n=String(l).match(".*'(.*)'.*")?.[1].replace(/\//gi,".")??l,a=(0,h.default).get(this.state.notebook,n,"Not Found");console.log(String(l).match(".*'(.*)'.*")?.[1].replace(/\//gi,".")??l,n,typeof n);let r=o(n);(r?console.log:console.error)(`#######################**************************######################## +PlutoError: StateOutOfSync: Failed to apply patches. +Please report this: https://github.com/fonsp/Pluto.jl/issues adding the info below: +failing path: ${n} +notebook previous value: ${a} +patch: ${JSON.stringify(e?.find(({path:e})=>e.join("")===n),null,1)} +all patches: ${JSON.stringify(e,null,1)} +#######################**************************########################`,l);let i=n.split(".");for(let e=0;enull==s.cell_inputs[e]);0!==c.length&&(console.warn("cells_stuck_in_limbo:",c),s.cell_order=s.cell_order.filter(e=>null!=s.cell_inputs[e])),this.on_patches_hook(e),r.notebook=s}),()=>r(l))}else r([])});this.apply_notebook_patches=a,this.last_update_counter=-1;let r=e=>{e<=this.last_update_counter&&(console.error("State update out of order",e,this.last_update_counter),alert("Oopsie!! please refresh your browser and everything will be alright!")),this.last_update_counter=e},o=(e,n)=>{if(this.state.notebook.notebook_id===e.notebook_id){let o=null!=t.binder_url;o&&console.debug("on_update",e,n);let i=e.message;if("notebook_diff"===e.type){r(i?.counter);let e=Promise.resolve();i?.response?.from_reset?(console.log("Trying to reset state after failure"),e=a(i.patches,l7({notebook_id:this.state.notebook.notebook_id})).catch(e=>{throw alert("Oopsie!! please refresh your browser and everything will be alright!"),e})):0!==i.patches.length&&(e=a(i.patches)),e.finally(()=>{let e=i?.response?.update_went_well!=null&&0===i.patches.length,t=i.patches.some(({path:e})=>0===e.length||"status_tree"!==e[0]);!e&&t&&(this.waiting_for_bond_to_trigger_execution=!1)}).then(()=>{this.maybe_send_queued_bond_changes()})}else console.error("Received unknown update type!",e);o&&console.debug("on_update done")}},i=async e=>{Object.assign(this.client,e);try{let{custom_editor_header_component:t,custom_non_cell_output:n}=(await (0,lz.get_environment)(e))({client:e,editor:this,imports:{preact:d}});this.setState({extended_components:{...this.state.extended_components,CustomHeader:t,NonCellOutputComponents:n}})}catch(e){}if(window.version_info=this.client.version_info,window.kill_socket=this.client.kill,!e.notebook_exists){console.error("Notebook does not exist. Not connecting.");return}console.debug("Sending update_notebook request..."),await this.client.send("update_notebook",{updates:[]},{notebook_id:this.state.notebook.notebook_id},!1),console.debug("Received update_notebook request"),this.setState({initializing:!1,static_preview:!1,backend_launch_phase:null==this.state.backend_launch_phase?null:tn.ready}),this.client.send("complete",{query:"sq"},{notebook_id:this.state.notebook.notebook_id}),this.client.send("complete",{query:"\\sq"},{notebook_id:this.state.notebook.notebook_id}),setTimeout(y,2e3)},l=(e,t)=>{this.setState({connected:e}),t&&(0,eL.open_pluto_popup)({type:"warn",body:(0,d.html)`

    A new server was started - this notebook session is no longer running.

    +

    Would you like to go back to the main menu?

    +
    + Go back +
    + {e.preventDefault(),window.dispatchEvent(new CustomEvent("close pluto popup"))}} + >Stay here`,should_focus:!1})},s=async()=>(console.warn("Reconnected! Checking states"),await this.client.send("reset_shared_state",{},{notebook_id:this.state.notebook.notebook_id},!1),!0);this.export_url=e=>null==this.state.binder_session_url?`./${e}?id=${this.state.notebook.notebook_id}`:`${this.state.binder_session_url}${e}?id=${this.state.notebook.notebook_id}&token=${this.state.binder_session_token}`,this.client={},this.connect=e=>(0,g.create_pluto_connection)({ws_address:e,on_unrequested_update:o,on_connection_status:l,on_reconnect:s,connect_metadata:{notebook_id:this.state.notebook.notebook_id}}).then(i),this.on_disable_ui=()=>{l3(this.state.disable_ui),Object.assign(this.actions,this.state.disable_ui||null!=t.slider_server_url&&!this.state.connected?null!=t.slider_server_url?lh({setStatePromise:this.setStatePromise,actions:this.actions,launch_params:t,apply_notebook_patches:a,get_original_state:()=>this.props.initial_notebook_state,get_current_state:()=>this.state.notebook}):lm({actions:this.actions}):this.real_actions)},this.on_disable_ui(),setInterval(()=>{this.state.static_preview||"visible"!==document.visibilityState||to(`editing/${window?.version_info?.pluto??this.state.notebook.pluto_version??"unknown"}${window.plutoDesktop?"-desktop":""}`)},9e5),setInterval(()=>{this.state.static_preview||"visible"!==document.visibilityState||lY(this.state.notebook.path)},5e3),this.bond_changes_to_apply_when_done=[],this.maybe_send_queued_bond_changes=()=>{if(this.notebook_is_idle()&&0!==this.bond_changes_to_apply_when_done.length){let e=this.bond_changes_to_apply_when_done;this.bond_changes_to_apply_when_done=[],this.update_notebook(t=>{(0,p.applyPatches)(t,e)})}},this.waiting_for_bond_to_trigger_execution=!1,this.pending_local_updates=0,this.js_init_set=new A(()=>{this.maybe_send_queued_bond_changes()}),document.body._js_init_set=this.js_init_set,this.notebook_is_idle=()=>!(this.waiting_for_bond_to_trigger_execution||this.pending_local_updates>0||Object.values(this.state.notebook.cell_results).some(e=>e.running||e.queued)||!(0,h.default).isEmpty(this.js_init_set)||!this.is_process_ready()),this.is_process_ready=()=>this.state.notebook.process_status===lq.ProcessStatus.starting||this.state.notebook.process_status===lq.ProcessStatus.ready;let c=e=>Object.entries(this.state.notebook.cell_dependencies).some(([t,n])=>{if(n.upstream_cells_map.hasOwnProperty(e)){let e=this.state.notebook.cell_inputs[t].metadata.disabled,n=this.state.notebook.cell_results[t].depends_on_disabled_cells;return!(e||n)}}),u=e=>"replace"===e.op&&e.path.length>=1&&c(e.path[1]),f=Promise.resolve(),_=e=>{let t=f.then(async()=>{let[t,n,a]=(0,p.produceWithPatches)(this.state.notebook,t=>{e(t)}),r=this.notebook_is_idle(),o=n.filter(e=>"bonds"===e.path[0]);for(let e of(r||(this.bond_changes_to_apply_when_done=[...this.bond_changes_to_apply_when_done,...o],n=n.filter(e=>"bonds"!==e.path[0])),n))if(e.path.some(e=>"number"==typeof e))throw Error("This sounds like it is editing an array...");if(0!==n.length){r&&(this.waiting_for_bond_to_trigger_execution=this.waiting_for_bond_to_trigger_execution||o.some(u)),this.pending_local_updates++,this.on_patches_hook(n);try{await Promise.all([this.client.send("update_notebook",{updates:n},{notebook_id:this.state.notebook.notebook_id},!1).then(e=>{if(e.message?.response?.update_went_well==="\uD83D\uDC4E")throw Error(`Pluto update_notebook error: (from Julia: ${e.message.response.why_not})`)}),this.setStatePromise({notebook:t,last_update_time:Date.now()})])}finally{this.pending_local_updates--,document.body._update_is_ongoing=this.pending_local_updates>0}}});return f=t.catch(console.error),t};this.update_notebook=_,window.shutdownNotebook=this.close=()=>{this.client.send("shutdown_notebook",{keep_in_session:!1},{notebook_id:this.state.notebook.notebook_id},!1)},this.submit_file_change=async(e,t)=>{let n=this.state.notebook.path;if(n!==e){if(!this.state.notebook.in_temp_dir&&!confirm("Are you sure? Will move from\n\n"+n+"\n\nto\n\n"+e))throw Error("Declined by user");this.setState({moving_file:!0});try{await _(t=>{t.in_temp_dir=!1,t.path=e}),document.activeElement?.blur()}catch(e){alert("Failed to move file:\n\n"+e.message)}finally{this.setState({moving_file:!1})}}},this.desktop_submit_file_change=async()=>{this.setState({moving_file:!0}),window.plutoDesktop?.ipcRenderer.once("PLUTO-MOVE-NOTEBOOK",async e=>{e&&await this.setStatePromise(m(t=>{t.notebook.in_temp_dir=!1,t.notebook.path=e})),this.setState({moving_file:!1}),document.activeElement?.blur()}),window.plutoDesktop?.fileSystem.moveNotebook()},this.delete_selected=e=>{if(this.state.selected_cells.length>0)return this.actions.confirm_delete_multiple(e,this.state.selected_cells),!0},this.run_selected=()=>this.actions.set_and_run_multiple(this.state.selected_cells),this.fold_selected=e=>{if(!(0,h.default).isEmpty(this.state.selected_cells))return this.actions.fold_remote_cells(this.state.selected_cells,e)},this.move_selected=(e,t)=>{if(this.state.selected_cells.length>0){let n=(t>0?Math.max:Math.min)(...this.state.selected_cells.map(e=>this.state.notebook.cell_order.indexOf(e)))+(-1===t?-1:2);return e.preventDefault(),this.actions.move_remote_cells(this.state.selected_cells,n).then(()=>{document.getElementById((t>0?h.default.last:h.default.first)(this.state.selected_cells)??"")?.scrollIntoView({block:"nearest"})})}},this.serialize_selected=(e=null)=>{let t=null==e||this.state.selected_cells.includes(e)?this.state.selected_cells:[e];if(t.length)return t.map(e=>this.state.notebook.cell_inputs[e]).map(e=>`# \u{2554}\u{2550}\u{2561} ${e.cell_id} +`+e.code+"\n").join("\n")},this.patch_listeners=[],this.on_patches_hook=e=>{this.patch_listeners.forEach(t=>t(e))};let b={current:!1},w=e=>{e!==b.current&&(b.current=e,document.body.querySelectorAll("[data-pluto-variable], [data-cell-variable]").forEach(t=>{t.setAttribute("data-ctrl-down",e?"true":"false")}))};document.addEventListener("keyup",e=>{w((0,M.has_ctrl_or_cmd_pressed)(e))}),document.addEventListener("visibilitychange",e=>{w(!1),setTimeout(()=>{w(!1)},100)}),document.addEventListener("keydown",e=>{if(w((0,M.has_ctrl_or_cmd_pressed)(e)),e.key?.toLowerCase()==="q"&&(0,M.has_ctrl_or_cmd_pressed)(e))Object.values(this.state.notebook.cell_results).some(e=>e.running||e.queued)&&this.actions.interrupt_remote(),e.preventDefault();else if(e.key?.toLowerCase()==="s"&&(0,M.has_ctrl_or_cmd_pressed)(e))this.actions.set_and_run_all_changed_remote_cells(),e.preventDefault();else if(["BracketLeft","BracketRight"].includes(e.code)&&(M.is_mac_keyboard?e.altKey&&e.metaKey:e.ctrlKey&&e.shiftKey))this.fold_selected("BracketLeft"===e.code);else if("Backspace"===e.key||"Delete"===e.key)this.delete_selected("Delete")&&e.preventDefault();else if("Enter"===e.key&&e.shiftKey)this.run_selected();else if("ArrowUp"===e.key&&e.altKey)this.move_selected(e,-1);else if("ArrowDown"===e.key&&e.altKey)this.move_selected(e,1);else if("?"===e.key&&(0,M.has_ctrl_or_cmd_pressed)(e)||"F1"===e.key){let t=M.is_mac_keyboard?`\u{2325}${M.and}\u{2318}`:`Ctrl${M.and}Shift`;alert(` +\u{21E7}${M.and}Enter: run cell +${M.ctrl_or_cmd_name}${M.and}Enter: run cell and add cell below +${M.ctrl_or_cmd_name}${M.and}S: submit all changes +Delete or Backspace: delete empty cell + +PageUp or fn${M.and}\u{2191}: jump to cell above +PageDown or fn${M.and}\u{2193}: jump to cell below +${M.alt_or_options_name}${M.and}\u{2191}: move line/cell up +${M.alt_or_options_name}${M.and}\u{2193}: move line/cell down + +${M.control_name}${M.and}M: toggle markdown +${t}${M.and}[: hide cell code +${t}${M.and}]: show cell code +${M.ctrl_or_cmd_name}${M.and}Q: interrupt notebook + +Select multiple cells by dragging a selection box from the space between cells. +${M.ctrl_or_cmd_name}${M.and}C: copy selected cells +${M.ctrl_or_cmd_name}${M.and}X: cut selected cells +${M.ctrl_or_cmd_name}${M.and}V: paste selected cells + +The notebook file saves every time you run a cell.`),e.preventDefault()}else"Escape"===e.key&&this.setState({recording_waiting_to_start:!1,selected_cells:[],export_menu_open:!1});this.state.disable_ui&&this.state.backend_launch_phase===tn.wait_for_user&&("Enter"===e.key||e.key?.length===1)&&!document.body.classList.contains("wiggle_binder")&&(document.body.classList.add("wiggle_binder"),setTimeout(()=>{document.body.classList.remove("wiggle_binder")},1e3))}),document.addEventListener("copy",e=>{if(!(0,M.in_textarea_or_input)()){let t=this.serialize_selected();t&&(e.preventDefault(),requestAnimationFrame(()=>navigator.clipboard.writeText(t).catch(t=>{console.error("Error copying cells",e,t,navigator.userActivation),alert(`Error copying cells: ${t?.message??t}`)})))}}),document.addEventListener("cut",e=>{}),document.addEventListener("paste",async e=>{let t=e.clipboardData?.getData("text/plain");if(t){let n=E(t);null!=n&&(this.actions.add_deserialized_cells(t,-1,n),e.preventDefault())}}),window.addEventListener("beforeunload",e=>{let t=this.state.notebook.cell_order.filter(e=>this.state.cell_inputs_local[e]&&this.state.notebook.cell_inputs[e].code!==this.state.cell_inputs_local[e].code)[0];null!=t?(window.dispatchEvent(new CustomEvent("cell_focus",{detail:{cell_id:t}})),console.log("Preventing unload"),e.stopImmediatePropagation(),e.preventDefault(),e.returnValue=""):(console.warn("unloading \uD83D\uDC49 disconnecting websocket"),window.shutdown_binder)})}componentDidMount(){let e=this.props.launch_params;this.state.static_preview?(this.setState({initializing:!1}),to(null!=e.pluto_server_url?`featured-view${null!=e.notebookfile?new URL(e.notebookfile).pathname:""}`:`article-view/${window?.version_info?.pluto??this.state.notebook.pluto_version??"unknown"}`)):this.connect(e.pluto_server_url?(0,g.ws_address_from_base)(e.pluto_server_url):void 0)}componentDidUpdate(e,t){window.editor_state=this.state,window.editor_state_set=this.setStatePromise;let n=this.state;if(t?.notebook?.path!==n.notebook.path&&lY(n.notebook.path,t?.notebook?.path),t?.notebook?.shortpath!==n.notebook.shortpath&&(document.title="\uD83C\uDF88 "+n.notebook.shortpath+" — Pluto.jl"),this.maybe_send_queued_bond_changes(),t.backend_launch_phase!==this.state.backend_launch_phase&&null!=this.state.backend_launch_phase){let e=Object.entries(tn).find(([e,t])=>t==this.state.backend_launch_phase)?.[0];console.info(`Binder phase: ${e} at ${new Date().toLocaleTimeString()}`)}(t.disable_ui!==this.state.disable_ui||t.connected!==this.state.connected)&&this.on_disable_ui(),this.state.initializing||lo(),t.notebook.nbpkg?.restart_recommended_msg!==n.notebook.nbpkg?.restart_recommended_msg&&console.warn(`New restart recommended message: ${n.notebook.nbpkg?.restart_recommended_msg}`),t.notebook.nbpkg?.restart_required_msg!==n.notebook.nbpkg?.restart_required_msg&&console.warn(`New restart required message: ${n.notebook.nbpkg?.restart_required_msg}`)}componentWillUpdate(e,t){this.cached_status=lK(t,this.props.launch_params),Object.entries(this.cached_status).forEach(([e,t])=>{document.body.classList.toggle(e,!0===t)})}render(){let{launch_params:e}=this.props,{export_menu_open:t,notebook:n}=this.state,a=this.cached_status??lK(this.state,e),r=lZ(a);if(a.isolated_cell_view)return(0,d.html)` + <${S.Provider} value=${this.actions}> + <${N.Provider} value=${this.state.notebook.bonds}> + <${C.Provider} value=${this.js_init_set}> + <${eG} notebook=${this.state.notebook} backend_launch_phase=${this.state.backend_launch_phase} status=${a}/> +
    + ${this.state.notebook.cell_order.map((t,r)=>(0,d.html)` + <${iQ} + cell_input=${n.cell_inputs[t]} + cell_result=${this.state.notebook.cell_results[t]} + hidden=${!e.isolated_cell_ids?.includes(t)} + sanitize_html=${a.sanitize_html} + /> + `)} +
    + + + + `;let o=this.client.session_options?.security?.warn_about_untrusted_code??!0,i=async(e=!1)=>{let t=n.metadata?.risky_file_source;(!o||!e||null==t||confirm(`\u{26A0}\u{FE0F} Danger! Are you sure that you trust this file? + +${t} + +A malicious notebook can steal passwords and data.`))&&(await this.actions.update_notebook(e=>{delete e.metadata.risky_file_source}),await this.client.send("restart_process",{},{notebook_id:n.notebook_id}))},l=(e,t=!1)=>(0,d.html)`i(t)}>${e}`;return(0,d.html)` + ${!1===this.state.disable_ui&&(0,d.html)`<${lA} />`} + + <${S.Provider} value=${this.actions}> + <${N.Provider} value=${this.state.notebook.bonds}> + <${C.Provider} value=${this.js_init_set}> + ${a.static_preview&&a.offer_local?(0,d.html)``:null} + <${eq} active=${this.state.scroller} /> + <${eG} notebook=${this.state.notebook} backend_launch_phase=${this.state.backend_launch_phase} status=${a}/> +
    + <${la} + notebook_id=${this.state.notebook.notebook_id} + print_title=${this.state.notebook.metadata?.frontmatter?.title??new URLSearchParams(window.location.search).get("name")??this.state.notebook.shortpath} + notebookfile_url=${this.export_url("notebookfile")} + notebookexport_url=${this.export_url("notebookexport")} + open=${t} + onClose=${()=>this.setState({export_menu_open:!1})} + start_recording=${()=>this.setState({recording_waiting_to_start:!0})} + /> + ${a.binder?(0,d.html)`
    + + + +
    `:null} + +
    + + <${i_} + process_waiting_for_permission=${a.process_waiting_for_permission} + risky_file_source=${n.metadata?.risky_file_source} + restart=${i} + warn_about_untrusted_code=${o} + /> + + <${lS} + notebook_name=${n.shortpath} + recording_waiting_to_start=${this.state.recording_waiting_to_start} + set_recording_states=${({is_recording:e,recording_waiting_to_start:t})=>this.setState({is_recording:e,recording_waiting_to_start:t})} + is_recording=${this.state.is_recording} + patch_listeners=${this.patch_listeners} + export_url=${this.export_url} + /> + <${lC} + launch_params=${e} + initializing=${this.state.initializing} + apply_notebook_patches=${this.apply_notebook_patches} + reset_notebook_state=${()=>this.setStatePromise(m(e=>{e.notebook=this.props.initial_notebook_state}))} + /> + <${lF} editor=${this} launch_params=${e} status=${a} /> + <${lT} + filename=${n.shortpath} + remote_frontmatter=${n.metadata?.frontmatter} + set_remote_frontmatter=${e=>this.actions.update_notebook(t=>{t.metadata.frontmatter=e})} + /> + ${this.props.preamble_element} + <${lG}> + <${T} + last_update_time=${this.state.last_update_time} + any_code_differs=${a.code_differs} + last_hot_reload_time=${n.last_hot_reload_time} + connected=${this.state.connected} + /> + <${iJ} + notebook=${n} + cell_inputs_local=${this.state.cell_inputs_local} + disable_input=${this.state.disable_ui||!this.state.connected} + last_created_cell=${this.state.last_created_cell} + selected_cells=${this.state.selected_cells} + is_initializing=${this.state.initializing} + is_process_ready=${this.is_process_ready()} + process_waiting_for_permission=${a.process_waiting_for_permission} + sanitize_html=${a.sanitize_html} + /> + <${i0} + actions=${this.actions} + selected_cells=${this.state.selected_cells} + set_scroller=${e=>this.setState({scroller:e})} + serialize_selected=${this.serialize_selected} + /> + ${this.state.disable_ui||(0,d.html)`<${i9} + cell_order=${this.state.notebook.cell_order} + set_scroller=${e=>{this.setState({scroller:e})}} + on_selection=${e=>{(e.length!==this.state.selected_cells.length||0!==(0,h.default).difference(e,this.state.selected_cells).length)&&this.setState({selected_cells:e})}} + />`} + <${lg} + notebook_id=${this.state.notebook.notebook_id} + environment_component=${this.state.extended_components.NonCellOutputComponents} /> + + <${ts} + desired_doc_query=${this.state.desired_doc_query} + on_update_doc_query=${this.actions.set_doc_query} + connected=${this.state.connected} + backend_launch_phase=${this.state.backend_launch_phase} + backend_launch_logs=${this.state.backend_launch_logs} + notebook=${this.state.notebook} + sanitize_html=${a.sanitize_html} + /> + <${a9} + notebook=${this.state.notebook} + disable_input=${this.state.disable_ui||!this.state.connected} + /> + <${i8} + recently_auto_disabled_cells=${this.state.recently_auto_disabled_cells} + notebook=${this.state.notebook} + /> + <${i6} + recently_deleted=${this.state.recently_deleted} + on_click=${()=>{let e=this.state.recently_deleted;null!=e&&this.update_notebook(t=>{for(let{index:n,cell:a}of e)t.cell_inputs[a.cell_id]=a,t.cell_order=[...t.cell_order.slice(0,n),a.cell_id,...t.cell_order.slice(n,1/0)]}).then(()=>{this.actions.set_and_run_multiple(e.map(({cell:e})=>e.cell_id))})}} + /> + <${i5} /> +
    +
    + FAQ + +
    + + + +
    +
    +
    + + + + `}}const lY=(e,t)=>{if(null!=e&&""!==e){let n=localStorage.getItem("recent notebooks"),a=null!=n?JSON.parse(n):[],r=[e,...a.filter(n=>n!==e&&n!==t)];(0,h.default).isEqual(a,r)||localStorage.setItem("recent notebooks",JSON.stringify(r.slice(0,50)))}};var d=c("cNaMA");const lJ=async(e,t)=>{if(null==e.body)return new Uint8Array(await e.arrayBuffer());{let n=e.headers.get("Content-Length"),a=null==n?null:Number(n),r=e.body.getReader(),o=0,i=[];for(;;){let{done:e,value:n}=await r.read();if(e)break;i.push(n),o+=n.length,t(null!=a?Math.min(1,o/a):1-1e6/(o-1e6)),console.log({receivedLength:o})}t(1);let l=new Uint8Array(o),s=0;for(let e of i)l.set(e,s),s+=e.length;return l}},l0=({progress:e})=>null==e||1===e?null:(0,d.html)` + ${"indeterminate"===e?null:Math.round(100*e)}% + `;var ll=c("k9crH"),lq=c("dYd4C");const l1=new URLSearchParams(window.location.search),l2=(e,t,n)=>{e.getAttribute(t)!==n&&e.setAttribute(t,n)},l3=e=>{document.body.classList.toggle("disable_ui",e),l2(document.head.querySelector("link[data-pluto-file='hide-ui']"),"media",e?"all":"print")},l4=(()=>{let e=new URLSearchParams(window.location.search);return{notebook_id:e.get("id")??window.pluto_notebook_id,statefile:e.get("statefile")??window.pluto_statefile,statefile_integrity:e.get("statefile_integrity")??window.pluto_statefile_integrity,notebookfile:e.get("notebookfile")??window.pluto_notebookfile,notebookfile_integrity:e.get("notebookfile_integrity")??window.pluto_notebookfile_integrity,disable_ui:!!(e.get("disable_ui")??window.pluto_disable_ui),preamble_html:e.get("preamble_html")??window.pluto_preamble_html,isolated_cell_ids:e.has("isolated_cell_id")?e.getAll("isolated_cell_id"):window.pluto_isolated_cell_ids,binder_url:e.get("binder_url")??window.pluto_binder_url,pluto_server_url:e.get("pluto_server_url")??window.pluto_pluto_server_url,slider_server_url:e.get("slider_server_url")??window.pluto_slider_server_url,recording_url:e.get("recording_url")??window.pluto_recording_url,recording_url_integrity:e.get("recording_url_integrity")??window.pluto_recording_url_integrity,recording_audio_url:e.get("recording_audio_url")??window.pluto_recording_audio_url}})(),l9=e=>""===e||"true"===e,l6=e=>"false"===e,l8=(e,t)=>{let n=e.getAttribute(t)??e.getAttribute(t.replaceAll("_","-"));return"disable_ui"===t?!!l9(n)||!l6(n)&&null:"isolated_cell_id"===t?null==n?null:n.split(","):n},l5=l1.has("preamble_url"),l7=({notebook_id:e})=>({metadata:{},notebook_id:e,path:"",shortpath:"",in_temp_dir:!0,process_status:lq.ProcessStatus.starting,last_save_time:0,last_hot_reload_time:0,cell_inputs:{},cell_results:{},cell_dependencies:{},cell_order:[],cell_execution_order:[],published_objects:{},bonds:{},nbpkg:null,status_tree:null}),se=e=>({...e,path:"",shortpath:""}),st=window?.pluto_injected_environment?.custom_get_statefile?.(lJ,se,ll.unpack)??(async(e,t)=>{t("indeterminate");let n=await fetch(new Request(e.statefile,{integrity:e.statefile_integrity??void 0}),{priority:"high"});t(.2);let a=await lJ(n,e=>t(.8*e+.2));return se((0,ll.unpack)(a))}),sn=({launch_params:e})=>{let{statefile:t,statefile_integrity:n}=e,a=null!=t,[r,o]=(0,d.useState)(null),i=(0,d.useRef)(l7(e)),[l,s]=(0,d.useState)(null),[c,u]=(0,d.useState)(!a);(0,d.useEffect)(()=>{!c&&a&&st(e,o).then(e=>{console.log({state:e}),i.current=e,u(!0)}).catch(t=>{console.error(t),s((0,d.html)` +
    +

    Failed to load notebook

    +

    The statefile failed to download. Original error message:

    +
    ${t.toString()}
    +

    Launch parameters:

    +
    ${JSON.stringify(e,null,2)}
    +
    + `)})},[c,a,t]),(0,d.useEffect)(()=>{l3(e.disable_ui)},[e.disable_ui]);let p=e.preamble_html?(0,d.html)`<${iT} body=${e.preamble_html} className=${"preamble"} sanitize_html=${l5} />`:null;return null!=l?l:c?(0,d.html)`<${lX} initial_notebook_state=${i.current} launch_params=${e} preamble_element=${p} />`:(0,d.html)` + ${p} + <${l0} progress=${r} /> + `};class sa extends HTMLElement{constructor(){super()}connectedCallback(){let e=Object.fromEntries(Object.entries(l4).map(([e,t])=>[e,l8(this,e)??t]));console.log("Launch parameters: ",e),document.querySelector(".delete-me-when-live")?.remove(),(0,d.render)((0,d.html)`<${sn} launch_params=${e} />`,this)}}customElements.define("pluto-editor",sa); \ No newline at end of file diff --git a/frontend-dist/editor.2cab3f5e.css b/frontend-dist/editor.2cab3f5e.css new file mode 100644 index 000000000..c00e62cd2 --- /dev/null +++ b/frontend-dist/editor.2cab3f5e.css @@ -0,0 +1 @@ +dialog{color:#000;background:#fff;border:solid;width:fit-content;height:fit-content;margin:auto;padding:1em;display:block;position:absolute;left:0;right:0}dialog:not([open]){display:none}dialog+.backdrop{background:#0000001a;position:fixed;inset:0}._dialog_overlay{position:fixed;inset:0}dialog.fixed{position:fixed;top:50%;transform:translateY(-50%)}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:500;src:url(roboto-mono-cyrillic-ext-500-normal.d362a132.woff2)format("woff2"),url(roboto-mono-all-500-normal.cc559149.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:500;src:url(roboto-mono-cyrillic-500-normal.8ed3add8.woff2)format("woff2"),url(roboto-mono-all-500-normal.cc559149.woff)format("woff");unicode-range:U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:500;src:url(roboto-mono-greek-500-normal.dd57b097.woff2)format("woff2"),url(roboto-mono-all-500-normal.cc559149.woff)format("woff");unicode-range:U+370-3FF}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:500;src:url(roboto-mono-vietnamese-500-normal.1320bb60.woff2)format("woff2"),url(roboto-mono-all-500-normal.cc559149.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:500;src:url(roboto-mono-latin-ext-500-normal.415f7d14.woff2)format("woff2"),url(roboto-mono-all-500-normal.cc559149.woff)format("woff");unicode-range:U+100-24F,U+259,U+1E??,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:500;src:url(roboto-mono-latin-500-normal.98ad1d4e.woff2)format("woff2"),url(roboto-mono-all-500-normal.cc559149.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:700;src:url(roboto-mono-cyrillic-ext-700-normal.5c7aabac.woff2)format("woff2"),url(roboto-mono-all-700-normal.393c796d.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:700;src:url(roboto-mono-cyrillic-700-normal.5e6410cf.woff2)format("woff2"),url(roboto-mono-all-700-normal.393c796d.woff)format("woff");unicode-range:U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:700;src:url(roboto-mono-greek-700-normal.b101f80c.woff2)format("woff2"),url(roboto-mono-all-700-normal.393c796d.woff)format("woff");unicode-range:U+370-3FF}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:700;src:url(roboto-mono-vietnamese-700-normal.edb1435b.woff2)format("woff2"),url(roboto-mono-all-700-normal.393c796d.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:700;src:url(roboto-mono-latin-ext-700-normal.c497b002.woff2)format("woff2"),url(roboto-mono-all-700-normal.393c796d.woff)format("woff");unicode-range:U+100-24F,U+259,U+1E??,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:700;src:url(roboto-mono-latin-700-normal.447ac127.woff2)format("woff2"),url(roboto-mono-all-700-normal.393c796d.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:400;src:url(alegreya-sans-cyrillic-ext-400-normal.55e5afa4.woff2)format("woff2"),url(alegreya-sans-cyrillic-ext-400-normal.e5ff22a5.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:400;src:url(alegreya-sans-cyrillic-400-normal.7ad0b60c.woff2)format("woff2"),url(alegreya-sans-cyrillic-400-normal.b3abccdf.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:400;src:url(alegreya-sans-greek-ext-400-normal.532e031f.woff2)format("woff2"),url(alegreya-sans-greek-ext-400-normal.649d7068.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:400;src:url(alegreya-sans-greek-400-normal.5c283724.woff2)format("woff2"),url(alegreya-sans-greek-400-normal.02c3b443.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:400;src:url(alegreya-sans-vietnamese-400-normal.a906a7f6.woff2)format("woff2"),url(alegreya-sans-vietnamese-400-normal.32e0786f.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:400;src:url(alegreya-sans-latin-ext-400-normal.b71a801c.woff2)format("woff2"),url(alegreya-sans-latin-ext-400-normal.065f6826.woff)format("woff");unicode-range:U+100-2AF,U+304,U+308,U+329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:400;src:url(alegreya-sans-latin-400-normal.c3cfb12f.woff2)format("woff2"),url(alegreya-sans-latin-400-normal.d6a3a798.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:500;src:url(alegreya-sans-cyrillic-ext-500-normal.e6a10a6f.woff2)format("woff2"),url(alegreya-sans-cyrillic-ext-500-normal.7a8f66ad.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:500;src:url(alegreya-sans-cyrillic-500-normal.74695d4e.woff2)format("woff2"),url(alegreya-sans-cyrillic-500-normal.6cecb852.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:500;src:url(alegreya-sans-greek-ext-500-normal.7e2f002e.woff2)format("woff2"),url(alegreya-sans-greek-ext-500-normal.e5a8f936.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:500;src:url(alegreya-sans-greek-500-normal.4fe45dc3.woff2)format("woff2"),url(alegreya-sans-greek-500-normal.6e74adef.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:500;src:url(alegreya-sans-vietnamese-500-normal.6639e3ea.woff2)format("woff2"),url(alegreya-sans-vietnamese-500-normal.5ed8053c.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:500;src:url(alegreya-sans-latin-ext-500-normal.dc4a0b57.woff2)format("woff2"),url(alegreya-sans-latin-ext-500-normal.c8c38132.woff)format("woff");unicode-range:U+100-2AF,U+304,U+308,U+329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:500;src:url(alegreya-sans-latin-500-normal.5c1a4322.woff2)format("woff2"),url(alegreya-sans-latin-500-normal.265ecb58.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:700;src:url(alegreya-sans-cyrillic-ext-700-normal.d29cb5c7.woff2)format("woff2"),url(alegreya-sans-cyrillic-ext-700-normal.54d4ed38.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:700;src:url(alegreya-sans-cyrillic-700-normal.59783bb9.woff2)format("woff2"),url(alegreya-sans-cyrillic-700-normal.04091397.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:700;src:url(alegreya-sans-greek-ext-700-normal.d6a165c3.woff2)format("woff2"),url(alegreya-sans-greek-ext-700-normal.951af0e4.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:700;src:url(alegreya-sans-greek-700-normal.ad68df15.woff2)format("woff2"),url(alegreya-sans-greek-700-normal.8306abb5.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:700;src:url(alegreya-sans-vietnamese-700-normal.1aa83a58.woff2)format("woff2"),url(alegreya-sans-vietnamese-700-normal.066a5a17.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:700;src:url(alegreya-sans-latin-ext-700-normal.cf32efba.woff2)format("woff2"),url(alegreya-sans-latin-ext-700-normal.136a6e5c.woff)format("woff");unicode-range:U+100-2AF,U+304,U+308,U+329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;size-adjust:119%;font-weight:700;src:url(alegreya-sans-latin-700-normal.2aecb91e.woff2)format("woff2"),url(alegreya-sans-latin-700-normal.4a09eb35.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:400;src:url(alegreya-sans-cyrillic-ext-400-italic.bd939e0f.woff2)format("woff2"),url(alegreya-sans-cyrillic-ext-400-italic.2084dbe9.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:400;src:url(alegreya-sans-cyrillic-400-italic.3566c50a.woff2)format("woff2"),url(alegreya-sans-cyrillic-400-italic.7b502436.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:400;src:url(alegreya-sans-greek-ext-400-italic.ae95a328.woff2)format("woff2"),url(alegreya-sans-greek-ext-400-italic.61223683.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:400;src:url(alegreya-sans-greek-400-italic.698a3225.woff2)format("woff2"),url(alegreya-sans-greek-400-italic.a0d1d107.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:400;src:url(alegreya-sans-vietnamese-400-italic.0b633f42.woff2)format("woff2"),url(alegreya-sans-vietnamese-400-italic.abc8a91e.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:400;src:url(alegreya-sans-latin-ext-400-italic.34775b0f.woff2)format("woff2"),url(alegreya-sans-latin-ext-400-italic.8e9f5937.woff)format("woff");unicode-range:U+100-2AF,U+304,U+308,U+329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:400;src:url(alegreya-sans-latin-400-italic.0d0d3a15.woff2)format("woff2"),url(alegreya-sans-latin-400-italic.41a16bae.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:500;src:url(alegreya-sans-cyrillic-ext-500-italic.228ebc5f.woff2)format("woff2"),url(alegreya-sans-cyrillic-ext-500-italic.e76d3c34.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:500;src:url(alegreya-sans-cyrillic-500-italic.2b0c87f4.woff2)format("woff2"),url(alegreya-sans-cyrillic-500-italic.4e7fb286.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:500;src:url(alegreya-sans-greek-ext-500-italic.e29cbb20.woff2)format("woff2"),url(alegreya-sans-greek-ext-500-italic.d86fb2ec.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:500;src:url(alegreya-sans-greek-500-italic.731402fe.woff2)format("woff2"),url(alegreya-sans-greek-500-italic.e7f1407d.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:500;src:url(alegreya-sans-vietnamese-500-italic.d02b2baa.woff2)format("woff2"),url(alegreya-sans-vietnamese-500-italic.0a710f4c.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:500;src:url(alegreya-sans-latin-ext-500-italic.bb5065e8.woff2)format("woff2"),url(alegreya-sans-latin-ext-500-italic.0e057840.woff)format("woff");unicode-range:U+100-2AF,U+304,U+308,U+329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:500;src:url(alegreya-sans-latin-500-italic.b258979c.woff2)format("woff2"),url(alegreya-sans-latin-500-italic.154b3d65.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:700;src:url(alegreya-sans-cyrillic-ext-700-italic.081c5a3b.woff2)format("woff2"),url(alegreya-sans-cyrillic-ext-700-italic.027a1147.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:700;src:url(alegreya-sans-cyrillic-700-italic.d815e736.woff2)format("woff2"),url(alegreya-sans-cyrillic-700-italic.adee9304.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:700;src:url(alegreya-sans-greek-ext-700-italic.4e669d1d.woff2)format("woff2"),url(alegreya-sans-greek-ext-700-italic.f9328bc7.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:700;src:url(alegreya-sans-greek-700-italic.7966e94d.woff2)format("woff2"),url(alegreya-sans-greek-700-italic.054fd57c.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:700;src:url(alegreya-sans-vietnamese-700-italic.59db40f9.woff2)format("woff2"),url(alegreya-sans-vietnamese-700-italic.c83635d5.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:700;src:url(alegreya-sans-latin-ext-700-italic.b9a04ae4.woff2)format("woff2"),url(alegreya-sans-latin-ext-700-italic.f6294451.woff)format("woff");unicode-range:U+100-2AF,U+304,U+308,U+329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;size-adjust:119%;font-weight:700;src:url(alegreya-sans-latin-700-italic.9e7bf2ae.woff2)format("woff2"),url(alegreya-sans-latin-700-italic.828e096b.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Lato;font-style:normal;font-display:swap;font-weight:400;src:url(lato-latin-ext-400-normal.e1ce8ad3.woff2)format("woff2"),url(lato-all-400-normal.a1a68bdf.woff)format("woff");unicode-range:U+100-24F,U+259,U+1E??,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Lato;font-style:normal;font-display:swap;font-weight:400;src:url(lato-latin-400-normal.77db3602.woff2)format("woff2"),url(lato-all-400-normal.a1a68bdf.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Lato;font-style:italic;font-display:swap;font-weight:400;src:url(lato-latin-ext-400-italic.336aaf51.woff2)format("woff2"),url(lato-all-400-italic.c29c8c6c.woff)format("woff");unicode-range:U+100-24F,U+259,U+1E??,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Lato;font-style:italic;font-display:swap;font-weight:400;src:url(lato-latin-400-italic.6edbc86c.woff2)format("woff2"),url(lato-all-400-italic.c29c8c6c.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--pluto-cell-spacing:17px;--pluto-operator-ligatures:none;--julia-mono-font-stack:JuliaMono,Menlo,"Roboto Mono","Lucida Sans Typewriter","Source Code Pro",monospace;--sans-serif-font-stack:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Open Sans","Helvetica Neue",sans-serif;--lato-ui-font-stack:"Lato",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Cantarell,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol",system-ui,sans-serif;--roboto-mono-font-stack:"Roboto Mono","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol",monospace;--system-ui-font-stack:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Cantarell,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol",system-ui,sans-serif;color-scheme:light dark}html{font-size:16px}*{box-sizing:border-box}body{overflow-anchor:none;background-color:var(--main-bg-color);min-height:100vh;margin:0;position:relative;overflow-x:hidden}pluto-editor{flex-direction:column;flex:auto;align-items:center;min-width:0;display:flex}main{flex:1;width:100%;max-width:731px;padding:0 6px 4rem 25px}body:not(.disable_ui) main{padding-bottom:16rem}body:not(.disable_ui){overscroll-behavior:contain}pluto-editor main{align-self:flex-end;margin-right:max(max(0px,50% - 365.5px),min(100% - 731px,500px))}pluto-notebook{background:var(--main-bg-color);display:block}pluto-output{color:var(--pluto-output-color);font-family:Alegreya Sans,Trebuchet MS,sans-serif;font-size:14.5px;font-weight:400}pluto-output h1,pluto-output h2,pluto-output h3,pluto-output h4,pluto-output h5,pluto-output h6{font-feature-settings:"lnum","pnum";color:var(--pluto-output-h-color);margin-block:1rem 0;font-family:Vollkorn,Palatino,Georgia,serif;font-weight:600;line-height:1.25em}pluto-output h1,pluto-output h2{margin-block-start:2rem;font-weight:700}pluto-output h1:first-child,pluto-output h2:first-child{margin-block-start:calc(2rem - var(--pluto-cell-spacing))}pluto-output h1{border-bottom:3px solid var(--rule-color);margin-bottom:.5rem;font-size:2.2rem}pluto-output h2{border-bottom:2px dotted var(--rule-color);margin-bottom:.5rem;font-size:1.8rem}pluto-output h1:empty,pluto-output h2:empty{border-bottom:none}pluto-output h3{font-size:1.6rem}pluto-output h4{font-size:1.4rem}pluto-output h5{font-size:1.2rem}pluto-output h6{font-size:1rem}pluto-output h3:first-child,pluto-output h4:first-child,pluto-output h5:first-child,pluto-output h6:first-child{margin-block-start:0}pluto-output br,pluto-output p{word-spacing:.053em;margin-block-start:0;margin-block-end:var(--pluto-cell-spacing);line-height:1.6em}pluto-output br{margin-block-end:0}pluto-output p:first-child{margin-block-start:0}b,strong{font-weight:bolder}pluto-output li p+ul,pluto-output li p+ol{margin-block-start:calc(var(--pluto-cell-spacing)*-1)}pluto-output p:last-child{margin-block-end:0}pluto-output img,pluto-output video{max-width:100%}a{color:var(--black);text-decoration-thickness:2px;-webkit-text-decoration-color:var(--a-underline);-webkit-text-decoration-color:var(--a-underline);text-decoration-color:var(--a-underline)}a:hover{-webkit-text-decoration-color:var(--black);-webkit-text-decoration-color:var(--black);text-decoration-color:var(--black)}.cm-cursor{border-left:1.2px solid var(--cursor-color)!important}pluto-output code{font-family:var(--julia-mono-font-stack);font-variant-ligatures:none;font-size:.9em}pluto-output code .cm-editor .cm-line{font-family:var(--julia-mono-font-stack)}pluto-output pre>code{font-size:inherit}pluto-output.rich_output code{background-color:var(--pluto-output-bg-color);border-radius:8px;padding:.18em}pluto-output.rich_output pre>code{background-color:#0000;padding:0}pluto-log-dot pre,pluto-output pre{white-space:pre-wrap;word-break:break-all;tab-size:4;font-family:var(--julia-mono-font-stack);font-variant-ligatures:none;margin:0;font-size:.8rem;display:inline-block}pluto-display pre{white-space:pre;word-break:normal}pluto-output hr{border:none;border-top:3px solid var(--rule-color);margin-left:0;margin-right:0}pluto-output blockquote{margin-left:1rem;margin-right:1rem}pluto-output.rich_output pre:not(.no-block),pluto-output blockquote{background-color:var(--blockquote-bg);color:var(--blockquote-color);border-radius:15px;margin-block-start:0;margin-block-end:var(--pluto-cell-spacing);padding:15px;display:block}pluto-output.rich_output pre:not(.no-block):last-child,pluto-output blockquote:last-child{margin-block-end:0}pluto-output div.admonition{border-radius:8px;margin-block:1em}pluto-output div.admonition .admonition-title{font-feature-settings:"lnum","pnum";color:var(--admonition-title-color);margin-block-end:0;padding-left:.3em;font-family:Vollkorn,Palatino,sans-serif;font-size:1.3em;font-weight:600}pluto-output div.admonition .admonition-title~*{margin-block:.5em;transition:filter .1s linear}pluto-output div.admonition{background:var(--jl-message-color);border:5px solid var(--jl-message-accent-color);padding-left:.5rem;padding-right:.5rem}pluto-output div.admonition .admonition-title{background:var(--jl-message-accent-color);margin:-1px;margin-left:-.55rem;margin-right:-.55rem}pluto-output div.admonition.note,pluto-output div.admonition.info,pluto-output div.admonition.hint{background:var(--jl-info-color);border:5px solid var(--jl-info-accent-color)}pluto-output div.admonition.note>.admonition-title,pluto-output div.admonition.info>.admonition-title,pluto-output div.admonition.hint>.admonition-title{background:var(--jl-info-accent-color)}pluto-output div.admonition.warning{background:var(--jl-warn-color);border:5px solid var(--jl-warn-accent-color)}pluto-output div.admonition.warning>.admonition-title{background:var(--jl-warn-accent-color)}pluto-output div.admonition.danger{background:var(--jl-danger-color);border:5px solid var(--jl-danger-accent-color)}pluto-output div.admonition.danger>.admonition-title{background:var(--jl-danger-accent-color)}pluto-output div.admonition.hint>.admonition-title~*{filter:blur(.25em)}pluto-output div.admonition.hint:hover>.admonition-title~*,pluto-output div.admonition.hint:focus-within>.admonition-title~*{filter:blur()}pluto-output div.footnote{margin-block:1em}pluto-output div.footnote p.footnote-title:before{content:"["}pluto-output div.footnote p.footnote-title:after{content:"]: "}pluto-output a.footnote,pluto-output div.footnote p.footnote-title{font-family:var(--roboto-mono-font-stack);letter-spacing:-.05em;margin-block-end:0;font-size:.75rem;font-weight:700}pluto-output div.footnote p.footnote-title~*{border-left:5px solid var(--footnote-border-color);padding-left:.4em;padding-bottom:var(--pluto-cell-spacing);margin-left:.1em;margin-block-end:0}pluto-output div.footnote p:last-child{padding-bottom:0}pluto-output.scroll_y{max-height:502px;overflow:auto}pluto-output table{border-collapse:collapse;border:2px solid var(--table-border-color);border-left:none;border-right:none;margin:0 auto;margin-block-start:var(--pluto-cell-spacing);margin-block-end:var(--pluto-cell-spacing)}pluto-output table>thead{border-bottom:1px solid var(--table-border-color)}pluto-output table>tbody td{font-family:var(--julia-mono-font-stack);font-variant-ligatures:none;font-size:.75rem}pluto-output table>tbody td code{font-size:.75rem}pluto-output table td,pluto-output table th{padding:.2rem .5rem}pluto-output table>tbody tr:hover{background-color:var(--table-bg-hover-color)}pluto-output table pre{white-space:pre}pluto-output kbd,kbd{letter-spacing:-.7px;border:1px solid var(--kbd-border-color);border-radius:3px;padding:0 5px;font-family:Space Mono,monospace;font-size:.7rem}pluto-output mjx-assistive-mml{height:1px}.raw-html-wrapper>div.markdown{overflow:hidden}pluto-output details{border:1px solid var(--rule-color);border-radius:4px;margin-block-start:0;margin-block-end:var(--pluto-cell-spacing);padding:.5em .5em 0}pluto-output details:first-child{margin-block-start:0}pluto-output details:last-child{margin-block-end:0}pluto-output details summary{cursor:pointer;font-family:var(--system-ui-font-stack);background-clip:padding-box;border-radius:3px;margin:-.5em -.5em 0;padding:.5em;font-weight:700;transition:color .25s ease-in-out,background-color .25s ease-in-out}pluto-output details summary:hover{color:var(--blockquote-color);background-color:var(--blockquote-bg)}pluto-output details[open]{padding:.5em}pluto-output details[open] summary{border-bottom:1px solid var(--rule-color);border-bottom-right-radius:0;border-bottom-left-radius:0;margin-bottom:.5em}header#pluto-nav{z-index:60;background-color:var(--header-bg-color);border-bottom:solid 1px var(--header-border-color);width:100%;min-height:60px;font-family:var(--roboto-mono-font-stack);font-size:.8rem;font-weight:400;transition:background-color .5s ease-in-out,transform .25s cubic-bezier(.18,.89,.49,1.13);transform:translateY(0)}header#pluto-nav.show_export{position:sticky;top:0;transform:translateY(130px)}dialog#export{background:var(--export-bg-color);width:100%;height:130px;color:var(--export-color);border:none;max-width:none;max-height:none;margin:0;padding:0;display:block;position:absolute;top:0;overflow:visible;transform:translateY(calc(-100% - 1px))}dialog#export:before{content:"";background:inherit;height:100px;position:absolute;bottom:100%;left:0;right:0}dialog#export div#container{flex-direction:row;max-width:1000px;margin:0 auto;padding-right:10em;display:flex;position:relative}header dialog#export div#container{overflow-x:hidden}header.show_export dialog#export div#container{overflow-x:auto}a.export_card{background:var(--export-card-bg-color);width:169px;height:90px;color:var(--export-card-title-color);box-shadow:0px 2px 10px var(--export-card-shadow-color);border:5px solid #0000;border-radius:8px;flex:none;margin:20px 5px;text-decoration:none}div.export_title{text-orientation:sideways-right;writing-mode:vertical-lr;border-radius:8px;flex:none;height:90px;margin-top:10px;font-size:1rem;font-weight:700;transform:rotate(180deg)}a.export_card header{font-feature-settings:"lnum","pnum";margin-block:0;font-family:Vollkorn,Palatino,sans-serif;font-size:17px}a.export_card section{color:var(--export-card-text-color);padding:3px;font-weight:500}dialog#export .export_small_btns{background:var(--export-bg-color);border-radius:.9em;flex-direction:row;padding:.9em;display:flex;position:absolute;top:0;right:.8em}body.static_preview button.toggle_export{display:none}nav#at_the_top h1{color:var(--nav-h1-text-color);letter-spacing:2px}nav#at_the_top{z-index:100;flex-flow:wrap;max-width:1000px;min-height:60px;margin:0 auto;padding-left:20px;padding-right:20px;display:flex}nav#at_the_top>*{flex:none;align-self:center;margin:10px 0}nav#at_the_top>.flex_grow_1{flex-grow:1}nav#at_the_top>.flex_grow_2{flex-grow:2}nav#at_the_top h1{border-bottom:none;font-size:1.8rem;font-weight:700;display:inline}nav#at_the_top img#logo-small,nav#at_the_top img#logo-big{height:39px;filter:var(--image-filters);margin-bottom:-8px}nav#at_the_top img#logo-small{display:none}@media (width<=800px){nav#at_the_top img#logo-small{display:unset}nav#at_the_top img#logo-big{display:none}}nav#at_the_top>pluto-filepicker,nav#at_the_top>div.desktop_picker{flex-direction:row;flex-grow:1;width:210px;display:flex}nav#at_the_top>pluto-filepicker .cm-editor,nav#at_the_top>div.desktop_picker span{letter-spacing:1px;min-width:10rem;height:calc(1rem + 12px);color:var(--nav-filepicker-color);border:2px solid var(--footer-input-border-color);background:0 0;border-right:none;border-radius:3px 0 0 3px;font-family:inherit;font-size:.8rem;font-style:normal;font-weight:500;display:inline-block}pluto-filepicker .cm-scroller{scrollbar-width:none}pluto-filepicker .cm-scroller::-webkit-scrollbar{display:none}pluto-filepicker button,div.desktop_picker button{cursor:pointer;height:auto}pluto-filepicker button:disabled{cursor:not-allowed}div.desktop_picker span{white-space:nowrap;text-overflow:ellipsis;vertical-align:middle;cursor:pointer;padding:0 5px;line-height:1.8;overflow-x:hidden}button.start_stop_recording,button.toggle_export,.export_small_btns button{cursor:pointer;opacity:.5;background:0 0;border:none}button.start_stop_recording span,button.toggle_export span,.export_small_btns button span{background-size:25px 25px;width:25px;height:25px;display:block;content:" "!important}nav#at_the_top button.start_stop_recording span{background-image:url(radio-button-on-outline.778acac1.svg)}nav#at_the_top button.start_stop_recording.stop span{background-image:url(stop-circle-outline.6623356d.svg)}nav#at_the_top button.toggle_export span{filter:var(--image-filters);background-image:url(share-outline.50164ded.svg)}dialog#export button.toggle_export span{filter:invert();background-image:url(close-outline.9c22a232.svg)}dialog#export button.toggle_frontmatter_edit span{filter:invert();background-image:url(newspaper-outline.e481c39c.svg)}dialog#export button.toggle_presentation span{filter:invert();background-image:url(easel-outline.9b064e1f.svg)}nav#at_the_top:after{align-self:center;margin-left:auto}.cm-tooltip-autocomplete li.file.new:before{content:"👉";color:#000}.cm-tooltip-autocomplete li.file:before{content:"📄";color:#000}.cm-tooltip-autocomplete li.dir:before{content:"📁";color:#000}@media (any-pointer:fine){nav#at_the_top>pluto-filepicker .cm-editor,nav#at_the_top>div.desktop_picker span{border:2px solid #0000;border-right:none;transition:border .15s ease-in-out}nav#at_the_top>pluto-filepicker button,nav#at_the_top>div.desktop_picker button{opacity:0;transition:opacity .15s ease-in-out}header:hover>nav#at_the_top>pluto-filepicker .cm-editor,header:focus-within>nav#at_the_top>pluto-filepicker .cm-editor,header:hover>nav#at_the_top>div.desktop_picker span,header:focus-within>nav#at_the_top>div.desktop_picker span{border:2px solid var(--footer-input-border-color);border-right:none}header:hover>nav#at_the_top>pluto-filepicker button,header:focus-within>nav#at_the_top>pluto-filepicker button,header:hover>nav#at_the_top>div.desktop_picker button,header:focus-within>nav#at_the_top>div.desktop_picker button{opacity:1}}body.binder header#pluto-nav>nav#at_the_top>pluto-filepicker>*{display:none}body.binder header#pluto-nav>nav#at_the_top>pluto-filepicker>a{font-size:16px;font-family:var(--julia-mono-font-stack);opacity:.8;text-decoration:none;display:block}body.nbpkg_restart_recommended header#pluto-nav,body.nbpkg_restart_required header#pluto-nav,body.binder.loading header#pluto-nav,body.process_waiting_for_permission header#pluto-nav,body.process_dead header#pluto-nav,body.disconnected header#pluto-nav{-webkit-backdrop-filter:blur(10px);position:sticky;top:0}body.nbpkg_restart_recommended header#pluto-nav{background-color:var(--restart-recc-header-color)}body.nbpkg_restart_required header#pluto-nav{background-color:var(--restart-req-header-color)}body.process_dead header#pluto-nav{background-color:var(--dead-process-header-color)}body.process_waiting_for_permission header#pluto-nav{background-color:var(--restart-recc-header-color)}body.loading header#pluto-nav{background-color:var(--loading-header-color)}body.disconnected header#pluto-nav{background-color:var(--disconnected-header-color)}body.binder.loading header#pluto-nav{background-color:var(--binder-loading-header-color)}nav#at_the_top>#process_status{background:var(--nav-process-status-bg-color);color:var(--nav-process-status-color);z-index:10;border-radius:10px;margin:5px 5px 5px 1em;padding:5px 10px;font-size:1rem;font-weight:500}nav#at_the_top>#process_status:empty{display:none}.statefile-fetch-progress{--w:min(80vw,300px);left:calc(50vw - .5*var(--w));z-index:300000;width:var(--w);position:fixed;top:0}loading-bar{background:linear-gradient(90deg,var(--loading-grad-color-1),var(--loading-grad-color-2),var(--loading-grad-color-1));opacity:0;z-index:12000;background-size:100vw 100%;width:10vw;height:6px;transition:width 2s cubic-bezier(.14,.71,0,.99),opacity .2s linear;animation:2s ease-in-out infinite move-background;display:block;position:fixed;top:0;left:0}loading-bar.slow{transition:width 10s cubic-bezier(.14,.71,0,.99),opacity .5s linear}@media (prefers-reduced-motion){loading-bar{transition:none}}body.binder.loading #binder_spinners{opacity:.25}@keyframes move-background{0%{background-position-x:0}to{background-position-x:100vw}}.outline-frame{z-index:1500;pointer-events:none;box-sizing:border-box;width:100vw;height:100vh;position:fixed;top:0;left:0}body.process_waiting_for_permission .outline-frame.safe-preview{border-bottom:12px solid var(--restart-recc-header-color)}body.recording_waiting_to_start .outline-frame.recording{border:12px solid #be6f6fba}body.is_recording .outline-frame.recording{border:12px solid #dc3535ba}.outline-frame.playback{opacity:1;border:12px solid #357ddcba;transition:top .3s ease-in-out,opacity .3s ease-in-out;position:absolute;box-shadow:inset 0 0 20px 20px #919bff2b}body.recording_waiting_to_start header#pluto-nav,body.is_recording header#pluto-nav{display:none}.outline-frame-actions-container{z-index:1501;flex-flow:wrap;display:flex;position:fixed;top:3px}.outline-frame-actions-container.safe-preview{top:auto;bottom:4px}.outline-frame-actions-container>.overlay-button{border-color:#e86f6c;margin:0 3px}.outline-frame-actions-container>.overlay-button.record-no-audio{border-color:#dcc6c6}.outline-frame-actions-container>.overlay-button.playback{border-color:#c6c6dc}span.pluto-icon.stop-recording-icon:after{background-image:url(stop-circle-outline.6623356d.svg)}span.pluto-icon.microphone-icon:after{background-image:url(mic-outline.e10eafe2.svg)}span.pluto-icon.info-icon:after{background-image:url(information-circle-outline.008b2bb9.svg)}span.pluto-icon.offline-icon:after{background-image:url(cloud-offline-outline.ac2eade9.svg)}span.pluto-icon.mute-icon:after{background-image:url(mic-off-outline.251c22b7.svg)}span.pluto-icon.follow-recording-icon:after{background-image:url(arrow-undo-outline.d8c99108.svg)}div.recording-playback{z-index:1501;width:min(500px,90vw);position:fixed;bottom:16px}div.recording-playback audio{width:100%}.safe-preview-info{color:var(--black);font-family:var(--system-ui-font-stack);background:var(--white);border:3px solid var(--restart-recc-accent-color);border-radius:.8em;padding:.3em .8em;font-weight:700}.safe-preview-info>span{display:flex}.safe-preview-info button{cursor:pointer;background:0 0;border:none}.safe-preview-output{color:var(--helpbox-header-color);font-family:var(--system-ui-font-stack);opacity:.5;background:var(--restart-recc-header-color);border-radius:.4em;align-items:baseline;gap:.3em;margin:.7em 0;padding:.2em .4em;font-size:.8rem;font-weight:700;display:inline-flex}.raw-html-wrapper.preamble{width:100%}main>preamble{z-index:200;pointer-events:none;height:20px;margin-top:5px;padding-right:5px;display:flex;position:sticky;top:5px}.overlay-button{background:var(--overlay-button-bg);color:var(--overlay-button-color);border:3px solid var(--overlay-button-border);height:35px;font-family:var(--roboto-mono-font-stack);pointer-events:all;white-space:nowrap;border-radius:12px;padding:5px 8px;font-size:.75rem}.overlay-button button:not(.asdfdsf){color:var(--overlay-button-color)}main>preamble #saveall-container{margin-left:auto}pluto-editor.fullscreen main>preamble #saveall-container{transform:translate(max(0px,100vw - 725px))}@media screen and (width>=1231px){pluto-editor.fullscreen main>preamble #saveall-container{transform:translate(500px)}}main>preamble #saveall-container.ask_to_save{border-color:var(--overlay-button-border-save)}main>preamble #saveall-container.saving,main>preamble #saveall-container.saved{border-color:#0000}main>preamble #saveall-container.saving>span,main>preamble #saveall-container.saved>span{opacity:.5}span.pluto-icon:after{content:"";height:1.3em;filter:var(--image-filters);background-image:url(sync-circle-outline.65b15d76.svg);background-position:right 1px;background-repeat:no-repeat;background-size:1.3em;margin-bottom:-.3em;padding-right:1.5em;display:inline-block;transform:translateY(-.1em)}main>preamble span.saved-icon:after,.overlay-button span.saved-icon:after{filter:var(--image-filters);background-image:url(checkmark-outline.4fb8c646.svg)}#saveall-container .only-on-hover{display:none}#saveall-container:hover .only-on-hover{display:inline}pluto-cell{min-height:25px;margin-top:var(--pluto-cell-spacing);display:block;position:relative}pluto-output{background-color:var(--pluto-output-bg-color);align-items:baseline;padding-left:10px;padding-right:10px;display:block;overflow-x:auto}.scroll_y{max-height:80vh;overflow-y:auto}pluto-output:focus{outline:none}pluto-output:not(.rich_output){flex-wrap:wrap;padding-top:3px;padding-bottom:3px;display:flex}pluto-output>assignee{font-family:var(--julia-mono-font-stack);font-variant-ligatures:none;font-size:.75rem}pluto-output>assignee:after{content:" = ";opacity:.6}pluto-output>assignee:empty,.errored pluto-output>assignee{display:none}pluto-output>div{flex-shrink:0;overflow-y:hidden}pluto-output div.raw-html-wrapper{display:contents}pluto-output:not(.rich_output)>div>pre{display:flex}.bonds_disabled:where(.offer_binder,.offer_local) bond{opacity:.6;filter:grayscale()}pluto-display,pluto-display>div{display:contents}.isolated-cell>pluto-output{padding:0}.hidden-cell{display:none}pluto-cell.depends_on_disabled_cells>pluto-output,pluto-cell.running_disabled>pluto-output,pluto-cell.depends_on_disabled_cells>pluto-trafficlight,pluto-cell.running_disabled>pluto-trafficlight,pluto-cell.depends_on_disabled_cells>pluto-input .cm-editor,pluto-cell.running_disabled>pluto-input .cm-editor,pluto-cell.depends_on_disabled_cells>pluto-logs-container,pluto-cell.running_disabled>pluto-logs-container{opacity:.3}pluto-cell.running_disabled>pluto-input .cm-editor,pluto-cell.running_disabled>pluto-output{background-color:var(--disabled-cell-bg-color)}pluto-cell.skip_as_script .skip_as_script_marker,pluto-cell.depends_on_skipped_cells .depends_on_skipped_marker{cursor:help;z-index:20;background-color:var(--skip-as-script-background-color);border-radius:0 4px 4px 0;width:4px;display:block;position:absolute;top:0;bottom:0;right:-3px}pluto-cell.depends_on_skipped_cells .depends_on_skipped_marker{background-color:var(--depends-on-skip-as-script-background-color)}pluto-cell.skip_as_script pluto-input .cm-editor,pluto-cell.depends_on_skipped_cells pluto-input .cm-editor{border-bottom-right-radius:0}pluto-cell.selected{background:var(--selected-cell-bg-color);border-radius:0 3px 3px 0}pluto-cell.selected>pluto-input>div.cm-editor,pluto-cell.selected>pluto-output{opacity:.7}main{cursor:vertical-text}pluto-cell{cursor:auto}pluto-output>div{scrollbar-width:thin;scrollbar-color:transparent transparent}pluto-cell:hover>pluto-output>div{scrollbar-color:var(--hover-scrollbar-color-1)var(--hover-scrollbar-color-2)}pluto-output>div::-webkit-scrollbar{background:0 0;height:6px}pluto-output>div::-webkit-scrollbar-thumb{background:0 0}pluto-cell:hover>pluto-output>div::-webkit-scrollbar{background:var(--hover-scrollbar-color-2)}pluto-cell:hover>pluto-output>div::-webkit-scrollbar-thumb{background:var(--hover-scrollbar-color-1)}pluto-input .cm-editor{z-index:20;border:1px solid var(--normal-cell-color);border-left:none;border-bottom-right-radius:4px;min-height:25px;scroll-margin-block:20vh}pluto-input:focus-within .cm-editor{z-index:21}pluto-input .cm-editor .cm-line{transition:background-color .15s ease-in-out}pluto-input .cm-editor span.cm-highlighted-range,pluto-input .cm-editor .cm-line.cm-highlighted-line{background-color:var(--cm-highlighted);border-radius:3px}pluto-cell:not(.show_input)>pluto-input{display:none}pluto-cell.code_differs>pluto-input>.cm-editor{border:1px solid var(--code-differs-cell-color);border-left:none}button.floating_back_button,.overlay-button button,pluto-cell>button,pluto-input>button,pluto-runarea>button,pluto-shoulder>button,nav#slide_controls>button{opacity:.5;cursor:pointer;color:var(--ui-button-color);font-family:var(--roboto-mono-font-stack);z-index:30;background:0 0;border:none;margin:0;padding:1px;font-size:.75rem;position:absolute}.overlay-button button{position:relative}pluto-shoulder{--invisible-border:calc(.5*var(--pluto-cell-spacing));--shoulder-width:calc(28px + var(--invisible-border));--border-radius:calc(5px + var(--invisible-border));left:calc(0px - var(--shoulder-width));width:var(--shoulder-width);border-radius:var(--border-radius)0px 0px var(--border-radius);cursor:move;top:calc(0px - var(--invisible-border));bottom:calc(0px - var(--invisible-border));border:var(--invisible-border)solid #0000;border-right:none;flex-direction:row;justify-content:flex-end;align-items:flex-start;display:flex;position:absolute}pluto-editor.fullscreen pluto-shoulder{--shoulder-width:2000px}pluto-shoulder:hover{background:var(--shoulder-hover-bg-color);background-clip:padding-box}pluto-shoulder>button{flex:none;padding:4px 5px 4px 10px;position:sticky;top:0}pluto-cell:focus-within>pluto-shoulder>button{padding-right:9px}pluto-shoulder>button>span:after{filter:var(--image-filters);background-image:url(eye-outline.6e6e0f7c.svg)}pluto-cell.code_folded>pluto-shoulder>button>span:after{filter:var(--image-filters);background-image:url(eye-off-outline.a37e03db.svg)}pluto-trafficlight{--patternHeight:22.6274px;box-sizing:content-box;pointer-events:none;border-left-color:var(--normal-cell-color);background:var(--normal-cell-color);border-top-left-radius:4px;border-bottom-left-radius:4px;width:4px;margin-right:-1px;position:absolute;top:0;bottom:0;left:-4px;overflow:hidden}pluto-trafficlight:after{content:"";top:calc(0px - 10*var(--patternHeight));width:100%;height:calc(100% + 10*var(--patternHeight));opacity:0;position:absolute;left:0}pluto-cell.activate_animation pluto-trafficlight:after{animation:10s linear infinite scrollbackground}body:not(.___) pluto-cell.code_folded>pluto-trafficlight{background:0 0}@media screen and (any-pointer:fine){body:not(.disable_ui) pluto-cell:hover>pluto-trafficlight{background:var(--normal-cell-color)}}body:not(.___) pluto-cell:focus-within>pluto-trafficlight{background-clip:padding-box;background-color:var(--normal-cell-color);border-left-style:solid;border-left-width:4px;margin-left:-4px}body:not(.___) pluto-cell.selected>pluto-trafficlight{background:var(--selected-cell-color);border-left-color:var(--selected-cell-color);background-clip:padding-box}body:not(.___) pluto-cell.code_differs>pluto-trafficlight{background:var(--code-differs-cell-color);border-left-color:var(--code-differs-cell-color);background-clip:padding-box}body:not(.___) pluto-cell.errored>pluto-trafficlight{background:var(--error-cell-color);border-left-color:var(--error-cell-color);background-clip:padding-box}body:not(.___) pluto-cell.queued>pluto-trafficlight:after{background:repeating-linear-gradient(-45deg,#0000,#0000 8px,var(--normal-cell-color)8px,var(--normal-cell-color)16px);opacity:.99;background-clip:padding-box;background-size:4px var(--patternHeight);animation-duration:20s}body:not(.___) pluto-cell.running>pluto-trafficlight:after{background:repeating-linear-gradient(-45deg,var(--normal-cell-color),var(--normal-cell-color)8px,var(--dark-normal-cell-color)8px,var(--dark-normal-cell-color)16px);opacity:.99;background-clip:content-box;background-size:4px var(--patternHeight)}body:not(.___) pluto-cell.queued.errored>pluto-trafficlight:after,body:not(.___) pluto-cell.running.errored>pluto-trafficlight:after{background:repeating-linear-gradient(-45deg,var(--light-error-cell-color),var(--light-error-cell-color)8px,var(--bright-error-cell-color)8px,var(--bright-error-cell-color)16px);opacity:.99;background-clip:content-box;background-size:4px var(--patternHeight)}@keyframes scrollbackground{0%{transform:translate(0)}to{transform:translate(0,calc(10*var(--patternHeight)))}}pluto-cell>button>span,pluto-input>button>span{pointer-events:none}@media screen and (any-pointer:fine){pluto-cell>button,pluto-input>button,pluto-runarea>button,pluto-shoulder>button,pluto-cell>pluto-runarea{opacity:0;transition:opacity .25s ease-in-out}.export_small_btns button,button.toggle_export,button.start_stop_recording,pluto-cell:hover>button,pluto-cell:focus-within>button,pluto-cell:hover>pluto-input>button,pluto-cell:focus-within>pluto-input>button,pluto-cell>pluto-runarea>button,pluto-cell:hover>pluto-shoulder>button,pluto-cell:focus-within>pluto-shoulder>button{opacity:.6;transition:opacity .25s ease-in-out}.export_small_btns button:hover,button.toggle_export:hover,button.start_stop_recording:hover,.overlay-button button:hover,pluto-cell>button:hover,pluto-cell>pluto-input>button:hover,pluto-cell>pluto-runarea>button:hover,pluto-cell>pluto-shoulder>button:hover,pluto-cell:hover>pluto-runarea{opacity:1;transition:opacity 50ms ease-in-out}}@media screen and (pointer:coarse){pluto-cell>button.add_cell,pluto-input>button,pluto-shoulder>button{opacity:.25;transition:opacity .25s ease-in-out}pluto-cell:not(:first-of-type,:last-of-type)>button.add_cell{opacity:.125}pluto-cell:focus-within>button.add_cell,pluto-cell:focus-within>pluto-input>button,pluto-cell:focus-within>pluto-runarea,pluto-cell:focus-within>pluto-shoulder>button{opacity:.6;transition:opacity .25s ease-in-out}pluto-cell>pluto-input>button:focus-within,pluto-cell>button:focus-within,pluto-cell>pluto-input>button:focus-within pluto-cell>pluto-runarea>button:focus-within,pluto-cell>pluto-shoulder>button:focus-within,pluto-cell>pluto-runarea{opacity:1;transition:opacity 50ms ease-in-out}}pluto-cell>button>span:after,pluto-input>button>span:after,pluto-runarea>button>span:after,pluto-shoulder>button>span:after{background-size:17px 17px;width:17px;height:17px;display:block;content:" "!important}pluto-cell>button.add_cell{--hit-box-extend:20px;margin-left:calc(-1*var(--hit-box-extend));margin-right:calc(-1*var(--hit-box-extend));padding-left:var(--hit-box-extend);padding-right:var(--hit-box-extend);left:-12px}pluto-cell>button.add_cell.before{margin-top:calc(-19px - .5*(var(--pluto-cell-spacing) - 19px))!important}pluto-cell>button.add_cell.after{margin-bottom:calc(-20px - .5*(var(--pluto-cell-spacing) - 19px));bottom:1px}pluto-cell>button.add_cell>span:after{filter:var(--image-filters);background-image:url(add-outline.e3c93c35.svg)}pluto-input>.input_context_menu ul{border:1px solid var(--input-context-menu-border-color);background-color:var(--input-context-menu-bg-color);border-radius:6px;grid-template-columns:max-content;margin:0;padding:0;display:grid}pluto-input{display:block;position:relative}pluto-input>div.input_context_menu{z-index:1400;position:absolute;top:-8px;left:100%}@media screen and (width>=921px){pluto-input>div.input_context_menu{left:calc(100% - 3px)}}@media screen and (width<=920px){pluto-input>div.input_context_menu{right:0;left:unset;z-index:1401}}pluto-input>.input_context_menu li{flex-direction:column;align-items:stretch;margin-block-end:0;list-style:none;display:flex}pluto-input>.input_context_menu li button{letter-spacing:-.02em;color:var(--input-context-menu-li-color);cursor:pointer;background:0 0;border:none;border-radius:2px;justify-content:flex-start;align-items:center;height:32px;margin-block-end:0;padding:8px;font-family:Roboto Mono,system-ui;font-size:.8rem;display:flex;position:relative}.input_context_menu li:last-child{border-bottom-right-radius:6px;border-bottom-left-radius:6px}.input_context_menu li:first-child{border-top-left-radius:6px;border-top-right-radius:6px}.input_context_menu li.coming_soon{color:var(--input-context-menu-soon-color)}.input_context_menu li.coming_soon:hover{cursor:not-allowed;background-color:var(--input-context-menu-hover-bg-color)}.input_context_menu li:hover{background-color:var(--input-context-menu-hover-bg-color);transition-property:background-color;transition-duration:.2s}.ctx_icon,.icon{--size:17px;width:var(--size);height:var(--size);background-size:var(--size)var(--size);margin-top:1px;margin-right:calc(var(--size)/3);background-position:50%}.ctx_icon{filter:var(--image-filters)}.ctx_icon.show_logs,.ctx_icon.hide_logs{background-image:url(document-text-outline.8d1e2333.svg)}.ctx_icon.enable_cell{background-image:url(caret-forward-circle-outline.d0bf2b34.svg)}.ctx_icon.disable_cell{background-image:url(ban-outline.c97da9b4.svg);background-repeat:no-repeat;background-size:15px}.ctx_icon.delete{background-image:url(close-circle-outline.4baeedb9.svg)}.ctx_icon.run_as_script{background-image:url(document-lock-outline.69d176a4.svg)}.ctx_icon.skip_as_script{background-image:url(document-text-outline.8d1e2333.svg)}.ctx_icon.copy_output{background-image:url(copy-outline.0f561529.svg)}pluto-input>button.input_context_menu{padding:5px;right:0}pluto-input>.input_context_menu.open{opacity:1}pluto-input>.input_context_menu span.icon:after{filter:var(--image-filters);background-image:url(ellipsis-horizontal-circle-outline.6279ed30.svg)}pluto-input>.preview_hidden_code_info{text-align:center;background:var(--jl-info-color);width:19ch;height:1.4rem;font-style:italic;font-family:var(--system-ui-font-stack);z-index:22;pointer-events:none;border-radius:.4rem;margin-left:auto;margin-right:auto;font-size:.9rem;display:none;position:absolute;bottom:-1.1rem;left:0;right:0}body:not(.process_waiting_for_permission) pluto-cell.code_folded pluto-input>.preview_hidden_code_info,pluto-cell.code_folded:focus-within pluto-input>.preview_hidden_code_info{display:block}pkg-status-mark{width:1em;height:1em;margin:0 .6em 0 .2em;display:inline-block}body.nbpkg_disabled pkg-status-mark:not(.disable_pkg){display:none}pkg-status-mark>button{cursor:context-menu;background:0 0;border:none;margin:0;padding:0;position:relative;top:-.2em}pkg-status-mark>button>span:after{opacity:.3;width:1.5em;height:1.5em;filter:var(--image-filters);background-image:url(time-outline.7c1877f0.svg);background-size:1.5em;display:inline-block;content:" "!important}pkg-status-mark.installed>button>span:after{filter:var(--image-filters);background-image:url(checkmark-outline.4fb8c646.svg)}pkg-status-mark.busy>button>span:after{filter:var(--image-filters);background-image:url(sync-outline.9a1bd27b.svg);animation:3s ease-in-out infinite loadspin}pkg-status-mark.not_found>button>span:after{opacity:.6;filter:var(--image-filters);background-image:url(cloud-offline-outline.ac2eade9.svg)}pkg-status-mark.will_be_installed>button>span:after{opacity:.6;filter:var(--image-filters);background-image:url(cloud-download-outline.8c1ff9bb.svg)}pkg-status-mark.disable_pkg>button>span:after{opacity:.6;filter:var(--image-filters);background-image:url(chatbox-ellipses-outline.4334a3a4.svg)}pluto-popup{z-index:1800;--max-size:251px;width:min(90vw,var(--max-size));overflow-wrap:break-word;font-family:var(--system-ui-font-stack);opacity:0;transform-origin:0;pointer-events:none;margin-top:-1rem;margin-left:.4rem;transition:transform .5s ease-in-out,opacity .1s ease-in-out;display:block;position:absolute;transform:scale(.2)}pluto-popup.visible{opacity:1;pointer-events:initial;transition:transform .2s ease-in-out,opacity .2s ease-in-out;transform:scale(1)}pluto-popup.big{--max-size:25em}pluto-popup>*{background:var(--overlay-button-bg);border:3px solid var(--overlay-button-border);color:var(--black);border-radius:10px;max-width:100%;max-height:80vh;padding:8px;display:block;position:absolute;overflow-y:auto}pluto-popup>div>:first-child{margin-block-start:0}pluto-popup h1{font-size:1.6em}pluto-popup.warn>*{background:var(--pluto-logs-warn-color);border-color:var(--pluto-logs-warn-accent-color)}pluto-popup code.auto_disabled_variable{font-family:var(--julia-mono-font-stack);font-variant-ligatures:none;font-size:.8rem}pluto-popup>pkg-popup{background:var(--pkg-popup-bg);border:3px solid var(--pkg-popup-border-color)}pkg-popup.busy{border:3px solid #aa80bc}pkg-version{opacity:.5;font-family:Space Mono,monospace;font-size:.75rem}pkg-popup .pkg-buttons{float:right;flex-direction:row;height:1em;display:inline-flex}.ionicon{filter:var(--image-filters)}.package-name .ionicon{margin-bottom:-.1ch}a.stdout-info img,pkg-popup .pkg-buttons img{filter:var(--image-filters)}a.stdout-info,pkg-popup .pkg-buttons>*{box-sizing:content-box;background:var(--pkg-popup-buttons-bg-color);z-index:52;border-radius:10px;height:17px;margin-left:-4px;padding:4px;display:block}pkg-popup .toggle-terminal{right:20px}.pkg-time-estimate{background:var(--pluto-logs-warn-color);border-radius:.5em;margin:.5em 0;padding:.5em;font-size:.8em}pkg-terminal{cursor:text;background:var(--pkg-terminal-bg-color);color:#fff;border:3px solid var(--pkg-terminal-border-color);border-radius:6px;margin-top:6px;padding:3px;display:block}pkg-terminal>.scroller{width:100%;max-height:10rem;padding:4px;overflow-y:auto}body pkg-terminal:not(.asdf) pre:not(.asdf){white-space:pre-wrap;word-break:break-all;font-variant-ligatures:none;color:inherit;background:0 0;margin:0;font-family:Space Mono,monospace;font-size:.6rem}pkg-terminal .make-me-spin{transform-origin:50% 59%;animation:1s linear infinite identifier-spin;animation-delay:var(--animation-delay);display:inline-block}pkg-popup pkg-terminal{display:none}pkg-popup.showterminal pkg-terminal{display:block}@keyframes loadspin{0%{transform:rotate(0)}25%{transform:rotate(180deg)}50%{transform:rotate(180deg)}75%{transform:rotate(360deg)}to{transform:rotate(360deg)}}pluto-runarea{background-color:var(--pluto-runarea-bg-color);z-index:19;border-top:none;border-bottom-right-radius:5px;border-bottom-left-radius:5px;min-width:75px;height:17px;margin-right:3px;display:block;position:absolute;right:0}pluto-runarea>span{width:45px;font-family:var(--roboto-mono-font-stack);color:var(--pluto-runarea-span-color);text-align:center;font-size:.6em;font-style:italic;display:inline-block;position:absolute;top:1px;left:22px}pluto-runarea>button.runcell{top:-1px;left:1px}pluto-runarea>button.runcell>span:after{filter:var(--image-filters);background-image:url(caret-forward-circle-outline.d0bf2b34.svg)}pluto-runarea.interrupt>button.runcell>span:after{filter:var(--image-filters);background-image:url(stop-circle-outline.6623356d.svg)}pluto-runarea.jump>button.runcell>span:after{filter:var(--image-filters);background-image:url(arrow-redo-circle-outline.dfa899f4.svg)}pluto-runarea.save>button.runcell>span:after{filter:var(--image-filters);background-image:url(chevron-forward-circle-outline.babf2a99.svg)}pluto-cell:not(.show_input)>pluto-runarea{display:none}pluto-cell.code_folded.show_input>pluto-input:not(:focus-within){opacity:.4}pluto-cell:focus-within>pluto-runarea,pluto-cell.code_differs>pluto-runarea{opacity:1}pluto-cell.code_differs>pluto-runarea>button{animation-name:👀;animation-duration:4s;animation-iteration-count:infinite}@keyframes 👀{0%,80%,to{opacity:.5;transform:scale(1)}90%{opacity:1;transform:scale(1.2)}}dropruler{height:4px;margin-top:calc(-2px - .5*var(--pluto-cell-spacing));background:var(--dropruler-bg-color);display:none;position:absolute;left:0;right:0}#helpbox-wrapper{z-index:50;width:100%;height:0;display:none;position:sticky;bottom:0}@media (width>=500px){#helpbox-wrapper{display:block}}pluto-helpbox{background-color:var(--helpbox-bg-color);width:clamp(300px,100vw - 781px,450px);height:min(70vh,900px);color:var(--helpbox-text-color);box-shadow:0 0 11px 0px var(--helpbox-box-shadow-color);border-bottom:none;border-right:none;border-top-left-radius:9px;border-top-right-radius:9px;flex-direction:column;display:flex;position:absolute;bottom:0;right:20px}pluto-helpbox>section{flex-direction:column;height:100%;padding:10px;display:flex;overflow:auto}pluto-helpbox>header{background-color:var(--helpbox-header-bg-color);color:var(--helpbox-header-color);font-family:var(--system-ui-font-stack);font-variant-numeric:tabular-nums;--border-radius:.4em;border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);gap:.5em;padding:.6em;font-size:.9rem;font-weight:500;display:flex}pluto-helpbox>header>button.helpbox-tab-key>.tabicon{--size:1.1em;width:var(--size);height:var(--size);background-size:var(--size);margin-bottom:calc(-.15*var(--size));filter:var(--image-filters);margin-right:.6em;display:inline-block}pluto-helpbox>header>button.helpbox-docs>.tabicon{background-image:url(search.1ca5b3b3.svg)}pluto-helpbox>header>button.helpbox-process>.tabicon{background-image:url(pulse.27a877a7.svg)}pluto-helpbox>header>button.helpbox-tab-key:disabled>.tabicon{opacity:.5}pluto-helpbox .live-docs-searchbox{margin:1em;display:flex}pluto-helpbox .live-docs-searchbox input{background-color:inherit;color:inherit;border:none;border:3px solid var(--helpbox-search-border-color);background:var(--helpbox-search-bg-color);font-family:var(--julia-mono-font-stack);border-radius:.3em;flex-grow:1;margin:auto;padding:.5em;font-size:.9rem}pluto-helpbox .live-docs-searchbox.notfound input{color:var(--helpbox-notfound-search-color)}pluto-helpbox .live-docs-searchbox input:focus{outline:none}button.helpbox-tab-key{cursor:pointer;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;font-variant:inherit;border-radius:var(--border-radius);background:var(--helpbox-header-tab-bg-color);text-overflow:ellipsis;white-space:nowrap;border:none;padding:.5em .6em;overflow:hidden}button.helpbox-tab-key.helpbox-process{margin-right:auto}button.helpbox-process.busy{outline:6px solid var(--process-busy)}@media (prefers-reduced-motion:no-preference){button.helpbox-process.busy{animation:.8s ease-in infinite alternate outline-heartbeat}}@keyframes outline-heartbeat{0%{outline-offset:-1px;outline-width:3px}to{outline-offset:0px;outline-width:6px}}button.active.helpbox-tab-key{outline:3px solid #99afb9;animation:none}pluto-helpbox>header>button:is(.helpbox-close,.helpbox-popout){cursor:pointer;background:0 0;border:15px solid #0000;margin:-15px}pluto-helpbox>header>button:is(.helpbox-close,.helpbox-popout)>span{width:1em;height:1em;filter:var(--image-filters);background-image:url(chevron-down-outline.1efaf1cc.svg);background-size:1em 1em;display:block;content:" "!important}pluto-helpbox>header>button.helpbox-popout>span{background-image:url(open-outline.87533923.svg)}pluto-helpbox.hidden{height:initial;width:auto}pluto-helpbox.hidden>section{display:none}body>pluto-helpbox{width:auto;height:100vmax;position:static}body>pluto-helpbox>header>button:is(.helpbox-close,.helpbox-popout){display:none}.helpbox-docs{font-family:var(--lato-ui-font-stack);line-height:1.5}.helpbox-docs pre,.helpbox-docs code,.helpbox-docs .cm-line{font-family:var(--julia-mono-font-stack);font-variant-ligatures:none;font-size:.95em;line-height:initial}.helpbox-docs pre code{font-size:1em}.helpbox-docs pre code.hljs,.helpbox-docs code .cm-editor .cm-content{padding:0}.helpbox-docs img{max-width:100%}.helpbox-docs>section h1,.helpbox-docs>section h2,.helpbox-docs>section h3,.helpbox-docs>section h4,.helpbox-docs>section h5,.helpbox-docs>section h6{border-bottom:none;font-family:inherit;font-size:1rem}.helpbox-docs>section h1{overflow-wrap:anywhere;font-size:1.3rem}.helpbox-docs>section pre{-webkit-overflow-scrolling:touch;background:var(--code-section-bg-color);border:1px solid var(--code-section-border-color);white-space:pre;word-wrap:normal;border-radius:4px;padding:.7rem .5rem;overflow-x:auto}.helpbox-docs>section hr{border:none;border-top:3px solid var(--rule-color)}.pluto-docs-binding{background:var(--docs-binding-bg);color:var(--pluto-output-color);border-radius:1em;margin:.5em;padding:1em}.pluto-docs-binding>span{font-family:var(--julia-mono-font-stack);background:var(--pluto-output-bg-color);color:var(--black);border-radius:.4rem;margin-top:-1em;padding:.235rem;font-size:.9rem;font-weight:700;display:inline-block;transform:translate(-1.2em,-73%)}.pluto-docs-binding h1{font-size:1.4em}.pluto-docs-binding h2{font-size:1.3em}.pluto-docs-binding h3,.pluto-docs-binding h4,.pluto-docs-binding h5,.pluto-docs-binding h6{font-size:1.1em}pl-status{--status-color:var(--process-undefined);font-family:var(--system-ui-font-stack);--indent:.7rem;margin-left:var(--indent);border-left:3px solid #0000;border-radius:.2em;flex-direction:column;flex:none;margin-top:.4em;font-size:.9rem;display:flex;overflow:hidden}pl-status:before{background:pink;flex:1 2 auto;width:3px;height:10px;display:inline-block;inset:3px 0}pl-status.busy{--status-color:var(--process-busy)}pl-status.finished{--status-color:var(--process-finished)}pl-status.failed{--status-color:var(--process-failed)}pl-status.can_open{cursor:auto;border-color:#98989854}pl-status.can_open>div{cursor:pointer;border-top-left-radius:0;border-bottom-left-radius:0}pl-status.can_open.is_open{border-color:var(--status-color)}pl-status[data-depth="0"],pl-status[data-depth="1"]{margin-left:0}pl-status>div{background:var(--process-item-bg);border-radius:.4em;flex-direction:row;align-items:center;padding:.2em;display:flex}pl-status>div>.status-icon{content:"";background-color:var(--status-color);border-radius:50%;flex:none;width:1em;height:1em;margin:0 .5em;display:inline-block}pl-status.busy>div>.status-icon{border:3px solid #7ab881;border-color:#0000 #7ab881 #7ab881 #0000;animation:1.7s linear infinite identifier-spin}@keyframes identifier-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.subprogress-counter{opacity:.5;font-size:.8em}pl-status .status-time{opacity:.6;font-variant-numeric:tabular-nums;margin-left:auto;padding-left:.5em;padding-right:.5em;font-size:.7rem}.discrete-progress-bar{background:var(--process-item-bg);contain:strict;border-radius:4px;flex-direction:row;align-items:stretch;gap:2px;height:1em;padding:3px;display:flex}.discrete-progress-bar>div{background:var(--process-undefined);border-radius:2px;flex:auto}.discrete-progress-bar>div.done{background:var(--process-finished)}.discrete-progress-bar>div.busy{background:var(--process-busy)}.discrete-progress-bar>div.failed{background:var(--process-failed)}.discrete-progress-bar.mid{gap:1px}.discrete-progress-bar.big{gap:0}pl-status pkg-terminal{margin-left:var(--indent)}pluto-helpbox.helpbox-process>section{padding-bottom:3.6rem}.notify-when-done{font-family:var(--system-ui-font-stack);opacity:0;-webkit-user-select:none;user-select:none;justify-content:center;font-size:.8rem;font-weight:700;transition:opacity .2s;display:flex;position:absolute;bottom:.3em;left:0;right:0}.notify-when-done.visible{opacity:1}.notify-when-done.visible label{cursor:pointer}.notify-when-done label{background:var(--process-notify-bg);border-radius:1000px;align-items:center;padding:.3em .6em;display:flex;box-shadow:0 3px 5px #0000003b}.notify-when-done label:before{content:"";width:1em;height:1em;filter:var(--image-filters);background-image:url(notifications-outline.aa91b431.svg);background-size:contain;margin-bottom:-.2em;margin-right:.3em;display:inline-block}footer{width:100%;min-height:3.5rem;font-family:var(--roboto-mono-font-stack);background-color:var(--footer-bg-color);color:var(--footer-color);z-index:70;font-size:.75rem}footer form{opacity:1;flex-wrap:wrap;min-height:1.5rem;transition:opacity 5s;display:flex}footer form>*{flex:none}footer form>a,footer form>label{align-self:center}footer form>label,footer form>a{margin-right:1em}footer a{color:var(--footer-atag-color);opacity:.6;font-weight:700}@media (width<=650px){footer form>label{display:none}}footer input{border:2px solid var(--footer-input-border-color);background:var(--white);font-family:inherit;font-size:inherit;border-right:none;border-radius:3px 0 0 3px;margin:0;padding:3px}header#pluto-nav pluto-filepicker button,footer button{background:var(--footer-filepicker-focus-color);border:3px solid var(--footer-filepicker-focus-color);color:var(--footer-filepicker-button-color);border-radius:0 3px 3px 0;height:auto;margin:0;font-family:inherit;font-size:.75rem;font-weight:600}footer #info{text-align:right;flex-direction:row;justify-content:flex-end;align-items:center;max-width:9400px;margin:0 auto;padding:1rem;display:flex}nav#undo_delete{z-index:2000;font-family:var(--roboto-mono-font-stack);background-color:var(--white);color:var(--black);box-shadow:0px 0px 10px 2px var(--undo-delete-box-shadow-color);opacity:1;border-radius:3px;margin:.75rem;padding:.5rem;font-size:.75rem;transition:box-shadow .2s linear,margin-bottom .2s ease-out,opacity 50ms linear;display:block;position:fixed;bottom:0;left:0}nav#undo_delete.hidden{box-shadow:0px 0px 10px -5px var(--undo-delete-box-shadow-color);opacity:0;pointer-events:none;margin-bottom:0}@keyframes shadow-fadeout{0%{box-shadow:0px 0px 10px 2px var(--undo-delete-box-shadow-color);opacity:1}80%{opacity:1}to{opacity:0}}pluto-logs-container{z-index:25;max-height:50vh;margin-right:1.3rem;display:block;overflow:hidden auto}pluto-logs-container:not(:empty){background:var(--pluto-logs-bg-color);padding:6px}pluto-logs-container>header{font-family:var(--roboto-mono-font-stack);opacity:.6;padding:.2em .2em 0;font-size:1.3rem;font-weight:700}pluto-logs-container pluto-progress-bar-container{outline:3px solid var(--pluto-logs-progress-border);outline-offset:-2px;background:var(--pluto-logs-progress-bg);border-radius:6px;flex:0 200px;font-size:.7rem;overflow:hidden}pluto-logs-container pluto-progress-name{white-space:pre-wrap;font-family:var(--julia-mono-font-stack);font-variant-ligatures:none;padding:0 .4rem 0 .1rem;font-size:.8rem}pluto-logs-container pluto-progress-name:empty{padding:0}pluto-logs-container pluto-progress-bar{--c:var(--pluto-logs-progress-fill);background:linear-gradient(90deg,var(--c),var(--c));background-repeat:no-repeat;align-items:center;padding:.3em .6em;transition:background-size .5s cubic-bezier(.14,.71,0,.99),opacity .2s linear;display:grid}pluto-logs-container pluto-progress-bar.collapsed{height:0}pluto-logs{flex-direction:column;display:flex}pluto-logs:not(:first-child):not(:empty){margin-top:10px}pluto-log-dot{font-family:var(--roboto-mono-font-stack);flex-direction:column;flex-grow:1;min-width:18px;min-height:18px;padding:.6em .9em .6em .3em;font-size:.6rem;display:flex;position:relative}pluto-log-dot-positioner{--bg-color:var(--pluto-logs-info-color);--accent-color:var(--pluto-logs-info-accent-color);--icon-image:unset;background:var(--bg-color);background:linear-gradient(148deg,var(--bg-color),transparent);background-size:200% 100%;border-radius:6px;flex-direction:row;margin:2px;display:flex}pluto-log-dot>pre{color:var(--accent-color)}pluto-log-truncated{font-family:var(--system-ui-font-stack);opacity:.7;place-items:center;padding:.7em;font-style:italic;display:grid}pluto-log-icon:before{content:"";background-image:var(--icon-image);width:1em;height:1em;filter:var(--image-filters);background-size:1em;margin:.3em;display:inline-flex}pluto-log-dot-positioner.Info{--icon-image:url(information-circle-outline.008b2bb9.svg)}pluto-log-dot-positioner.Info pluto-log-icon:before{opacity:.4}pluto-log-dot-positioner.Warn{--bg-color:var(--pluto-logs-warn-color);--accent-color:var(--pluto-logs-warn-accent-color);--icon-image:url(warning-outline.d84ed9e8.svg)}pluto-log-dot-positioner.Error{--bg-color:var(--pluto-logs-danger-color);--accent-color:var(--pluto-logs-danger-accent-color);--icon-image:url(close-circle-outline.4baeedb9.svg)}pluto-log-dot-positioner.Debug{--bg-color:var(--pluto-logs-debug-color);--accent-color:var(--pluto-logs-debug-accent-color);--icon-image:url(information-circle-outline.008b2bb9.svg)}pluto-log-dot-positioner.Stdout{--icon-image:url(terminal-outline.79a23031.svg)}pluto-log-dot-positioner.Stdout pluto-log-icon:before{opacity:.4}pluto-log-dot.Progress{flex-direction:row;align-self:center;align-items:center;padding:0;display:flex}pluto-log-dot.Stdout{--inner:#71624b;--outer:#50483f;background:radial-gradient(var(--inner),var(--inner)20%,var(--outer));color:#c0ffab;text-shadow:1px 1px 2px #0000005e;border:6px solid #b7b7b7;border-radius:8px;min-width:18em}pluto-log-dot.Stdout:after,pluto-log-dot.Stdout:before{content:" ";pointer-events:none;display:block;position:absolute;inset:0}pluto-log-dot.Stdout:before{opacity:.3;background:linear-gradient(349deg,#000,#0000)}pluto-log-dot.Stdout:after{--crt-spacing:7px;background:linear-gradient(#534837,#0000,#1a1a1a);background-size:100% var(--crt-spacing);opacity:.2;background-repeat:repeat;animation:1s linear infinite paused scroll-crt}pluto-log-dot.Stdout pre:before{content:" ";float:right;width:24px}a.stdout-info{z-index:unset;pointer-events:initial;position:absolute;top:2px;right:2px}@keyframes scroll-crt{0%{background-position:0 0}to{background-position:0px var(--crt-spacing)}}@media (prefers-reduced-motion:no-preference){pluto-log-dot.Stdout:hover:after{animation-play-state:running}}@media (prefers-contrast:more){pluto-log-dot.Stdout:after{display:none!important}}pluto-log-dot jlerror{background:var(--main-bg-color);border-radius:.5rem;padding:.6rem;display:block}pluto-log-dot jltree,pluto-log-dot jlpair{font-size:.6rem}pluto-log-dot>img{max-width:100px}pluto-log-dot-kwarg{flex-flow:wrap;display:flex}pluto-log-dot-kwarg>*{flex:0 auto}pluto-log-dot-kwarg>pluto-key{color:var(--pluto-logs-key-color);margin-right:calc(1em - 30px)}pluto-log-dot-kwarg>pluto-key:after{content:": "}pluto-log-dot-kwarg>pluto-value{margin-left:30px;overflow-x:auto}body.presentation pluto-output h1,body.presentation pluto-output h2{margin-top:100vh}body.presentation pluto-notebook{padding-bottom:100vh}body.presentation #helpbox-wrapper{display:none!important}nav#slide_controls{display:none}body.presentation nav#slide_controls{z-index:100;display:flex;position:fixed;bottom:0;right:0}nav#slide_controls>button{padding:5px;position:static}button.floating_back_button>span:after,nav#slide_controls>button>span:after{background-size:30px 30px;width:30px;height:30px;display:block;content:" "!important}button.floating_back_button>span:after,nav#slide_controls>button.prev>span:after{filter:var(--image-filters);background-image:url(arrow-back-outline.9ae1bed8.svg)}nav#slide_controls>button.next>span:after{filter:var(--image-filters);background-image:url(arrow-forward-outline.f5f68f5c.svg)}button.floating_back_button{z-index:1000;display:flex;position:fixed;top:1em;left:1em}.cm-editor .cm-tooltip{border:1px solid var(--cm-color-editor-tooltip-border);border-radius:4px;box-shadow:3px 3px 4px #0003}.cm-tooltip-lint{z-index:100;font-family:JuliaMono;font-size:.75rem}.cm-tooltip-autocomplete{box-sizing:content-box;z-index:100;max-height:320px}.cm-tooltip.cm-completionInfo.cm-completionInfo-right:empty{display:none}.cm-editor .cm-tooltip.cm-tooltip-autocomplete>ul>li{border-radius:3px;height:16px;line-height:16px;overflow-y:hidden}pluto-input .cm-editor .cm-tooltip.cm-tooltip-autocomplete>ul>li{height:unset}.cm-editor .cm-tooltip.cm-tooltip-autocomplete>ul>li[aria-selected]{color:var(--cm-color-editor-li-aria-selected);background:var(--cm-color-editor-li-aria-selected-bg)}.cm-editor .cm-tooltip.cm-tooltip-autocomplete>ul>li[aria-selected] .cm-completionLabel{border-color:#0000}.cm-editor .cm-tooltip.cm-tooltip-autocomplete>ul>li .cm-completionDetail{float:right;font-size:.8em;font-family:var(--julia-mono-font-stack);margin-right:.5em;font-style:normal}.cm-editor .cm-tooltip.cm-tooltip-autocomplete li.c_notexported{color:var(--cm-color-editor-li-notexported)}.cm-editor .cm-completionIcon{opacity:1;width:1em;transform:translateY(-1.5px)}.cm-completionIcon:before{content:"⚫";color:#0000;opacity:1;margin-right:.5em;font-size:.75rem;font-family:var(--julia-mono-font-stack)!important}[data-pluto-variable]{font-weight:inherit}[data-pluto-variable],[data-pluto-variable]:hover,.cm-editor .cm-tooltip.cm-tooltip-autocomplete li.c_from_notebook .cm-completionLabel{text-decoration:underline;-webkit-text-decoration-color:var(--cm-color-clickable-underline);-webkit-text-decoration-color:var(--cm-color-clickable-underline);text-decoration-color:var(--cm-color-clickable-underline);text-decoration-skip-ink:none;font-weight:700;text-decoration-thickness:3px}body.disable_ui [data-pluto-variable],body.disable_ui [data-cell-variable]{cursor:pointer}body:not(.disable_ui) [data-ctrl-down=true][data-pluto-variable],body:not(.disable_ui) [data-ctrl-down=true][data-cell-variable]{cursor:pointer;text-decoration-color:#d177e6}body:not(.disable_ui) [data-ctrl-down=true][data-pluto-variable]:hover,body:not(.disable_ui) [data-ctrl-down=true][data-pluto-variable]:hover *{text-shadow:0 0 #af5bc3;color:#0000!important}[data-cell-variable]{text-decoration:none}[data-ctrl-down=true][data-cell-variable]:hover *{text-shadow:0 0 #af5bc3;color:#0000!important}.cm-tooltip.cm-tooltip-autocomplete{background:var(--autocomplete-menu-bg-color);margin-left:-1.5em;padding:0}pluto-input .cm-editor .cm-scroller{overflow-y:hidden}pluto-input .cm-editor .cm-content,pluto-input .cm-editor .cm-scroller,.cm-editor .cm-tooltip-autocomplete .cm-completionLabel{font-variant-ligatures:none;font-size:.8rem;font-family:var(--julia-mono-font-stack)!important}pluto-input .cm-editor .cm-content{padding:2px 0}.cm-editor .cm-scroller>.cm-selectionLayer .cm-selectionBackground{background:var(--cm-selection-background-blurred)}.cm-editor.cm-focused .cm-scroller>.cm-selectionLayer .cm-selectionBackground{background:var(--cm-selection-background)}.cm-editor{background:var(--code-background);color:var(--cm-color-editor-text)}.cm-editor.cm-focused:not(.__){outline:unset}.cm-editor .cm-gutter{min-width:31px;min-height:23px}.cm-editor .cm-gutters{background:0 0;border-right:1px solid #0000}pluto-cell.code_differs .cm-editor .cm-gutters{background-color:var(--cm-color-code-differs-gutters)}.cm-editor .cm-lineNumbers .cm-gutterElement{color:#0000}.cm-editor .cm-lineNumbers .cm-gutterElement:after{content:"⋅";color:var(--cm-color-line-numbers);pointer-events:none;font-size:.75rem;position:absolute;right:3px}.cm-editor .cm-lineNumbers .cm-gutterElement:hover{color:var(--cm-color-line-numbers)}.cm-editor .cm-lineNumbers .cm-gutterElement:hover:after{color:#0000}pluto-cell.errored .cm-editor .cm-lineNumbers .cm-gutterElement{color:var(--cm-color-line-numbers)}pluto-cell.errored .cm-editor .cm-lineNumbers .cm-gutterElement:after{color:#0000}@media print{.cm-editor .cm-lineNumbers .cm-gutterElement{color:var(--cm-color-line-numbers)!important}.cm-editor .cm-lineNumbers .cm-gutterElement:after{color:#0000!important}}.cm-completionIcon-c_Number:before{color:var(--cm-color-number)}.cm-completionIcon-c_String:before,.cm-completionIcon-completion_path:before,.cm-completionIcon-completion_dict:before{color:var(--cm-color-string)}.cm-completionIcon-completion_property:before{color:var(--cm-color-property)}.cm-completionIcon-completion_keyword:before{color:var(--cm-color-keyword)}li.completion_keyword_argument .cm-completionLabel{font-style:italic;font-weight:700}.cm-completionIcon-completion_keyword_argument:before{color:var(--cm-color-number)}.cm-completionIcon-c_Any:before,pluto-output>assignee,pluto-popup code.auto_disabled_variable{font-weight:700;color:var(--cm-color-var)!important}.cm-completionIcon-c_Function:before{color:var(--cm-color-function)}.cm-completionIcon-c_Macro:before{color:var(--cm-color-macro)}.cm-completionIcon-c_Array:before{color:var(--cm-color-bracket)}.cm-completionIcon-c_package:before,.cm-completionIcon-c_Module:before{color:var(--cm-color-link)}.cm-editor .cm-activeLine{background:unset}.cm-selectionMatch{text-shadow:0 0 8px #00000080;background:0 0!important}@media (prefers-color-scheme:dark){.cm-selectionMatch{text-shadow:0 0 8px #ffffff80;background:0 0!important}}.cm-editor .cm-matchingBracket,.cm-editor .cm-nonmatchingBracket{background-color:unset;color:unset}pluto-input:focus-within .cm-editor .cm-matchingBracket{background-color:var(--cm-color-matchingBracket-bg);border-radius:2px;font-weight:700;color:var(--cm-color-matchingBracket)!important}.cm-editor .cm-placeholder{color:var(--cm-color-placeholder-text);font-style:italic}.cm-completionMatchedText{-webkit-text-decoration:unset!important;-webkit-text-decoration:unset!important;text-decoration:unset!important}.awesome-wrapping-plugin-the-line{--correction:0px;margin-left:calc(var(--indented));text-indent:calc(-1*var(--indented))}.awesome-wrapping-plugin-the-line>*{text-indent:initial}.awesome-wrapping-plugin-the-tabs{white-space:pre;vertical-align:top;margin-left:-1px}pluto-cell.hooked_up{--pluto-cell-force-color:#00b9ff7a}pluto-cell.hooked_up pluto-trafficlight{background-color:var(--pluto-cell-force-color)!important}pluto-cell.hooked_up pluto-input .cm-editor{border-color:var(--pluto-cell-force-color);border-width:medium 2px 2px medium;border-top-style:none;border-top-color:currentColor;border-left-style:none;border-left-color:currentColor}pluto-cell.hooked_up>pluto-runarea{opacity:1;background-color:var(--pluto-cell-force-color)}pluto-cell.hooked_up pluto-runarea>span{color:#0000004f}pluto-cell.hooked_up pluto-output{border-top:2px solid;border-bottom:2px solid;border-right:2px solid;border-color:var(--pluto-cell-force-color);border-top-right-radius:4px}.fm-table{grid-template-columns:auto 1fr min-content;gap:.3em 1em;display:grid}.pluto-frontmatter{font-family:var(--system-ui-font-stack);width:min(31rem,90vw);color:var(--export-color);background:var(--export-bg-color);border-radius:1em;padding:1em 1.5em}.pluto-frontmatter .card-preview{background:var(--white);border-radius:1rem;margin:1rem 0;padding:1.2rem 1.1rem;box-shadow:inset 0 0 15px -4px #00000054}.pluto-frontmatter .card-preview>h2{color:var(--black);margin-block-start:0}.pluto-frontmatter button{cursor:pointer;background-color:var(--frontmatter-button-bg-color);border:2px solid var(--frontmatter-button-bg-color);border-radius:.5em;font-weight:500}.pluto-frontmatter button:hover{border-color:var(--frontmatter-input-border-color)}.pluto-frontmatter input{background-color:var(--frontmatter-input-bg-color);border:2px solid var(--frontmatter-input-border-color);border-radius:.5em;padding:.3em .5em}.pluto-frontmatter rbl-tag-input{color:var(--black)}.pluto-frontmatter label{font-weight:500}.pluto-frontmatter .deletefield{color:var(--export-color);background-color:#0000;border-width:0;align-self:stretch;margin-left:-1em}.pluto-frontmatter .addentry{grid-column:1/3;margin-top:.5em}.pluto-frontmatter fieldset{grid-column:1/4}.pluto-frontmatter .final{justify-content:flex-end;gap:.5em;margin-top:2rem;display:flex}.markdown-code-block-button{cursor:pointer;float:right;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:block;position:relative}.markdown-code-block-button:before{content:"";width:14px;height:14px;filter:var(--image-filters);background-image:url(copy-outline.0f561529.svg);display:block}.markdown-code-block-copied-code-button:before{background-image:url(checkmark-outline.4fb8c646.svg)} \ No newline at end of file diff --git a/frontend-dist/editor.46c98966.css b/frontend-dist/editor.46c98966.css new file mode 100644 index 000000000..e52ebc94b --- /dev/null +++ b/frontend-dist/editor.46c98966.css @@ -0,0 +1 @@ +main{cursor:auto;margin-top:20px}body header#pluto-nav,preamble>button,pluto-cell>button,pluto-input>button,pluto-shoulder,footer,pluto-runarea,jlerror .doclink,.dont-panic,#helpbox-wrapper{display:none!important}@media print{.pluto-frontmatter,.edit_or_run,.loading-bar,.floating_back_button,.outline-frame,.outline-frame-actions-container,pkg-status-mark,.MJX_ToolTip,.MJX_HoverRegion,.MJX_LiveRegion,nav#undo_delete{display:none!important}main{padding-bottom:0}pluto-input .cm-editor{border-left:1px solid var(--normal-cell-color);border-radius:4px!important}pluto-cell{break-inside:avoid}pluto-cell.code_folded:has(p){break-inside:auto}pluto-output>div>div.markdown>hr,pluto-output>div>div>hr{visibility:hidden;break-after:page;height:0;margin:0}pluto-output h1{break-before:page}pluto-cell:first-of-type pluto-output h1,pluto-output :is(.admonition,.pluto-docs-binding,blockquote) h1{break-before:avoid}pluto-output :is(h1,h2,h3,h4){break-after:avoid}}@page{widows:2} \ No newline at end of file diff --git a/frontend-dist/editor.7a28f943.css b/frontend-dist/editor.7a28f943.css new file mode 100644 index 000000000..603c9af2d --- /dev/null +++ b/frontend-dist/editor.7a28f943.css @@ -0,0 +1 @@ +pluto-tree,pluto-tree-pair{font-family:var(--julia-mono-font-stack);font-size:.75rem}pluto-tree{color:var(--pluto-tree-color);white-space:pre;cursor:pointer}pluto-tree,pluto-tree-items{flex-direction:column;align-items:flex-start;display:inline-flex}pluto-tree.collapsed,pluto-tree.collapsed pluto-tree,pluto-tree.collapsed pluto-tree-items{flex-direction:row;align-items:baseline}pluto-tree-items{cursor:auto}pluto-tree-prefix{flex-direction:row;align-items:baseline;display:inline-flex}pluto-tree>pluto-tree-prefix:before{content:"";opacity:.5;cursor:pointer;width:1em;height:1em;filter:var(--image-filters);background-image:url(caret-down-outline.4253a2fe.svg);background-size:100%;display:inline-block;position:relative;bottom:-2px}pluto-tree.collapsed pluto-tree>pluto-tree-prefix:before{display:none}pluto-tree.collapsed>pluto-tree-prefix:before{background-image:url(caret-forward-outline.348a84b6.svg)}pluto-tree p-r>p-v{color:var(--pluto-output-color);display:inline-flex}pluto-tree.collapsed pluto-tree-items.Array>p-r>p-k,pluto-tree.collapsed pluto-tree-items.Set>p-r>p-k,pluto-tree.collapsed pluto-tree-items.Tuple>p-r>p-k,pluto-tree.collapsed pluto-tree-items.struct>p-r>p-k{display:none}pluto-tree>pluto-tree-prefix>.long{display:block}pluto-tree>pluto-tree-prefix>.short,pluto-tree.collapsed>pluto-tree-prefix>.long{display:none}pluto-tree.collapsed>pluto-tree-prefix>.short{display:block}pluto-tree p-r{margin-left:3em}pluto-tree.collapsed p-r{margin-left:.5em}pluto-tree.collapsed p-r:first-child{margin-left:0}pluto-tree pluto-tree-items.Array>p-r>p-k,pluto-tree pluto-tree-items.Set>p-r>p-k,pluto-tree pluto-tree-items.Tuple>p-r>p-k{opacity:.5;-webkit-user-select:none;user-select:none;margin-right:1em}pluto-tree.Array>pluto-tree-prefix:after{content:"["}pluto-tree pluto-tree-items.Array:after{content:"]"}pluto-tree.Set>pluto-tree-prefix:after{content:"(["}pluto-tree pluto-tree-items.Set:after{content:"])"}pluto-tree.Tuple>pluto-tree-prefix:after,pluto-tree.Dict>pluto-tree-prefix:after,pluto-tree.NamedTuple>pluto-tree-prefix:after,pluto-tree.struct>pluto-tree-prefix:after{content:"("}pluto-tree pluto-tree-items.Tuple:after,pluto-tree pluto-tree-items.Dict:after,pluto-tree pluto-tree-items.NamedTuple:after,pluto-tree pluto-tree-items.struct:after{content:")"}pluto-tree pluto-tree-items.Array>p-r>p-k:after,pluto-tree pluto-tree-items.Set>p-r>p-k:after,pluto-tree pluto-tree-items.Tuple>p-r>p-k:after{content:":"}pluto-tree-pair>p-r>p-k:after,pluto-tree pluto-tree-items.Dict>p-r>p-k:after{content:" => "}pluto-tree pluto-tree-items.NamedTuple>p-r>p-k:after,pluto-tree pluto-tree-items.struct>p-r>p-k:after{content:" = "}pluto-tree.collapsed p-r:after{content:","}pluto-tree.collapsed p-r:last-child:after{content:""}pluto-tree-more{cursor:pointer;white-space:nowrap;width:100%;padding:.6em 0;display:inline-block}pluto-tree-more:before{content:"";opacity:.5;width:1em;height:1em;filter:var(--image-filters);background-image:url(ellipsis-vertical.a30e7430.svg);background-size:100%;margin-left:.2em;margin-right:.5em;display:inline-block;position:relative;bottom:-.1em}pluto-tree-more.loading:before{background-image:url(sync-outline.9a1bd27b.svg);animation:3s ease-in-out infinite loadspin}@keyframes loadspin{0%{transform:rotate(0)}25%{transform:rotate(180deg)}50%{transform:rotate(180deg)}75%{transform:rotate(360deg)}to{transform:rotate(360deg)}}pluto-tree.collapsed pluto-tree-more{margin:0}pluto-tree.collapsed pluto-tree-more:before{background-image:url(ellipsis-horizontal.c9a6cc29.svg)}pluto-tree.collapsed img{max-width:4rem;max-height:4rem}pluto-tree img{max-width:12rem;max-height:8rem}pluto-tree p-r pre{white-space:pre;word-break:normal}jlerror{font-size:.75rem;font-family:var(--julia-mono-font-stack);background-color:var(--code-section-bg-color);border:3px solid var(--pkg-terminal-border-color);overflow-wrap:break-word;border-radius:.6em;margin:1em 0;padding:1em;display:block}jlerror>header{color:var(--jlerror-header-color);border-left:3px solid var(--jlerror-header-color);background:var(--white);border-radius:3px;padding:.7rem}jlerror>header>p{white-space:pre-wrap;margin-block-end:.2em}jlerror>header>p:first-child{margin-block-start:0;font-weight:700}jlerror .stacktrace-header,jlerror .error-header{font-family:var(--system-ui-font-stack)}jlerror .error-header{margin-block-end:1em}jlerror secret-h1{font-size:1.9rem;font-weight:700}jlerror>section{border-block-start:3px dashed var(--pkg-terminal-border-color);margin-block-start:1rem;padding-block-start:1rem}jlerror>section>ol{line-height:1.6}jlerror>section>ol>li{margin-block-end:1em}jlerror>section>ol>li:not(.important):not(:hover){opacity:.5}jlerror>section>ol>li:not(.important)::marker{font-weight:100}jlerror>section>ol>li.from_this_notebook{--bg:var(--jl-info-acccolor);background:var(--bg);outline:3px solid var(--bg);border-radius:.6em;padding:.4em 0}jlerror>section .classical-frame>mark{background:var(--jlerror-mark-bg-color);color:var(--jlerror-mark-color);font-family:var(--julia-mono-font-stack);font-variant-ligatures:none;border-radius:6px}jlerror>section .classical-frame>mark>strong{color:var(--black)}jlerror>section .classical-frame s-span .argument_name{color:var(--cm-color-type)}jlerror>section .frame-source{flex-direction:row;align-items:baseline;display:flex}jlerror>section .frame-source>a{background:var(--jlerror-a-bg-color);border-left:3px solid var(--jlerror-a-border-left-color);border-radius:4px;padding:1px 7px;text-decoration:none}jlerror>section .frame-source>a:not([href]){filter:grayscale()}jlerror>section .frame-source>a[href].remote-url{filter:hue-rotate(160deg)}jlerror>section li.from_this_notebook:not(.from_this_cell) .frame-source>a[href]{filter:hue-rotate(50deg)}jlerror>section .frame-source>span{opacity:.4;padding:0 .2em}jlerror>section .doclink{-webkit-user-select:none;user-select:none}jlerror li::marker{color:var(--pluto-logs-key-color);background:red;border:3px solid red;font-weight:900}jlerror li a.frame-line-preview{border:3px solid var(--cm-color-clickable-underline);--br:.6em;border-radius:var(--br);--crop:-.5em;text-decoration:none;display:block}jlerror li .frame-line-preview pre:not(.asdfdsaf){background-color:var(--code-background);border-radius:var(--br);padding:0;display:block;position:relative;overflow:hidden}jlerror li:not(.from_this_cell) .frame-line-preview pre:after{content:"cell preview";opacity:.6;font-weight:900;display:block;position:absolute;bottom:0;right:1ch}jlerror li .frame-line-preview pre>code{padding:0}jlerror li .frame-line-preview pre>code:not(:only-child).frame-line{background:var(--cm-highlighted)}jlerror li .frame-line-preview pre>code:not(.frame-line){opacity:.7}jlerror li .frame-line-preview pre>code:before{content:var(--before-content);color:var(--cm-color-line-numbers);text-align:right;width:2ch;margin-right:.7em;display:inline-block}jlerror li .frame-line-preview pre>code:first-of-type:not(.frame-line){margin-top:var(--crop)}jlerror li .frame-line-preview pre>code:last-of-type:not(.frame-line){margin-bottom:var(--crop)}jlerror .dont-panic{background:var(--pluto-logs-debug-color);color:var(--black);font-family:var(--system-ui-font-stack);border-radius:.2em;padding:.5em;font-size:1.2rem;font-weight:700;position:absolute;top:0;right:0;transform:rotate(6deg)}body.disable_ui jlerror .dont-panic,pluto-logs jlerror .dont-panic{display:none}table.pluto-table{table-layout:fixed}table.pluto-table td{max-width:300px;overflow:auto}@supports ((-moz-appearance:none)){table.pluto-table td{max-width:unset;overflow:visible}table.pluto-table td>div{max-width:300px;overflow:auto}}table.pluto-table .schema-types{color:var(--pluto-schema-types-color);font-family:var(--julia-mono-font-stack);opacity:0;font-size:.75rem}table.pluto-table .schema-types th{border-bottom:1px solid var(--pluto-schema-types-border-color);background-color:var(--main-bg-color);height:2rem}table.pluto-table thead:hover .schema-types{opacity:1}table.pluto-table .schema-names th{transition:transform .1s ease-in-out;transform:translateY(.5em)}table.pluto-table .schema-names th:first-child,table.pluto-table .schema-types th:first-child{z-index:2;left:-10px}table.pluto-table .schema-names th,table.pluto-table .schema-types th:first-child{background-color:var(--main-bg-color);top:calc(.25rem - var(--pluto-cell-spacing));z-index:1;height:2rem;position:sticky}table.pluto-table thead:hover .schema-names th{transform:translate(0)}table.pluto-table tbody th:first-child{background-color:var(--main-bg-color);white-space:nowrap;position:sticky;left:-10px}table.pluto-table .pluto-tree-more-td{text-align:left;overflow:unset}table.pluto-table .pluto-tree-more-td pluto-tree-more{overflow:unset;max-width:650px;position:sticky;top:2rem;left:0}table.pluto-table tr.empty div{flex-flow:column;justify-content:center;align-items:center;width:100%;font-size:1.5rem;display:flex}table.pluto-table tr.empty small{font-size:.5rem}pluto-tree.collapsed p-v>pre{max-height:2em;overflow-y:hidden} \ No newline at end of file diff --git a/frontend-dist/editor.97d6fa3c.js b/frontend-dist/editor.97d6fa3c.js new file mode 100644 index 000000000..0e0085db5 --- /dev/null +++ b/frontend-dist/editor.97d6fa3c.js @@ -0,0 +1 @@ +!function(e,t){if("function"==typeof define&&define.amd)define(["exports"],t);else if("object"==typeof exports&&"string"!=typeof exports.nodeName)t(exports);else{var n={};t(n),e.AnsiUp=n.default}}(this,function(e){var t,n,i=this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e};(t=n||(n={}))[t.EOS=0]="EOS",t[t.Text=1]="Text",t[t.Incomplete=2]="Incomplete",t[t.ESC=3]="ESC",t[t.Unknown=4]="Unknown",t[t.SGR=5]="SGR",t[t.OSCURL=6]="OSCURL";var s=function(){function e(){this.VERSION="5.1.0",this.setup_palettes(),this._use_classes=!1,this.bold=!1,this.italic=!1,this.underline=!1,this.fg=this.bg=null,this._buffer="",this._url_whitelist={http:1,https:1}}return Object.defineProperty(e.prototype,"use_classes",{get:function(){return this._use_classes},set:function(e){this._use_classes=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"url_whitelist",{get:function(){return this._url_whitelist},set:function(e){this._url_whitelist=e},enumerable:!1,configurable:!0}),e.prototype.setup_palettes=function(){var e=this;this.ansi_colors=[[{rgb:[0,0,0],class_name:"ansi-black"},{rgb:[187,0,0],class_name:"ansi-red"},{rgb:[0,187,0],class_name:"ansi-green"},{rgb:[187,187,0],class_name:"ansi-yellow"},{rgb:[0,0,187],class_name:"ansi-blue"},{rgb:[187,0,187],class_name:"ansi-magenta"},{rgb:[0,187,187],class_name:"ansi-cyan"},{rgb:[255,255,255],class_name:"ansi-white"}],[{rgb:[85,85,85],class_name:"ansi-bright-black"},{rgb:[255,85,85],class_name:"ansi-bright-red"},{rgb:[0,255,0],class_name:"ansi-bright-green"},{rgb:[255,255,85],class_name:"ansi-bright-yellow"},{rgb:[85,85,255],class_name:"ansi-bright-blue"},{rgb:[255,85,255],class_name:"ansi-bright-magenta"},{rgb:[85,255,255],class_name:"ansi-bright-cyan"},{rgb:[255,255,255],class_name:"ansi-bright-white"}]],this.palette_256=[],this.ansi_colors.forEach(function(t){t.forEach(function(t){e.palette_256.push(t)})});for(var t=[0,95,135,175,215,255],n=0;n<6;++n)for(var i=0;i<6;++i)for(var s=0;s<6;++s){var r={rgb:[t[n],t[i],t[s]],class_name:"truecolor"};this.palette_256.push(r)}for(var a=8,l=0;l<24;++l,a+=10){var f={rgb:[a,a,a],class_name:"truecolor"};this.palette_256.push(f)}},e.prototype.escape_txt_for_html=function(e){return e.replace(/[&<>"']/gm,function(e){return"&"===e?"&":"<"===e?"<":">"===e?">":'"'===e?""":"'"===e?"'":void 0})},e.prototype.append_buffer=function(e){var t=this._buffer+e;this._buffer=t},e.prototype.get_next_packet=function(){var e={kind:n.EOS,text:"",url:""},t=this._buffer.length;if(0==t)return e;var s=this._buffer.indexOf("\x1b");if(-1==s)return e.kind=n.Text,e.text=this._buffer,this._buffer="",e;if(s>0)return e.kind=n.Text,e.text=this._buffer.slice(0,s),this._buffer=this._buffer.slice(s),e;if(0==s){if(1==t)return e.kind=n.Incomplete,e;var a=this._buffer.charAt(1);if("["!=a&&"]"!=a)return e.kind=n.ESC,e.text=this._buffer.slice(0,1),this._buffer=this._buffer.slice(1),e;if("["==a){if(this._csi_regex||(this._csi_regex=r(i(["\n ^ # beginning of line\n #\n # First attempt\n (?: # legal sequence\n \x1b[ # CSI\n ([<-?]?) # private-mode char\n ([d;]*) # any digits or semicolons\n ([ -/]? # an intermediate modifier\n [@-~]) # the command\n )\n | # alternate (second attempt)\n (?: # illegal sequence\n \x1b[ # CSI\n [ -~]* # anything legal\n ([\0-\x1f:]) # anything illegal\n )\n "],["\n ^ # beginning of line\n #\n # First attempt\n (?: # legal sequence\n \\x1b\\[ # CSI\n ([\\x3c-\\x3f]?) # private-mode char\n ([\\d;]*) # any digits or semicolons\n ([\\x20-\\x2f]? # an intermediate modifier\n [\\x40-\\x7e]) # the command\n )\n | # alternate (second attempt)\n (?: # illegal sequence\n \\x1b\\[ # CSI\n [\\x20-\\x7e]* # anything legal\n ([\\x00-\\x1f:]) # anything illegal\n )\n "]))),null===(h=this._buffer.match(this._csi_regex)))return e.kind=n.Incomplete,e;if(h[4])return e.kind=n.ESC,e.text=this._buffer.slice(0,1),this._buffer=this._buffer.slice(1),e;""!=h[1]||"m"!=h[3]?e.kind=n.Unknown:e.kind=n.SGR,e.text=h[2];var l=h[0].length;return this._buffer=this._buffer.slice(l),e}if("]"==a){if(t<4)return e.kind=n.Incomplete,e;if("8"!=this._buffer.charAt(2)||";"!=this._buffer.charAt(3))return e.kind=n.ESC,e.text=this._buffer.slice(0,1),this._buffer=this._buffer.slice(1),e;this._osc_st||(this._osc_st=function(e){for(var t=[],n=1;n0;){var n=parseInt(t.shift(),10);if(isNaN(n)||0===n)this.fg=this.bg=null,this.bold=!1,this.italic=!1,this.underline=!1;else if(1===n)this.bold=!0;else if(3===n)this.italic=!0;else if(4===n)this.underline=!0;else if(22===n)this.bold=!1;else if(23===n)this.italic=!1;else if(24===n)this.underline=!1;else if(39===n)this.fg=null;else if(49===n)this.bg=null;else if(n>=30&&n<38)this.fg=this.ansi_colors[0][n-30];else if(n>=40&&n<48)this.bg=this.ansi_colors[0][n-40];else if(n>=90&&n<98)this.fg=this.ansi_colors[1][n-90];else if(n>=100&&n<108)this.bg=this.ansi_colors[1][n-100];else if((38===n||48===n)&&t.length>0){var i=38===n,s=t.shift();if("5"===s&&t.length>0){var r=parseInt(t.shift(),10);r>=0&&r<=255&&(i?this.fg=this.palette_256[r]:this.bg=this.palette_256[r])}if("2"===s&&t.length>2){var a=parseInt(t.shift(),10),l=parseInt(t.shift(),10),f=parseInt(t.shift(),10);if(a>=0&&a<=255&&l>=0&&l<=255&&f>=0&&f<=255){var h={rgb:[a,l,f],class_name:"truecolor"};i?this.fg=h:this.bg=h}}}}},e.prototype.transform_to_html=function(e){var t=e.text;if(0===t.length||(t=this.escape_txt_for_html(t),!e.bold&&!e.italic&&!e.underline&&null===e.fg&&null===e.bg))return t;var n=[],i=[],s=e.fg,r=e.bg;e.bold&&n.push("font-weight:bold"),e.italic&&n.push("font-style:italic"),e.underline&&n.push("text-decoration:underline"),this._use_classes?(s&&("truecolor"!==s.class_name?i.push(s.class_name+"-fg"):n.push("color:rgb("+s.rgb.join(",")+")")),r&&("truecolor"!==r.class_name?i.push(r.class_name+"-bg"):n.push("background-color:rgb("+r.rgb.join(",")+")"))):(s&&n.push("color:rgb("+s.rgb.join(",")+")"),r&&n.push("background-color:rgb("+r.rgb+")"));var a="",l="";return i.length&&(a=' class="'+i.join(" ")+'"'),n.length&&(l=' style="'+n.join(";")+'"'),""+t+"
    "},e.prototype.process_hyperlink=function(e){var t=e.url.split(":");return t.length<1?"":this._url_whitelist[t[0]]?''+this.escape_txt_for_html(e.text)+"":""},e}();function r(e){for(var t=[],n=1;nbutton{animation:.3s ease-in-out wiggle-binder-button}@keyframes wiggle-binder-button{0%{transform:rotate(0)}30%{transform:rotate(10deg)}70%{transform:rotate(-10deg)}to{transform:rotate(0)}}.binder_help_text button img{color:#000;height:2.2em;margin:-8px -8px -8px 0;font-style:normal;font-weight:900}.edit_or_run>button{text-align:center;z-index:2000;width:100%;box-shadow:none;cursor:pointer;background:unset;background-color:var(--overlay-button-bg);font-size:16px;font-family:var(--lato-ui-font-stack);letter-spacing:.1px;color:var(--black);white-space:nowrap;border:3px solid #5c61a375;border-radius:30px;padding:8px 16px;display:block}.edit_or_run>button:hover{text-decoration:underline}.binder_help_text{--width:min(85vw,570px);max-height:calc(100vh - 4rem);width:var(--width);color:#000;color-scheme:light;font-family:var(--sans-serif-font-stack);background-color:#fff;border:0;border-radius:8px;padding:16px;position:fixed;overflow:auto;box-shadow:0 0 0 100vmax #0000004a}.binder_help_text a{color:#000}@media (width<=500px){.binder_help_text{width:100vw;max-height:100vh;top:0;left:0}}.binder_help_text .close{--size:32px;width:var(--size);height:var(--size);background-size:var(--size)var(--size);cursor:pointer;background-image:url(close-outline.9c22a232.svg);position:absolute;top:5px;right:5px}.download_div,.copy_div{justify-content:space-between;align-items:center;height:40px;margin-bottom:.75rem;padding:4px 8px;display:flex}.download_div,.binder_help_text button,.download_div,.copy_div{border:3px solid #3f448c5e;border-radius:8px;width:max(60%,10rem);margin:0 auto;overflow:hidden}.download_div a,.copy_div input{cursor:text;border:none;outline:none;width:calc(100% - 8px - 1rem);font-family:Roboto Mono,monospace;font-size:.7rem;line-height:1.4}.download_div,.download_div a{cursor:pointer}.download_icon,.copy_icon{cursor:pointer;background-image:url(copy-outline.0f561529.svg);background-position:50%;background-repeat:no-repeat;background-size:1rem 1rem;width:1.5rem;height:1.5rem;position:relative;box-shadow:0 0 60px 60px #fff}.download_icon{background-image:url(download-outline.523a74d8.svg)}.copy_icon.success_copy:after{content:"Copied!";text-align:center;background-color:#dcebf5;border-radius:.5rem;width:4rem;font-family:JuliaMono,monospace;font-size:.75rem;font-weight:700;line-height:1.5rem;animation:3s fadeout;position:absolute}.copy_icon:not(.success_copy):hover:after{content:"Copy";text-align:center;background-color:#f4f5dc;border-radius:.5rem;width:4rem;font-family:JuliaMono,monospace;font-size:.75rem;font-weight:700;line-height:1.5rem;position:absolute}.copy_icon:after{right:1.5rem}@keyframes fadeout{0%{opacity:1}20%{opacity:1}40%{opacity:0}to{opacity:0}}.command{margin-bottom:.75rem;font-size:1.2rem;font-weight:700}.edit_or_run li{margin-bottom:2rem}.edit_or_run li video,.edit_or_run li img{border:5px solid #d4d4d4;border-radius:5px;width:100%}.expected_runtime_box{color:#323232;background:linear-gradient(45deg,#cdd7ef,#e5f7ff);border-radius:.6em;margin:2em 0 -2em;padding:.6em 1em;font-style:italic;display:block}.expected_runtime_box span{font-style:initial;font-weight:700} \ No newline at end of file diff --git a/frontend-dist/editor.d174451b.js b/frontend-dist/editor.d174451b.js new file mode 100644 index 000000000..b7b0830ad --- /dev/null +++ b/frontend-dist/editor.d174451b.js @@ -0,0 +1,6 @@ +/*! iFrame Resizer (iframeSizer.min.js ) - v4.2.11 - 2020-06-02 + * Desc: Force cross domain iframes to size to content. + * Requires: iframeResizer.contentWindow.min.js to be loaded into the target frame. + * Copyright: (c) 2020 David J. Bradshaw - dave@bradshaw.net + * License: MIT + */!function(e){if("undefined"!=typeof window){var n,i=0,t=!1,o=!1,r=7,a="[iFrameSizer]",d=a.length,s=null,c=window.requestAnimationFrame,l={max:1,scroll:1,bodyScroll:1,documentElementScroll:1},u={},f=null,m={autoResize:!0,bodyBackground:null,bodyMargin:null,bodyMarginV1:8,bodyPadding:null,checkOrigin:!0,inPageLinks:!1,enablePublicMethods:!0,heightCalculationMethod:"bodyOffset",id:"iFrameResizer",interval:32,log:!1,maxHeight:1/0,maxWidth:1/0,minHeight:0,minWidth:0,resizeFrom:"parent",scrolling:!1,sizeHeight:!0,sizeWidth:!1,warningTimeout:5e3,tolerance:0,widthCalculationMethod:"scroll",onClose:function(){return!0},onClosed:function(){},onInit:function(){},onMessage:function(){I("onMessage function not defined")},onResized:function(){},onScroll:function(){return!0}},g={};window.jQuery&&((n=window.jQuery).fn?n.fn.iFrameResize||(n.fn.iFrameResize=function(e){return this.filter("iframe").each(function(n,i){S(i,e)}).end()}):v("","Unable to bind to jQuery, it is not fully loaded.")),"function"==typeof define&&define.amd?define([],A):"object"==typeof module&&"object"==typeof module.exports&&(module.exports=A()),window.iFrameResize=window.iFrameResize||A()}function h(){return window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver}function p(e,n,i){e.addEventListener(n,i,!1)}function w(e,n,i){e.removeEventListener(n,i,!1)}function b(e){return u[e]?u[e].log:t}function y(e,n){x("log",e,n,b(e))}function v(e,n){x("info",e,n,b(e))}function I(e,n){x("warn",e,n,!0)}function x(e,n,i,t){var o;!0===t&&"object"==typeof window.console&&console[e](a+"["+(o="Host page: "+n,window.top!==window.self&&(o=window.parentIFrame&&window.parentIFrame.getId?window.parentIFrame.getId()+": "+n:"Nested host page: "+n),o)+"]",i)}function F(e){function n(){i("Height"),i("Width"),W(function(){E(P),R(A),M(A,"onResized",P)},P,"init")}function i(e){var n=Number(u[A]["max"+e]),i=Number(u[A]["min"+e]),t=e.toLowerCase(),o=Number(P[t]);y(A,"Checking "+t+" is in range "+i+"-"+n),ou[g]["max"+e])throw Error("Value for min"+e+" can not be greater than max"+e)}g in u&&"iFrameResizer"in n?I(g,"Ignored iFrame, already setup."):(f=(f=o)||{},u[g]={firstRun:!0,iframe:n,remoteHost:n.src&&n.src.split("/").slice(0,3).join("/")},function(e){if("object"!=typeof e)throw TypeError("Options is not an object")}(f),Object.keys(f).forEach(function(e){var n=e.split("Callback");if(2===n.length){var i="on"+n[0].charAt(0).toUpperCase()+n[0].slice(1);this[i]=this[e],delete this[e],I(g,"Deprecated: '"+e+"' has been renamed '"+i+"'. The old method will be removed in the next major version.")}},f),function(e){for(var n in m)Object.prototype.hasOwnProperty.call(m,n)&&(u[g][n]=Object.prototype.hasOwnProperty.call(e,n)?e[n]:m[n])}(f),u[g]&&(u[g].targetOrigin=!0===u[g].checkOrigin?""===(r=u[g].remoteHost)||null!==r.match(/^(about:blank|javascript:|file:\/\/)/)?"*":r:"*"),function(){switch(y(g,"IFrame scrolling "+(u[g]&&u[g].scrolling?"enabled":"disabled")+" for "+g),n.style.overflow=!1===(u[g]&&u[g].scrolling)?"hidden":"auto",u[g]&&u[g].scrolling){case"omit":break;case!0:n.scrolling="yes";break;case!1:n.scrolling="no";break;default:n.scrolling=u[g]?u[g].scrolling:"no"}}(),b("Height"),b("Width"),w("maxHeight"),w("minHeight"),w("maxWidth"),w("minWidth"),"number"!=typeof(u[g]&&u[g].bodyMargin)&&"0"!==(u[g]&&u[g].bodyMargin)||(u[g].bodyMarginV1=u[g].bodyMargin,u[g].bodyMargin=u[g].bodyMargin+"px"),s=N(g),(c=h())&&n.parentNode&&new c(function(e){e.forEach(function(e){Array.prototype.slice.call(e.removedNodes).forEach(function(e){e===n&&z(n)})})}).observe(n.parentNode,{childList:!0}),p(n,"load",function(){var e,i;C("iFrame.onload",s,n,void 0,!0),e=u[g]&&u[g].firstRun,i=u[g]&&u[g].heightCalculationMethod in l,!e&&i&&T({iframe:n,height:0,width:0,type:"init"})}),C("init",s,n,e,!0),u[g]&&(u[g].iframe.iFrameResizer={close:z.bind(null,u[g].iframe),removeListeners:k.bind(null,u[g].iframe),resize:C.bind(null,"Window resize","resize",u[g].iframe),moveToAnchor:function(e){C("Move to anchor","moveToAnchor:"+e,u[g].iframe,g)},sendMessage:function(e){C("Send Message","message:"+(e=JSON.stringify(e)),u[g].iframe,g)}}))}function H(e,n){null===f&&(f=setTimeout(function(){f=null,e()},n))}function j(){"hidden"!==document.visibilityState&&(y("document","Trigger event: Visiblity change"),H(function(){P("Tab Visable","resize")},16))}function P(e,n){Object.keys(u).forEach(function(i){u[i]&&"parent"===u[i].resizeFrom&&u[i].autoResize&&!u[i].firstRun&&C(e,n,u[i].iframe,i)})}function A(){var n;function i(e,i){i&&(function(){if(!i.tagName)throw TypeError("Object is not a valid DOM element");if("IFRAME"!==i.tagName.toUpperCase())throw TypeError("Expected