streamlit-nightly 1.52.3.dev20260102__py3-none-any.whl → 1.52.3.dev20260104__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. streamlit/elements/layouts.py +10 -2
  2. streamlit/elements/lib/layout_utils.py +27 -3
  3. streamlit/elements/space.py +10 -2
  4. streamlit/errors.py +3 -1
  5. streamlit/proto/GapSize_pb2.py +2 -2
  6. streamlit/proto/GapSize_pb2.pyi +8 -0
  7. streamlit/static/index.html +1 -1
  8. streamlit/static/manifest.json +296 -296
  9. streamlit/static/static/js/{ErrorOutline.esm.0yuPC2le.js → ErrorOutline.esm.DB4TeKXQ.js} +1 -1
  10. streamlit/static/static/js/{FileDownload.esm.3-xCz5Dn.js → FileDownload.esm.B1rsRcZM.js} +1 -1
  11. streamlit/static/static/js/{FileHelper.B7p1stfH.js → FileHelper.Dy-ENeyM.js} +1 -1
  12. streamlit/static/static/js/{FormClearHelper.2gb34MMC.js → FormClearHelper.wCJbsz1D.js} +1 -1
  13. streamlit/static/static/js/{InputInstructions.CMaz--YN.js → InputInstructions.h-b7uu-m.js} +1 -1
  14. streamlit/static/static/js/{Particles.DD6E7DiG.js → Particles.DMdiwhvk.js} +1 -1
  15. streamlit/static/static/js/{ProgressBar.CBHvskJx.js → ProgressBar.InacggUW.js} +1 -1
  16. streamlit/static/static/js/{StreamlitSyntaxHighlighter.Cbd0Ng31.js → StreamlitSyntaxHighlighter.CyryJTW-.js} +1 -1
  17. streamlit/static/static/js/{TableChart.esm.DkPOnPiP.js → TableChart.esm.DCIQ3yuB.js} +1 -1
  18. streamlit/static/static/js/{Toolbar.uViLYWIL.js → Toolbar.CdfNxtO4.js} +1 -1
  19. streamlit/static/static/js/{WidgetLabelHelpIconInline.DrQP-jZR.js → WidgetLabelHelpIconInline.DLM1gtZz.js} +1 -1
  20. streamlit/static/static/js/{base-input.CWLDgMIQ.js → base-input.BCIrgNRb.js} +1 -1
  21. streamlit/static/static/js/{checkbox.lSnX8MiZ.js → checkbox.cSjLtYx0.js} +1 -1
  22. streamlit/static/static/js/{createDownloadLinkElement.qE-XPzHd.js → createDownloadLinkElement.BD_DYT7M.js} +1 -1
  23. streamlit/static/static/js/{data-grid-overlay-editor.CixSgiOW.js → data-grid-overlay-editor.BWp1Ajhl.js} +1 -1
  24. streamlit/static/static/js/{downloader.BR9PJ-pW.js → downloader.CEDLkUji.js} +1 -1
  25. streamlit/static/static/js/{embed.C4scQ-hW.js → embed.Dn7p4MYf.js} +1 -1
  26. streamlit/static/static/js/{es6.NjGX1Pno.js → es6.C3cvBhbs.js} +2 -2
  27. streamlit/static/static/js/{formatNumber.DwAT32vb.js → formatNumber.Bsp-qOPC.js} +1 -1
  28. streamlit/static/static/js/{iconPosition.BF4yacmi.js → iconPosition.DIRj5SlL.js} +1 -1
  29. streamlit/static/static/js/{iframeResizer.contentWindow.BGF3G8-a.js → iframeResizer.contentWindow.tjj-iaW8.js} +1 -1
  30. streamlit/static/static/js/{index.CsbjfvSm.js → index.2-6ocypr.js} +1 -1
  31. streamlit/static/static/js/{index.Es18h2ap.js → index.65xiOHvb.js} +1 -1
  32. streamlit/static/static/js/{index.DUS_Khvb.js → index.7mJnVlDm.js} +1 -1
  33. streamlit/static/static/js/{index.DEF4aL6h.js → index.B0DCNp1Y.js} +5 -5
  34. streamlit/static/static/js/{index.L46XQsIY.js → index.BIWD38us.js} +1 -1
  35. streamlit/static/static/js/{index.CU6HHyYl.js → index.BU_tKVxv.js} +1 -1
  36. streamlit/static/static/js/{index.B_rx628n.js → index.BXggolS2.js} +1 -1
  37. streamlit/static/static/js/{index.Bh-DEB0O.js → index.BdwE460H.js} +1 -1
  38. streamlit/static/static/js/{index.iV4zN5GV.js → index.BgFWPu68.js} +1 -1
  39. streamlit/static/static/js/{index.CSPw4GmF.js → index.BrhVkvAP.js} +1 -1
  40. streamlit/static/static/js/{index.CYAiwpaf.js → index.BzF2fUQY.js} +1 -1
  41. streamlit/static/static/js/{index.Duio3diQ.js → index.C6KU1c_I.js} +1 -1
  42. streamlit/static/static/js/{index.DPeqx79l.js → index.CJNYj-GU.js} +1 -1
  43. streamlit/static/static/js/{index.47QtlXbw.js → index.CKv21ig2.js} +1 -1
  44. streamlit/static/static/js/{index.CrqhxXJA.js → index.CLchkPc0.js} +1 -1
  45. streamlit/static/static/js/{index.BxQj1n_M.js → index.CMToM8tv.js} +1 -1
  46. streamlit/static/static/js/{index.AbRqTgeF.js → index.CP-UEHmv.js} +1 -1
  47. streamlit/static/static/js/{index.Ce0tmU7o.js → index.CQk1zChj.js} +1 -1
  48. streamlit/static/static/js/{index.BibdADOD.js → index.CU7z3OC0.js} +1 -1
  49. streamlit/static/static/js/{index.BMEupOtG.js → index.ChoFIv3e.js} +1 -1
  50. streamlit/static/static/js/{index.DwRMR_Ao.js → index.CkA0etie.js} +1 -1
  51. streamlit/static/static/js/{index.DkQIXYcv.js → index.CkWtzTE7.js} +1 -1
  52. streamlit/static/static/js/{index.B2FiJl2X.js → index.ClZw_QCU.js} +1 -1
  53. streamlit/static/static/js/{index.Cio1dNsf.js → index.Cma1PKQE.js} +1 -1
  54. streamlit/static/static/js/{index.BMxizVm_.js → index.CpgN7t8w.js} +1 -1
  55. streamlit/static/static/js/{index.Cd-5Vmzk.js → index.Cqo3gLMs.js} +1 -1
  56. streamlit/static/static/js/{index.D_zZYX-F.js → index.D-LmUIYK.js} +1 -1
  57. streamlit/static/static/js/{index.DPn1549d.js → index.D9QOVKpD.js} +1 -1
  58. streamlit/static/static/js/{index.CW9ezGuy.js → index.DERvWU-H.js} +1 -1
  59. streamlit/static/static/js/{index.-zR4Ojkd.js → index.DPXljG88.js} +1 -1
  60. streamlit/static/static/js/{index.x9TEvcRW.js → index.DTtGJWwh.js} +1 -1
  61. streamlit/static/static/js/{index.DD6jbP16.js → index.D_MQwywr.js} +1 -1
  62. streamlit/static/static/js/{index.dPnBpGLy.js → index.DbV0rUEu.js} +1 -1
  63. streamlit/static/static/js/{index.BduCcO_U.js → index.DjxVfGrI.js} +1 -1
  64. streamlit/static/static/js/{index.Bu9qeYdI.js → index.REjZL5tN.js} +1 -1
  65. streamlit/static/static/js/{index.BdVxH2a1.js → index.VAsk7L3S.js} +1 -1
  66. streamlit/static/static/js/{index.ayxJkxJS.js → index.XOden_TM.js} +6 -6
  67. streamlit/static/static/js/{index.BQm1_d2O.js → index.Y-fts05K.js} +1 -1
  68. streamlit/static/static/js/{index.BsbD_ZbU.js → index.Y1-tp-v8.js} +1 -1
  69. streamlit/static/static/js/{index.C1zhyjFt.js → index.Y9iivd6m.js} +1 -1
  70. streamlit/static/static/js/{index.BD8Aa49F.js → index.ZVTCDY95.js} +1 -1
  71. streamlit/static/static/js/{index.DgxjQf8D.js → index.glmKpzAC.js} +1 -1
  72. streamlit/static/static/js/{index.C3Czde8V.js → index.hkR1h-xb.js} +1 -1
  73. streamlit/static/static/js/{index.C4N9_AWk.js → index.hkwmBmj1.js} +1 -1
  74. streamlit/static/static/js/{index.BO_-eOf-.js → index.lGfrZbsE.js} +1 -1
  75. streamlit/static/static/js/{index.BDI5MuEQ.js → index.oX51i0fi.js} +1 -1
  76. streamlit/static/static/js/{index.DLYqRljk.js → index.qsDXxiva.js} +1 -1
  77. streamlit/static/static/js/{index.D1JGP_72.js → index.xp9Iy5jw.js} +1 -1
  78. streamlit/static/static/js/{input.BViGVyAy.js → input.BLVfcIAQ.js} +1 -1
  79. streamlit/static/static/js/{main.DCurQa2X.js → main.DOT_xSoS.js} +1 -1
  80. streamlit/static/static/js/{memory.CeqRSVmL.js → memory.BU-JM8pI.js} +1 -1
  81. streamlit/static/static/js/{number-overlay-editor.BNei35vX.js → number-overlay-editor.BI4bxl54.js} +1 -1
  82. streamlit/static/static/js/{pandasStylerUtils.BQNPcCRH.js → pandasStylerUtils.BAO8bi8z.js} +1 -1
  83. streamlit/static/static/js/{sandbox.Bkc6ExUI.js → sandbox.BEvKSsDs.js} +1 -1
  84. streamlit/static/static/js/{styled-components.C0Ar4ws1.js → styled-components.BeC32T5O.js} +1 -1
  85. streamlit/static/static/js/{throttle.DpJVqfiM.js → throttle.BZ3PXlI9.js} +1 -1
  86. streamlit/static/static/js/{timepicker.plxFjD2l.js → timepicker.BThGAJl8.js} +1 -1
  87. streamlit/static/static/js/{toConsumableArray.nocm-m15.js → toConsumableArray.CFvVrWwv.js} +1 -1
  88. streamlit/static/static/js/uniqueId.DDvAwLSm.js +1 -0
  89. streamlit/static/static/js/{useBasicWidgetState.CD1aG6-a.js → useBasicWidgetState.DRzRDWGT.js} +1 -1
  90. streamlit/static/static/js/{useIntlLocale.DLuHgCFO.js → useIntlLocale.CdE4T1Ur.js} +1 -1
  91. streamlit/static/static/js/{useTextInputAutoExpand.5E_gpUfB.js → useTextInputAutoExpand.BVefdTg1.js} +1 -1
  92. streamlit/static/static/js/{useUpdateUiValue.DWX5Hfxx.js → useUpdateUiValue.Ce3tYwUF.js} +1 -1
  93. streamlit/static/static/js/{useWaveformController.B3tf7xqQ.js → useWaveformController.CKTio31b.js} +1 -1
  94. streamlit/static/static/js/{withCalculatedWidth.kZou334h.js → withCalculatedWidth.BcZACcrB.js} +1 -1
  95. streamlit/static/static/js/{withFullScreenWrapper.DGTtbbLe.js → withFullScreenWrapper.CZmpHubt.js} +1 -1
  96. {streamlit_nightly-1.52.3.dev20260102.dist-info → streamlit_nightly-1.52.3.dev20260104.dist-info}/METADATA +1 -1
  97. {streamlit_nightly-1.52.3.dev20260102.dist-info → streamlit_nightly-1.52.3.dev20260104.dist-info}/RECORD +101 -101
  98. streamlit/static/static/js/uniqueId.BgdRqRrS.js +0 -1
  99. {streamlit_nightly-1.52.3.dev20260102.data → streamlit_nightly-1.52.3.dev20260104.data}/scripts/streamlit.cmd +0 -0
  100. {streamlit_nightly-1.52.3.dev20260102.dist-info → streamlit_nightly-1.52.3.dev20260104.dist-info}/WHEEL +0 -0
  101. {streamlit_nightly-1.52.3.dev20260102.dist-info → streamlit_nightly-1.52.3.dev20260104.dist-info}/entry_points.txt +0 -0
  102. {streamlit_nightly-1.52.3.dev20260102.dist-info → streamlit_nightly-1.52.3.dev20260104.dist-info}/top_level.txt +0 -0
@@ -167,13 +167,17 @@ class LayoutsMixin:
167
167
  When ``horizontal`` is ``True``, ``"distribute"`` aligns the
168
168
  elements the same as ``"top"``.
169
169
 
170
- gap : "small", "medium", "large", or None
170
+ gap : "xxsmall", "xsmall", "small", "medium", "large", "xlarge", "xxlarge", or None
171
171
  The minimum gap size between the elements inside the container.
172
172
  This can be one of the following:
173
173
 
174
+ - ``"xxsmall"``: 0.25rem gap between the elements.
175
+ - ``"xsmall"``: 0.5rem gap between the elements.
174
176
  - ``"small"`` (default): 1rem gap between the elements.
175
177
  - ``"medium"``: 2rem gap between the elements.
176
178
  - ``"large"``: 4rem gap between the elements.
179
+ - ``"xlarge"``: 6rem gap between the elements.
180
+ - ``"xxlarge"``: 8rem gap between the elements.
177
181
  - ``None``: No gap between the elements.
178
182
 
179
183
  The rem unit is relative to the ``theme.baseFontSize``
@@ -364,13 +368,17 @@ class LayoutsMixin:
364
368
  Or ``[1, 2, 3]`` creates three columns where the second one is two times
365
369
  the width of the first one, and the third one is three times that width.
366
370
 
367
- gap : "small", "medium", "large", or None
371
+ gap : "xxsmall", "xsmall", "small", "medium", "large", "xlarge", "xxlarge", or None
368
372
  The size of the gap between the columns. This can be one of the
369
373
  following:
370
374
 
375
+ - ``"xxsmall"``: 0.25rem gap between the columns.
376
+ - ``"xsmall"``: 0.5rem gap between the columns.
371
377
  - ``"small"`` (default): 1rem gap between the columns.
372
378
  - ``"medium"``: 2rem gap between the columns.
373
379
  - ``"large"``: 4rem gap between the columns.
380
+ - ``"xlarge"``: 6rem gap between the columns.
381
+ - ``"xxlarge"``: 8rem gap between the columns.
374
382
  - ``None``: No gap between the columns.
375
383
 
376
384
  The rem unit is relative to the ``theme.baseFontSize``
@@ -35,8 +35,15 @@ WidthWithoutContent: TypeAlias = int | Literal["stretch"]
35
35
  Width: TypeAlias = int | Literal["stretch", "content"]
36
36
  HeightWithoutContent: TypeAlias = int | Literal["stretch"]
37
37
  Height: TypeAlias = int | Literal["stretch", "content"]
38
- SpaceSize: TypeAlias = int | Literal["stretch", "small", "medium", "large"]
39
- Gap: TypeAlias = Literal["small", "medium", "large"]
38
+ SpaceSize: TypeAlias = (
39
+ int
40
+ | Literal[
41
+ "stretch", "xxsmall", "xsmall", "small", "medium", "large", "xlarge", "xxlarge"
42
+ ]
43
+ )
44
+ Gap: TypeAlias = Literal[
45
+ "xxsmall", "xsmall", "small", "medium", "large", "xlarge", "xxlarge"
46
+ ]
40
47
  HorizontalAlignment: TypeAlias = Literal["left", "center", "right", "distribute"]
41
48
  VerticalAlignment: TypeAlias = Literal["top", "center", "bottom", "distribute"]
42
49
  TextAlignment: TypeAlias = Literal["left", "center", "right", "justify"]
@@ -45,9 +52,13 @@ TextAlignment: TypeAlias = Literal["left", "center", "right", "justify"]
45
52
  # If changing these, also check streamlit/frontend/lib/src/theme/primitives/sizes.ts
46
53
  # to ensure sizes are kept in sync.
47
54
  SIZE_TO_REM_MAPPING = {
55
+ "xxsmall": 0.25, # Aligns with gap "xxsmall" (4px)
56
+ "xsmall": 0.5, # Aligns with gap "xsmall" (8px)
48
57
  "small": 0.75, # Height of widget label minus gap
49
58
  "medium": 2.5, # Height of button/input field
50
59
  "large": 4.25, # Height of large widget without label
60
+ "xlarge": 6, # Aligns with gap "xlarge" (96px)
61
+ "xxlarge": 8, # Aligns with gap "xxlarge" (128px)
51
62
  }
52
63
 
53
64
 
@@ -147,7 +158,16 @@ def validate_space_size(size: SpaceSize) -> None:
147
158
  raise StreamlitInvalidSizeError(size)
148
159
 
149
160
  if isinstance(size, str):
150
- valid_strings = ["stretch", "small", "medium", "large"]
161
+ valid_strings = [
162
+ "stretch",
163
+ "xxsmall",
164
+ "xsmall",
165
+ "small",
166
+ "medium",
167
+ "large",
168
+ "xlarge",
169
+ "xxlarge",
170
+ ]
151
171
  if size not in valid_strings:
152
172
  raise StreamlitInvalidSizeError(size)
153
173
  elif isinstance(size, int) and size <= 0:
@@ -183,9 +203,13 @@ def get_height_config(height: Height | SpaceSize) -> HeightConfig:
183
203
  def get_gap_size(gap: str | None, element_type: str) -> GapSize.ValueType:
184
204
  """Convert a gap string or None to a GapSize proto value."""
185
205
  gap_mapping = {
206
+ "xxsmall": GapSize.XXSMALL,
207
+ "xsmall": GapSize.XSMALL,
186
208
  "small": GapSize.SMALL,
187
209
  "medium": GapSize.MEDIUM,
188
210
  "large": GapSize.LARGE,
211
+ "xlarge": GapSize.XLARGE,
212
+ "xxlarge": GapSize.XXLARGE,
189
213
  }
190
214
 
191
215
  if isinstance(gap, str):
@@ -42,15 +42,23 @@ class SpaceMixin:
42
42
 
43
43
  Parameters
44
44
  ----------
45
- size : "small", "medium", "large", "stretch", or int
45
+ size : "xxsmall", "xsmall", "small", "medium", "large", "xlarge", "xxlarge", "stretch", or int
46
46
  The size of the space. This can be one of the following values:
47
47
 
48
+ - ``"xxsmall"``: 0.25rem, matching the ``"xxsmall"`` gap in
49
+ ``st.container`` and ``st.columns``.
50
+ - ``"xsmall"``: 0.5rem, matching the ``"xsmall"`` gap in
51
+ ``st.container`` and ``st.columns``.
48
52
  - ``"small"`` (default): 0.75rem, which is the height of a widget
49
53
  label. This is useful for aligning buttons with labeled widgets.
50
54
  - ``"medium"``: 2.5rem, which is the height of a button or
51
55
  (unlabeled) input field.
52
56
  - ``"large"``: 4.25rem, which is the height of a labeled input
53
- field or unlabeled media widget, like `st.file_uploader`.
57
+ field or unlabeled media widget, like ``st.file_uploader``.
58
+ - ``"xlarge"``: 6rem, matching the ``"xlarge"`` gap in
59
+ ``st.container`` and ``st.columns``.
60
+ - ``"xxlarge"``: 8rem, matching the ``"xxlarge"`` gap in
61
+ ``st.container`` and ``st.columns``.
54
62
  - ``"stretch"``: Expands to fill remaining space in the container.
55
63
  - An integer: Fixed size in pixels.
56
64
 
streamlit/errors.py CHANGED
@@ -265,7 +265,9 @@ class StreamlitInvalidColumnGapError(LocalizableStreamlitException):
265
265
 
266
266
  def __init__(self, gap: str, element_type: str) -> None:
267
267
  super().__init__(
268
- 'The `gap` argument to `{element_type}` must be `"small"`, `"medium"`, `"large"`, or `"none"`. \n'
268
+ 'The `gap` argument to `{element_type}` must be `"xxsmall"`, '
269
+ '`"xsmall"`, `"small"`, `"medium"`, `"large"`, `"xlarge"`, '
270
+ '`"xxlarge"`, or `"none"`. \n'
269
271
  "The argument passed was {gap}.",
270
272
  gap=gap,
271
273
  element_type=element_type,
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
14
14
 
15
15
 
16
16
 
17
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dstreamlit/proto/GapSize.proto\x12\tstreamlit\"?\n\tGapConfig\x12&\n\x08gap_size\x18\x01 \x01(\x0e\x32\x12.streamlit.GapSizeH\x00\x42\n\n\x08gap_spec*H\n\x07GapSize\x12\x11\n\rGAP_UNDEFINED\x10\x00\x12\t\n\x05SMALL\x10\x01\x12\n\n\x06MEDIUM\x10\x02\x12\t\n\x05LARGE\x10\x03\x12\x08\n\x04NONE\x10\x04\x42,\n\x1c\x63om.snowflake.apps.streamlitB\x0cGapSizeProtob\x06proto3')
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dstreamlit/proto/GapSize.proto\x12\tstreamlit\"?\n\tGapConfig\x12&\n\x08gap_size\x18\x01 \x01(\x0e\x32\x12.streamlit.GapSizeH\x00\x42\n\n\x08gap_spec*z\n\x07GapSize\x12\x11\n\rGAP_UNDEFINED\x10\x00\x12\t\n\x05SMALL\x10\x01\x12\n\n\x06MEDIUM\x10\x02\x12\t\n\x05LARGE\x10\x03\x12\x08\n\x04NONE\x10\x04\x12\x0b\n\x07XXSMALL\x10\x05\x12\n\n\x06XSMALL\x10\x06\x12\n\n\x06XLARGE\x10\x07\x12\x0b\n\x07XXLARGE\x10\x08\x42,\n\x1c\x63om.snowflake.apps.streamlitB\x0cGapSizeProtob\x06proto3')
18
18
 
19
19
  _globals = globals()
20
20
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -23,7 +23,7 @@ if not _descriptor._USE_C_DESCRIPTORS:
23
23
  _globals['DESCRIPTOR']._loaded_options = None
24
24
  _globals['DESCRIPTOR']._serialized_options = b'\n\034com.snowflake.apps.streamlitB\014GapSizeProto'
25
25
  _globals['_GAPSIZE']._serialized_start=109
26
- _globals['_GAPSIZE']._serialized_end=181
26
+ _globals['_GAPSIZE']._serialized_end=231
27
27
  _globals['_GAPCONFIG']._serialized_start=44
28
28
  _globals['_GAPCONFIG']._serialized_end=107
29
29
  # @@protoc_insertion_point(module_scope)
@@ -42,6 +42,10 @@ class _GapSizeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTy
42
42
  MEDIUM: _GapSize.ValueType # 2
43
43
  LARGE: _GapSize.ValueType # 3
44
44
  NONE: _GapSize.ValueType # 4
45
+ XXSMALL: _GapSize.ValueType # 5
46
+ XSMALL: _GapSize.ValueType # 6
47
+ XLARGE: _GapSize.ValueType # 7
48
+ XXLARGE: _GapSize.ValueType # 8
45
49
 
46
50
  class GapSize(_GapSize, metaclass=_GapSizeEnumTypeWrapper): ...
47
51
 
@@ -50,6 +54,10 @@ SMALL: GapSize.ValueType # 1
50
54
  MEDIUM: GapSize.ValueType # 2
51
55
  LARGE: GapSize.ValueType # 3
52
56
  NONE: GapSize.ValueType # 4
57
+ XXSMALL: GapSize.ValueType # 5
58
+ XSMALL: GapSize.ValueType # 6
59
+ XLARGE: GapSize.ValueType # 7
60
+ XXLARGE: GapSize.ValueType # 8
53
61
  Global___GapSize: typing_extensions.TypeAlias = GapSize
54
62
 
55
63
  @typing.final
@@ -37,7 +37,7 @@
37
37
  <script>
38
38
  window.prerenderReady = false
39
39
  </script>
40
- <script type="module" crossorigin src="./static/js/index.ayxJkxJS.js"></script>
40
+ <script type="module" crossorigin src="./static/js/index.XOden_TM.js"></script>
41
41
  <link rel="stylesheet" crossorigin href="./static/css/index.BUP6fTcR.css">
42
42
  </head>
43
43
  <body>